--- gcc-4.9-4.9.2.orig/debian/FAQ.gcj +++ gcc-4.9-4.9.2/debian/FAQ.gcj @@ -0,0 +1,494 @@ +The GCJ FAQ +=========== + + The latest version of this document is always available at + http://gcc.gnu.org/java/faq.html. + + General Questions + + What license is used for libgcj? + How can I report a bug in libgcj? + How can I contribute to libgcj + Is libgcj part of GCC? + Will gcj and libgcj work on my machine? + How can I debug my Java program? + Can I interface byte-compiled and native java code? + + + Java Feature Support + + What Java API's are supported? How complete is + the support? + Does GCJ support using straight C native methods + ala JNI? + Why does GCJ use CNI? + What is the state of AWT support? + How about support for Swing ? + What support is there for RMI ? + Can I use any code from other OpenSource projects + to supplement libgcj's current features ? + What features of the Java language are/arn't supported + + + Build Issues + + I need something more recent than the last release; how + should I build it? + Linker bug on Solaris + Can I configure/build in the source tree? + My libgcj build fails with "invalid use of undefined type + struct sigcontext_struct" + + + Gcj Compile/Link Questions + + Why do I get undefined reference to `main' errors? + Can GCJ only handle source code? + "gcj -C" Doesn't seem to work like javac/jikes. Whats going on? + Where does GCJ look for files? + How does gcj resolve wether to compile .class or .java files? + I'm getting link errors! + I'm getting 'undefined symbol: __dso_handle' + + + Runtime Questions + + My program is dumping core! What's going on? + When I run the debugger I get a SEGV in the GC! What's going on? + I have just compiled and benchmarked my Java application + and it seems to be running slower than than XXX JIT JVM. Is there + anything I can do to make it go faster? + Can I profile Garbage Collection? + How do I increase the runtime's initial and maximum heap sizes? + How can I profile my application? + My program seems to hang and doesn't produce any output + + + Programming Issues + + Are there any examples of how to use CNI? + Is it possible to invoke GCJ compiled Java code from a + C++ application? + +General Questions +================= + + 1.1 What license is used for libgcj? + + libgcj is distributed under the GPL, with the 'libgcc exception'. + This means that linking with libgcj does not by itself cause + your program to fall under the GPL. See LIBGCJ_LICENSE in + the source tree for more details. + + 1.2 How can I report a bug in libgcj? + + libgcj has a corresponding Gnats bug database which you can + browse. You can also submit new bug reports from the Gnats + page. + + 1.3 How can I contribute to libgcj? + + You can send simple bug fixes in as patches. Please follow + the GCC guidelines for submitting patches. For more complex + changes, you must sign copyright over to the Free Software + Foundation. See the contribution page for details. + + 1.4 Is libgcj part of GCC? + + Yes, libgcj is now part of GCC. It can be downloaded, + configured and built as one single tree. + + 1.5 Will gcj and libgcj work on my machine? + + Gcj and libgcj are known to work more or less with IA-32 and + Sparc Solaris, Tru64 Unix, as well as IA-32, IA-64, Alpha, + and PowerPC Linux. They might work on other + systems. Generally speaking, porting to a new system should + not be hard. This would be a good way to volunteer. + + 1.6 How can I debug my Java program? + + gdb 5.0 includes support for debugging gcj-compiled Java + programs. For more information please read Java Debugging + with gdb. + + 1.7 Can I interface byte-compiled and native java code + + libgcj has a bytecode interpreter that allows you to mix + .class files with compiled code. It works pretty + transparently: if a compiled version of a class is not found + in the application binary or linked shared libraries, the + class loader will search for a bytecode version in your + classpath, much like a VM would. Be sure to build libgcj + with the --enable-interpreter option to enable this + functionality. + + The program "gij" provides a front end to the interpreter + that behaves much like a traditional virtual machine. You + can even use "gij" to run a shared library which is compiled + from java code and contains a main method: + + $ gcj -shared -o lib-HelloWorld.so HelloWorld.java + $ gij HelloWorld + + This works because gij uses Class.forName, which knows how + to load shared objects. + +Java Feature Support +==================== + + 2.1 What Java API's are supported? How complete is + the support? + + Matt Welsh writes: + + Just look in the 'libjava' directory of libgcj and see + what classes are there. Most GUI stuff isn't there yet, + that's true, but many of the other classes are easy to add + if they don't yet exist. + + I think it's important to stress that there is a big + difference between Java and the many libraries which Java + supports. Unfortunately, Sun's promise of "write once, run + everywhere" assumes much more than a JVM: you also need + the full set of JDK libraries. Considering that new Java + APIs come out every week, it's going to be impossible to + track everything. + + To make things worse, you can't simply run Sun's JDK + classes on any old JVM -- they assume that a bunch of + native methods are also defined. Since this native method + requirement isn't defined by the JDK specs, you're + effectively constrained to using Sun's JVMs if you want to + use Sun's JDK libraries. Oh yes -- you could also + reimplement all of those native methods yourself, and make + sure they behave exactly as Sun's do. Note that they're + undocumented! + + 2.2 Does GCJ support using straight C native methods + ala JNI? + + Yes. libgcj now has experimental support for JNI, in + addition to its native Compiled Native Interface (CNI). gcjh + will generate JNI stubs and headers using the "-jni" + option. However, we do prefer CNI: it is more efficient, + easier to write, and (at least potentially) easier to debug. + + 2.3 Why does GCJ use CNI? + + Per Bothner explains: + + We use CNI because we think it is a better solution, + especially for a Java implementation that is based on the + idea that Java is just another programming language that + can be implemented using standard compilation + techniques. Given that, and the idea that languages + implemented using Gcc should be compatible where it makes + sense, it follows that the Java calling convention should + be as similar as practical to that used for other + languages, especially C++, since we can think of Java as a + subset of C++. CNI is just a set of helper functions and + conventions built on the idea that C++ and Java have the + *same* calling convention and object layout; they are + binary compatible. (This is a simplification, but close + enough.) + + 2.4 What is the state of AWT support? + + Work is in progress to implement AWT and Java2D. We intend + to support both GTK and xlib peers written using CNI. Some + components are already working atop the xlib peers. + + 2.5 How about support for Swing? + + Once AWT support is working then Swing support can be + considered. There is at least one free-software partial + implementations of Swing that may be usable. + + 2.6 What support is there for RMI? + + RMI code exists on the CVS trunk (aka gcc 3.1), but it has + not been heavily tested. This code was donated by + Transvirtual Technologies. + + 2.7 Can I use any code from other OpenSource + projects to supplement libgcj's current features? + + Certainly. However, in many cases, if you wanted to + contribute the code back into the official libgcj + distribution, we would require that the original author(s) + assign copyright to the Free Software Foundation. As of + March 6, 2000, libgcj has been relicenced, and copyright + has been assigned to the FSF. This allows us to share and + merge much of the libgcj codebase with the Classpath + project. Our eventual goal is for Classpath to be an + upstream source provider for libgcj, however it will be + some time before this becomes reality: libgcj and Classpath + have different implementations of many core java + classes. In order to merge them, we need to select the best + (most efficient, cleanest) implementation of each + method/class/package, resolve any conflicts created by the + merge, and test the final result. Needless to say, this is + a lot of work. If you can help out, please let us know! + + 2.8 What features of the Java language are/aren't supported. + + GCJ supports all Java language constructs as per the Java + language Specification. Recent GCJ snapshots have added + support for most JDK1.1 (and beyond) language features, + including inner classes. + +Build Issues +============ + + 3.1 I need something more recent than the last release. + How should I build it? + + Please read here: http://gcc.gnu.org/java/build-snapshot.html + + 3.2 Linker bug on Solaris + + There is a known problem with the native Solaris linker when + using gcc/gcj. A good indication you've run into this + problem is if you get an error that looks like the following + when building libgcj: + +ld: warning: option -o appears more than once, first setting taken +ld: fatal: file libfoo.so: cannot open file: No such file or directory +ld: fatal: File processing errors. No output written to .libs/libfoo.so +collect2: ld returned 1 exit status + + A known workaround for this and other reported link problems + on the various releases of Solaris is to build gcc/gcj with + the latest GNU binutils instead of the native Solaris + ld. The most straightforward way to do this is to build and + install binutils, and then reference it in the configure for + gcc via --with-ld=/path_to_binutils_install/bin/ld + (--with-as may also be similarly specified but is not + believed to be required). + + Please note, gcc/gcj must be built using GNU ld prior to + doing a clean build of libgcj! + + 3.3 Can I configure/build in the source tree? + + No. You cannot configure/build in the source tree. If you + try, you'll see something like: + + $ ./configure [...] + Configuring for a i686-pc-linux-gnu host. + *** Cannot currently configure in source tree. + + Instead, you must build in another directory. E.g.: + + $ mkdir build + $ cd build + $ ../configure [...] + + 3.4 My libgcj build fails with "invalid use of undefined type + struct sigcontext_struct" + + If you're using Linux, this probably means you need to + upgrade to a newwer, glibc (libc6) based Linux + distribution. libgcj does not support the older linux libc5. + It might be possible to get a working libgcj by changing + occurances of "sigcontext_struct" to "sigcontext", however + this has not been tested. Even if it works, it is likely + that there are other issues with older libc versions that + would prevent libgcj from working correctly (threads bugs, + for example). + +Gcj Compile/Link Questions +========================== + + 4.1 Why do I get undefined reference to `main' errors? + + When using gcj to link a Java program, you must use the --main= + option to indicate the class that has the desired main method. + This is because every Java class can have a main method, thus + you have to tell gcj which one to use. + + 4.2 Can GCJ only handle source code? + + GCJ will compile both source (.java) and bytecode (.class) + files. However, in many cases the native code produced by + compiling from source is better optimized than that compiled + from .class files. + + Per Bothner explains: + + The reason is that when you compile to bytecode you lose a + lot of information about program structure etc. That + information helps in generating better code. We can in + theory recover the information we need by analysing the + structure of the bytecodes, but it is sometimes difficult + - or sometimes it just that no-one has gotten around to + it. Specific examples include loop structure (gcc + generates better code with explicit loops rather than with + the equivalent spaghetti code), array initializers, and + the JDK 1.1 `CLASS.class' syntax, all of which are + represented using more low-level constructs in bytecode. + + 4.3 "gcj -C" Doesn't seem to work like javac/jikes. Whats going on? + + The behavior of "gcj -C" is not at all like javac or jikes, + which will compile (not just scan) all .java's which are out + of date with regard to their .class's. + + 4.4 Where does GCJ look for files? + + GCJ looks for classes to compile based on the CLASSPATH + environment variable. libgcj.jar and other files are found + relative to the path of the compiler itself, so it is safe + to move the entire compiler tree to a different path, and + there is no need to include libgcj.jar in your CLASSPATH. + + 4.5 How does gcj resolve whether to compile .class or .java files? + + GCJ compiles only the files presented to it on the command + line. However, it also needs to scan other files in order to + determine the layout of other classes and check for errors + in your code. For these dependencies, GCJ will favour + .class files if they are available because it is faster to + parse a class file than source code. + + 4.6 I'm getting link errors + + If you get errors at link time that refer to 'undefined + reference to `java::lang::Object type_info function', verify + that you have compiled any CNI C++ files with the -fno-rtti + option. This is only required for versions of GCJ earlier + than 3.0. + + 4.7 I'm getting 'undefined symbol: __dso_handle' + + Some versions of the GNU linker have broken support for the + '.hidden' directive, which results in problems with shared + libraries built with recent versions of gcc. + + There are three solutions: + + - downgrade to binutils that don't support .hidden at all, + - upgrade to a recent binutils, or + - undef the HAVE_GAS_HIDDEN definition in gcc's auto-host.h + (and rebuild gcc). + +Runtime Questions +================= + + 5.1 My program is dumping core! What's going on? + + It could be any number of things. One common mistake is + having your CLASSPATH environment variable pointing at a + third party's java.lang and friends. Either unset CLASSPATH, + or make sure it does not refer to core libraries other than + those found in libgcj.jar.Note that newwer versions of GCJ + will reject the core class library if it wasn't generated by + GCJ itself. + + 5.2 When I run the debugger I get a SEGV in the GC! What's going on? + + This is "normal"; the Garbage Collector (GC) uses it to + determine stack boundaries. It is ordinarily caught and + handled by the GC -- you can see this in the debugger by + using cont to continue to the "real" segv. + + 5.3 I have just compiled and benchmarked my Java application + and it seems to be running slower than than XXX JIT JVM. Is there + anything I can do to make it go faster? + + A few things: + + - If your programs allocate many small, short lived objects, + the heap could be filling and triggering GC too + regularly. Try increasing the initial and maximum heap sizes + as per 5.5 How do I increase the runtime's initial and + maximum heap size? + - RE - array accesses. We have sub-optimal runtime checking + code, and the compiler is still not so smart about + automatically removing array checks. If your code is ready, + and it doesn't rely on them, try compiling with + --no-bounds-check. + - Try static linking. On many platforms, dynamic (PIC) + function calls are more expensive than static ones. In + particular, the interaction with boehm-gc seems to incur + extra overhead when shared libraries are used. + - If your Java application doesn't need threads, try + building libgcj using --enable-threads=none. Portions of the + libgcj runtime are still more efficient when + single-threaded. + + 5.4 Can I profile Garbage Collection? + + It is possible to turn on verbose GC output by supressing + the -DSILENT flag during build. One way to do this is to + comment out the line with #define SILENT 1 from + boehm-gc/configure before configuring libgcj. The GC will + print collection statistics to stdout. (Rebuilding boehm-gc + alone without this flag doesn't seem to work.) + + 5.5 How do I increase the runtime's initial and maximum heap sizes? + + Some programs that allocate many small, short-lived objects + can cause the default-sized heap to fill quickly and GC + often. With the 2.95.1 release there is no means to adjust + the heap at runtime. Recent snapshots provide the -ms and + -mx arguments to gij to specify the initial and maximum heap + sizes, respectively. + + 5.6 How can I profile my application? + + Currently, only single threaded Java code may be used by the + profiler (gprof). POSIX threads seem to be incompatible with + the gmon stuff. A couple of other tools that have been + mentioned on the GCJ mailing list are sprof and cprof. The + former is part of GNU libc. + + 5.7 My program seems to hang and doesn't produce any output + + Some versions had a bug in the iconv support. You can work + around it by setting LANG=en_US.UTF-8 at runtime, or give + the following option during compile time + -Dfile.encoding=UTF-8. This problem should no longer occur + as of November 1, 2000. + +Programming Issues +================== + + 6.1 Are there any examples of how to use CNI? + + Glenn Chambers has created a couple of trivial examples for + version 2.95 and version 3.0. As a comparison, here is the + same example as a JNI application using Kaffe. The same + code will work with GCJ, as shown here. + + Note that for version 2.95, you must compile the C++ files + used for CNI with the -fno-rtti option. This constraint + does not apply in version 3.0 and later. + + The primary source of documentation for CNI is at + http://gcc.gnu.org/java/papers/cni/t1.html + + 6.2 Is it possible to invoke GCJ compiled Java code from a + C++ application? + + Yes, GCJ 3.1 supports a CNI-based invocation interface as + well as the traditional JNI invocation API. See the GCJ + Manual for more details on how to use the CNI interface. + +Please send FSF & GNU inquiries & questions tognu@gnu.org.There are +also other waysto contact the FSF. + +These pages are maintained by The GCC team. + +Please send comments on these web pages and GCC to our publicmailing +list at gcc@gnu.org orgcc@gcc.gnu.org, send other questions to +gnu@gnu.org. + +Copyright (C) Free Software Foundation, Inc., +59 Temple Place - Suite 330, Boston, MA 02111, USA. + +Verbatim copying and distribution of this entire article is permitted +in any medium, provided this notice is preserved. + +Last modified 2003-04-30 --- gcc-4.9-4.9.2.orig/debian/NEWS.gcc +++ gcc-4.9-4.9.2/debian/NEWS.gcc @@ -0,0 +1,657 @@ +GCC 4.9 Release Series -- Changes, New Features, and Fixes +========================================================== + + +Caveats +======= + + - The mudflap run time checker has been removed. The mudflap options + remain, but do nothing. + + - Support for a number of older systems and recently unmaintained or + untested target ports of GCC has been declared obsolete in GCC 4.9. + Unless there is activity to revive them, the next release of + GCC will have their sources permanently removed. + + - The following ports for individual systems on particular + architectures have been obsoleted: + + - Solaris 9 (*-*-solaris2.9). Details can be found in the announcement. + +More information on porting to GCC 4.9 from previous versions of GCC +can be found in the porting guide for this release. +See http://gcc.gnu.org/gcc-4.9/porting_to.html. + + +General Optimizer Improvements +============================== + + + - AddressSanitizer, a fast memory error detector, is now available on ARM. + + - UndefinedBehaviorSanitizer (ubsan), a fast undefined behavior + detector, has been added and can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined + behavior at runtime. UndefinedBehaviorSanitizer is currently + available for the C and C++ languages. + + - Link-time optimization (LTO) improvements: + + - Type merging was rewritten. The new implementation is significantly + faster and uses less memory. + + - Better partitioning algorithm resulting in less streaming during + link time. + + - Early removal of virtual methods reduces the size of object files + and improves link-time memory usage and compile time. + + - Function bodies are now loaded on-demand and released early improving + overall memory usage at link time. + + - C++ hidden keyed methods can now be optimized out. + + - When using a linker plugin, compiling with the -flto option now + generates slim objects files (.o) which only contain intermediate + language representation for LTO. Use -ffat-lto-objects to create + files which contain additionally the object code. To generate + static libraries suitable for LTO processing, use gcc-ar and + gcc-ranlib; to list symbols from a slim object file use + gcc-nm. (Requires that ar, ranlib and nm have been compiled with + plugin support.) + + Memory usage building Firefox with debug enabled was reduced from 15GB + to 3.5GB; link time from 1700 seconds to 350 seconds. + + - Inter-procedural optimization improvements: + + - New type inheritance analysis module improving devirtualization. + Devirtualization now takes into account anonymous name-spaces and + the C++11 final keyword. + + - New speculative devirtualization pass (controlled by + -fdevirtualize-speculatively). + - Calls that were speculatively made direct are turned back to indirect + where direct call is not cheaper. + - Local aliases are introduced for symbols that are known to be + semantically equivalent across shared libraries improving dynamic + linking times. + + - Feedback directed optimization improvements: + + - Profiling of programs using C++ inline functions is now more reliable. + + - New time profiling determines typical order in which functions are + executed. + + - A new function reordering pass (controlled by -freorder-functions) + significantly reduces startup time of large applications. Until binutils + support is completed, it is effective only with link-time optimization. + + - Feedback driven indirect call removal and devirtualization now handle + cross-module calls when link-time optimization is enabled. + + +New Languages and Language specific improvements +================================================ + + - Version 4.0 of the OpenMP specification is now supported for the C + and C++ compilers. The new -fopenmp-simd option can be used to + enable OpenMP's SIMD directives, while ignoring other OpenMP + directives. The new -fsimd-cost-model= option permits to tune the + vectorization cost model for loops annotated with OpenMP and Cilk + Plus simd directives; -Wopenmp-simd warns when the current + costmodel overrides simd directives set by the user. + + - The -Wdate-time option has been added for the C, C++ and Fortran + compilers, which warns when the __DATE__, __TIME__ or __TIMESTAMP__ + macros are used. Those macros might prevent bit-wise-identical + reproducible compilations. + + +Ada +--- + + - GNAT switched to Ada 2012 instead of Ada 2005 by default. + + +C family +-------- + + - Support for colorizing diagnostics emitted by GCC has been added. + The -fdiagnostics-color=auto will enable it when outputting to + terminals, -fdiagnostics-color=always unconditionally. The + GCC_COLORS environment variable can be used to customize the colors + or disable coloring. If GCC_COLORS variable is present in the + environment, the default is -fdiagnostics-color=auto, otherwise + -fdiagnostics-color=never. Sample diagnostics output: + + $ g++ -fdiagnostics-color=always -S -Wall test.C + test.C: In function ‘int foo()’: + test.C:1:14: warning: no return statement in function returning non-void [-Wreturn-type] + int foo () { } + ^ + test.C:2:46: error: template instantiation depth exceeds maximum of 900 (use -ftemplate-depth= to increase the maximum) instantiating `struct X<100>'; + template struct X { static const int value = X::value; }; template struct X<1000>; + ^ + test.C:2:46: recursively required from `const int X<999>::value' + test.C:2:46: required from `const int X<1000>::value' + test.C:2:88: required from here + + test.C:2:46: error: incomplete type `X<100>' used in nested name specifier + + - With the new #pragma GCC ivdep, the user can assert that there are + no loop-carried dependencies which would prevent concurrent + execution of consecutive iterations using SIMD (single instruction + multiple data) instructions. + + - Support for Cilk Plus has been added and can be enabled with the + -fcilkplus option. Cilk Plus is an extension to the C and C++ + languages to support data and task parallelism. The present + implementation follows ABI version 1.2; all features but _Cilk_for + have been implemented. + + +C +- + + - ISO C11 atomics (the _Atomic type specifier and qualifier and the + header) are now supported. + + - ISO C11 generic selections (_Generic keyword) are now supported. + + - ISO C11 thread-local storage (_Thread_local, similar to GNU C + __thread) is now supported. + + - ISO C11 support is now at a similar level of completeness to ISO + C99 support: substantially complete modulo bugs, extended + identifiers (supported except for corner cases when + -fextended-identifiers is used), floating-point issues (mainly but + not entirely relating to optional C99 features from Annexes F and + G) and the optional Annexes K (Bounds-checking interfaces) and L + (Analyzability). + + - A new C extension __auto_type provides a subset of the + functionality of C++11 auto in GNU C. + + +C++ +--- + + - The G++ implementation of C++1y return type deduction for normal + functions has been updated to conform to N3638, the proposal + accepted into the working paper. Most notably, it adds + decltype(auto) for getting decltype semantics rather than the + template argument deduction semantics of plain auto: + + int& f(); + auto i1 = f(); // int + decltype(auto) i2 = f(); // int& + + - G++ supports C++1y lambda capture initializers: + + [x = 42]{ ... }; + + Actually, they have been accepted since GCC 4.5, but now the + compiler doesn't warn about them with -std=c++1y, and supports + parenthesized and brace-enclosed initializers as well. + + - G++ supports C++1y variable length arrays. G++ has supported + GNU/C99-style VLAs for a long time, but now additionally supports + initializers and lambda capture by reference. In C++1y mode G++ + will complain about VLA uses that are not permitted by the draft + standard, such as forming a pointer to VLA type or applying sizeof + to a VLA variable. Note that it now appears that VLAs will not be + part of C++14, but will be part of a separate document and then + perhaps C++17. + + void f(int n) { + int a[n] = { 1, 2, 3 }; // throws std::bad_array_length if n < 3 + [&a]{ for (int i : a) { cout << i << endl; } }(); + &a; // error, taking address of VLA + } + + - G++ supports the C++1y [[deprecated]] attribute modulo bugs in the + underlying [[gnu::deprecated]] attribute. Classes and functions + can be marked deprecated and a diagnostic message added: + + class A; + int bar(int n); + #if __cplusplus > 201103 + class [[deprecated("A is deprecated in C++14; Use B instead")]] A; + [[deprecated("bar is unsafe; use foo() instead")]] + int bar(int n); + + int foo(int n); + class B; + #endif + A aa; // warning: 'A' is deprecated : A is deprecated in C++14; Use B instead + int j = bar(2); // warning: 'int bar(int)' is deprecated : bar is unsafe; use foo() instead + + - G++ supports C++1y digit separators. Long numeric literals can be + subdivided with a single quote ' to enhance readability: + + int i = 1048576; + int j = 1'048'576; + int k = 0x10'0000; + int m = 0'004'000'000; + int n = 0b0001'0000'0000'0000'0000'0000; + + double x = 1.602'176'565e-19; + double y = 1.602'176'565e-1'9; + + - G++ supports C++1y polymorphic lambdas. + + // a functional object that will increment any type + auto incr = [](auto x) { return x++; }; + + +Runtime Library (libstdc++) +--------------------------- + + - Improved support for C++11, including: + + - support for ; + + - The associative containers in and and the unordered + associative containers in and + meet the allocator-aware container requirements; + + - Improved experimental support for the upcoming ISO C++ standard, C++14, + including: + + - fixing constexpr member functions without const; + - implementation of the std::exchange() utility function; + - addressing tuples by type; + - implemention of std::make_unique; + - implemention of std::shared_lock; + - making std::result_of SFINAE-friendly; + - adding operator() to integral_constant; + - adding user-defined literals for standard library types std::basic_string, + std::chrono::duration, and std::complex; + - adding two range overloads to non-modifying sequence oprations + std::equal and std::mismatch; + - adding IO manipulators for quoted strings; + - adding constexpr members to , , , + and some containers; + - adding compile-time std::integer_sequence; + - adding cleaner transformation traits; + - making s operator functors easier to use and more generic; + + - An implementation of std::experimental::optional. + + - An implementation of std::experimental::string_view. + + - The non-standard function std::copy_exception has been deprecated + and will be removed in a future version. std::make_exception_ptr + should be used instead. + + +Fortran +------- + + - Compatibility notice: + + - Module files: The version of the module files (.mod) has been + incremented; additionally, module files are now compressed. + Fortran MODULEs compiled by earlier GCC versions have to be + recompiled, when they are USEd by files compiled with GCC 4.9, + because GCC 4.9 is not able to read .mod files of earlier GCC + versions; attempting to do so gives an error message. Note: The + ABI of the produced assembler data itself has not changed: object + files and libraries are fully compatible to older + versions. (Except for the next items.) + + - ABI changes: + + - Note that the argument passing ABI has changed for scalar dummy + arguments of type INTEGER, REAL, COMPLEX and LOGICAL, which + have both the VALUE and the OPTIONAL attribute. + + - Due to the support of finalization, the virtual table + associated with polymorphic variables has changed. Therefore, + code containing CLASS should be recompiled, including all files + which define derived types involved in the type definition used + by polymorphic variables. (Note: Due to the incremented module + version, trying to mix old code with new code will usually give + an error message.) + + - GNU Fortran no longer deallocates allocatable variables or + allocatable components of variables declared in the main + program. Since Fortran 2008, the standard explicitly states that + variables declared in the Fortran main program automatically have + the SAVE attribute. + + - When opening files, the close-on-exec flag is set if the system + supports such a feature. This is generally considered good + practice these days, but if there is a need to pass file + descriptors to child processes the parent process must now + remember to clear the close-on-exec flag by calling fcntl(), + e.g. via ISO_C_BINDING, before executing the child process. + + - The deprecated command-line option -fno-whole-file has been + removed. (-fwhole-file is the default since GCC 4.6.) + -fwhole-file/-fno-whole-file continue to be accepted but do not + influence the code generation. + + - The compiler no longer unconditionally warns about DO loops with + zero iterations. This warning is now controlled by the + -Wzerotrips option, which is implied by -Wall. + + - The new NO_ARG_CHECK attribute of the !GCC$ directive can be used + to disable the type-kind-rank (TKR) argument check for a dummy + argument. The feature is similar to ISO/IEC TS 29133:2012's + TYPE(*), except that it additionally also disables the rank + check. Variables with NO_ARG_CHECK have to be dummy arguments and + may only be used as argument to ISO_C_BINDING's C_LOC and as + actual argument to another NO_ARG_CHECK dummy argument; also the + other constraints of TYPE(*) apply. The dummy arguments should + be declared as scalar or assumed-size variable of type type(*) + (recommended) – or of type integer, real, complex or + logical. With NO_ARG_CHECK, a pointer to the data without further + type or shape information is passed, similar to C's void*. Note + that also TS 29113's type(*),dimension(..) accepts arguments of + any type and rank; contrary to NO_ARG_CHECK assumed-rank + arguments pass an array descriptor which contains the array shape + and stride of the argument. + + - Fortran 2003: + + - Finalization is now supported. Note that finalization is + currently only done for a subset of the situations in which it + should occur. + + - Experimental support for scalar character components with + deferred length (i.e. allocatable string length) in derived + types has been added. (Deferred-length character variables are + supported since GCC 4.6.) + + - Fortran 2008: + + - When STOP or ERROR STOP is used to terminate the execution and + any exception (but inexact) is signaling, a warning is printed + to ERROR_UNIT, indicating which exceptions are signaling. The + -ffpe-summary= command-line option can be used to fine-tune for + which exception the warning should be shown. + + - Rounding on input (READ) is now handled on systems where strtod + honours the rounding mode. (For output, rounding is supported + since GCC 4.5.) Note that for input, the compatible rounding + mode is handled as nearest (i.e., for a tie, rounding to an + even last significant [cf. IEC 60559:1989] – while + compatible rounds away from zero for a tie). + + +Go +-- + + - GCC 4.9 provides a complete implementation of the Go 1.2.1 release. + + +New Targets and Target Specific Improvements +============================================ + +AArch64 +------- + + - The ARMv8-A crypto and CRC instructions are now supported through + intrinsics. These are enabled when the architecture supports these + and are available through the -march=armv8-a+crc and + -march=armv8-a+crypto options. + + - Initial support for ILP32 has now been added to the compiler. This + is now available through the command line option + -mabi=ilp32. Support for ILP32 is considered experimental as the + ABI specification is still beta. + + - Coverage of more of the ISA including the SIMD extensions has been + added. The Advanced SIMD intrinsics have also been improved. + + - The new local register allocator (LRA) is now on by default for the + AArch64 backend. + + - The REE (Redundant extension elimination) pass has now been enabled + by default for the AArch64 backend. + + - Tuning for the Cortex-A53 and Cortex-A57 has been improved. + + - Initial big.LITTLE tuning support for the combination of Cortex-A57 + and Cortex-A53 was added through the -mcpu=cortex-a57.cortex-a53 + option. + + - A number of structural changes have been made to both the ARM + and AArch64 backends to facilitate improved code-generation. + + +ARM +--- + + - Use of Advanced SIMD (Neon) for 64-bit scalar computations has been + disabled by default. This was found to generate better code in only + a small number of cases. It can be turned back on with the + -mneon-for-64bits option. + + - Further support for the ARMv8-A architecture, notably implementing + the restriction around IT blocks in the Thumb32 instruction set has + been added. The -mrestrict-it option can be used with + -march=armv7-a or the -march=armv7ve options to make code + generation fully compatible with the deprecated instructions in + ARMv8-A. + + - Support has now been added for the ARMv7ve variant of the + architecture. This can be used by the -march=armv7ve option. + + - The ARMv8-A crypto and CRC instructions are now supported through + intrinsics and are available through the -march=armv8-a+crc + and mfpu=crypto-neon-fp-armv8 options. + + - LRA is now on by default for the ARM target. This can be turned off + using the -mno-lra option. This option is purely + transitionary command line option and will be removed in a future + release. We are interested in any bug reports regarding functional and + performance regressions with LRA. + + - A new option -mslow-flash-data to improve performance of programs + fetching data on slow flash memory has now been introduced for the + ARMv7-M profile cores. + + - A new option -mpic-data-is-text-relative for targets that allows + data segments to be relative to text segments has been added. This + is on by default for all targets except VxWorks RTP. + + - A number of infrastructural changes have been made to both the ARM + and AArch64 backends to facilitate improved code-generation. + + - GCC now supports Cortex-A12 and the Cortex-R7 through the + -mcpu=cortex-a12 and -mcpu=cortex-r7 options. + + - GCC now has tuning for the Cortex-A57 and Cortex-A53 through the + -mcpu=cortex-a57 and -mcpu=cortex-a53 options. + + - Initial big.LITTLE tuning support for the combination of Cortex-A57 + and Cortex-A53 was added through the -mcpu=cortex-a57.cortex-a53 + option. Similar support was added for the combination of Cortex-A15 + and Cortex-A7 through the -mcpu=cortex-a15.cortex-a7 option. + + - Further performance optimizations for the Cortex-A15 and the + Cortex-M4 have been added. + + - A number of code generation improvements for Thumb2 to reduce code + size when compiling for the M-profile processors. + + +IA-32/x86-64 +------------ + + - -mfpmath=sse is now implied by -ffast-math on all targets where + SSE2 is supported. + + - Intel AVX-512 support was added to GCC. That includes inline + assembly support, new registers and extending existing ones, new + intrinsics (covered by corresponding testsuite), and basic + autovectorization. AVX-512 instructions are available via the + following GCC switches: AVX-512 foundation instructions: -mavx512f, + AVX-512 prefetch instructions: -mavx512pf, AVX-512 exponential and + reciprocal instructions: -mavx512er, AVX-512 conflict detection + instructions: -mavx512cd. + + - It is now possible to call x86 intrinsics from select functions in + a file that are tagged with the corresponding target attribute + without having to compile the entire file with the -mxxx option. + This improves the usability of x86 intrinsics and is particularly + useful when doing Function Multiversioning. + + - GCC now supports the new Intel microarchitecture named Silvermont + through -march=silvermont. + + - GCC now supports the new Intel microarchitecture named Broadwell + through -march=broadwell. + + - Optimizing for other Intel microarchitectures have been renamed to + -march=nehalem, westmere, sandybridge, ivybridge, haswell, bonnell. + + - -march=generic has been retuned for better support of Intel core + and AMD Bulldozer architectures. Performance of AMD K7, K8, Intel + Pentium-M, and Pentium4 based CPUs is no longer considered + important for generic. + + - -mtune=intel can now be used to generate code running well on the + most current Intel processors, which are Haswell and Silvermont for + GCC 4.9. + + - Support to encode 32-bit assembly instructions in 16-bit format is + now available through the -m16 command-line option. + + - Better inlining of memcpy and memset that is aware of value ranges + and produces shorter alignment prologues. + + - -mno-accumulate-outgoing-args is now honored when unwind + information is output. Argument accumulation is also now turned + off for portions of programs optimized for size. + + - Support for new AMD family 15h processors (Excavator core) is now + available through the -march=bdver4 and -mtune=bdver4 options. + + +MSP430 +------ + + - A new command-line option -mcpu= has been added to the MSP430 + backend. This option is used to specify the ISA to be used. + Accepted values are msp430 (the default), msp430x and msp430xv2. + The ISA is no longer deduced from the -mmcu= option as there are + far too many different MCU names. The -mmcu= option is still + supported, and this is still used to select linker scripts and + generate a C preprocessor symbol that will be recognised by the + msp430.h header file. + + +NDS32 +----- + + - A new nds32 port supports the 32-bit architecture from Andes + Technology Corporation. + + - The port provides initial support for the V2, V3, V3m instruction + set architectures. + + +Nios II +------- + + - A port for the Altera Nios II has been contributed by Mentor Graphics. + + +PowerPC / PowerPC64 / RS6000 +---------------------------- + + - GCC now supports Power ISA 2.07, which includes support for + Hardware Transactional Memory (HTM), Quadword atomics and several + VMX and VSX additions, including Crypto, 64-bit integer, 128-bit + integer and decimal integer operations. + + - Support for the POWER8 processor is now available through the + -mcpu=power8 and -mtune=power8 options. The libitm library has + been modified to add a HTM fastpath that automatically uses POWER's + HTM hardware instructions when it is executing on a HTM enabled + processor. + + - Support for the new powerpc64le-linux platform has been added. It + defaults to generating code that conforms to the ELFV2 ABI. + + +S/390, System z +--------------- + + - Support for the Transactional Execution Facility included with the + IBM zEnterprise zEC12 processor has been added. A set of GCC style + builtins as well as XLC style builtins are provided. The builtins + are enabled by default when using the -march=zEC12 option but can + explicitly be disabled with -mno-htm. Using the GCC builtins also + libitm supports hardware transactions on S/390. + + - The hotpatch features allows to prepare functions for hotpatching. + A certain amount of bytes is reserved before the function entry + label plus a NOP is inserted at its very beginning to implement a + backward jump when applying a patch. The feature can either be + enabled via command line option -mhotpatch for a compilation unit + or can be enabled per function using the hotpatch attribute. + + - The shrink wrap optimization is now supported on S/390 and + enabled by default. + + - A major rework of the routines to determine which registers need to + be saved and restored in function prologue/epilogue now allow to + use floating point registers as save slots. This will happen for + certain leaf function with -march=z10 or higher. + + - The LRA rtl pass replaces reload by default on S/390. + + +RX +-- + + - The port now allows to specify the RX100, RX200, and RX600 + processors with the command line options -mcpu=rx100, -mcpu=rx200 + and -mcpu=rx600. + + +SH +-- + + - Minor improvements to code generated for integer arithmetic and code + that involves the T bit. + + - Added support for the SH2A clips and clipu instructions. The + compiler will now try to utilize them for min/max expressions such + as max (-128, min (127, x)). + + - Added support for the cmp/str instruction through built-in + functions such as __builtin_strlen. When not optimizing for size, + the compiler will now expand calls to e.g. strlen as an inlined + sequences which utilize the cmp/str instruction. + + - Improved code generated around volatile memory loads and stores. + + - The option -mcbranchdi has been deprecated. Specifying it + will result in a warning and will not influence code generation. + + - The option -mcmpeqdi has been deprecated. Specifying it + will result in a warning and will not influence code generation. + + + +For questions related to the use of GCC, please consult these web +pages and the GCC manuals. If that fails, the gcc-help@gcc.gnu.org +mailing list might help. Please send comments on these web pages and +the development of GCC to our developer list at gcc@gcc.gnu.org. All +of our lists have public archives. + +Copyright (C) Free Software Foundation, Inc. + +Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved. + +These pages are maintained by the GCC team. + +Last modified 2014-04-22. --- gcc-4.9-4.9.2.orig/debian/NEWS.html +++ gcc-4.9-4.9.2/debian/NEWS.html @@ -0,0 +1,752 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +GCC 4.9 Release Series — Changes, New Features, and Fixes +- GNU Project - Free Software Foundation (FSF) + + + + + + + + + +

GCC 4.9 Release Series
Changes, New Features, and Fixes

+ + +

Caveats

+ +
    +
  • The mudflap run time checker has been removed. The mudflap + options remain, but do nothing.

  • + +
  • Support for a number of older systems and recently + unmaintained or untested target ports of GCC has been declared + obsolete in GCC 4.9. Unless there is activity to revive them, the + next release of GCC will have their sources permanently + removed.

    + +

    The following ports for individual systems on + particular architectures have been obsoleted:

    + +
      +
    • Solaris 9 (*-*-solaris2.9). Details can be found in the + + announcement.
    • +
    +
  • +
+ +

+ More information on porting to GCC 4.9 from previous versions + of GCC can be found in + the porting + guide for this release. +

+ + +

General Optimizer Improvements

+ +
    +
  • AddressSanitizer, a fast memory error detector, is now available on ARM. +
  • +
  • UndefinedBehaviorSanitizer (ubsan), a fast undefined behavior detector, + has been added and can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. UndefinedBehaviorSanitizer is currently available for the C + and C++ languages. +
  • +
  • Link-time optimization (LTO) improvements: +
      +
    • Type merging was rewritten. The new implementation is significantly faster + and uses less memory.
    • +
    • Better partitioning algorithm resulting in less streaming during + link time.
    • +
    • Early removal of virtual methods reduces the size of object files and + improves link-time memory usage and compile time.
    • +
    • Function bodies are now loaded on-demand and released early improving + overall memory usage at link time.
    • +
    • C++ hidden keyed methods can now be optimized out.
    • +
    • When using a linker plugin, compiling with the -flto + option now generates slim objects files (.o) which only + contain intermediate language representation for LTO. Use + -ffat-lto-objects to create files which contain + additionally the object code. To generate static libraries suitable + for LTO processing, use gcc-ar and + gcc-ranlib; to list symbols from a slim object file use + gcc-nm. (Requires that ar, + ranlib and nm have been compiled with + plugin support.)
    • +
    + Memory usage building Firefox with debug enabled was reduced from 15GB to + 3.5GB; link time from 1700 seconds to 350 seconds. +
  • +
  • Inter-procedural optimization improvements: +
      +
    • New type inheritance analysis module improving devirtualization. + Devirtualization now takes into account anonymous name-spaces and the + C++11 final keyword.
    • +
    • New speculative devirtualization pass (controlled by + -fdevirtualize-speculatively.
    • +
    • Calls that were speculatively made direct are turned back to indirect + where direct call is not cheaper.
    • +
    • Local aliases are introduced for symbols that are known to be + semantically equivalent across shared libraries improving dynamic + linking times.
    • +
  • +
  • Feedback directed optimization improvements: +
      +
    • Profiling of programs using C++ inline functions is now more reliable.
    • +
    • New time profiling determines typical order in which functions are + executed.
    • +
    • A new function reordering pass (controlled by + -freorder-functions) significantly reduces + startup time of large applications. Until binutils support is + completed, it is effective only with link-time optimization.
    • +
    • Feedback driven indirect call removal and devirtualization now handle + cross-module calls when link-time optimization is enabled.
    • +
  • +
+ +

New Languages and Language specific improvements

+ +
    +
  • Version 4.0 of the OpenMP specification is now supported for the C and C++ compilers. + The new -fopenmp-simd option can be used to enable OpenMP's + SIMD directives, while ignoring other OpenMP directives. The new -fsimd-cost-model= option permits to tune the + vectorization cost model for loops annotated with OpenMP and Cilk + Plus simd directives; -Wopenmp-simd warns when + the current costmodel overrides simd directives set by the user.
  • +
  • The -Wdate-time option has been added for the C, C++ and + Fortran compilers, which warns when the __DATE__, + __TIME__ or __TIMESTAMP__ macros are used. + Those macros might prevent bit-wise-identical reproducible + compilations.
  • +
+ +

Ada

+ +
    +
  • GNAT switched to Ada 2012 instead of Ada 2005 by default.
  • +
+ +

C family

+ +
    +
  • Support for colorizing diagnostics emitted by GCC has been added. + The -fdiagnostics-color=auto will enable it when + outputting to terminals, -fdiagnostics-color=always + unconditionally. The GCC_COLORS environment variable + can be used to customize the colors or disable coloring. + If GCC_COLORS variable is present in the environment, + the default is -fdiagnostics-color=auto, otherwise + -fdiagnostics-color=never.
    + Sample diagnostics output:
    +
    +    $ g++ -fdiagnostics-color=always -S -Wall test.C
    +    test.C: In function ‘int foo()’:
    +    test.C:1:14: warning: no return statement in function returning non-void [-Wreturn-type]
    +     int foo () { }
    +                  ^
    +    test.C:2:46: error: template instantiation depth exceeds maximum of 900 (use -ftemplate-depth= to increase the maximum) instantiating ‘struct X<100>’
    +     template <int N> struct X { static const int value = X<N-1>::value; }; template struct X<1000>;
    +                                                  ^
    +    test.C:2:46:   recursively required from ‘const int X<999>::value’
    +    test.C:2:46:   required from ‘const int X<1000>::value’
    +    test.C:2:88:   required from here
    +
    +    test.C:2:46: error: incomplete type ‘X<100>’ used in nested name specifier
    +    
  • + +
  • With the new #pragma GCC ivdep, the user can assert that there are no + loop-carried dependencies which would prevent concurrent execution of + consecutive iterations using SIMD (single instruction multiple data) + instructions.
  • + +
  • Support for Cilk Plus has been + added and can be enabled with the -fcilkplus option. Cilk Plus + is an extension to the C and C++ languages to support data and task + parallelism. The present implementation follows ABI version 1.2; all + features but _Cilk_for have been implemented.
  • +
+ +

C

+
    +
  • ISO C11 atomics (the _Atomic type specifier and + qualifier and the <stdatomic.h> header) are now + supported.
  • + +
  • ISO C11 generic selections (_Generic keyword) are + now supported.
  • + +
  • ISO C11 thread-local storage (_Thread_local, + similar to GNU C __thread) is now supported.
  • + +
  • ISO C11 support is now at a similar level of completeness to ISO + C99 support: substantially complete modulo bugs, extended + identifiers (supported except for corner cases + when -fextended-identifiers is used), floating-point + issues (mainly but not entirely relating to optional C99 features + from Annexes F and G) and the optional Annexes K (Bounds-checking + interfaces) and L (Analyzability).
  • + +
  • A new C extension __auto_type provides a subset of + the functionality of C++11 auto in GNU C.
  • +
+ +

C++

+
    +
  • + The G++ implementation of C++1y return type deduction for normal + functions has been updated to conform to + N3638, + the proposal accepted into the working paper. Most notably, it adds decltype(auto) for + getting decltype semantics rather than the template argument deduction semantics of plain auto: +
    +int& f();
    +         auto  i1 = f(); // int
    +decltype(auto) i2 = f(); // int&
    +
    +
  • +
  • + G++ supports C++1y lambda capture initializers: +
    +[x = 42]{ ... };
    +
    +Actually, they have been accepted since GCC 4.5, but now the compiler doesn't +warn about them with -std=c++1y, and supports parenthesized and +brace-enclosed initializers as well. +
  • +
  • + G++ supports C++1y variable length + arrays. G++ has supported GNU/C99-style VLAs for a long time, but now + additionally supports initializers and lambda capture by reference. In + C++1y mode G++ will complain about VLA uses that are not permitted by + the draft standard, such as forming a pointer to VLA type or + applying sizeof to a VLA variable. Note that it now appears + that VLAs will not be part of C++14, but will be part of a separate + document and then perhaps C++17. +
    +void f(int n) {
    +  int a[n] = { 1, 2, 3 }; // throws std::bad_array_length if n < 3
    +  [&a]{ for (int i : a) { cout << i << endl; } }();
    +  &a; // error, taking address of VLA
    +}
    +
    +
  • +
  • + G++ supports the C++1y [[deprecated]] + attribute modulo bugs in the underlying [[gnu::deprecated]] attribute. Classes + and functions can be marked deprecated and a diagnostic message added: +
    +class A;
    +int bar(int n);
    +#if __cplusplus > 201103
    +class [[deprecated("A is deprecated in C++14; Use B instead")]] A;
    +[[deprecated("bar is unsafe; use foo() instead")]]
    +int bar(int n);
    +
    +int foo(int n);
    +class B;
    +#endif
    +A aa; // warning: 'A' is deprecated : A is deprecated in C++14; Use B instead
    +int j = bar(2); // warning: 'int bar(int)' is deprecated : bar is unsafe; use foo() instead
    +
    +
  • +
  • + G++ supports C++1y digit separators. + Long numeric literals can be subdivided with a single quote ' to enhance readability: +
    +int i = 1048576;
    +int j = 1'048'576;
    +int k = 0x10'0000;
    +int m = 0'004'000'000;
    +int n = 0b0001'0000'0000'0000'0000'0000;
    +
    +double x = 1.602'176'565e-19;
    +double y = 1.602'176'565e-1'9;
    +
    +
  • +
  • + G++ supports C++1y polymorphic lambdas. +
    +// a functional object that will increment any type
    +auto incr = [](auto x) { return x++; };
    +
    +
  • +
+ +

Runtime Library (libstdc++)

+ +
    +
  • + Improved support for C++11, including: +
      +
    • support for <regex>;
    • +
    • The associative containers in <map> and + <set> and the unordered associative containers + in <unordered_map> and <unordered_set> + meet the allocator-aware container requirements;
    • +
    +
  • +
  • + Improved experimental support for the upcoming ISO C++ standard, C++14, + including: +
      +
    • fixing constexpr member functions without const;
    • +
    • implementation of the std::exchange() utility function;
    • +
    • addressing tuples by type;
    • +
    • implemention of std::make_unique;
    • +
    • implemention of std::shared_lock;
    • +
    • making std::result_of SFINAE-friendly;
    • +
    • adding operator() to integral_constant;
    • +
    • adding user-defined literals for standard library types + std::basic_string, std::chrono::duration, + and std::complex;
    • +
    • adding two range overloads to non-modifying sequence oprations + std::equal and std::mismatch;
    • +
    • adding IO manipulators for quoted strings;
    • +
    • adding constexpr members to <utility>, + <complex>, <chrono>, and some containers;
    • +
    • adding compile-time std::integer_sequence;
    • +
    • adding cleaner transformation traits;
    • +
    • making <functional>s operator functors easier to use + and more generic;
    • +
    +
  • +
  • An implementation of std::experimental::optional.
  • +
  • An implementation of std::experimental::string_view.
  • +
  • The non-standard function std::copy_exception has been deprecated + and will be removed in a future version. std::make_exception_ptr + should be used instead. +
  • +
+ +

Fortran

+
    +
  • Compatibility notice: +
      +
    • Module files: The version of the module files (.mod) + has been incremented; additionally, module files are now compressed. + Fortran MODULEs compiled by earlier GCC versions have + to be recompiled, when they are USEd by files compiled + with GCC 4.9, because GCC 4.9 is not able to read .mod + files of earlier GCC versions; attempting to do so gives an error + message. Note: The ABI of the produced assembler data itself has not + changed: object files and libraries are fully compatible to older + versions. (Except for the next items.)
    • +
    • ABI changes: +
        +
      • Note that the argument passing ABI has changed for scalar dummy + arguments of type INTEGER, REAL, + COMPLEX and LOGICAL, which have + both the VALUE and the OPTIONAL + attribute.
      • +
      • Due to the support of finalization, the virtual table associated + with polymorphic variables has changed. Therefore, code containing + CLASS should be recompiled, including all files which + define derived types involved in the type definition used by + polymorphic variables. (Note: Due to the incremented module version, + trying to mix old code with new code will usually give an error + message.)
      • +
    • +
    • GNU Fortran no longer deallocates allocatable variables or + allocatable components of variables declared in the main program. Since + Fortran 2008, the standard explicitly states that variables declared + in the Fortran main program automatically have the SAVE + attribute.
    • +
    • When opening files, the close-on-exec flag is set if the system + supports such a feature. This is generally considered good practice + these days, but if there is a need to pass file descriptors to child + processes the parent process must now remember to clear the + close-on-exec flag by calling fcntl(), e.g. via + ISO_C_BINDING, before executing the child process.
    • +
  • +
  • The deprecated command-line option -fno-whole-file + has been removed. (-fwhole-file is the default since + GCC 4.6.) -fwhole-file/-fno-whole-file + continue to be accepted but do not influence the code generation.
  • +
  • The compiler no longer unconditionally warns + about DO loops with zero iterations. This warning is now + controlled by the -Wzerotrips option, which is implied by + -Wall.
  • +
  • The new NO_ARG_CHECK attribute of the !GCC$ directive can be used to disable the + type-kind-rank (TKR) argument check for a dummy argument. The feature + is similar to ISO/IEC TS 29133:2012's TYPE(*), except that + it additionally also disables the rank check. Variables with + NO_ARG_CHECK have to be dummy arguments and may only be + used as argument to ISO_C_BINDING's C_LOC + and as actual argument to another NO_ARG_CHECK dummy + argument; also the other constraints of TYPE(*) apply. + The dummy arguments should be declared as scalar or assumed-size + variable of type type(*) (recommended) – or of + type integer, real, complex + or logical. With NO_ARG_CHECK, a pointer + to the data without further type or shape information is passed, + similar to C's void*. Note that also TS 29113's + type(*),dimension(..) accepts arguments of any type and + rank; contrary to NO_ARG_CHECK assumed-rank arguments + pass an array descriptor which contains the array shape and stride + of the argument.
  • +
  • Fortran 2003: +
      +
    • Finalization is now supported. Note that finalization is currently + only done for a subset of the situations in which it should occur.
    • +
    • Experimental support for scalar character components with + deferred length (i.e. allocatable string length) in derived types has + been added. (Deferred-length character variables are supported since + GCC 4.6.)
    • +
  • +
  • Fortran 2008: +
      +
    • When STOP or ERROR STOP is used to terminate + the execution and any exception (but inexact) is signaling, a warning is + printed to ERROR_UNIT, indicating which exceptions are + signaling. The -ffpe-summary= command-line option can be used to fine-tune + for which exception the warning should be shown.
    • +
    • Rounding on input (READ) is now handled on systems where + strtod honours the rounding mode. (For output, rounding is + supported since GCC 4.5.) Note that for input, the + compatible rounding mode is handled as nearest + (i.e., for a tie, rounding to an even last significant + [cf. IEC 60559:1989] – while compatible rounds away + from zero for a tie).
    • +
  • +
+ +

Go

+
    +
  • GCC 4.9 provides a complete implementation of the Go 1.2.1 + release.
  • +
+ + + +

New Targets and Target Specific Improvements

+ +

AArch64

+
    +
  • The ARMv8-A crypto and CRC instructions are now supported through + intrinsics. These are enabled when the architecture supports these + and are available through the -march=armv8-a+crc + and -march=armv8-a+crypto options. +
  • +
  • Initial support for ILP32 has now been added to the + compiler. This is now available through the command line option + -mabi=ilp32. Support for ILP32 is + considered experimental as the ABI specification is still beta. +
  • +
  • Coverage of more of the ISA including the SIMD extensions has + been added. The Advanced SIMD intrinsics have also been improved. +
  • +
  • The new local register allocator (LRA) is now on by default + for the AArch64 backend. +
  • +
  • The REE (Redundant extension elimination) pass has now been enabled + by default for the AArch64 backend. +
  • +
  • Tuning for the Cortex-A53 and Cortex-A57 has been improved. +
  • +
  • Initial big.LITTLE tuning support for the combination of Cortex-A57 + and Cortex-A53 was added through the -mcpu=cortex-a57.cortex-a53 + option. +
  • +
  • A number of structural changes have been made to both the ARM + and AArch64 backends to facilitate improved code-generation. +
  • +
+ +

ARM

+
    +
  • Use of Advanced SIMD (Neon) for 64-bit scalar computations has been + disabled by default. This was found to generate better code in only + a small number of cases. It can be turned back on with the + -mneon-for-64bits option. +
  • +
  • Further support for the ARMv8-A architecture, notably implementing + the restriction around IT blocks in the Thumb32 instruction set has + been added. The -mrestrict-it option can be used with + -march=armv7-a or the -march=armv7ve options + to make code generation fully compatible with the deprecated instructions + in ARMv8-A. +
  • +
  • Support has now been added for the ARMv7ve variant of the + architecture. This can be used by the -march=armv7ve option. +
  • +
  • The ARMv8-A crypto and CRC instructions are now supported through + intrinsics and are available through the -march=armv8-a+crc + and mfpu=crypto-neon-fp-armv8 options. +
  • +
  • LRA is now on by default for the ARM target. This can be turned off + using the -mno-lra option. This option is purely + transitionary command line option and will be removed in a future + release. We are interested in any bug reports regarding functional and + performance regressions with LRA. +
  • +
  • A new option -mslow-flash-data to improve performance + of programs fetching data on slow flash memory has now been + introduced for the ARMv7-M profile cores. +
  • +
  • A new option -mpic-data-is-text-relative for targets + that allows data segments to be relative to text segments has + been added. This is on by default for all targets except VxWorks RTP. +
  • +
  • A number of infrastructural changes have been made to both the ARM + and AArch64 backends to facilitate improved code-generation. +
  • +
  • GCC now supports Cortex-A12 and the Cortex-R7 through the + -mcpu=cortex-a12 and -mcpu=cortex-r7 options. +
  • +
  • GCC now has tuning for the Cortex-A57 and Cortex-A53 + through the -mcpu=cortex-a57 and -mcpu=cortex-a53 + options. +
  • +
  • Initial big.LITTLE tuning support for the combination of Cortex-A57 + and Cortex-A53 was added through the -mcpu=cortex-a57.cortex-a53 + option. Similar support was added for the combination of + Cortex-A15 and Cortex-A7 through the -mcpu=cortex-a15.cortex-a7 + option. +
  • +
  • Further performance optimizations for the Cortex-A15 and the + Cortex-M4 have been added. +
  • +
  • A number of code generation improvements for Thumb2 to reduce code + size when compiling for the M-profile processors. +
  • +
+

IA-32/x86-64

+
    +
  • -mfpmath=sse is now implied by -ffast-math + on all targets where SSE2 is supported.
  • +
  • Intel AVX-512 support was added to GCC. That includes inline + assembly support, new registers and extending existing ones, + new intrinsics (covered by corresponding testsuite), and basic + autovectorization. AVX-512 instructions are available via + the following GCC switches: AVX-512 foundation instructions: + -mavx512f, AVX-512 prefetch instructions: -mavx512pf, + AVX-512 exponential and reciprocal instructions: -mavx512er, + AVX-512 conflict detection instructions: -mavx512cd. +
  • +
  • It is now possible to call x86 intrinsics from select functions in + a file that are tagged with the corresponding target attribute without + having to compile the entire file with the -mxxx option. + This improves the usability of x86 intrinsics and is particularly useful + when doing Function Multiversioning. +
  • +
  • GCC now supports the new Intel microarchitecture named Silvermont + through -march=silvermont. +
  • +
  • GCC now supports the new Intel microarchitecture named Broadwell + through -march=broadwell. +
  • +
  • Optimizing for other Intel microarchitectures have been renamed + to -march=nehalem, westmere, + sandybridge, ivybridge, + haswell, bonnell. +
  • +
  • -march=generic has been retuned for better support of + Intel core and AMD Bulldozer architectures. Performance of AMD K7, K8, + Intel Pentium-M, and Pentium4 based CPUs is no longer considered important + for generic. +
  • +
  • -mtune=intel can now be used to generate code running + well on the most current Intel processors, which are Haswell + and Silvermont for GCC 4.9. +
  • +
  • Support to encode 32-bit assembly instructions in 16-bit format + is now available through the -m16 command-line option. +
  • +
  • Better inlining of memcpy and memset + that is aware of value ranges and produces shorter alignment prologues. +
  • +
  • -mno-accumulate-outgoing-args is now honored when unwind + information is output. Argument accumulation is also now turned off + for portions of programs optimized for size.
  • +
  • Support for new AMD family 15h processors (Excavator core) + is now available through the -march=bdver4 and + -mtune=bdver4 options.
  • +
+

MSP430

+
    +
  • A new command-line option -mcpu= has been added to the MSP430 backend. + This option is used to specify the ISA to be used. Accepted values are + msp430 (the default), msp430x and msp430xv2. The ISA is no longer deduced + from the -mmcu= option as there are far too many different MCU names. The + -mmcu= option is still supported, and this is still used to select linker + scripts and generate a C preprocessor symbol that will be recognised by the + msp430.h header file.
  • +
+

NDS32

+
    +
  • A new nds32 port supports the 32-bit architecture from Andes + Technology Corporation.
  • +
  • The port provides initial support for the V2, V3, V3m + instruction set architectures.
  • +
+

Nios II

+
    +
  • A port for the Altera Nios II has been contributed by + Mentor Graphics.
  • +
+

PowerPC / PowerPC64 / RS6000

+
    +
  • GCC now supports Power ISA 2.07, which includes support for Hardware + Transactional Memory (HTM), Quadword atomics and several VMX and VSX + additions, including Crypto, 64-bit integer, 128-bit integer and + decimal integer operations.
  • +
  • Support for the POWER8 processor is now available through the + -mcpu=power8 and -mtune=power8 options.
  • +
  • The libitm library has been modified to add a HTM fastpath that + automatically uses POWER's HTM hardware instructions when it is + executing on a HTM enabled processor.
  • +
  • Support for the new powerpc64le-linux platform has been added. + It defaults to generating code that conforms to the ELFV2 ABI.
  • +
+

S/390, System z

+
    +
  • Support for the Transactional Execution Facility included with + the IBM zEnterprise zEC12 processor has been added. A set of + GCC style builtins as well as XLC style builtins are provided. + The builtins are enabled by default when using + the -march=zEC12 option but can explicitly be + disabled with -mno-htm. + Using the GCC builtins also libitm supports hardware + transactions on S/390.
  • +
  • The hotpatch features allows to prepare functions for + hotpatching. A certain amount of bytes is reserved before the + function entry label plus a NOP is inserted at its very + beginning to implement a backward jump when applying a patch. + The feature can either be enabled via command line + option -mhotpatch for a compilation unit or can be + enabled per function using the hotpatch + attribute.
  • +
  • The shrink wrap optimization is now supported on S/390 and + enabled by default.
  • +
  • A major rework of the routines to determine which registers + need to be saved and restored in function prologue/epilogue now + allow to use floating point registers as save slots. This will + happen for certain leaf function with -march=z10 + or higher.
  • +
  • The LRA rtl pass replaces reload by default on S/390.
  • +
+

RX

+
    +
  • The port now allows to specify the RX100, RX200, and RX600 processors + with the command line options -mcpu=rx100, -mcpu=rx200 and -mcpu=rx600. +
  • +
+ +

SH

+
    +
  • Minor improvements to code generated for integer arithmetic and code + that involves the T bit.
  • + +
  • Added support for the SH2A clips and clipu + instructions. The compiler will now try to utilize them for min/max + expressions such as max (-128, min (127, x)).
  • + +
  • Added support for the cmp/str instruction through built-in + functions such as __builtin_strlen. When not optimizing for + size, the compiler will now expand calls to e.g. strlen as an + inlined sequences which utilize the cmp/str instruction.
  • + +
  • Improved code generated around volatile memory loads and stores.
  • + +
  • The option -mcbranchdi has been deprecated. Specifying it + will result in a warning and will not influence code generation.
  • + +
  • The option -mcmpeqdi has been deprecated. Specifying it + will result in a warning and will not influence code generation.
  • +
+ + + + + + + + + + + + + + + + + + + --- gcc-4.9-4.9.2.orig/debian/README.Bugs.m4 +++ gcc-4.9-4.9.2/debian/README.Bugs.m4 @@ -0,0 +1,333 @@ +Reporting Bugs in the GNU Compiler Collection for DIST +======================================================== + +Before reporting a bug, please +------------------------------ + +- Check that the behaviour really is a bug. Have a look into some + ANSI standards document. + +- Check the list of well known bugs: http://gcc.gnu.org/bugs.html#known + +- Try to reproduce the bug with a current GCC development snapshot. You + usually can get a recent development snapshot from the gcc-snapshot +ifelse(DIST,`Debian',`dnl + package in the unstable (or experimental) distribution. + + See: http://packages.debian.org/gcc-snapshot +', DIST, `Ubuntu',`dnl + package in the current development distribution. + + See: http://archive.ubuntu.com/ubuntu/pool/universe/g/gcc-snapshot/ +')dnl + +- Try to find out if the bug is a regression (an older GCC version does + not show the bug). + +- Check if the bug is already reported in the bug tracking systems. + +ifelse(DIST,`Debian',`dnl + Debian: http://bugs.debian.org/debian-gcc@lists.debian.org +', DIST, `Ubuntu',`dnl + Ubuntu: https://bugs.launchpad.net/~ubuntu-toolchain/+packagebugs + Debian: http://bugs.debian.org/debian-gcc@lists.debian.org +')dnl + Upstream: http://gcc.gnu.org/bugzilla/ + + +Where to report a bug +--------------------- + +ifelse(DIST,`Debian',`dnl +Please report bugs found in the packaging of GCC to the Debian bug tracking +system. See http://www.debian.org/Bugs/ for instructions (or use the +reportbug script). +', DIST, `Ubuntu',`dnl +Please report bugs found in the packaging of GCC to Launchpad. See below +how issues should be reported. +')dnl + +DIST's current policy is to closely follow the upstream development and +only apply a minimal set of patches (which are summarized in the README.Debian +document). + +ifelse(DIST,`Debian',`dnl +If you think you have found an upstream bug, you did check the section +above ("Before reporting a bug") and are able to provide a complete bug +report (see below "How to report a bug"), then you may help the Debian +GCC package maintainers, if you report the bug upstream and then submit +a bug report to the Debian BTS and tell us the upstream report number. +This way you are able to follow the upstream bug handling as well. If in +doubt, report the bug to the Debian BTS (but read "How to report a bug" +below). +', DIST, `Ubuntu',`dnl +If you think you have found an upstream bug, you did check the section +above ("Before reporting a bug") and are able to provide a complete bug +report (see below "How to report a bug"), then you may help the Ubuntu +GCC package maintainers, if you report the bug upstream and then submit +a bug report to Launchpad and tell us the upstream report number. +This way you are able to follow the upstream bug handling as well. If in +doubt, report the bug to Launchpad (but read "How to report a bug" below). + +Report the issue to https://bugs.launchpad.net/ubuntu/+source/SRCNAME. +')dnl + + +How to report a bug +------------------- + +There are complete instructions in the gcc info manual (found in the +gcc-doc package), section Bugs. + +The manual can be read using `M-x info' in Emacs, or if the GNU info +program is installed on your system by `info --node "(gcc)Bugs"'. Or see +the file BUGS included with the gcc source code. + +Online bug reporting instructions can be found at + + http://gcc.gnu.org/bugs.html + +[Some paragraphs taken from the above URL] + +The main purpose of a bug report is to enable us to fix the bug. The +most important prerequisite for this is that the report must be +complete and self-contained, which we explain in detail below. + +Before you report a bug, please check the list of well-known bugs and, +if possible in any way, try a current development snapshot. + +Summarized bug reporting instructions +------------------------------------- + +What we need + +Please include in your bug report all of the following items, the +first three of which can be obtained from the output of gcc -v: + + * the exact version of GCC; + * the system type; + * the options given when GCC was configured/built; + * the complete command line that triggers the bug; + * the compiler output (error messages, warnings, etc.); and + * the preprocessed file (*.i*) that triggers the bug, generated by + adding -save-temps to the complete compilation command, or, in + the case of a bug report for the GNAT front end, a complete set + of source files (see below). + +What we do not want + + * A source file that #includes header files that are left out + of the bug report (see above) + * That source file and a collection of header files. + * An attached archive (tar, zip, shar, whatever) containing all + (or some :-) of the above. + * A code snippet that won't cause the compiler to produce the + exact output mentioned in the bug report (e.g., a snippet with + just a few lines around the one that apparently triggers the + bug, with some pieces replaced with ellipses or comments for + extra obfuscation :-) + * The location (URL) of the package that failed to build (we won't + download it, anyway, since you've already given us what we need + to duplicate the bug, haven't you? :-) + * An error that occurs only some of the times a certain file is + compiled, such that retrying a sufficient number of times + results in a successful compilation; this is a symptom of a + hardware problem, not of a compiler bug (sorry) + * E-mail messages that complement previous, incomplete bug + reports. Post a new, self-contained, full bug report instead, if + possible as a follow-up to the original bug report + * Assembly files (*.s) produced by the compiler, or any binary files, + such as object files, executables, core files, or precompiled + header files + * Duplicate bug reports, or reports of bugs already fixed in the + development tree, especially those that have already been + reported as fixed last week :-) + * Bugs in the assembler, the linker or the C library. These are + separate projects, with separate mailing lists and different bug + reporting procedures + * Bugs in releases or snapshots of GCC not issued by the GNU + Project. Report them to whoever provided you with the release + * Questions about the correctness or the expected behavior of + certain constructs that are not GCC extensions. Ask them in + forums dedicated to the discussion of the programming language + + +Known Bugs and Non-Bugs +----------------------- + +[Please see /usr/share/doc/gcc/FAQ or http://gcc.gnu.org/faq.html first] + + +C++ exceptions don't work with C libraries +------------------------------------------ + +[Taken from the closed bug report #22769] C++ exceptions don't work +with C libraries, if the C code wasn't designed to be thrown through. +A solution could be to translate all C libraries with -fexceptions. +Mostly trying to throw an exception in a callback function (qsort, +Tcl command callbacks, etc ...). Example: + + #include + #include + + class A {}; + + static + int SortCondition(void const*, void const*) + { + printf("throwing 'sortcondition' exception\n"); + throw A(); + } + + int main(int argc, char *argv[]) + { + int list[2]; + + try { + SortCondition(NULL,NULL); + } catch (A) { + printf("caught test-sortcondition exception\n"); + } + try { + qsort(&list, sizeof(list)/sizeof(list[0]),sizeof(list[0]), + &SortCondition); + } catch (A) { + printf("caught real-sortcondition exception\n"); + } + return 0; +} + +Andrew Macleod responded: + +When compiled with the table driven exception handling, exception can only +be thrown through functions which have been compiled with the table driven EH. +If a function isn't compiled that way, then we do not have the frame +unwinding information required to restore the registers when unwinding. + +I believe the setjmp/longjmp mechanism will throw through things like this, +but its produces much messier code. (-fsjlj-exceptions) + +The C compiler does support exceptions, you just have to turn them on +with -fexceptions. + +Your main options are to: + a) Don't use callbacks, or at least don't throw through them. + b) Get the source and compile the library with -fexceptions (You have to + explicitly turn on exceptions in the C compiler) + c) always use -fsjlj-exceptions (boo, bad choice :-) + + +g++: "undefined reference" to static const array in class +--------------------------------------------------------- + +The following code compiles under GNU C++ 2.7.2 with correct results, +but produces the same linker error with GNU C++ 2.95.2. +Alexandre Oliva responded: + +All of them are correct. A static data member *must* be defined +outside the class body even if it is initialized within the class +body, but no diagnostic is required if the definition is missing. It +turns out that some releases do emit references to the missing symbol, +while others optimize it away. + +#include + +class Test +{ + public: + Test(const char *q); + protected: + static const unsigned char Jam_signature[4] = "JAM"; +}; + +Test::Test(const char *q) +{ + if (memcmp(q, Jam_signature, sizeof(Jam_signature)) != 0) + cerr << "Hello world!\n"; +} + +int main(void) +{ + Test::Test("JAM"); + return 0; +} + +g++: g++ causes passing non const ptr to ptr to a func with const arg + to cause an error (not a bug) +--------------------------------------------------------------------- + +Example: + +#include +void test(const char **b){ + printf ("%s\n",*b); +} +int main(void){ + char *test1="aoeu"; + test(&test1); +} + +make const +g++ const.cc -o const +const.cc: In function `int main()': +const.cc:7: passing `char **' as argument 1 of `test(const char **)' adds cv-quals without intervening `const' +make: *** [const] Error 1 + +Answer from "Martin v. Loewis" : + +> ok... maybe I missed something.. I haven't really kept up with the latest in +> C++ news. But I've never heard anything even remotly close to passing a non +> const var into a const arg being an error before. + +Thanks for your bug report. This is a not a bug in the compiler, but +in your code. The standard, in 4.4/4, puts it that way + +# A conversion can add cv-qualifiers at levels other than the first in +# multi-level pointers, subject to the following rules: +# Two pointer types T1 and T2 are similar if there exists a type T and +# integer n > 0 such that: +# T1 is cv(1,0) pointer to cv(1,1) pointer to ... cv(1,n-1) +# pointer to cv(1,n) T +# and +# T2 is cv(2,0) pointer to cv(2,1) pointer to ... cv(2,n-1) +# pointer to cv(2,n) T +# where each cv(i,j) is const, volatile, const volatile, or +# nothing. The n-tuple of cv-qualifiers after the first in a pointer +# type, e.g., cv(1,1) , cv(1,2) , ... , cv(1,n) in the pointer type +# T1, is called the cv-qualification signature of the pointer type. An +# expression of type T1 can be converted to type T2 if and only if the +# following conditions are satisfied: +# - the pointer types are similar. +# - for every j > 0, if const is in cv(1,j) then const is in cv(2,j) , +# and similarly for volatile. +# - if the cv(1,j) and cv(2,j) are different, then const is in every +# cv(2,k) for 0 < k < j. + +It is the last rule that your code violates. The standard gives then +the following example as a rationale: + +# [Note: if a program could assign a pointer of type T** to a pointer +# of type const T** (that is, if line //1 below was allowed), a +# program could inadvertently modify a const object (as it is done on +# line //2). For example, +# int main() { +# const char c = 'c'; +# char* pc; +# const char** pcc = &pc; //1: not allowed +# *pcc = &c; +# *pc = 'C'; //2: modifies a const object +# } +# - end note] + +If you question this line of reasoning, please discuss it in one of +the public C++ fora first, eg. comp.lang.c++.moderated, or +comp.std.c++. + + +cpp removes blank lines +----------------------- + +With the new cpp, you need to add -traditional to the "cpp -P" args, else +blank lines get removed. + +[EDIT ME: scan Debian bug reports and write some nice summaries ...] --- gcc-4.9-4.9.2.orig/debian/README.C++ +++ gcc-4.9-4.9.2/debian/README.C++ @@ -0,0 +1,35 @@ +libstdc++ is an implementation of the Standard C++ Library, including the +Standard Template Library (i.e. as specified by ANSI and ISO). + +Some notes on porting applications from libstdc++-2.90 (or earlier versions) +to libstdc++-v3 can be found in the libstdc++6-4.3-doc package. After the +installation of the package, look at: + + file:///usr/share/doc/gcc-4.3-base/libstdc++/html/17_intro/porting-howto.html + +On Debian GNU/Linux you find additional documentation in the +libstdc++6-4.3-doc package. After installing these packages, +point your browser to + + file:///usr/share/doc/libstdc++6-4.3-doc/libstdc++/html/index.html + +Other documentation can be found: + + http://www.sgi.com/tech/stl/ + +with a good, recent, book on C++. + +A great deal of useful C++ documentation can be found in the C++ FAQ-Lite, +maintained by Marshall Cline . It can be found at the +mirror sites linked from the following URL (this was last updated on +2010/09/11): + + http://www.parashift.com/c++-faq/ + +or use some search engin site to find it, e.g.: + + http://www.google.com/search?q=c%2B%2B+faq+lite + +Be careful not to use outdated mirors. + +Please send updates to this list as bug report for the g++ package. --- gcc-4.9-4.9.2.orig/debian/README.Debian +++ gcc-4.9-4.9.2/debian/README.Debian @@ -0,0 +1,45 @@ + The Debian GNU Compiler Collection setup + ======================================== + +Please see the README.Debian in /usr/share/doc/gcc, contained in the +gcc package for a description of the setup of the different compiler +versions. + +For general discussion about the Debian toolchain (GCC, glibc, binutils) +please use the mailing list debian-toolchain@lists.debian.org; for GCC +specific things, please use debian-gcc@lists.debian.org. When in doubt +use the debian-toolchain ML. + + +Maintainers of these packages +----------------------------- + +Matthias Klose +Ludovic Brenta (gnat) +Iain Buclaw (gdc) +Aurelien Jarno (mips*-linux) +Aurelien Jarno (s390X*-linux) + +The following ports lack maintenance in Debian: powerpc, ppc64, +sparc, sparc64 (unmentioned ports are usually handled by the Debian +porters). + +Former and/or inactive maintainers of these packages +---------------------------------------------------- + +Falk Hueffner (alpha-linux) +Ray Dassen +Jeff Bailey (hurd-i386) +Joel Baker (netbsd-i386) +Randolph Chung (ia64-linux) +Philip Blundell (arm-linux) +Ben Collins (sparc-linux) +Dan Jacobowitz (powerpc-linux) +Thiemo Seufer (mips*-linux) +Matt Taggart (hppa-linux) +Gerhard Tonn (s390-linux) +Roman Zippel (m68k-linux) +Arthur Loiret (gdc) + +=============================================================================== + --- gcc-4.9-4.9.2.orig/debian/README.cross +++ gcc-4.9-4.9.2/debian/README.cross @@ -0,0 +1,144 @@ +Building cross-compiler Debian packages +--------------------------------------- + +It is possible to build C and C++ cross compilers and support libraries +from gcc-4.0 source package. This document describes how to do so. +Cross-compiler build support is not perfect yet, please send fixes +and improvements to debian-gcc@lists.debian.org and +debian-embedded@lists.debian.org + +Before you start, you should probably check available pre-built +cross-toolchain debs. Available at http://www.emdebian.org + +Old patches could be reached at + http://zigzag.lvk.cs.msu.su/~nikita/debian/ + +If they are no longer there, you may check EmDebian web site at + http://www.emdebian.org/ +or ask debian-embedded@lists.debian.org for newer location. + +Please check http://bugs.debian.org/391445 if you are about building +gcc-4.3 or above. + +Most of them has been merged with gcc debian sources. + +0. What's wrong with toolchain-source approach + +Package toolchain-source contains sources for binutils and gcc, as well as +some support scripts to build cross-compiler packages. They seem to work. + +However, there is one fundamental problem with this approach. +Gcc package is actively maintained and frequently updated. These updates +do contain bug fixes and improvements, especially for non-x86 architectures. +Cross-compilers built using toolchain-source will not get those fixes unless +toolchain-source package is updated after each binutils and gcc update. +The later is not hapenning in real life. For example, toolchain-source +was upgraded from gcc-3.2 to gcc-3.3 half a year later than gcc-3.3 became +Debian default compiler. + +Keeping toolchain-source package up-to-date requires lots of work, and seems +to be a waste of time. It is much better to build cross-compilers directly +from gcc source package. + + +1. What is needed to build a cross-compiler from gcc-4.3 source + +1.1. dpkg-cross package + +Dpkg-cross package contains several tools to manage cross-compile environment. + +It can convert native debian library and lib-dev packages for the target +architecture to binary-all packages that keep libraries and headers under +/usr/$(TARGET)/. + +Also it contains helper tools for cross-compiling debian packages. Some of +these tools are used while building libgcc1 and libstdc++ library packages. +The resulting library packages follow the same convensions as library packages +converted by dpkg-cross. + +Currently, at least version 1.18 of dpkg-cross is needed for cross-gcc +package build. Version 1.32 of dpkg-cross is needed in order to build gcc-4.3. + +1.2. cross-binutils for the target + +You need cross-binutils for your target to build cross-compiler. +Binutils-multiarch package will not work because it does not provide cross- +assemblers. + +If you don't want to use pre-built cross-binutils packages, you may build +your own from binutils debian source package, using patches posted to +bug #231707. Please use the latest of patch versions available there. + +Alternatively, you may use toolchain-source package to build cross-binutils +(but in this case you will probably also want to use toolchain-source +to build cross-compiler itself). However, multilib'ed cross-compilers may +not build or work with these binutils. + +1.3. libc for target + +You also need libc library and development packages for the target +architecture installed. + +To get those, download linux-kernel-headers, libc6, and libc6-dev binary +debs for your target, convert those using dpkg-cross -b, and install +resulting -arch-cross debs. Consult dpkg-cross manual page for more +information. + +Building with/for alternative libc's is not supported yet (but this is in +TODO). + +Note that if you plan to use your cross-toolchain to develop kernel drivers +or similar low-level things, you will probably also need kernel headers +for the exact kernel version that your target hardware uses. + + +2. Building cross-compiler packages + +Get gcc-4.3 source package. + +Unpack it using dpkg-source -x, and cd to the package directory. + +Set GCC_TARGET environment variable to the target architectire name. Note +that currently you should use debian architecture name (i.e 'powerpc' or 'arm'), +not GNU system type (i.e. 'powerpc-linux' or 'arm-linux'). Setting GCC_TARGET +to GNU system type will cause cross-compiler build to fail. + +Instead of setting GCC_TARGET, target architecture name may be put into +debian/target file. If both GCC_TARGET is defined and debian/target file +exists, GCC_TARGET is used. + +Run debian/rules control. This will change debian/control file, +adjusting build-depends. By default, the packages will not depend on the +system -base package. A variable DEB_CROSS_INDEPENDENT has been merged with DEB_CROSS variable. + +You can then build with either + +$ GCC_TARGET=[arch] dpkg-buildpackage -rfakeroot + +3. Using crosshurd + +Jeff Bailey suggests alternate way to setup +environment to build cross-compiler, using 'crosshurd' package. +Crosshurd is like debootstrap but cross-arch, and works on the Hurd, +Linux and FreeBSD. (The name is historical). + +If you setup your environment with crosshurd, you will need to fix symlinks +in lib and usr/lib to be relative instead of absolute. For example: + +lrwxrwxrwx 1 root root 20 2004-05-06 23:02 libcom_err.so -> /lib/libcom_err.so.2 + +Needs to be changed to: + +lrwxrwxrwx 1 root root 20 2004-05-06 23:02 libcom_err.so -> ../../lib/libcom_err.so.2 + +Also, if you choose this method, set the environment variable 'with_sysroot' +to point to the ABSOLUTE PATH where the crosshurd was done. + +Note however that build-depends of cross-gcc and dependencies in generated +libgcc1 and libstdc++ packages assume that you use dpkg-cross to set up +your environment, and may be wrong or incomplete if you use alternate methods. +But probably you don't care. + +-- +Nikita V. Youshchenko - Jun 2004 +Hector Oron Martinez - Oct 2006 --- gcc-4.9-4.9.2.orig/debian/README.gnat +++ gcc-4.9-4.9.2/debian/README.gnat @@ -0,0 +1,35 @@ +If you want to develop Ada programs and libraries on Debian, please +read the Debian Policy for Ada: + +http://people.debian.org/~lbrenta/debian-ada-policy.html + +The default Ada compiler is and always will be the package `gnat'. +Debian contains many programs and libraries compiled with it, which +are all ABI-compatible. + +Starting with gnat-4.2, Debian provides both zero-cost and +setjump/longjump versions of the run-time library. The zero-cost +exception handling mechanism is the default as it provides the best +performance. The setjump/longjump exception handling mechanism is new +and only provided as a static library. It is necessary to use this +exception handling mechanism in distributed (annex E) programs. If +you wish to use the new sjlj library: + +1) call gnatmake with --RTS=sjlj +2) call gnatbind with -static + +Do NOT link your programs with libgnat-4.2.so, because it uses the ZCX +mechanism. + + +This package also includes small tools covering specific needs. + +* When linking objects compiled from both Ada and C sources, you need + to use compatible versions of the Ada and C compilers. The + /usr/bin/gnatgcc symbolic link targets a version of the C compiler + compatible with the default Ada compiler, and may differ from the + default C compiler /usr/bin/gcc. + +* When packaging Ada sources for Debian, you may want to read the + /usr/share/ada/debian_packaging.mk Makefile snippet and/or include + it from debian/rules in order to set sensible defaults. --- gcc-4.9-4.9.2.orig/debian/README.libstdc++-baseline.in +++ gcc-4.9-4.9.2/debian/README.libstdc++-baseline.in @@ -0,0 +1,2 @@ +The libstdc++ baseline file is a list of symbols exported by the +libstdc++ library. --- gcc-4.9-4.9.2.orig/debian/README.maintainers +++ gcc-4.9-4.9.2/debian/README.maintainers @@ -0,0 +1,196 @@ +-*- Outline -*- + +Read this file if you are a Debian Developer or would like to become +one, or if you would like to create your own binary packages of GCC. + +* Overview + +From the GCC sources, Debian currently builds 3 source packages and +almost 100 binary packages, using a single set of build scripts. The +3 source packages are: + +gcc-x.y: C, C++, Fortran, Objective-C and Objective-C++, plus many + common libraries like libssp and libgcc. +gcj-x.y: Java. +gnat-x.y: Ada. + +The way we do this is quite peculiar, so listen up :) + +When we build from the gcc-x.y source package, we produce, among many +others, a gcc-x.y-source binary package that contains the pristine +upstream tarball and some Debian-specific patches. Any user can then +install this package on their Debian system, and will have the full +souces in /usr/src/gcc-x.y/gcc-.tar.bz2, along with the +Makefile snippets that unpack and patch them. + +The intended use for this package is twofold: (a) allow users to build +their own cross-compilers, and (b) build the other two packages, +gcj-x.y and gnat-x.y. + +- gcc-x.y requires only a C compiler to build and produces C, C++, + Fortran, Go and Objective-C compilers and libraries. It also + produces the binary package gcc-x.y-source containing all the + sources and patches in a tarball. + +- gcj-x.y build-depends on gcc-x.y-source and C++ and Java compilers. + Its .orig.tar.bz2 file only contains an empty directory; the real + sources from which it builds the binary packages are in + gcc-x.y-source. + +- gnat-x.y build-depends on gcc-x.y-source and an Ada compiler. It + does not even have an .orig.tar.bz2 package; it is a Debian native + package. + +The benefits of this split are many: + +- bootstrapping a subset of languages is much faster than + bootstrapping all languages and libraries (which can take a full + week on slow architectures like mips or arm) + +- the language maintainers don't have to wait for each other + +- for new ports, the absence of a port of, say, gnat-x.y does not + block the porting of gcc-x.y. + +gcc-x.y-source is also intended for interested users to build +cross-compiler packages. Debian cannot provide all possible +cross-compiler packages (i.e. all possible host, target, language and +library combinations), so instead tries to facilitate building them. + +* The build sequence + +As for all other Debian packages, you build GCC by calling +debian/rules. + +The first thing debian/rules does it to look at the top-most entry in +debian/changelog: this tells it which source package it is building. +For example, if the first entry in debian/changelog reads: + +gcj-4.3 (4.3-20070609-1) unstable; urgency=low + + * Upload as gcj-4.3. + + -- Ludovic Brenta Tue, 26 Jun 2007 00:26:42 +0200 + +then, debian/rules will build only the Java binary packages. + +The second step is to build debian/control from debian/control.m4 and +a complex set of rules specified in debian/rules.conf. The resulting +control file contains only the binary packages to be built. + +The third step is to select which patches to apply (this is done in +debian/rules.defs), and then to apply the selected patches (see +debian/rules.patch). The result of this step is a generated +debian/patches/series file for use by quilt. + +The fourth step is to unpack the GCC source tarball. This tarball is +either in the build directory (when building gcc-x.y), or in +/usr/src/gcc-x.y/gcc-x.y.z.tar.xz (when building the other source +packages). + +The fifth step is to apply all patches to the unpacked sources with +quilt. + +The sixth step is to create a "build" directory, cd into it, call +../src/configure, and bootstrap the compiler and libraries selected. +This is in debian/rules2. + +The seventh step is to call "make install" in the build directory: +this installs the compiler and libraries into debian/tmp +(i.e. debian/tmp/usr/bin/gcc, etc.) + +The eighth step is to run the GCC test suite. This actually takes at +least as much time as bootstrapping, and you can disable it by setting +WITHOUT_CHECK to "yes" in the environment. + +The ninth step is to build the binary packages, i.e. the .debs. This +is done by a set of language- and architecture-dependent Makefile +snippets in the debian/rules.d/ directory, which move files from the +debian/tmp tree to the debian/ trees. + +* Making your own packages + +In this example, we will build our own gnat-x.y package. + +1) Install gcc-x.y-source, which contains the real sources: + +# aptitude install gcc-x.y-source + +2) Create a build directory: + +$ mkdir gnat-x.y-x.y.z; cd gnat-x.y-x.y.z + +3) Checkout from Subversion: + +$ svn checkout svn://svn.debian.org/gcccvs/branches/sid/gcc-x.y/debian + +4) Edit the debian/changelog file, adding a new entry at the top that + starts with "gnat-x.y". + +5) Generate the debian/control file, adjusted for gnat: + +$ debian/rules control + +8) Build: + +$ dpkg-buildpackage + +* Hints + +You need a powerful machine to build GCC. The larger, the better. +The build scripts take advantage of as many CPU threads as are +available in your box (for example: 2 threads on a dual-core amd64; 4 +threads on a dual-core POWER5; 32 threads on an 8-core UltraSPARC T1, +etc.). + +If you have 2 GB or more of physical RAM, you can achieve maximum +performance by building in a tmpfs, like this: + +1) as root, create the new tmpfs: + +# mount -t tmpfs -o size=1280m none /home/lbrenta/src/debian/ram + +By default, the tmpfs will be limited to half your physical RAM. The +beauty of it is that it only consumes as much physical RAM as +necessary to hold the files in it; deleting files frees up RAM. + +2) As your regular user, create the working directory in the tmpfs + +$ cp --archive ~/src/debian/gcc-x.y-x.y.z ~/src/debian/ram + +3) Build in there. On my dual-core, 2 GHz amd64, it takes 34 minutes + to build gnat, and the tmpfs takes 992 MiB of physical RAM but + exceeds 1 GiB during the build. + +Note that the build process uses a lot of temporary files. Your $TEMP +directory should therefore also be in a ram disk. You can achieve +that either by mounting it as tmpfs, or by setting TEMP to point to +~/src/debian/ram. + +Also note that each thread in your processor(s) will run a compiler in +it and use up RAM. Therefore your physical memory should be: + +Physical_RAM >= 1.2 + 0.4 * Threads (in GiB) + +(this is an estimate; your mileage may vary). If you have less +physical RAM than recommended, reduce the number of threads allocated +to the build process, or do not use a tmpfs to build. + +* Patching GCC + +Debian applies a large number of patches to GCC as part of the build +process. It uses quilt but the necessary debian/patches/series is not +part of the packaging scripts; instead, "debian/rules patch" generates +this file by looking at debian/control (which is itself generated!), +debian/changelog and other files. Then it applies all the patches. +At this point, you can use quilt as usual: + +$ cd ~/src/debian/gcc-x.y +$ export QUILT_PATCHES=$PWD/debian/patches +$ quilt series + +If you add new patches, remember to add them to the version control +system too. + +-- +Ludovic Brenta, 2012-04-02. --- gcc-4.9-4.9.2.orig/debian/README.snapshot +++ gcc-4.9-4.9.2/debian/README.snapshot @@ -0,0 +1,36 @@ +Debian gcc-snapshot package +=========================== + +This package contains a recent development SNAPSHOT of all files +contained in the GNU Compiler Collection (GCC). + +DO NOT USE THIS SNAPSHOT FOR BUILDING DEBIAN PACKAGES! + +This package will NEVER hit the testing distribution. It's used for +tracking gcc bugs submitted to the Debian BTS in recent development +versions of gcc. + +To use this snapshot, you should set the following environment variables: + + LD_LIBRARY_PATH=/usr/lib/gcc-snapshot/lib:$LD_LIBRARY_PATH + PATH=/usr/lib/gcc-snapshot/bin:$PATH + +You might also like to use a shell script to wrap up this +funcationality, e.g. + +place in /usr/local/bin/gcc-snapshot and chmod +x it + +----------- snip ---------- +#! /bin/sh +LD_LIBRARY_PATH=/usr/lib/gcc-snapshot/lib:$LD_LIBRARY_PATH +PATH=/usr/lib/gcc-snapshot/bin:$PATH +gcc "$@" +----------- snip ---------- + +Make the same for g++, g77, gij, gcj, cpp, ... + +Don't forget the quotes around the $@ or gcc will not parse it's +command line correctly! + +Unset these variables before building Debian packages destined for an +upload to ftp-master.debian.org. --- gcc-4.9-4.9.2.orig/debian/README.source +++ gcc-4.9-4.9.2/debian/README.source @@ -0,0 +1,14 @@ +Patches applied to the Debian version of GCC +-------------------------------------------- + +Debian specific patches can be found in the debian/patches directory. +Quilt is used as the patch system. See /usr/share/doc/quilt/README.source +for details about quilt. + +Patches are applied by calling `debian/rules patch'. The `series' +file is constructed on the fly, configure scripts are regenerated +in the `patch' target. + +The source packages gcj-x.y and gnat-x.y do not contain copies of the +source code but build-depend on the appropriate gcc-x.y-source package +instead. --- gcc-4.9-4.9.2.orig/debian/README.ssp +++ gcc-4.9-4.9.2/debian/README.ssp @@ -0,0 +1,28 @@ +Stack smashing protection is a feature of GCC that enables a program to +detect buffer overflows and immediately terminate execution, rather than +continuing execution with corrupt internal data structures. It uses +"canaries" and local variable reordering to reduce the likelihood of +stack corruption through buffer overflows. + +Options that affect stack smashing protection: + +-fstack-protector + Enables protection for functions that are vulnerable to stack + smashing, such as those that call alloca() or use pointers. + +-fstack-protector-all + Enables protection for all functions. + +-Wstack-protector + Warns about functions that will not be protected. Only active when + -fstack-protector has been used. + +Applications built with stack smashing protection should link with the +ssp library by using the option "-lssp" for systems with glibc-2.3.x or +older; glibc-2.4 and newer versions provide this functionality in libc. + +The Debian architectures alpha, hppa, ia64, m68k, mips, mipsel do not +have support for stack smashing protection. + +More documentation can be found at the project's website: +http://researchweb.watson.ibm.com/trl/projects/security/ssp/ --- gcc-4.9-4.9.2.orig/debian/TODO +++ gcc-4.9-4.9.2/debian/TODO @@ -0,0 +1,50 @@ +(It is recommended to edit this file with emacs' todoo mode) +Last updated: 2008-05-02 + +* General + +- Clean up the sprawl of debian/rules. I'm sure there are neater + ways to do some of it; perhaps split it up into some more files? + Partly done. + +- Make debian/rules control build the control file without unpacking + the sources or applying patches. Currently, it unpacks the sources, + patches them, creates the control file, and a subsequent + dpkg-buildpackage deletes the sources, re-unpacks them, and + re-patches them. + +- Reorganise debian/rules.defs to decide which packages to build in a + more straightforward and less error-prone fashion: (1) start with + all languages; override the list of languages depending on the name + of the source package (gcc-4.3, gnat-4.3, gdc-4.3, gcj-4.3). (2) + filter the list of languages depending on the target platform; (3) + depending on the languages to build, decide on which libraries to + build. + +o [Ludovic Brenta] Ada + +- Done: Link the gnat tools with libgnat.so, instead of statically. + +- Done: Build libgnatvsn containing parts of the compiler (version + string, etc.) under GNAT-Modified GPL. Link the gnat tools with it. + +- Done: Build libgnatprj containing parts of the compiler (the project + manager) under pure GPL. Link the gnat tools with it. + +- Done: Build both the zero-cost and setjump/longjump exceptions + versions of libgnat. In particular, gnat-glade (distributed systems) + works best with SJLJ. + +- Done: Re-enable running the test suite. + +- Add support for building cross-compilers. + +- Add support for multilib (not yet supported upstream). + +* Fortran + +- gfortran man page generation + +* Java + +- build java-gcj-compat from the gcc source? --- gcc-4.9-4.9.2.orig/debian/acats-killer.sh +++ gcc-4.9-4.9.2/debian/acats-killer.sh @@ -0,0 +1,62 @@ +#! /bin/sh + +# on ia64 systems, the acats hangs in unaligned memory accesses. +# kill these testcases. + +pidfile=acats-killer.pid + +usage() +{ + echo >&2 "usage: `basename $0` [-p ] " + exit 1 +} + +while [ $# -gt 0 ]; do + case $1 in + -p) + pidfile=$2 + shift + shift + ;; + -*) + usage + ;; + *) + break + esac +done + +[ $# -eq 2 ] || usage + +logfile=$1 +stopfile=$2 +interval=30 + +echo $$ > $pidfile + +while true; do + if [ -f "$stopfile" ]; then + echo "`basename $0`: finished." + rm -f $pidfile + exit 0 + fi + sleep $interval + if [ ! -f "$logfile" ]; then + continue + fi + pids=$(ps aux | awk '/testsuite\/ada\/acats\/tests/ { print $2 }') + if [ -n "$pids" ]; then + sleep $interval + pids2=$(ps aux | awk '/testsuite\/ada\/acats\/tests/ { print $2 }') + if [ "$pids" = "$pids2" ]; then + #echo kill: $pids + kill $pids + sleep 1 + pids2=$(ps aux | awk '/testsuite\/ada\/acats\/tests/ { print $2 }') + if [ "$pids" = "$pids2" ]; then + #echo kill -9: $pids + kill -9 $pids + fi + fi + fi +done --- gcc-4.9-4.9.2.orig/debian/ada/confirm_debian_bugs.py +++ gcc-4.9-4.9.2/debian/ada/confirm_debian_bugs.py @@ -0,0 +1,1016 @@ +#!/usr/bin/env python + +# Helper when migrating bugs from a gnat version to another. + +from __future__ import print_function +import os.path +import re +import shutil +import subprocess +import tempfile + +os.environ ['LC_ALL'] = 'C' + +# If == new_version, "reassign" -> "found" and "retitle" -> "fixed". +# Once the bug tracking system is informed, +# please update this number. +old_version = "4.8" + +# The current version. +new_version = "4.9" +deb_version = \ + subprocess.check_output (("dpkg", "--status", "gnat-" + new_version)) \ + .split ("\n") [7] [len ("Version: "):] + +# Each bug has its own subdirectory in WORKSPACE. +# Every bug subdir is removed if the bug is confirmed, +# and WORKSPACE is removed if empty. +workspace = tempfile.mkdtemp (suffix = "-gnat-" + deb_version + "-bugs") + +def attempt_to_reproduce (bug, make, sources): + tmp_dir = os.path.join (workspace, "bug{}".format (bug)) + os.mkdir (tmp_dir) + + for (name, contents) in sources: + with open (os.path.join (tmp_dir, name), "w") as f: + f.write (contents) + + path = os.path.join (tmp_dir, "stderr.log") + with open (path, "w") as e: + status = subprocess.call (make, stderr=e, cwd=tmp_dir) + with open (path, "r") as e: + stderr = e.read () + return tmp_dir, status, stderr + +def reassign_and_remove_dir (bug, tmp_dir): + if old_version == new_version: + print ("found {} {}".format (bug, deb_version)) + else: + print ("reassign {} {} {}".format (bug, "gnat-" + new_version, deb_version)) + shutil.rmtree (tmp_dir) + +def report (bug, message, output): + print ("# {}: {}.".format (bug, message)) + for line in output.split ("\n"): + print ("# " + line) + +def report_and_retitle (bug, message, output): + report (bug, message, output) + if old_version == new_version: + print ("fixed {} {}".format (bug, deb_version)) + else: + print ("retitle {} [Fixed in {}] ".format (bug, new_version)) + +def check_compiles_but_should_not (bug, make, sources): + tmp_dir, status, stderr = attempt_to_reproduce (bug, make, sources) + if status == 0: + reassign_and_remove_dir (bug, tmp_dir) + else: + report_and_retitle (bug, "now fails to compile (bug is fixed?)", stderr) + +def check_reports_an_error_but_should_not (bug, make, sources, regex): + tmp_dir, status, stderr = attempt_to_reproduce (bug, make, sources) + if status == 0: + report_and_retitle (bug, "now compiles (bug is fixed?)", stderr) + elif re.search (regex, stderr): + reassign_and_remove_dir (bug, tmp_dir) + else: + report (bug, "still fails to compile, but with a new stderr", stderr) + +def check_reports_error_but_forgets_one (bug, make, sources, regex): + tmp_dir, status, stderr = attempt_to_reproduce (bug, make, sources) + if status == 0: + report (bug, "now compiles (?)", stderr); + elif re.search (regex, stderr): + report_and_retitle (bug, "now reports the error (bug is fixed ?)", stderr) + else: + reassign_and_remove_dir (bug, tmp_dir) + +def check_produces_a_faulty_executable (bug, make, sources, regex, trigger): + tmp_dir, status, stderr = attempt_to_reproduce (bug, make, sources) + if status != 0: + report (bug, "cannot compile the trigger anymore", stderr) + else: + output = subprocess.check_output ((os.path.join (tmp_dir, trigger),), cwd=tmp_dir) + if re.search (regex, output): + reassign_and_remove_dir (bug, tmp_dir) + else: + report_and_retitle (bug, "output of the trigger changed (bug fixed?)", output) + +def print_skipped (bug, message): + print ("# {} skipped: {}".format (bug, message)) + +###################################################################### + +print_skipped (182360, "cannot be reproduced automatically.") + +check_reports_an_error_but_should_not ( + bug = 244936, + make = ("gnatmake", "p"), + regex = 'p\.ads:3:25: "foo" is hidden within declaration of instance', + sources = ( + ("foo.ads", """generic +procedure foo; +"""), + ("foo.adb", """procedure foo is +begin + null; +end foo; +"""), ("p.ads", """with foo; +package p is + procedure FOO is new foo; -- OK +end p; +"""))) + +check_compiles_but_should_not ( + bug = 244970, + make = ("gnatmake", "pak5"), + sources = ( + ("pak1.ads", """generic +package pak1 is +end pak1; +"""), + ("pak1-pak2.ads", """generic +package pak1.pak2 is +end pak1.pak2; +"""), + ("pak5.ads", """with pak1.pak2; +generic + with package new_pak2 is new pak1.pak2; -- ERROR: illegal use of pak1 +package pak5 is +end pak5; +"""))) + +check_reports_an_error_but_should_not ( + bug = 246187, + make = ("gnatmake", "test_43"), + regex = "Error detected at system.ads:152:5", + sources = ( + ("test_43.ads", """package Test_43 is + type T1 is private; + +private + + type T2 is record + a: T1; + end record; + type T2_Ptr is access T2; + + type T1 is record + n: T2_Ptr := new T2; + end record; + +end Test_43; +"""),)) + +check_compiles_but_should_not ( + bug = 247013, + make = ("gnatmake", "test_53"), + sources = ( + ("test_53.ads", """generic + type T1 is private; +package Test_53 is + type T2 (x: integer) is new T1; -- ERROR: x not used +end Test_53; +"""),)) + +check_compiles_but_should_not ( + bug = 247017, + make = ("gnatmake", "test_59"), + sources = ( + ("test_59.adb", """procedure Test_59 is + + generic + type T1 (<>) is private; + procedure p1(x: out T1); + + procedure p1 (x: out T1) is + b: boolean := x'constrained; --ERROR: not a discriminated type + begin + null; + end p1; + +begin + null; +end Test_59; +"""),)) + +check_compiles_but_should_not ( + bug = 247018, + make = ("gnatmake", "test_60"), + sources = ( + ("pak1.ads", """package pak1 is + generic + package pak2 is + end pak2; +end pak1; +"""), + ("test_60.ads", """with pak1; +package Test_60 is + package PAK1 is new pak1.pak2; --ERROR: illegal reference to pak1 +end Test_60; +"""))) + +check_compiles_but_should_not ( + bug = 247019, + make = ("gnatmake", "test_61"), + sources = ( + ("test_61.adb", """procedure Test_61 is + procedure p1; + + generic + package pak1 is + procedure p2 renames p1; + end pak1; + + package new_pak1 is new pak1; + procedure p1 renames new_pak1.p2; --ERROR: circular renames +begin + p1; +end Test_61; +"""),)) + +check_reports_an_error_but_should_not ( + bug = 247564, + make = ("gnatmake", "test_70"), + regex = "in gnat_to_gnu_entity, at ada/gcc-interface/decl\.c:568", + sources = ( + ("test_70.adb", """procedure Test_70 is + + package pak2 is + type t2(b2: boolean) is private; + private + type t2(b2: boolean) is null record; + end pak2; + + package pak1 is + type T1(b1 : boolean) is private; + private + type T1(b1 : boolean) is new pak2.t2(b1); + end pak1; + + x: pak1.t1(false); + b: boolean; +begin + b := x.b1; +end Test_70; +"""),)) + +check_produces_a_faulty_executable ( + bug = 247569, + make = ("gnatmake", "test_75"), + trigger = "test_75", + regex = "failed: wrong p1 called", + sources = ( + ("test_75.adb", """with text_io; +procedure Test_75 is + generic + package pak1 is + type T1 is null record; + end pak1; + + generic + with package A is new pak1(<>); + with package B is new pak1(<>); + package pak2 is + procedure p1(x: B.T1); + procedure p1(x: A.T1); + end pak2; + + package body pak2 is + + procedure p1(x: B.T1) is + begin + text_io.put_line("failed: wrong p1 called"); + end p1; + + procedure p1(x: A.T1) is + begin + text_io.put_line("passed"); + end p1; + + x: A.T1; + begin + p1(x); + end pak2; + + package new_pak1 is new pak1; + package new_pak2 is new pak2(new_pak1, new_pak1); -- (1) + +begin + null; +end Test_75; +"""),)) + +check_compiles_but_should_not ( + bug = 247570, + make = ("gnatmake", "test_76"), + sources = ( + ("test_76.adb", """procedure Test_76 is + + generic + procedure p1; + + pragma Convention (Ada, p1); + + procedure p1 is + begin + null; + end p1; + + procedure new_p1 is new p1; + pragma Convention (Ada, new_p1); --ERROR: new_p1 already frozen + +begin + null; +end Test_76; +"""),)) + +check_produces_a_faulty_executable ( + bug = 247571, + make = ("gnatmake", "test_77"), + trigger = "test_77", + regex = "failed: wrong p1 called", + sources = ( + ("pak.ads", """package pak is + procedure p1; + procedure p1(x: integer); + pragma export(ada, p1); +end pak; +"""), + ("pak.adb", """with text_io; use text_io; +package body pak is + procedure p1 is + begin + put_line("passed"); + end; + + procedure p1(x: integer) is + begin + put_line("failed: wrong p1 called"); + end; +end pak; +"""), + ("test_77.adb", """with pak; +procedure Test_77 is + procedure p1; + pragma import(ada, p1); +begin + p1; +end Test_77; +"""))) + +check_compiles_but_should_not ( + bug = 248166, + make = ("gnatmake", "test_82"), + sources = ( + ("test_82.adb", """procedure Test_82 is + package pak1 is + type T1 is tagged null record; + end pak1; + + package body pak1 is + -- type T1 is tagged null record; -- line 7 + + function "=" (x, y : T1'class) return boolean is -- line 9 + begin + return true; + end "="; + + procedure proc (x, y : T1'class) is + b : boolean; + begin + b := x = y; --ERROR: ambiguous "=" + end proc; + + end pak1; + +begin + null; +end Test_82; +"""),)) + +check_compiles_but_should_not ( + bug = 248168, + make = ("gnatmake", "test_84"), + sources = ( + ("test_84.adb", """procedure Test_84 is + package pak1 is + type T1 is abstract tagged null record; + procedure p1(x: in out T1) is abstract; + end pak1; + + type T2 is new pak1.T1 with null record; + + protected type T3 is + end T3; + + protected body T3 is + end T3; + + procedure p1(x: in out T2) is --ERROR: declared after body of T3 + begin + null; + end p1; + +begin + null; +end Test_84; +"""),)) + +check_compiles_but_should_not ( + bug = 248678, + make = ("gnatmake", "test_80"), + sources = ( + ("test_80.ads", """package Test_80 is + generic + type T1(<>) is private; + with function "=" (Left, Right : T1) return Boolean is <>; + package pak1 is + end pak1; + + package pak2 is + type T2 is abstract tagged null record; + package new_pak1 is new pak1 (T2'Class); --ERROR: no matching "=" + end pak2; +end Test_80; +"""),)) + +check_compiles_but_should_not ( + bug = 248680, + make = ("gnatmake", "test_90"), + sources = ( + ("test_90.adb", """procedure Test_90 is + type T1 is tagged null record; + + procedure p1 (x : access T1) is + b: boolean; + y: aliased T1; + begin + B := Y'Access = X; -- ERROR: no matching "=" +-- B := X = Y'Access; -- line 11: error detected + end p1; + +begin + null; +end Test_90; +"""),)) + +check_compiles_but_should_not ( + bug = 248681, + make = ("gnatmake", "test_91"), + sources = ( + ("test_91.adb", """-- RM 8.5.4(5) +-- ...the convention of the renamed subprogram shall not be +-- Intrinsic. +with unchecked_deallocation; +procedure Test_91 is + generic -- when non generic, we get the expected error + package pak1 is + type int_ptr is access integer; + procedure free(x: in out int_ptr); + end pak1; + + package body pak1 is + procedure deallocate is new + unchecked_deallocation(integer, int_ptr); + procedure free(x: in out int_ptr) renames + deallocate; --ERROR: renaming as body can't rename intrinsic + end pak1; +begin + null; +end Test_91; +"""),)) + +check_compiles_but_should_not ( + bug = 248682, + make = ("gnatmake", "main"), + sources = ( + ("main.adb", """-- RM 6.3.1(9) +-- The default calling convention is Intrinsic for ... an attribute +-- that is a subprogram; + +-- RM 8.5.4(5) +-- ...the convention of the renamed subprogram shall not be +-- Intrinsic. +procedure main is + package pak1 is + function f1(x: integer'base) return integer'base; + end pak1; + + package body pak1 is + function f1(x: integer'base) return integer'base renames + integer'succ; --ERROR: renaming as body can't rename intrinsic + end pak1; +begin + null; +end; +"""),)) + +check_reports_an_error_but_should_not ( + bug = 251265, + make = ("gnatmake", "test_106"), + regex = "in Case_Statement_to_gnu, at ada/gcc-interface/trans.c:2366", + sources = ( + ("test_106.adb", """pragma Ada_83; +procedure Test_106(x: integer) is +begin + case x is + when integer'last +1 => null; + when 0 => null; -- line 5 + when others => null; + end case; +end Test_106; +"""),)) + +check_reports_an_error_but_should_not ( + bug = 253737, + make = ("gnatmake", "test_4"), + regex = 'test_4.ads:.:01: "pak2" not declared in "pak1"', + sources = ( + ("parent.ads", """generic +package parent is +end parent; +"""), + ("parent-pak2.ads", """generic +package parent.pak2 is +end parent.pak2; +"""), + ("parent-pak2-pak3.ads", """generic +package parent.pak2.pak3 is +end parent.pak2.pak3; +"""), + ("parent-pak2-pak4.ads", """with parent.pak2.pak3; +generic +package parent.pak2.pak4 is + package pak3 is new parent.pak2.pak3; +end parent.pak2.pak4; +"""), + ("pak1.ads", """with parent; +package pak1 is new parent; +"""), + ("pak6.ads", """with parent.pak2; +with pak1; +package pak6 is new pak1.pak2; +"""), + ("test_4.ads", """with parent.pak2.pak4; +with pak6; +package Test_4 is new pak6.pak4; +"""))) + +check_compiles_but_should_not ( + bug = 269948, + make = ("gnatmake", "test_119"), + sources = ( + ("test_119.ads", """-- RM 3.9.3/11 A generic actual subprogram shall not be an abstract +-- subprogram. works OK if unrelated line (A) is commented out. +package Test_119 is + generic + with function "=" (X, Y : integer) return Boolean is <>; -- Removing this allows GCC to detect the problem. + package pak1 is + function "=" (X, Y: float) return Boolean is abstract; + generic + with function Equal (X, Y : float) return Boolean is "="; --ERROR: + package pak2 is + end pak2; + end pak1; + + package new_pak1 is new pak1; + package new_pak2 is new new_pak1.pak2; +end Test_119; +"""),)) + +check_compiles_but_should_not ( + bug = 269951, + make = ("gnatmake", "test_118"), + sources = ( + ("pak1.ads", """generic +package pak1 is +end pak1; +"""), + ("pak1-foo.ads", """generic +package pak1.foo is +end pak1.foo; +"""), + ("test_118.ads", """with pak1.foo; +package Test_118 is + package pak3 is + foo: integer; + end pak3; + use pak3; + + package new_pak1 is new pak1; + use new_pak1; + + x: integer := foo; -- ERROR: foo hidden by use clauses +end Test_118; +"""),)) + +# As long as 24:14 is detected, it inhibits detection of 25:21. +check_reports_error_but_forgets_one ( + bug = 276224, + make = ("gnatmake", "test_121"), + regex = "test_121\.adb:25:21: dynamically tagged expression not allowed", + sources = ( + ("test_121.adb", """-- If the expected type for an expression or name is some specific +-- tagged type, then the expression or name shall not be dynamically +-- tagged unless it is a controlling operand in a call on a +-- dispatching operation. +procedure Test_121 is + package pak1 is + type T1 is tagged null record; + function f1 (x1: T1) return T1; + end pak1; + + package body pak1 is + function f1 (x1: T1) return T1 is + begin + return x1; + end; + end pak1; + use pak1; + + type T2 is record + a1: T1; + end record; + + z0: T1'class := T1'(null record); + z1: T1 := f1(z0); -- ERROR: gnat correctly rejects + z2: T2 := (a1 => f1(z0)); -- ERROR: gnat mistakenly allows +begin + null; +end Test_121; +"""),)) + +check_reports_an_error_but_should_not ( + bug = 276227, + make = ("gnatmake", "test_124"), + regex = 'test_124\.ads:6:35: size for "T_arr_constrained" too small, minimum allowed is 256', + sources = ( + ("test_124.ads", """package Test_124 is + type T is range 1 .. 32; + type T_arr_unconstrained is array (T range <>) of boolean; + type T_arr_constrained is new T_arr_unconstrained (T); + pragma pack (T_arr_unconstrained); + for T_arr_constrained'size use 32; +end Test_124; +"""),)) + +check_reports_an_error_but_should_not ( + bug = 278687, + make = ("gnatmake", "test_127"), + regex = 'test_127\.adb:1.:21: expected type "T2" defined at line .', + sources = ( + ("test_127.ads", """-- The second parameter of T2'Class'Read is of type T2'Class, +-- which should match an object of type T3, which is derived +-- from T2. +package test_127 is + pragma elaborate_body; +end test_127; +"""), + ("test_127.adb", """with ada.streams; +package body test_127 is + type T1 is access all ada.streams.root_stream_type'class; + type T2 is tagged null record; + type T3 is new T2 with null record; + + x: T1; + y: T3; +begin + T2'class'read(x, y); +end test_127; +"""))) + +check_compiles_but_should_not ( + bug = 278831, + make = ("gnatmake", "test_128"), + sources = ( + ("test_128.ads", """package Test_128 is + package inner is + private + type T1; + end inner; + type T1_ptr is access inner.T1; -- line 9 ERROR: gnat mistakenly accepts +end Test_128; +"""), + ("test_128.adb", """package body test_128 is + package body inner is + type T1 is new Integer; + end inner; +end Test_128; +"""))) + +# Note that we also check the absence of the next inhibited message. +check_reports_an_error_but_should_not ( + bug = 279893, + make = ("gnatmake", "test_129"), + regex = """^gcc-[0-9.]+ -c test_129\.ads +test_129\.ads:1.:49: designated type of actual does not match that of formal "T2" +test_129\.ads:1.:49: instantiation abandoned +gnatmake: "test_129\.ads" compilation error$""", + sources = ( + ("pak1.ads", """-- legal instantiation rejected; illegal instantiation accepted +-- adapted from John Woodruff c.l.a. post + +generic + type T1 is private; +package pak1 is + subtype T3 is T1; +end pak1; +"""), + ("pak2.ads", """with pak1; +generic + type T2 is private; +package pak2 is + package the_pak1 is new pak1 (T1 => T2); +end pak2; +"""), + ("pak2-pak3.ads", """generic + type T2 is access the_pak1.T3; +package pak2.pak3 is +end pak2.pak3; +"""), + ("test_129.ads", """with pak1; +with pak2.pak3; +package Test_129 is + + type T4 is null record; + type T5 is null record; + subtype T3 is T5; -- line 9: triggers the bug at line 16 + + type T4_ptr is access T4; + type T5_ptr is access T5; + + package new_pak2 is new pak2 (T2 => T4); + package new_pak3a is new new_pak2.pak3(T2 => T4_ptr); -- line 15: Legal + package new_pak3b is new new_pak2.pak3(T2 => T5_ptr); -- line 16: Illegal +end Test_129; +"""))) + +print ("# Please ignore the gnatlink message.") +check_reports_an_error_but_should_not ( + bug = 280939, + make = ("gnatmake", "test_130"), + regex = "test_130\.adb:\(\.text\+0x5\): undefined reference to \`p2\'", + sources = ( + ("pak1.ads", """-- RM 10.1.5(4) "the pragma shall have an argument that is a name +-- denoting that declaration." +-- RM 8.1(16) "The children of a parent library unit are inside the +-- parent's declarative region." + +package pak1 is + pragma Pure; +end pak1; +"""), + ("pak1-p2.ads", """procedure pak1.p2; +pragma Pure (p2); -- ERROR: need expanded name +pragma Import (ada, p2); -- ERROR: need expanded name +pragma Inline (p2); -- ERROR: need expanded name +"""), + ("test_130.adb", """with Pak1.P2; +procedure Test_130 is +begin + Pak1.P2; +end Test_130; +"""))) + +check_compiles_but_should_not ( + bug = 283833, + make = ("gnatmake", "test_132"), + sources = ( + ("pak1.ads", """-- RM 8.5.4(5) the convention of the renamed subprogram shall not +-- be Intrinsic, if the renaming-as-body completes that declaration +-- after the subprogram it declares is frozen. + +-- RM 13.14(3) the end of the declaration of a library package +-- causes freezing of each entity declared within it. + +-- RM 6.3.1(7) the default calling convention is Intrinsic for +-- any other implicitly declared subprogram unless it is a +-- dispatching operation of a tagged type. + +package pak1 is + type T1 is null record; + procedure p1 (x1: T1); + type T2 is new T1; +end pak1; +"""), + ("pak1.adb", """package body Pak1 is + procedure P1 (X1 : T1) is begin null; end P1; +end Pak1; +"""), + ("test_132.ads", """with pak1; +package Test_132 is + procedure p2 (x2: pak1.T2); +end Test_132; +"""), + ("test_132.adb", """package body Test_132 is + procedure p2 (x2: pak1.T2) renames pak1.p1; --ERROR: can't rename intrinsic +end Test_132; +"""))) + +check_compiles_but_should_not ( + bug = 283835, + make = ("gnatmake", "test_133"), + sources = ( + ("test_133.ads", """package Test_133 is + package pak1 is + type T1 is null record; + end pak1; + + package pak2 is + subtype boolean is standard.boolean; + function "=" (x, y: pak1.T1) return boolean; + end pak2; + + use pak1, pak2; + + x1: pak1.T1; + b1: boolean := x1 /= x1; -- ERROR: ambigous (gnat misses) + -- b2: boolean := x1 = x1; -- ERROR: ambigous +end Test_133; +"""), + ("test_133.adb", """package body test_133 is + package body pak2 is + function "=" (x, y: pak1.T1) return boolean is + begin + return true; + end "="; + end pak2; +end test_133; +"""))) + +check_compiles_but_should_not ( + bug = 416979, + make = ("gnatmake", "pak1"), + sources = ( + ("pak1.ads", """package pak1 is + -- RM 7.3(13), 4.9.1(1) + -- check that discriminants statically match + type T1(x1: integer) is tagged null record; + x2: integer := 2; + x3: constant integer := x2; + type T2 is new T1 (x2) with private; + type T3 is new T1 (x3) with private; +private + type T2 is new T1 (x2) with null record; --ERROR: nonstatic discriminant + type T3 is new T1 (x3) with null record; --ERROR: nonstatic discriminant +end pak1; +"""),)) + +# Once the bug box disappears, check the executable. +# check_produces_a_faulty_executable ( +check_reports_an_error_but_should_not ( + bug = 427108, + make = ("gnatmake", "test1"), +# regex = "FAILED", + regex = "Program_Error exp_disp.adb:8462 explicit raise", + sources = ( + ("test1.adb", """-- "For the execution of a call on an inherited subprogram, +-- a call on the corresponding primitive subprogram of the +-- parent or progenitor type is performed; the normal conversion +-- of each actual parameter to the subtype of the corresponding +-- formal parameter (see 6.4.1) performs any necessary type +-- conversion as well." + +with Text_IO; use Text_IO; +procedure Test1 is + package Pak1 is + type T1 is tagged null record; + function Eq(X, Y: T1) return Boolean renames "="; + end Pak1; + + package Pak2 is + type T2 is new Pak1.T1 with record + F1: Integer; + end record; + end Pak2; + + Z1: Pak2.T2 := (F1 => 1); + Z2: Pak2.T2 := (F1 => 2); +begin + if Pak2.Eq(Z1, Z2) = Pak1.Eq(Pak1.T1(Z1), Pak1.T1(Z2)) + then Put_Line("PASSED"); + else Put_Line("FAILED"); + end if; +end Test1; +"""),)) + +print_skipped (559447, "not handled by this script") + +print_skipped (569343, "not handled by this script") + +check_reports_an_error_but_should_not ( + bug = 660698, + make = ("gnatmake", "proc.adb"), + regex = 'proc\.adb:17:28: there is no applicable operator "And" for type "Standard\.Integer"', + sources = ( + ("proc.adb", """procedure Proc is + package P1 is + type T is new Integer; + function "and" (L, R : in Integer) return T; + end P1; + package body P1 is + function "and" (L, R : in Integer) return T is + pragma Unreferenced (L, R); + begin + return 0; + end "and"; + end P1; + use type P1.T; + package P2 is + use P1; + end P2; + G : P1.T := Integer'(1) and Integer'(2); +begin + null; +end Proc; +"""), )) + +check_produces_a_faulty_executable ( + bug = 737225, + make = ("gnatmake", "round_decimal"), + trigger = "round_decimal", + regex = "Bug reproduced.", + sources = ( + ("round_decimal.adb", """with Ada.Text_IO; + +procedure Round_Decimal is + + -- OJBECTIVE: + -- Check that 'Round of a decimal fixed point type does round + -- away from zero if the operand is of a decimal fixed point + -- type with a smaller delta. + + Unexpected_Compiler_Bug : exception; + + type Milli is delta 0.001 digits 9; + type Centi is delta 0.01 digits 9; + + function Rounded (Value : Milli) return Centi; + -- Value, rounded using Centi'Round + + function Rounded (Value : Milli) return Centi is + begin + return Centi'Round (Value); + end Rounded; + +begin + -- Operands used directly: + if not (Milli'Round (0.999) = Milli'(0.999) + and + Centi'Round (0.999) = Centi'(1.0) + and + Centi'Round (Milli'(0.999)) = Centi'(1.0)) + then + raise Unexpected_Compiler_Bug; + end if; + if Rounded (Milli'(0.999)) /= Centi'(1.0) then + Ada.Text_IO.Put_Line ("Bug reproduced."); + end if; +end Round_Decimal; +"""),)) + +# Even if an error is reported, the problem with the atomic variable +# should be checked. +check_reports_an_error_but_should_not ( + bug = 643663, + make = ("gnatmake", "test"), + regex = 'test\.adb:4:25: no value supplied for component "Reserved"', + sources = ( + ("pkg.ads", """package Pkg is + type Byte is mod 2**8; + type Reserved_24 is mod 2**24; + + type Data_Record is + record + Data : Byte; + Reserved : Reserved_24; + end record; + + for Data_Record use + record + Data at 0 range 0 .. 7; + Reserved at 0 range 8 .. 31; + end record; + + for Data_Record'Size use 32; + for Data_Record'Alignment use 4; + + Data_Register : Data_Record; + pragma Atomic (Data_Register); +end Pkg; +"""), ("test.adb", """with Pkg; +procedure Test is +begin + Pkg.Data_Register := ( + Data => 255, + others => <> -- expected error: no value supplied for component "Reserved" + ); +end Test; +"""))) + +try: + os.rmdir (workspace) +except: + print ("Some unconfirmed, not removing directory {}.".format (workspace)) --- gcc-4.9-4.9.2.orig/debian/ada/debian_packaging.mk +++ gcc-4.9-4.9.2/debian/ada/debian_packaging.mk @@ -0,0 +1,91 @@ +# Common settings for Ada Debian packaging. +# +# Copyright (C) 2012-2014 Nicolas Boulenguez +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +# dpkg-dev (>= 1.16.1) provides /usr/share/dpkg/default.mk (or the +# more specific buildflags.mk) to set standard variables like +# DEB_HOST_MULTIARCH, CFLAGS, LDFLAGS...) according to the build +# environment (DEB_BUILD_OPTIONS...) and the policy (hardening +# flags...). +# You must include it before this file. +ifeq (,$(findstring /usr/share/dpkg/buildflags.mk,$(MAKEFILE_LIST))) + $(error Please include /usr/share/dpkg/default.mk (or the more specific \ + buildflags.mk) before $(lastword $(MAKEFILE_LIST))) +endif + +# Ada is not in dpkg-dev flag list. We add a sensible default here. + +# Format checking is meaningless for Ada sources. +ADAFLAGS := $(filter-out -Wformat -Werror=format-security, $(CFLAGS)) + +ifdef DPKG_EXPORT_BUILDFLAGS + export ADAFLAGS +endif + +# Avoid dpkg-shlibdeps warning about depending on a library from which +# no symbol is used, see http://wiki.debian.org/ToolChain/DSOLinking. +# Gnatmake users must upgrade to >= 4.6.4-1 to circumvent #680292. +LDFLAGS += -Wl,--as-needed + +# Warn during build time if undefined symbols. +LDFLAGS += -Wl,-z,defs + +ifdef DPKG_EXPORT_BUILDFLAGS + export LDFLAGS +endif + +###################################################################### +# C compiler version + +# GCC binaries must be compatible with GNAT at the binary level, use +# the same version. This setting is mandatory for every upstream C +# compilation ("export CC" is enough for dh_auto_configure with a +# normal ./configure). + +CC := gnatgcc + +###################################################################### +# Options for gprbuild/gnatmake. + +# Let Make delegate parallelism to gnatmake/gprbuild. +.NOTPARALLEL: + +# Use all processors unless parallel=n is set in DEB_BUILD_OPTIONS. +# http://www.debian.org/doc/debian-policy/ch-source.html#s-debianrules-options +BUILDER_JOBS := $(filter parallel=%,$(DEB_BUILD_OPTIONS)) +ifneq (,$(BUILDER_JOBS)) + BUILDER_JOBS := $(subst parallel=,,$(BUILDER_JOBS)) +else + BUILDER_JOBS := $(shell getconf _NPROCESSORS_ONLN) +endif +BUILDER_OPTIONS += -j$(BUILDER_JOBS) + +BUILDER_OPTIONS += -R +# Avoid lintian warning about setting an explicit library runpath. +# http://wiki.debian.org/RpathIssue + +BUILDER_OPTIONS += -v +# Make exact command lines available for automatic log checkers. + +BUILDER_OPTIONS += -eS +# Tell gnatmake to echo commands to stdout instead of stderr, avoiding +# buildds thinking it is inactive and killing it. +# -eS is the default on gprbuild. + +# You may be interested in +# -s recompile if compilation switches have changed +# (bad default because of interactions between -amxs and standard library) +# -we handle warnings as errors +# -vP2 verbose when parsing projects. --- gcc-4.9-4.9.2.orig/debian/bin-wrapper.in +++ gcc-4.9-4.9.2/debian/bin-wrapper.in @@ -0,0 +1,11 @@ +#! /bin/sh + +# some build tools are linked with a new libstdc++ and fail to run +# when building libstdc++. + +if [ -n "$LD_LIBRARY_PATH" ]; then + ma=$(dpkg-architecture -qDEB_BUILD_MULTIARCH) + export LD_LIBRARY_PATH="/lib/$ma:/usr/lib/$ma:/lib:/usr/lib:$LD_LIBRARY_PATH" +fi + +exec /usr/bin/$(basename $0) "$@" --- gcc-4.9-4.9.2.orig/debian/changelog +++ gcc-4.9-4.9.2/debian/changelog @@ -0,0 +1,12853 @@ +gcc-4.9 (4.9.2-22ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 23 Jun 2015 15:00:20 +0200 + +gcc-4.9 (4.9.2-22) unstable; urgency=medium + + * Update to SVN 20150623 (r224833) from the gcc-4_9-branch. + * Fix PR target/66483, taken from the trunk. Closes: #787689. + * Fix "empty-binary-package" lintian warnings. + * Fix PR tree-optimization/66233. Closes: #788812. + + -- Matthias Klose Tue, 23 Jun 2015 12:41:33 +0200 + +gcc-4.9 (4.9.2-21) unstable; urgency=medium + + * Update to SVN 20150611 (r224436) from the gcc-4_9-branch. + * Build libstdc++6 when building the common libraries. + + -- Matthias Klose Fri, 12 Jun 2015 18:08:44 +0200 + +gcc-4.9 (4.9.2-20ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 31 May 2015 23:31:19 +0200 + +gcc-4.9 (4.9.2-20) unstable; urgency=medium + + * Update to SVN 20150531 (r223898) from the gcc-4_9-branch. + * Fix PR rtl-optimization/63843, taken from the trunk. Closes: #785475. + + -- Matthias Klose Sun, 31 May 2015 12:45:30 +0200 + +gcc-4.9 (4.9.2-19ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 29 May 2015 16:38:46 +0200 + +gcc-4.9 (4.9.2-19) unstable; urgency=medium + + * Update to SVN 20150529 (r223861) from the gcc-4_9-branch. + * Make symbols file symlinking for cross builds more robust. + * Fix building cross compilers with dpkg 1.18. + * Stop building the common libraries on m68k. + * Disable building gdc on sh4 (bootstrap comparison failure). + * gcc-4.9-base: Adjust gnat breaks attribute to better support + upgrades to jessie (Andreas Beckmann). Closes: #779876. + + -- Matthias Klose Fri, 29 May 2015 13:23:58 +0200 + +gcc-4.9 (4.9.2-18ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 19 May 2015 00:51:16 +0200 + +gcc-4.9 (4.9.2-18) unstable; urgency=medium + + * Update to SVN 20150518 (r223293) from the gcc-4_9-branch. + * Remove work arounds to build 64bit multilibs on 32bit targets, + now properly fixed upstream. + * Re-enable running the tests. + * Disable running the libstdc++ tests with the installed libstdc++. + Doesn't make sense anymore with the dual-abi libstdc++ from GCC 5. + + -- Matthias Klose Mon, 18 May 2015 16:32:39 +0200 + +gcc-4.9 (4.9.2-17ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 17 May 2015 14:48:02 +0200 + +gcc-4.9 (4.9.2-17) unstable; urgency=medium + + * Update to SVN 20150516 (r223238) from the gcc-4_9-branch. + * Again, configure with --enable-targets=powerpcle-linux on ppc64el. + Closes: #785066. + * Remove old CFLAGS/LDFLAGS settings to build gdc. + * Remove reference to .ico file in NEWS.html. + * Fix -base dependency for the gcj cross packages. + + -- Matthias Klose Sat, 16 May 2015 15:10:20 +0200 + +gcc-4.9 (4.9.2-16ubuntu1) wily; urgency=medium + + * Update to SVN 20150508 (r222909) from the gcc-4_9-branch. + + -- Matthias Klose Fri, 08 May 2015 14:42:41 +0200 + +gcc-4.9 (4.9.2-16) unstable; urgency=medium + + * Update to SVN 20150503 (r222750) from the gcc-4_9-branch. + - Fix the build failure on alpha. + * Fix gcc-itm doc-base file (Guo Yixuan). Closes: #783998. + * On m68k, powerpcspe, sh4, sparc64, still build the libraries not + yet built by gcc-5. + * Update the cross-biarch patch for D and Go. + * Apply the cross-biarch patches for every cross build. Closes: #783527. + + -- Matthias Klose Sun, 03 May 2015 19:38:21 +0200 + +gcc-4.9 (4.9.2-15) unstable; urgency=medium + + * Update the Linaro support to the 4.9-2015.04 release. + + -- Matthias Klose Wed, 29 Apr 2015 15:34:36 +0200 + +gcc-4.9 (4.9.2-14) unstable; urgency=medium + + * Update to SVN 20150429 (r222567) from the gcc-4_9-branch. + * Build again libgo. + * PR libstdc++/62258, fix for std::uncaught_exception, taken from the trunk. + LP: #1439451. + + -- Matthias Klose Wed, 29 Apr 2015 12:20:31 +0200 + +gcc-4.9 (4.9.2-13) unstable; urgency=medium + + * Update to SVN 20150426 (r222448) from the gcc-4_9-branch. + * Build using isl 0.14 and cloog 0.18.3. + * Provide the /usr/include//c++/ symlink. + + -- Matthias Klose Sun, 26 Apr 2015 16:00:53 +0200 + +gcc-4.9 (4.9.2-12) experimental; urgency=medium + + * Stop building libcilkrts and libtsan, build again libasan. + + -- Matthias Klose Mon, 13 Apr 2015 17:01:25 +0200 + +gcc-4.9 (4.9.2-11) experimental; urgency=medium + + * Update to SVN 20150411 (r222011) from the gcc-4_9-branch. + - Fix PR libstdc++/64476, PR libstdc++/60966, PR libstdc++/64239, + PR libstdc++/64649, PR libstdc++/64584, PR libstdc++/64585, + PR libstdc++/64646, PR middle-end/64734, PR c/61553, + PR middle-end/63704 (ice on valid), PR target/64513 (x86), + PR rtl-optimization/64286 (wrong code), PR tree-optimization/64563 (ice), + PR middle-end/64391 (ice on valid), PR c++/54442 (ice on valid), + PR target/64358 (rs6000, wrong code), PR target/63424 (AArch64, ice on + valid), PR target/64479 (SH), PR rtl-optimization/64536, PR target/64505 + (rs6000), PR target/61413 (ARM, wrong code), PR target/64507 (SH), + PR target/64409 (x32, ice on valid), PR c++/64487 (ice on valid), + PR c++/64352, PR c++/64251 (rejects valid), PR c++/64297 (ice on valid), + PR c++/64029 (ice on valid), PR c++/63657 (diagnostic), PR c++/38958 + (diagnostic), PR c++/63658 (rejects valid), PR ada/64492 (build), + PR fortran/64528 (ice on valid), PR fortran/63733 (wrong code), + PR fortran/56867 (wrong code), PR fortran/64244 (ice on valid), + PR target/64795 (x86), PR middle-end/64734 (ice), + PR rtl-optimization/64557, PR ipa/63970 (missed optimization), + PR fortran/64230 (wrong code), PR fortran/64771 (ice on valid), + PR fortran/57023 (wrong code), PR fortran/60922 (wrong code), PR c/64766 + (ice), PR c/64778 (ice), PR rtl-optimization/61058 (ice), + PR middle-end/64421 (OpenMP), PR rtl-optimization/63637, + PR rtl-optimization/60663 (error on valid asm), PR debug/64511 (ice), + PR debug/64663 (ice), PR c++/64521 (ice), PR fortran/62044 (ice), + PR libstdc++/64680, PR libstdc++/64649, PR target/64882 (x86), + PR c++/64901, PR target/64938 (ICE, ARM), PR ipa/64068, PR ipa/64559, + PR c/64824 (OpenMP), PR c/64868 (OpenMP, rejects valid), PR c/57653, + PR target/65153 (SH), PR lto/65015 (closes: #777753, #780000), + (SH), PR tree-optimization/63844 (OpenMP), PR tree-optimization/61634 + (ice on valid), PR tree-optimization/59354 (wrong code), + PR tree-optimization/64909 (missed optimization), PR target/64452 (AVR, + ice on valid), PR tree-optimization/64530 (wrong code), PR lto/64373, + PR tree-optimization/63593 (ice on valid), PR tree-optimization/65063, + PR middle-end/64199 (ice on valid), PR tree-optimization/64493 (ice on + valid), PR tree-optimization/64495 (ice on valid, wrong code), + PR tree-optimization/56273 (diagnostic), PR tree-optimization/59124 + (diagnostic), PR tree-optimization/64277 (diagnostic), + PR middle-end/64365 (wrong code), PR target/64387 (x86, ice on valid), + PR target/64979 (wrong code), PR target/64580 (rs6000), PR c++/62017, + PR fortran/63744 (rejects valid), PR fortran/64932 (ice on valid), + PR c/65228 (ice), PR middle-end/63175 (code quality), PR lto/65193 (ice), + PR target/64569 (MIPS), PR tree-optimization/61917 (ice on valid), + PR target/64212 (ice on valid), PR target/65196 (AVR), PR target/65163, + PR tree-optimization/61917 (ice on valid), PR c++/62255 (rejects valid), + PR ada/65319, PR target/59593 (ARM), PR target/65249 (SH), + PR target/64331 (AVR), PR target/64453 (ARM), PR c++/65209 (wrong code), + PR c++/65309 (wrong code), PR tree-optimization/65388, PR target/65296 + (AVR), PR middle-end/56917 (wrong code), PR ipa/64896 (ice), + PR target/65286 (rs6000), PR target/53988 (SH), PR target/65286 (rs6000), + PR 65138/target (rs6000), PR fortran/60898 (ice), PR fortran/65024 (ice), + PR rtl-optimization/65235 (wrong code), PR fortran/61138 (wrong code), + PR middle-end/65409 (ice on valid), PR ipa/64813 (ice), + PR ipa/63587 (ice), PR libgfortran/60956, PR libstdc++/65279, + PR libstdc++/65543, PR target/65561 (x86), PR target/63150 (rs6000), + PR rtl-optimization/60851 (ice), PR c++/65154 (ice). + * Update the Linaro support to the 4.9-2015.03 release. + * Allow to build using gettext built with a newer GCC. + * Fix gnat build on mips64el (James Cowgill). Addresses: #779191. + * Fix linaro#1291, ICE (segmentation fault) on arm-linux-gnueabihf. + * Configure with --enable-targets=powerpcle-linux on ppc64el for + backports to jessie, trusty, utopic and vivid. + * Limit the omp.h multilib fix to Linux. Addresses: #778440. + * For ICEs, dump the preprocessed source file to stderr when in a + distro build environment. + * Apply the ada-mips patch for mips and mipsel targets only. + * Don't build packages built by gcc-5. + + -- Matthias Klose Sat, 11 Apr 2015 21:06:48 +0200 + +gcc-4.9 (4.9.2-10ubuntu13) vivid; urgency=medium + + * Fix PR target/64231 (AArch64), building the arm64 cross compiler + on i386. + + -- Matthias Klose Tue, 14 Apr 2015 18:17:46 +0200 + +gcc-4.9 (4.9.2-10ubuntu12) vivid; urgency=medium + + * Update to SVN 20150327 (r221736) from the gcc-4_9-branch. + - Fix PR libstdc++/65279, PR libstdc++/65543, PR target/65561 (x86), + PR target/63150 (rs6000), PR rtl-optimization/60851 (ice), + PR c++/65154 (ice). + * Limit the omp.h multilib fix to Linux. Addresses: #778440. + * For ICEs, dump the preprocessed source file to stderr when in a + distro build environment. + * Apply the ada-mips patch for mips and mipsel targets only. + + -- Matthias Klose Fri, 27 Mar 2015 17:33:22 +0100 + +gcc-4.9 (4.9.2-10ubuntu11) vivid; urgency=medium + + * Update to SVN 20150323 (r221590) from the gcc-4_9-branch. + - PR ipa/64813 (ice), PR ipa/63587 (ice), PR fortran/61138 (wrong code), + PR libgfortran/60956. + * Configure with --enable-targets=powerpcle-linux on ppc64el for vivid. + + -- Matthias Klose Mon, 23 Mar 2015 12:07:05 +0100 + +gcc-4.9 (4.9.2-10ubuntu10) vivid; urgency=medium + + * Update to SVN 20150321 (r221551) from the gcc-4_9-branch. + - PR rtl-optimization/65235 (wrong code), PR middle-end/65409 (ice on valid). + * Configure with --enable-targets=powerpcle-linux on ppc64el for + backports to jessie, trusty and utopic. + + -- Matthias Klose Sat, 21 Mar 2015 14:24:46 +0100 + +gcc-4.9 (4.9.2-10ubuntu9) vivid; urgency=medium + + * Update to SVN 20150313 (r221423) from the gcc-4_9-branch. + - Fix PR tree-optimization/65388, PR target/65296 (AVR), + PR middle-end/56917 (wrong code), PR ipa/64896 (ice), + PR target/65286 (rs6000), PR target/53988 (SH), PR target/65286 (rs6000), + PR 65138/target (rs6000), PR fortran/60898 (ice), PR fortran/65024 (ice). + * Update the Linaro support to the 4.9-2015.03 release. + + -- Matthias Klose Fri, 13 Mar 2015 18:39:42 +0100 + +gcc-4.9 (4.9.2-10ubuntu8) vivid; urgency=medium + + * Update to SVN 20150305 (r221217) from the gcc-4_9-branch. + - Fix PR ada/65319, PR target/59593 (ARM), PR target/65249 (SH), + PR target/64331 (AVR), PR target/64453 (ARM), PR c++/65209 (wrong code), + PR c++/65309 (wrong code). + * Fix linaro#1291, ICE (segmentation fault) on arm-linux-gnueabihf. + + -- Matthias Klose Thu, 05 Mar 2015 16:25:24 +0100 + +gcc-4.9 (4.9.2-10ubuntu7) vivid; urgency=medium + + * Update to SVN 20150228 (r221076) from the gcc-4_9-branch. + - PR c/65228 (ice), PR middle-end/63175 (code quality), PR lto/65193 (ice), + PR target/64569 (MIPS), PR tree-optimization/61917 (ice on valid), + PR target/64212 (ice on valid), PR target/65196 (AVR), + PR tree-optimization/61917 (ice on valid), PR c++/62255 (rejects valid). + * Update the Linaro support to the 4.9-2015.02 release. + + -- Matthias Klose Sat, 28 Feb 2015 13:28:28 +0100 + +gcc-4.9 (4.9.2-10ubuntu6) vivid; urgency=medium + + * Update to SVN 20150225 (r220958) from the gcc-4_9-branch. + - Fix PR c/64824 (OpenMP), PR c/64868 (OpenMP, rejects valid), PR c/57653, + PR target/65153 (SH), PR lto/65015, PR target/65163 (SH), + PR tree-optimization/63844 (OpenMP), PR tree-optimization/61634 (ice on + valid), PR tree-optimization/59354 (wrong code), + PR tree-optimization/64909 (missed optimization), PR target/64452 (AVR, + ice on valid), PR tree-optimization/64530 (wrong code), PR lto/64373, + PR tree-optimization/63593 (ice on valid), PR tree-optimization/65063, + PR middle-end/64199 (ice on valid), PR tree-optimization/64493 (ice on + valid), PR tree-optimization/64495 (ice on valid, wrong code), + PR tree-optimization/56273 (diagnostic), PR tree-optimization/59124 + (diagnostic), PR tree-optimization/64277 (diagnostic), + PR middle-end/64365 (wrong code), PR target/64387 (x86, ice on valid), + PR target/64979 (wrong code), PR target/64580 (rs6000), PR c++/62017, + PR fortran/63744 (rejects valid), PR fortran/64932 (ice on valid). + * Revert work arounds for an issue leading to a misbuilt GCC on AArch64, + now fixed on the branch and trunk. + + -- Matthias Klose Wed, 25 Feb 2015 12:32:02 +0100 + +gcc-4.9 (4.9.2-10ubuntu5) vivid; urgency=medium + + * Update to SVN 20150204 (r220426) from the gcc-4_9-branch. + * Revert the workaround for PR target/64938, and backport the real fix + to the 4.9 branch. LP: #1417664. + + -- Matthias Klose Thu, 05 Feb 2015 00:49:51 +0100 + +gcc-4.9 (4.9.2-10ubuntu4) vivid; urgency=medium + + * Update to SVN 20150204 (r220417) from the gcc-4_9-branch. + * Revert the fix for PR ipa/63970, causing PR target/64938. LP: #1417664. + * Update again the Linaro support to the 4.9-2015.01 release. + * Revert a Linaro backport, leading to a misbuilt GCC on AArch64. + + -- Matthias Klose Wed, 04 Feb 2015 22:34:16 +0100 + +gcc-4.9 (4.9.2-10ubuntu3) vivid; urgency=medium + + * Update to SVN 20150202 (r220345) from the gcc-4_9-branch. + * Revert the Linaro support to the 4.9-2014.11 release. + + -- Matthias Klose Mon, 02 Feb 2015 15:12:18 +0100 + +gcc-4.9 (4.9.2-10ubuntu2) vivid; urgency=medium + + * Update to SVN 20150116 (r219730) from the gcc-4_9-branch. + - Fix PR libstdc++/64476, PR libstdc++/60966, PR libstdc++/64239, + PR middle-end/63704 (ice on valid), PR target/64513 (x86), + PR rtl-optimization/64286 (wrong code), PR tree-optimization/64563 (ice), + PR middle-end/64391 (ice on valid), PR c++/54442 (ice on valid), + PR target/64358 (rs6000, wrong code), PR target/63424 (AArch64, ice on + valid), PR target/64479 (SH), PR rtl-optimization/64536, PR target/64505 + (rs6000), PR target/61413 (ARM, wrong code), PR target/64507 (SH), + PR target/64409 (x32, ice on valid), PR c++/64487 (ice on valid), + PR c++/64352, PR c++/64251 (rejects valid), PR c++/64297 (ice on valid), + PR c++/64029 (ice on valid), PR c++/63657 (diagnostic), PR c++/38958 + (diagnostic), PR c++/63658 (rejects valid), PR ada/64492 (build), + PR fortran/64528 (ice on valid), PR fortran/63733 (wrong code), + PR fortran/56867 (wrong code), PR fortran/64244 (ice on valid). + * Update the Linaro support to the 4.9-2015.01 release. + + -- Matthias Klose Fri, 16 Jan 2015 14:28:09 +0100 + +gcc-4.9 (4.9.2-10ubuntu1) vivid; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 31 Dec 2014 04:54:06 +0100 + +gcc-4.9 (4.9.2-10) unstable; urgency=medium + + * Really add x32 multilib packages for i386 cross builds to the control file. + Closes: #773265. + * Use the final binutils 2.25 release. + * Tighten the gcc-4.9 dependency on libgcc-4.9-dev (YunQiang Su). + + -- Matthias Klose Thu, 25 Dec 2014 18:10:51 +0100 + +gcc-4.9 (4.9.2-9) unstable; urgency=medium + + * Update to SVN 20141220 (r218987) from the gcc-4_9-branch. + - Fix PR libstdc++/64302, PR libstdc++/64303, PR c++/60955, + PR rtl-optimization/64010 (wrong code), PR sanitizer/64265 (wrong code). + * Add x32 multilib packages for i386 cross builds to the control file. + Closes: #773265. + * Fix mips64el multilib cross builds. Closes: #772665. + * libphobos-4.x-dev: Stop providing libphobos-dev, now a real package. + + -- Matthias Klose Sat, 20 Dec 2014 07:47:15 +0100 + +gcc-4.9 (4.9.2-8) unstable; urgency=medium + + * Update to SVN 20141214 (r218721) from the gcc-4_9-branch. + - Fix PR tree-optimization/62021 (ice), PR middle-end/64225 (missed + optimization), PR libstdc++/64239, PR rtl-optimization/64037 (wrong + code), PR target/64200 (x86, ice), PR tree-optimization/64269 (ice). + * Don't build libphobos multilibs, there is no gdc-multilib build. + * Really disable the sanitizer libs on powerpc, ppc64 and ppc64el. + * Paste config.log files to stdout in case of build errors. + + -- Matthias Klose Sun, 14 Dec 2014 18:43:49 +0100 + +gcc-4.9 (4.9.2-7ubuntu3) vivid; urgency=medium + + * Fix the powerpc build. + + -- Matthias Klose Thu, 11 Dec 2014 15:52:15 +0100 + +gcc-4.9 (4.9.2-7ubuntu2) vivid; urgency=medium + + * Update to SVN 20141211 (r218620) from the gcc-4_9-branch. + - Fix PR tree-optimization/62021 (ice), PR middle-end/64225 (missed + optimization). + * Don't build libphobos multilibs, there is no gdc-multilib built. + * Really disable the sanitizer libs on powerpc, ppc64 and ppc64el. + * Paste config.log files to stdout in case of build errors. + + -- Matthias Klose Thu, 11 Dec 2014 12:04:13 +0100 + +gcc-4.9 (4.9.2-7ubuntu1) vivid; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 10 Dec 2014 15:27:33 +0100 + +gcc-4.9 (4.9.2-7) unstable; urgency=medium + + * Update to SVN 20141210 (r218575) from the gcc-4_9-branch. + - Fix PR libstdc++/64203, PR target/55351 (SH), PR tree-optimization/61686, + PR bootstrap/64213. + - libgcc hppa backports. + * Fix cross builds with dpkg-architecture unconditionally exporting + target variables. For now specify the target architecture + in debian/target. This still needs to work with older dpkg versions, + so don't "simplify" the packaging. Closes: #768167. + + -- Matthias Klose Wed, 10 Dec 2014 13:32:42 +0100 + +gcc-4.9 (4.9.2-6ubuntu1) vivid; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 09 Dec 2014 13:47:24 +0100 + +gcc-4.9 (4.9.2-6) unstable; urgency=medium + + * Update to SVN 20141209 (r218510) from the gcc-4_9-branch. + - Fix PR libstdc++/63840, PR libstdc++/61947, PR libstdc++/64140, + PR target/50751 (SH), PR target/64108 (x86, ice), + PR rtl-optimization/64037 (wrong-code), PR c++/56493 (performance), + PR c/59708, PR ipa/64153, PR target/64167) (wrong code, + closes: #771974), PR target/59593 (ARM, wrong code), + PR middle-end/63762 (ARM. wrong code), PR target/63661 (x86, + wrong code), PR target/64113 (alpha, wrong code), PR c++/64191. + - Allow to build with ISL 0.14. + + -- Matthias Klose Tue, 09 Dec 2014 11:00:08 +0100 + +gcc-4.9 (4.9.2-5ubuntu1) vivid; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 28 Nov 2014 12:10:55 +0100 + +gcc-4.9 (4.9.2-5) unstable; urgency=medium + + * Update to SVN 20141202 (r218271) from the gcc-4_9-branch. + - Fix PR middle-end/64111 (ice), PR ipa/63551 (wrong code). + PR libstdc++/64102 (closes: #770843), PR target/64115 (powerpc). + * Move libphobos2.a into the gcc_lib_dir. Closes: #771647. + * Fix typo in last powerpcspe patch. Closes: #771654. + + -- Matthias Klose Tue, 02 Dec 2014 17:42:07 +0100 + +gcc-4.9 (4.9.2-4) unstable; urgency=medium + + * Update to SVN 20141128 (r218142) from the gcc-4_9-branch. + -PR PR target/56846 (ARM), PR libstdc++/63497, + PR middle-end/63738 (wrong code), PR tree-optimization/62238 (ice), + PR tree-optimization/61927 (wrong code), + PR tree-optimization/63605 (wrong code), PR middle-end/63665 (wrong code), + PR fortran/63938 (OpenMP), PR middle-end/64067 (ice), + PR tree-optimization/63915 (wrong code), PR sanitizer/63913 (ice valid), + PR rtl-optimization/63659 (wrong code). + * Don't let stage1 multilib builds depend on the multilib libc-dev. + Closes: #771243. + * Fix an exception problem on powerpcspe (Roland Stigge). Closes: #771324. + * Remove unsupported with_deps_on_target_arch_pkgs configurations. + Closes: #760770, #766924, #770413. + + -- Matthias Klose Fri, 28 Nov 2014 15:26:23 +0100 + +gcc-4.9 (4.9.2-3) unstable; urgency=medium + + * Update to SVN 20141125 (r218048) from the gcc-4_9-branch. + - PR target/53976 (SH), PR target/63783 (SH), PR target/51244 (SH), + PR target/60111 (SH), PR target/63673 (ppc), + PR tree-optimization/61750 (ice), PR target/63947 (x86, wrong code), + PR tree-optimization/62167 (wrong code), PR c++/63849 (ice), + PR ada/47500. + + [ Aurelien Jarno ] + * Always configure sh4-linux with --with-multilib-list=m4,m4-nofpu, + even with multilib disabled, as it doesn't produce additional + libraries. + + [ Matthias Klose ] + * gcc-4.9-base: Add Breaks: gcc-4.7-base (<< 4.7.3). Closes: #770025. + + -- Matthias Klose Tue, 25 Nov 2014 17:04:19 +0100 + +gcc-4.9 (4.9.2-2) unstable; urgency=medium + + * Update to SVN 20141117 (r217768) from the gcc-4_9-branch. + - Fix PR rtl-optimization/63475, PR rtl-optimization/63483 (gfortran + aliasing fixes for alpha), PR target/63538 (x86), PR ipa/63838 (wrong + code), PR target/61535 (sparc), PR c++/63265 (diagnostic), PR ada/42978. + * Fix PR c/61553 (ice on illegal code), backported from the trunk. + Closes: #767668. + * Disable building the sanitizer libs on powerpc and ppc64. Not yet + completely ported, and causing kernel crashes running the tests. + * Update the Linaro support to the 4.9-2014.11 release. + + -- Matthias Klose Tue, 18 Nov 2014 00:34:01 +0100 + +gcc-4.9 (4.9.2-1ubuntu1) vivid; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 04 Nov 2014 13:51:39 +0100 + +gcc-4.9 (4.9.2-1) unstable; urgency=medium + + * GCC 4.9.2 release. + * Update GDC from the 4.9 branch. + + [ Matthias Klose ] + * Allow to build the gcc-base package only. + + [Ludovic Brenta] + Merge from gnat-4.9 (4.9.1-4) unstable; urgency=low. + * debian/patches/ada-libgnatvsn.diff: compile the version.o of + libgnatvsn.{a,so} with -DBASEVER=$(FULLVER) to align it with the + change made in gcc-base-version.diff, which is compiled into gcc and + gnat1. Fixes: #759038. + * debian/patches/ada-revert-pr63225.diff: new; preserve the aliversion + compatibility of libgnatvsn4.9-dev with -3. + + Merge from gnat-4.9 (4.9.1-3) unstable; urgency=low + Merge from gnat-4.9 (4.9.1-2) unstable; urgency=low + + [Svante Signell] + * debian/patches/ada-hurd.diff: update and bring up to par with + ada-kfreebsd.diff. + + [Ludovic Brenta] + * Rebuild with newer dpkg. Fixes: #761248. + + Merge from gnat-4.9 (4.9.1-1) unstable; urgency=low + + * New upstream release. Build-depend on gcc-4.9-source (>= 4.9.1). + Fixes: #755490. + * debian/rules.d/binary-ada.mk: install the test-summary file in package + gnat-4.9 instead of gnat-4.9-base. test-summary is actually + architecture-dependent. This change reflects what happens in gcc-4.9 + and gcc-4.9-base as well. Fixes: #749869. + + Merge from gnat-4.9 (4.9.0-2) unstable; urgency=low + + * Lintian warnings: + * debian/control.m4 (gnat-4.9-base): Multi-Arch: same. + * debian/patches/ada-749574.diff: new. Fixes: #749574. + + -- Matthias Klose Tue, 04 Nov 2014 02:58:33 +0100 + +gcc-4.9 (4.9.1-19ubuntu1) vivid; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 24 Oct 2014 06:51:19 +0200 + +gcc-4.9 (4.9.1-19) unstable; urgency=medium + + * GCC 4.9.2 release candidate. + * Update to SVN 20141023 (r216594) from the gcc-4_9-branch. + * Install sanitizer header files. + * Apply patch for PR 60655, taken from the trunk. + * Fix typo in the libstdc++ HTML docs. Closes: #766498. + * Use doxygen's copy of jquery.js for the libstdc++ docs. Closes: #766499. + * Force self-contained cross builds. + + -- Matthias Klose Fri, 24 Oct 2014 00:23:16 +0200 + +gcc-4.9 (4.9.1-18) unstable; urgency=medium + + * Update to SVN 20141018 (r216426) from the gcc-4_9-branch. + + [ Matthias Klose ] + * Update libstdc++ symbols file for powerpcspe (Roland Stigge). + Closes: #765078. + + -- Matthias Klose Sat, 18 Oct 2014 16:28:09 +0200 + +gcc-4.9 (4.9.1-17) unstable; urgency=medium + + * Update to SVN 20141015 (r216240) from the gcc-4_9-branch. + - Fix PR c++/63405 (ice) Closes: #761549. + - Fix PR ipa/61144 (wrong code). Closes: #748681. + + -- Matthias Klose Wed, 15 Oct 2014 10:29:23 +0200 + +gcc-4.9 (4.9.1-16ubuntu6) utopic; urgency=medium + + * Update to SVN 20141011 (r216116) from the gcc-4_9-branch. + - Implement SD-6: SG10 Feature Test Recommendations. + * Upstream bug fixes: + - PR tree-optimization/61969 (wrong code), PR rtl-optimization/57003 (wrong + code), PR target/52941 (SH), PR c++/63405 (ice, closes: #761549), + PR c/63495 (user alignment), PR tree-optimization/63379 (wrong code), + PR tree-optimization/63380 (wrong code), PR c++/63415 (ice), PR c++/63437 + (rejects vaild), PR fortran/59488 (OpenMP). + + -- Matthias Klose Sat, 11 Oct 2014 09:56:02 +0200 + +gcc-4.9 (4.9.1-16ubuntu5) utopic; urgency=medium + + * Update to SVN 20141007 (r215968) from the gcc-4_9-branch. + * Upstream bug fixes: + - PR libstdc++/63456, PR ipa/61144 (wrong code), PR ipa/62121 (ice), + PR lto/62026 (ice on valid), PR libgfortran/63460 (behaviour). + + -- Matthias Klose Tue, 07 Oct 2014 16:52:04 +0200 + +gcc-4.9 (4.9.1-16ubuntu4) utopic; urgency=medium + + * Update to SVN 20141001 (r215767) from the gcc-4_9-branch. + * Upstream bug fixes: + - PR libgomp/61200 (ICE), PR tree-optimization/63375 (wrong code), + PR libstdc++/63199 (incorrect basic_regex move constructor, + PR libstdc++/63449 (docs), PR debug/63342, PR target/63428 (x86). + - libstdc++: Add is_final<> type trait for C++14. + - gccgo: Recognize 64-bit symbol tables in archives. + - gccgo: Don't insert promoted methods that conflict with fields. + - gccgo: PR go/61880, symbol names should have '.' replaced with '_'. + + -- Matthias Klose Fri, 03 Oct 2014 22:42:04 +0200 + +gcc-4.9 (4.9.1-16ubuntu2) utopic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + * Update to SVN 20141001 (r215767) from the gcc-4_9-branch. + * Upstream bug fixes: + - PR c++/61465 (bogus warning), PR c++/62017 (asan), PR c++/62219 (rejects + valid code), PR c++/63248 (openmp), PR c++/63249 (openmp), + PR inline-asm/63282 (ice), PR target/61407 (build fix), + PR middle-end/63247 (openmp), PR target/63335 (wrong code, rs6000), + PR tree-optimization/63341 (wrong code on power7), PR sanitizer/61272, + PR debug/63328, PR libstdc++/59603 (debug build), PR c++/63306 (ice), + PR regression/61510 (ice), PR debug/63285, PR tree-optimization/63186 + (wrong code), PR plugins/63410, PR target/63428 (x86_64, wrong code), + PR debug/63342. + - rs6000 updates. + + -- Matthias Klose Thu, 02 Oct 2014 03:06:21 +0200 + +gcc-4.9 (4.9.1-16) unstable; urgency=medium + + * Update to SVN 20140930 (r215717) from the gcc-4_9-branch. + * Don't suggest libvtv and binutils-gold. Closes: #761612. + + -- Matthias Klose Tue, 30 Sep 2014 11:37:48 +0200 + +gcc-4.9 (4.9.1-15ubuntu1) utopic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 19 Sep 2014 01:03:34 +0200 + +gcc-4.9 (4.9.1-15) unstable; urgency=medium + + * Update to SVN 20140918 (r215344) from the gcc-4_9-branch. + + [ Matthias Klose ] + * Extend the fix for PR target/63190 (AArch64). Closes: #758964. + * Apply proposed fix for Linaro #331, LP: #1353729 (AArch64). + + [ Aurelien Jarno ] + * Default to mips64 ISA on mips64el, with tuning for mips64r2. + + -- Matthias Klose Fri, 19 Sep 2014 00:55:58 +0200 + +gcc-4.9 (4.9.1-14ubuntu3) utopic; urgency=medium + + * Extend the fix for PR target/63190 (AArch64). Closes: #758964. + + -- Matthias Klose Thu, 18 Sep 2014 03:24:40 +0200 + +gcc-4.9 (4.9.1-14ubuntu2) utopic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 12 Sep 2014 15:20:06 +0200 + +gcc-4.9 (4.9.1-14) unstable; urgency=medium + + * Update to SVN 20140912 (r215228) from the gcc-4_9-branch. + * Update the Linaro support to the 4.9-2014.09 release. + * Fix installation of the libstdc++ documentation. Closes: #760872. + + -- Matthias Klose Fri, 12 Sep 2014 19:15:23 +0200 + +gcc-4.9 (4.9.1-13ubuntu2) utopic; urgency=medium + + * Update to SVN 20140910 (r215105) from the gcc-4_9-branch. + * Update the Linaro support to 4.9-2014.09. + + -- Matthias Klose Wed, 10 Sep 2014 10:09:34 +0200 + +gcc-4.9 (4.9.1-13ubuntu1) utopic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Mon, 08 Sep 2014 10:31:25 +0200 + +gcc-4.9 (4.9.1-13) unstable; urgency=medium + + * Update to SVN 20140908 (r215008) from the gcc-4_9-branch. + * Enable cgo on AArch64 (Michael Hudson). LP: #1361940. + * Update the Linaro support from the Linaro/4.9 branch. + * Fix PR target/63190 (AArch64), taken from the trunk. Closes: #758964. + + -- Matthias Klose Mon, 08 Sep 2014 09:56:50 +0200 + +gcc-4.9 (4.9.1-12ubuntu2) utopic; urgency=medium + + * Update to SVN 20140903 (r214876) from the gcc-4_9-branch. + * Enable cgo on AArch64 (Michael Hudson). LP: #1361940. + * Update the Linaro support from the Linaro/4.9 branch. + + -- Matthias Klose Wed, 03 Sep 2014 16:21:46 +0200 + +gcc-4.9 (4.9.1-12) unstable; urgency=medium + + [ Samuel Thibault ] + * boehm-gc: use anonymous mmap instead of brk also on hurd-*. + Closes: #753791. + + -- Matthias Klose Sun, 31 Aug 2014 18:40:46 +0200 + +gcc-4.9 (4.9.1-11) unstable; urgency=medium + + * Update to SVN 20140830 (r214759) from the gcc-4_9-branch. + * Update cross installation patches for the branch. + * Use the base version (4.9) when accessing files in gcc_lib_dir. + + -- Matthias Klose Sat, 30 Aug 2014 22:05:47 +0200 + +gcc-4.9 (4.9.1-10ubuntu2) utopic; urgency=medium + + * Update cross installation patches for the branch. + * Use the base version (4.9) when accessing files in gcc_lib_dir. + + -- Matthias Klose Sun, 31 Aug 2014 00:39:20 +0200 + +gcc-4.9 (4.9.1-10ubuntu1) utopic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sat, 30 Aug 2014 05:17:50 +0200 + +gcc-4.9 (4.9.1-10) unstable; urgency=medium + + * Update to SVN 20140830 (r214751) from the gcc-4_9-branch. + * Fix jni symlinks in /usr/lib/jvm. Closes: #759558. + * Update the Linaro support from the Linaro/4.9 branch. + - Fixes Aarch64 cross build on i386. + + -- Matthias Klose Sat, 30 Aug 2014 04:47:19 +0200 + +gcc-4.9 (4.9.1-9ubuntu1) utopic; urgency=medium + + * Linaro updates from the linaro/gcc-4_9-branch. + + -- Matthias Klose Sun, 24 Aug 2014 10:34:56 +0200 + +gcc-4.9 (4.9.1-9) unstable; urgency=medium + + * Update to SVN 20140824 (r214405) from the gcc-4_9-branch. + * Fix -dumpversion output to print the full version number. + Addresses: #759038. LP: #1360404. + Use the GCC base version for the D include dir name. + + -- Matthias Klose Sun, 24 Aug 2014 10:09:28 +0200 + +gcc-4.9 (4.9.1-8ubuntu1) utopic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 20 Aug 2014 13:34:06 +0200 + +gcc-4.9 (4.9.1-8) unstable; urgency=medium + + * Update to SVN 20140820 (r214215) from the gcc-4_9-branch. + * Fix PR middle-end/61294, -Wmemset-transposed-args, taken from the trunk. + LP: #1352836. + * Update the Linaro support to 4.9-2014.08. + * Fix PR tree-optimization/59586, graphite segfault, taken from the trunk. + LP: #1227789. + * Fix multilib castrated cross builds on mips64el (YunQiang Su, Helmut + Grohne). Closes: #758408. + * Apply Proposed patch for PR target/62040 (AArch64). LP: #1351227. + Closes: #757738. + + -- Matthias Klose Wed, 20 Aug 2014 11:36:40 +0200 + +gcc-4.9 (4.9.1-7ubuntu1) utopic; urgency=medium + + * Update to SVN 20140817 (r214074) from the gcc-4_9-branch. + * Fix PR middle-end/61294, -Wmemset-transposed-args, taken from the trunk. + LP: #1352836. + * Update the Linaro support to 4.9-2014.08. + * Fix PR tree-optimization/59586, graphite segfault, taken from the trunk. + LP: #1227789. + + -- Matthias Klose Sun, 17 Aug 2014 21:30:42 +0200 + +gcc-4.9 (4.9.1-7) unstable; urgency=medium + + * Build-depend on dpkg-dev (>= 1.17.11). + + -- Matthias Klose Thu, 14 Aug 2014 22:12:29 +0200 + +gcc-4.9 (4.9.1-6ubuntu1) utopic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 14 Aug 2014 21:24:52 +0200 + +gcc-4.9 (4.9.1-6) unstable; urgency=medium + + * Update to SVN 20140813 (r213955) from the gcc-4_9-branch. + * Really fix the GFDL build on AArch64. Closes: #757153. + * Disable Ada for snapshot builds on kfreebsd-i386, kfreebsd-amd64. + Local patch needs an update and upstreaming. + * Apply the local ada-mips patch for snapshot builds too. + * Disable Ada for snapshot builds on mips, mipsel. Bootstrap comparision + failure. Local patch needs upstreaming. + * Disable Ada for snapshot builds on hurd-i386, build dependencies are + not installable. + * Don't build the sanitizer libs for sparc snapshot builds. + * Proposed backport for PR libstdc++/61841. Closes: #749290. + + -- Matthias Klose Thu, 14 Aug 2014 17:53:43 +0200 + +gcc-4.9 (4.9.1-5ubuntu1) utopic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 08 Aug 2014 17:33:23 +0200 + +gcc-4.9 (4.9.1-5) unstable; urgency=medium + + * Update to SVN 20140808 (r213759) from the gcc-4_9-branch. + - Fix PR tree-optimization/61964. LP: #1347147. + * Fix libphobos cross build. + + -- Matthias Klose Fri, 08 Aug 2014 17:28:55 +0200 + +gcc-4.9 (4.9.1-4ubuntu3) utopic; urgency=medium + + * Update to SVN 20140802 (r213518) from the gcc-4_9-branch. + - Fix PR other/61895, libgo issue with Docker. + * Fix libphobos cross build even harder. + + -- Matthias Klose Sat, 02 Aug 2014 20:41:12 +0200 + +gcc-4.9 (4.9.1-4ubuntu2) utopic; urgency=medium + + * Update to SVN 20140802 (r213510) from the gcc-4_9-branch. + - Fix PR tree-optimization/61964. LP: #1347147. + * Fix libphobos cross build. + + -- Matthias Klose Sat, 02 Aug 2014 02:44:59 +0200 + +gcc-4.9 (4.9.1-4ubuntu1) utopic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 31 Jul 2014 10:26:06 +0200 + +gcc-4.9 (4.9.1-4) unstable; urgency=high + + * Update to SVN 20140731 (r213317) from the gcc-4_9-branch. + - CVE-2014-5044, fix integer overflows in array allocation in libgfortran. + Closes: #756325. + * Build libphobos on armel and armhf. Closes: #755390. + * Fix java.security symlink. Closes: #756484. + + -- Matthias Klose Thu, 31 Jul 2014 10:15:27 +0200 + +gcc-4.9 (4.9.1-3ubuntu2) utopic; urgency=medium + + * Update to SVN 20140728 (r213129) from the gcc-4_9-branch. + - Properly fix PR libobjc/61920 on the 4.9 branch. + + -- Matthias Klose Mon, 28 Jul 2014 18:32:19 +0200 + +gcc-4.9 (4.9.1-3ubuntu1) utopic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 27 Jul 2014 15:28:18 +0200 + +gcc-4.9 (4.9.1-3) unstable; urgency=medium + + * Update to SVN 20140727 (r213100) from the gcc-4_9-branch. + * Fix the GFDL build on AArch64. + * Fix PR libobjc/61920, libobjc link failure on powerpc*. Closes: #756096. + + -- Matthias Klose Sun, 27 Jul 2014 15:25:24 +0200 + +gcc-4.9 (4.9.1-2ubuntu2) utopic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 25 Jul 2014 00:37:00 +0200 + +gcc-4.9 (4.9.1-2) unstable; urgency=medium + + * Update to SVN 20140724 (r213031) from the gcc-4_9-branch. + + * Fix installing test logs and summaries. + * Warn about ppc ELFv2 ABI issues, which will change in GCC 4.10. + * Don't gzip the xz compressed testsuite logs and summaries. + * Build libphobos on armel and armhf. Closes: #755390. + * Update the Linaro support to the 4.9-2014.07 release. + + -- Matthias Klose Thu, 24 Jul 2014 23:59:49 +0200 + +gcc-4.9 (4.9.1-1ubuntu3) utopic; urgency=medium + + * Warn about ppc ELFv2 ABI issues, which will change in GCC 4.10. + + -- Matthias Klose Thu, 17 Jul 2014 15:42:55 +0200 + +gcc-4.9 (4.9.1-1) unstable; urgency=medium + + * GCC 4.9.1 release. + * Update GDC form the 4.9 branch (20140712). + + -- Matthias Klose Wed, 16 Jul 2014 17:15:14 +0200 + +gcc-4.9 (4.9.0-11ubuntu1) utopic; urgency=medium + + * Build AArch64 from Linaro 4.9-2014.06 release. + + -- Matthias Klose Sat, 12 Jul 2014 14:52:12 +0200 + +gcc-4.9 (4.9.0-11) unstable; urgency=medium + + * GCC 4.9.1 release candidate 1. + * Update to SVN 20140712 (r212479) from the gcc-4_9-branch. + - Fix PR middle-end/61725. Closes: #754548. + + * Add libstdc++ symbols files for mips64 and mips64el (Yunqiang Su). + Closes: #745372. + * Set java_cpu to ppc64 on ppc64el. + * Build AArch64 from the Linaro 4.9-2014.06 release. + + -- Matthias Klose Sat, 12 Jul 2014 13:10:46 +0200 + +gcc-4.9 (4.9.0-10ubuntu2) utopic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sat, 05 Jul 2014 15:29:25 +0200 + +gcc-4.9 (4.9.0-10) unstable; urgency=medium + + * Update to SVN 20140704 (r212295) from the gcc-4_9-branch. + + * Explicitly set cpu_32 to ultrasparc for sparc64 builds. + * Fix --with-long-double-128 for sparc32 when defaulting to 64-bit. + * Ignore missing libstdc++ symbols on armel and hppa. The future and + exception_ptr implementation is incomplete. For more information see + https://gcc.gnu.org/ml/gcc/2014-07/msg00000.html. + + -- Matthias Klose Fri, 04 Jul 2014 15:55:09 +0200 + +gcc-4.9 (4.9.0-9ubuntu2) utopic; urgency=medium + + * Update to SVN 20140701 (r212192) from the gcc-4_9-branch. + + -- Matthias Klose Tue, 01 Jul 2014 10:54:56 +0200 + +gcc-4.9 (4.9.0-9ubuntu1) utopic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 27 Jun 2014 16:49:41 +0200 + +gcc-4.9 (4.9.0-9) unstable; urgency=medium + + * Update to SVN 20140627 (r212067) from the gcc-4_9-branch. + * Update libstdc++ symbols files for ARM. + + -- Matthias Klose Tue, 01 Jul 2014 10:47:11 +0200 + +gcc-4.9 (4.9.0-8ubuntu1) utopic; urgency=medium + + * Update to SVN 20140616 (r211699) from the gcc-4_9-branch. + + -- Matthias Klose Thu, 26 Jun 2014 23:14:48 +0200 + +gcc-4.9 (4.9.0-8) unstable; urgency=medium + + * Update to SVN 20140624 (r211959) from the gcc-4_9-branch. + + * Don't ignore dpkg-shlibdeps errors for libstdc++6, left over from initial + 4.9 uploads. + * Update libgcc1 symbols for sh4. Closes: #751919. + * Stop building the libvtv packages. Not usable unless the build is + configured with --enable-vtable-verify, which comes with a performance + penalty just for the stubs in libstdc++. + * Update libstdc++ and libvtv symbols files for builds configured with + --enable-vtable-verify. + * Remove version requirement for dependency on make. Closes: #751891. + * Fix removal of python byte-code files in libstdc++6. Closes: #751435. + * Fix a segfault in the driver from calling free on non-malloc'd area. + * Drop versioned build dependency on gdb, and apply the pretty printer + patch for libstdc++ based on the release. + * Add support to build with isl-0.13. + + -- Matthias Klose Wed, 25 Jun 2014 20:08:09 +0200 + +gcc-4.9 (4.9.0-7ubuntu2) utopic; urgency=medium + + * Revert the fix for libstdc++/60326, introducing PR libstdc++/61532. + + -- Matthias Klose Tue, 17 Jun 2014 12:18:41 +0200 + +gcc-4.9 (4.9.0-7ubuntu1) utopic; urgency=medium + + * Mere with Debian; remaining changes: + - Build from the upstream source. + + -- Matthias Klose Mon, 16 Jun 2014 11:04:27 +0200 + +gcc-4.9 (4.9.0-7) unstable; urgency=medium + + * Update to SVN 20140616 (r211699) from the gcc-4_9-branch. + + [ Matthias Klose ] + * Update to SVN 20140610 (r211403) from the gcc-4_9-branch. + * Fix patch application for powerpcspe (Helmit Grohne). Closes: #751001. + + Update context for powerpc_remove_many. + + Drop gcc-powerpcspe-ldbl-fix applied upstream. + + [ Aurelien Jarno ] + * Fix PR c++/61336, taken from the trunk. + + -- Matthias Klose Mon, 16 Jun 2014 10:59:16 +0200 + +gcc-4.9 (4.9.0-6ubuntu1) utopic; urgency=medium + + * Update to SVN 20140610 (r211403) from the gcc-4_9-branch. + + -- Matthias Klose Tue, 10 Jun 2014 12:29:10 +0200 + +gcc-4.9 (4.9.0-6) unstable; urgency=medium + + * Update to SVN 20140608 (r211353) from the gcc-4_9-branch. + * Fix -Wno-format when -Wformat-security is the default (Steve Beattie). + LP: #1317305. + * Don't install the libstdc++ pretty printer file into the debug directory, + but into the gdb auto-load directory. + * Fix the removal of the libstdc++6 package, removing byte-compiled pretty + printer files and pycache directories. + * Fix PR c++/61046, taken from the trunk. LP: #1313102. + * Fix installation of gcc-{ar,nm,ranlib} man pages for snapshot builds. + Closes: #745906. + * Update patches for snapshot builds. + + -- Matthias Klose Sun, 08 Jun 2014 11:57:07 +0200 + +gcc-4.9 (4.9.0-5ubuntu2) utopic; urgency=medium + + * Update to SVN 20140530 (r211080) from the gcc-4_9-branch. + * Fix -Wno-format when -Wformat-security is the default (Steve Beattie). + LP: #1317305. + + -- Matthias Klose Fri, 30 May 2014 16:10:11 +0200 + +gcc-4.9 (4.9.0-5ubuntu1) utopic; urgency=medium + + * Mere with Debian; remaining changes: + - Build from the upstream source. + + -- Matthias Klose Tue, 27 May 2014 09:16:27 +0200 + +gcc-4.9 (4.9.0-5) unstable; urgency=medium + + * Update to SVN 20140527 (r210956) from the gcc-4_9-branch. + * Limit systemtap-sdt-dev build dependency to enumerated linux architectures. + * Build libitm on AArch64, patch taken from the trunk. + * Update the testsuite to allow more testcases to pass with hardening options + turned on (Steve Beattie). LP: #1317307. + * Revert the fix for PR rtl-optimization/60969, causing bootstrap failure + on ppc64el. + * Fix PR other/61257, check for working sys/sdt.h. + * Drop the libstdc++-arm-wno-abi patch, not needed anymore in 4.9. + + -- Matthias Klose Tue, 27 May 2014 08:58:07 +0200 + +gcc-4.9 (4.9.0-4ubuntu4) utopic; urgency=medium + + * Update to SVN 20140523 (r210828) from the gcc-4_9-branch. + * Revert the fix for PR rtl-optimization/60969, causing bootstrap failure + on ppc64el. + + -- Matthias Klose Tue, 20 May 2014 18:01:45 +0200 + +gcc-4.9 (4.9.0-4ubuntu3) utopic; urgency=medium + + * Limit systemtap-sdt-dev build dependency to enumerated linux architectures. + Build-conflict with systemtap-sdt-dev on ppc64el. + * Update the testsuite to allow more testcases to pass with hardening options + turned on (Steve Beattie). LP: #1317307. + * Turn on -fstack-protector-strong by default (Steve Beattie). + * Fix PR other/61257, check for working sys/sdt.h. + * Drop the libstdc++-arm-wno-abi patch, not needed anymore in 4.9. + + -- Matthias Klose Tue, 20 May 2014 11:55:43 +0200 + +gcc-4.9 (4.9.0-4ubuntu2) utopic; urgency=medium + + * Revert the gcc-default-format-security update. + + -- Matthias Klose Mon, 19 May 2014 01:48:13 +0200 + +gcc-4.9 (4.9.0-4ubuntu1) utopic; urgency=medium + + * Mere with Debian; remaining changes: + - Build from the upstream source. + + -- Matthias Klose Mon, 19 May 2014 01:16:04 +0200 + +gcc-4.9 (4.9.0-4) unstable; urgency=medium + + * Update to SVN 20140518 (r210592) from the gcc-4_9-branch. + * Update the local ada-libgnatprj patch for AArch64. Addresses: #748233. + * Update the libstdc++v-python3 patch. Closes: #748317, #738341, 747903. + * Build-depend on systemtap-sdt-dev, on every architecure, doesn't seem to hurt + on architectures where it is not supported. Closes: #748315. + * Update the gcc-default-format-security patch (Steve Beattie). LP: #1317305. + * Apply the proposed patch for PR c/57653. Closes: #734345. + + -- Matthias Klose Sun, 18 May 2014 23:29:43 +0200 + +gcc-4.9 (4.9.0-3ubuntu1) utopic; urgency=medium + + * Mere with Debian; remaining changes: + - Build from the upstream source. + + -- Matthias Klose Tue, 13 May 2014 11:53:04 +0200 + +gcc-4.9 (4.9.0-3) unstable; urgency=medium + + * Update to SVN 20140512 (r210323) from the gcc-4_9-branch. + + [ Matthias Klose ] + * Update build dependencies for ada enabled snapshot builds. + * Fix PR tree-optimization/60902, taken from the trunk. Closes: #746944. + * Ensure that the common libs (built from the next GCC version) are + available when building without common libs. + * Fix java.security symlink in libgcj15. Addresses: #746786. + * Move the libstdc++ gdb pretty printers into libstdc++6, install the + -gdb.py files into /usr/share/gdb/auto-load. + * Set the 'Multi-Arch: same' attribute for packages, cross built with + with_deps_on_target_arch_pkgs=yes (Helmit Grohne). Closes: #716795. + * Build the gcc-X.Y-base package with with_deps_on_target_arch_pkgs=yes + (Helmit Grohne). Addresses: #744782. + * Apply the proposed patches for PR driver/61106, PR driver/61126. + Closes: #747345. + + [ Aurelien Jarno ] + * Fix libasan1 symbols file for sparc and sparc64. + + -- Matthias Klose Tue, 13 May 2014 02:15:27 +0200 + +gcc-4.9 (4.9.0-2ubuntu1) utopic; urgency=medium + + * Mere with Debian; remaining changes: + - Build from the upstream source. + + -- Matthias Klose Sat, 03 May 2014 14:32:29 +0200 + +gcc-4.9 (4.9.0-2) unstable; urgency=medium + + * Update to SVN 20140503 (r210033) from the gcc-4_9-branch. + - Fix PR go/60931, garbage collector issue with non 4kB system page size. + LP: #1304754. + + [Matthias Klose] + * Fix libgcc-dev dependency on gcc, when not building libgcc. + * Fix gnat for snapshot builds on ppc64el. + * Update the libsanitizer build fix for sparc. + * Install only versioned gcc-ar gcc-nm gcc-ranlib binaries for the hppa64 + cross compiler. Install hppa64 alternatives. Addresses: #745967. + * Fix the as and ld symlinks for the hppa64 cross compiler. + * Add the gnat backport for AArch64. + * Update gnat patches not to use tabs and too long lines. + * libgnatvsn: Use CC and CXX passed from the toplevel makefile, drop gnat + build dependency on g++. Addresses: #746688. + + Merge from gnat-4.9 (4.9.0-1) unstable; urgency=low: + + [Ludovic Brenta] + * debian/patches/ada-hurd.diff: refresh for new upstream version that + restores POSIX compliance in System.OS_Interface.timespec. + * debian/patches/ada-kfreebsd.diff: make System.OS_Interface.To_Timespec + consistent with s-osinte-posix.adb. + [Nicolas Boulenguez] + * rules.conf (Build-Depends): mention gnat before gnat-x.y so that + buildds can bootstrap 4.9 in unstable. Fixes: #744724. + + -- Matthias Klose Sat, 03 May 2014 14:00:41 +0200 + +gcc-4.9 (4.9.0-1ubuntu4) utopic; urgency=medium + + * Update to SVN 20140425 (r209789) from the gcc-4_9-branch. + - Fix PR go/60931, garbage collector issue with non 4kB system page size. + LP: #1304754. + + -- Matthias Klose Fri, 25 Apr 2014 13:05:57 +0200 + +gcc-4.9 (4.9.0-1ubuntu3) utopic; urgency=medium + + * Fix versioned dependency in gcc-4.9 on libgcc-4.9-dev. + + -- Matthias Klose Fri, 25 Apr 2014 01:03:14 +0200 + +gcc-4.9 (4.9.0-1ubuntu2) utopic; urgency=medium + + * Update to SVN 20140424 (r209755) from the gcc-4_9-branch. + + -- Matthias Klose Thu, 24 Apr 2014 18:37:56 +0200 + +gcc-4.9 (4.9.0-1) unstable; urgency=medium + + * GCC 4.9.0 release. + * Update to SVN 20140423 (r209695) from the gcc-4_9-branch. + + [Matthias Klose] + * Fix PR target/59758 (sparc), libsanitizer build failure (proposed patch). + * Update gold architectures. + * Update NEWS files. + * Remove more mudflap left overs. Closes: #742606. + * Add new libraries src/libvtv and src/libcilkrts to + cross-ma-install-location.diff (Helmur Grohne). Closes: #745267. + * Let lib*gcc-dev depend on the corresponding libtsan packages. + * Build the liblsan packages (amd64 only). + * Install the libcilkrts spec file. + * Build the D frontend and libphobos from the gdc trunk. + + Merge from gnat-4.9 (4.9-20140411-1) unstable; urgency=medium + + [Nicolas Boulenguez] + * Revert g4.9-base to Architecture: all. Fixes: #743833. + * g4.9 Breaks/Replaces -base 4.6.4-2 and 4.9-20140330-1. Fixes: #743376. + + [Ludovic Brenta] + * debian/patches/ada-symbolic-tracebacks.diff: refresh. + + Merge from gnat-4.9 (4.9-20140406-1) experimental; urgency=low + + * debian/patches/ada-arm.diff: new. Improve support for ZCX on this + architecture. + * debian/patches/rules.patch: apply architecture- and Ada-specific + patches before Debian-specific patches. + * debian/patches/ada-link-lib.diff, + debian/patches/ada-libgnatvsn.diff, + debian/patches/ada-libgnatprj.diff: refresh for the new upstream + sources. + + Merge from gnat-4.9 (4.9-20140330-3) experimental; urgency=low + + [Nicolas Boulenguez] + * Install debian_packaging.mk to gnat-x.y, not -base. Fixes: #743375. + * rules.conf (Build-Depends): gnatgcc symlink provided by gnat-4.9 | + gnat-4.6 (>= 4.6.4-2) | gnat (>= 4.1 and << 4.6.1). + + Merge from gnat-4.9 (4.9-20140330-2) experimental; urgency=medium + + * Uploading to unstable was a mistake. Upload to experimental. + + Merge from gnat-4.9 (4.9-20140330-1) unstable; urgency=medium + + [Nicolas Boulenguez] + * patches/ada-ppc64.diff: replace undefined variable arch with + target_cpu; this overrides the patch proposed by Ulrich Weigand as + it is more correct; approved by Ludovic Brenta. Fixes: #742590. + * control.m4: Break/Replace: dh-ada-library 5.9. Fixes: #743219. + + Merge from gnat-4.9 (4.9-20140322-1) experimental; urgency=low + + [Nicolas Boulenguez] + * debian/control.m4: + (Suggests): suggest the correct version of ada-reference-manual. + (Vcs-Svn): specify the publicly accessible repository. + * Receive debian_packaging.mk from dh-ada-library (not library specific). + * Receive gnatgcc symlink from gnat (useful outside default compiler). + * debian/source/local-options: new. + + [Ludovic Brenta] + * debian/control.m4: conflict with gnat-4.7, gnat-4.8. + * debian/patches/ada-default-project-path.diff: when passed options such + as -m32 or -march, do not look for the RTS in + /usr/share/ada/adainclude but in + /usr/lib/gcc/$target_triplet/$version/{,rts-}$arch. Still look + for project files in /usr/share/ada/adainclude. + * debian/rules.d/binary-ada.mk, debian/rules.defs, debian/rules.patch: + Switch to ZCX by default on arm, armel, armhf; built SJLJ as the + package gnat-4.9-sjlj like on all other architectures. This is made + possible by the new upstream version. + * debian/patches/ada-hurd.diff (s-osinte-gnu.ads): change the type of + timespec.tv_nsec from long to time_t, for compatibility with + s-osinte-posix.adb, even though this violates POSIX. Better solution + to come from upstream. Fixes: #740286. + + -- Matthias Klose Wed, 23 Apr 2014 13:35:43 +0200 + +gcc-4.9 (4.9-20140411-2) unstable; urgency=medium + + * Disable running the testsuite on kfreebsd, hangs the buildds. + * Stop building the sanitizer libs on sparc, fails to build. No reaction + from the Debian port maintainers and upstream. See PR sanitize/59758. + + -- Matthias Klose Sat, 12 Apr 2014 15:42:34 +0200 + +gcc-4.9 (4.9-20140411-1) unstable; urgency=medium + + * GCC 4.9.0 release candidate 1. + * Configure for i586-linux-gnu on i386. + + -- Matthias Klose Fri, 11 Apr 2014 19:57:07 +0200 + +gcc-4.9 (4.9-20140406-1ubuntu1) trusty; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 06 Apr 2014 11:33:19 +0200 + +gcc-4.9 (4.9-20140406-1) experimental; urgency=medium + + [Matthias Klose] + * Include include and include-fixed header files into the stage1 + gcc-4.9 package. + * Explicitly configure with --disable-multilib on sparc64 when no + multilibs are requested (Helmut Grohne). Addresses: #743342. + * Drop mudflap from cross-install-location.diff since mudflap was removed + from gcc 4.9. Closes: #742606 + * Build gnat in ppc64el snapshot builds. + * Apply the ada-ppc64 patch for snapshot builds as well. + * Fix PR target/60609 (ARM), proposed patch (Charles Baylis). LP: #1295653. + * Include the gnu triplet prefixed gcov and gcc-{ar,nm,ranlib} binaries. + * Add replaces when upgrading from a standalone gccgo build. + + [Yunqiang Su] + * Lower default optimization for mips64/n32 to mips3/mips64(32). + Closes: #742617. + + -- Matthias Klose Sun, 06 Apr 2014 02:24:16 +0200 + +gcc-4.9 (4.9-20140330-1ubuntu1) trusty; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 30 Mar 2014 09:50:24 +0100 + +gcc-4.9 (4.9-20140330-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140330. + + [Matthias Klose] + * Update symbols files. + * debian/patches/ada-ppc64.diff: Fix for ppc64el (Ulrich Weigand). + * Fix cross building targeting x32 (Helmut Grohne). Addresses: #742539. + + [Ludovic Brenta] + * debian/control.m4 (Build-Depends), debian/rules.conf: remove + AUTOGEN_BUILD_DEP and hardcode autogen. It is called by + fixincludes/genfixes during bootstrap and also when building gnat-*, + not just when running checks on gcc-*. + + -- Matthias Klose Sun, 30 Mar 2014 09:46:29 +0100 + +gcc-4.9 (4.9-20140322-1ubuntu1) trusty; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sat, 22 Mar 2014 14:20:55 +0100 + +gcc-4.9 (4.9-20140322-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140322. + - Fixes build error on the Hurd. Closes: #740153. + + [Matthias Klose] + * Re-apply lost patch for config.gcc for mips64el. Closes: #741543. + + Merge from gnat-4.9 (4.9-20140218-3) UNRELEASED; urgency=low + + [Nicolas Boulenguez] + * debian/control.m4: suggest the correct version of + ada-reference-manual. + + [Ludovic Brenta] + * debian/control.m4: conflict with gnat-4.7, gnat-4.8. + + Merge from gnat-4.9 (4.9-20140218-2) experimental; urgency=low + + * debian/patches/ada-hurd.diff (Makefile.in): match *86-pc-gnu but + not *86-linux-gnu, the target tripled used by GNU/Linux. + + Merge from gnat-4.9 (4.9-20140218-1) experimental; urgency=low + + [Ludovic Brenta] + * debian/patches/ada-symbolic-tracebacks.diff: refresh and fix compiler + warnings. + * debian/patches/ada-link-lib.diff (.../ada/gcc-interface/Make-lang.in): + do not try to install the gnattools, this is the job of + gnattools/Makefile.in. + * debian/patches/ada-ajlj.diff: specify EH_MECHANISM to sub-makes even + when making install-gnatlib. + + [Xavier Grave] + * debian/patches/ada-kfreebsd.diff: refresh. + * debian/rules.patch: re-enable the above. + + -- Matthias Klose Sat, 22 Mar 2014 14:19:43 +0100 + +gcc-4.9 (4.9-20140306-0ubuntu2) trusty; urgency=medium + + * Package GCC 4.9 snapshot 20140306. + + -- Matthias Klose Thu, 06 Mar 2014 16:00:18 +0100 + +gcc-4.9 (4.9-20140303-0ubuntu3) trusty; urgency=medium + + * Package GCC 4.9 snapshot 20140303. + + -- Matthias Klose Tue, 04 Mar 2014 09:55:41 +0100 + +gcc-4.9 (4.9-20140218-0ubuntu1) trusty; urgency=medium + + * Package GCC 4.9 snapshot 20140218. + + -- Matthias Klose Wed, 19 Feb 2014 00:21:50 +0100 + +gcc-4.9 (4.9-20140205-0ubuntu1) trusty; urgency=medium + + * Package GCC 4.9 snapshot 20140205. + + -- Matthias Klose Wed, 05 Feb 2014 13:41:13 +0100 + +gcc-4.9 (4.9-20140125-0ubuntu1) trusty; urgency=medium + + * Package GCC 4.9 snapshot 20140125. + * PR target/59913. Revert the fix for PR rtl-optimization/59477 on armhf. + + -- Matthias Klose Sat, 25 Jan 2014 09:19:09 +0100 + +gcc-4.9 (4.9-20140122-1ubuntu1) trusty; urgency=medium + + * Package GCC 4.9 snapshot 20140122. + + -- Matthias Klose Wed, 22 Jan 2014 21:35:26 +0100 + +gcc-4.9 (4.9-20140122-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140122. + * Update libstdc++ -dbg and -doc conflicts. + * Link libstdc++ tests requiring libpthread symbols with --no-as-needed. + * armhf: Fix ffi_call_VFP with no VFP arguments (Will Newton). + * Apply proposed patch for PR target/59799, allow passing arrays in + registers on AArch64 (Michael Hudson). + + -- Matthias Klose Wed, 22 Jan 2014 21:28:56 +0100 + +gcc-4.9 (4.9-20140118-0ubuntu1) trusty; urgency=medium + + * GCC 4.9 snapshot 20140118. + + -- Matthias Klose Sun, 19 Jan 2014 00:21:29 +0100 + +gcc-4.9 (4.9-20140116-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140116. + * Fix PR target/59588 (AArch64), backport proposed patch. LP: #1263576. + * Fix call frame information in ffi_closure_SYSV on AArch64. + + -- Matthias Klose Fri, 17 Jan 2014 00:31:19 +0100 + +gcc-4.9 (4.9-20140111-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140111. + * Update libstdc++ -dbg and -doc conflicts. Closes: #734913. + * Disable libcilkrts on KFreeBSD and the Hurd. See #734973. + + -- Matthias Klose Sat, 11 Jan 2014 13:11:16 +0100 + +gcc-4.9 (4.9-20140110-0ubuntu1) trusty; urgency=medium + + * GCC 4.9 snapshot 20140110. + + -- Matthias Klose Fri, 10 Jan 2014 18:18:39 +0100 + +gcc-4.9 (4.9-20140109-0ubuntu2) trusty; urgency=medium + + * GCC 4.9 snapshot 20140109. + + -- Matthias Klose Thu, 09 Jan 2014 19:41:48 +0100 + +gcc-4.8 (4.8.2-11) unstable; urgency=low + + * Update to SVN 20131230 (r206241) from the gcc-4_8-branch. + * Don't build x32 multilibs for wheezy backports. + * Set the goarch to arm64 for aarch64-linux-gnu. + * Fix statically linked gccgo binaries on AArch64 (Michael Hudson). + LP: #1261604. + * Merge accumulated Ada changes from gnat-4.8. + * Update gnat build dependencies when not built from a separate source. + * Default to -mieee on alpha again (Michael Cree). Closes: #733291. + * Prepare gnat package for cross builds. + + -- Matthias Klose Mon, 30 Dec 2013 08:52:29 +0100 + +gcc-4.8 (4.8.2-10) unstable; urgency=low + + * Update to SVN 20131213 (r205948) from the gcc-4_8-branch. + * Add missing commit in libjava for gcc-linaro. + + -- Matthias Klose Fri, 13 Dec 2013 01:01:47 +0100 + +gcc-4.8 (4.8.2-9) unstable; urgency=low + + * Update to SVN 20131212 (r205924) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Fix libitm symbols files for ppc64. + * Update libatomic symbol file for arm64 and ppc64. + * libgcj-dev: Drop dependencies on gcj-jre-lib and gcj-jdk. + * Fix permissions of some override files. + * Let cross compilers conflict with gcc-multilib (providing + /usr/include/asm for the non-default multilib). + * Configure --with-long-double-128 on powerpcspe (Roland Stigge). + Closes: #731941. + * Update the Linaro support to the 4.8-2013.12 release. + * Update the ibm branch to 20131212. + + [ Aurelien Jarno ] + * patches/note-gnu-stack.diff: restore and rebase lost parts. + + -- Matthias Klose Thu, 12 Dec 2013 12:34:55 +0100 + +gcc-4.8 (4.8.2-8) unstable; urgency=medium + + * Update to SVN 20131203 (r205647) from the gcc-4_8-branch. + * Fix PR libgcc/57363, taken from the trunk. + + -- Matthias Klose Wed, 04 Dec 2013 01:21:10 +0100 + +gcc-4.8 (4.8.2-7) unstable; urgency=low + + * Update to SVN 20131129 (r205535) from the gcc-4_8-branch. + * Introduce aarch64 goarch. + * libgo: Backport fix for calling a function or method that takes or returns + an empty struct via reflection. + * go frontend: Backport fix for the generated hash functions of types that + are aliases for structures containing unexported fields. + * Skip Go testcase on AArch64 which hangs on the buildds. + * Fix freetype includes in libjava/classpath. + + -- Matthias Klose Fri, 29 Nov 2013 18:19:12 +0100 + +gcc-4.8 (4.8.2-6) unstable; urgency=low + + * Update to SVN 20131128 (r205478) from the gcc-4_8-branch. + + [ Matthias Klose ] + * gcc-4.8-base: Breaks gcc-4.4-base (<< 4.4.7). Closes: #729963. + * Update the gcc-as-needed patch for mips*. Closes: #722067. + * Use dpkg-vendor information for distribution specific settings. + Closes: #697805. + * Check for the sys/auxv.h header file. + * On AArch64, make the frame grow downwards, taken from the trunk. + Enable ssp on AArch64. + * Pass -fuse-ld=gold to gccgo on targets supporting split-stack. + + [ Aurelien Jarno ] + * Update README.Debian for s390 and s390x. + + [ Thorsten Glaser ] + * m68k-ada.diff: Add gcc-4.8.0-m68k-ada-pr48835-2.patch and + gcc-4.8.0-m68k-ada-pr51483.patch by Mikael Pettersson, to + fix more CC0-specific and m68k/Ada-specific problems. + * m68k-picflag.diff: New, backport from trunk, by Andreas Schwab, + to avoid relocation errors when linking big shared objects. + * pr58369.diff: New, backport from trunk, by Jeffrey A. Law, + to fix ICE while building boost 1.54 on m68k. + * pr52306.diff: Disables -fauto-inc-dec by default on m68k to + work around ICE when building C++ code (e.g. Qt-related). + + -- Matthias Klose Thu, 28 Nov 2013 10:29:09 +0100 + +gcc-4.8 (4.8.2-5) unstable; urgency=low + + * Update to SVN 20131115 (r204839) from the gcc-4_8-branch. + * Update the Linaro support to the 4.8-2013.11 release. + * Add missing replaces in libgcj14. Closes: #729022. + + -- Matthias Klose Sat, 16 Nov 2013 20:15:09 +0100 + +gcc-4.8 (4.8.2-4) unstable; urgency=low + + * Really fix disabling the gdc tests. + + -- Matthias Klose Wed, 13 Nov 2013 00:44:35 +0100 + +gcc-4.8 (4.8.2-3) unstable; urgency=low + + * Update to SVN 20131112 (r204704) from the gcc-4_8-branch. + * Don't ship java.security in both libgcj14 and gcj-4.8-headless. + Closes: #729022. + * Disable gdc tests on architectures without libphobos port. + + -- Matthias Klose Tue, 12 Nov 2013 18:08:44 +0100 + +gcc-4.8 (4.8.2-2) unstable; urgency=low + + * Update to SVN 20131107 (r204496) from the gcc-4_8-branch. + * Build ObjC, Obj-C++ and Go for AArch64. + * Fix some gcj symlinks. Closes: #726792, #728403. + * Stop building libmudflap (removed in GCC 4.9). + + -- Matthias Klose Thu, 07 Nov 2013 01:40:15 +0100 + +gcc-4.8 (4.8.2-1) unstable; urgency=low + + * GCC 4.8.2 release. + + * Update to SVN 20131017 (r203751) from the gcc-4_8-branch. + * Update the Linaro support to the 4.8-2013.10 release. + * Fix PR c++/57850, option -fdump-translation-unit not working. + * Don't run the testsuite on aarch64. + * Fix PR target/58578, wrong-code regression on ARM. LP: #1232017. + * [ARM] Fix bug in add patterns due to commutativity modifier, + backport from trunk. LP: #1234060. + * Build libatomic on AArch64. + * Fix dependency generation for the cross gcc-4.8 package. + * Make the libstdc++ pretty printers compatible with Python3, if + gdb is built with Python3 support. + * Fix loading of libstdc++ pretty printers. Closes: #701935. + * Don't let gcc-snapshot build-depend on gnat on AArch64. + + -- Matthias Klose Thu, 17 Oct 2013 14:37:55 +0200 + +gcc-4.8 (4.8.1-10) unstable; urgency=low + + * Update to SVN 20130904 (r202243) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Don't rely on the most recent Debian release name for configuration + of the package. Addresses: #720263. Closes: #711824. + * Fix a cross build issue without DEB_* env vars set (Eleanor Chen). + Closes: #718614. + * Add packaging support for mips64(el) and mipsn32(el) including multilib + configurations (YunQiang Su). Addresses: #708143. + * Fix gcc dependencies for stage1 builds (YunQiang Su). Closes: #710240. + * Fix boehm-gc test failures with a linker defaulting to + --no-copy-dt-needed-entries. + * Fix libstdc++ and libjava test failures with a linker defaulting + to --as-needed. + * Mark the libjava/sourcelocation test as expected to fail on amd64 cpus. + * Fix some gcc and g++ test failures for a compiler with hardening + defaults enabled. + * Fix gcc-default-format-security.diff for GCC 4.8. + * Run the testsuite again on armel and armhf. + * Disable running the testsuite on mips. Fails on the buildds, preventing + migration to testing for three months. No feedback from the mips porters. + + [ Thorsten Glaser ] + * Merge several old m68k-specific patches from gcc-4.6 package: + - libffi-m68k: Rebased against gcc-4.8 and libffi 3.0.13-4. + - m68k-revert-pr45144: Needed for Ada. + - pr52714: Revert optimisation that breaks CC0 arch. + * Fix PR49847 (Mikael Pettersson). Closes: #711558. + * Use -fno-auto-inc-dec for PR52306 (Mikael Pettersson). + + -- Matthias Klose Wed, 04 Sep 2013 21:30:07 +0200 + +gcc-4.8 (4.8.1-9) unstable; urgency=low + + * Update to SVN 20130815 (r201764) from the gcc-4_8-branch. + * Enable gomp on AArch64. + * Update the Linaro support to the 4.8-2013.08 release. + + -- Matthias Klose Thu, 15 Aug 2013 10:47:38 +0200 + +gcc-4.8 (4.8.1-8) unstable; urgency=low + + * Fix PR rtl-optimization/57878, taken from the 4.8 branch. + * Fix PR target/57909 (ARM), Linaro only. + + -- Matthias Klose Mon, 22 Jul 2013 13:03:57 +0200 + +gcc-4.8 (4.8.1-7) unstable; urgency=low + + * Update to SVN 20130717 (r200995) from the gcc-4_8-branch. + - Go 1.1.1 updates. + * Define CPP_SPEC for aarch64. + * Don't include in libgcc/libgcc2.c, taken from the trunk. + Closes: #696267. + * boehm-gc: use mmap instead of brk also on kfreebsd-* (Petr Salinger). + Closes: #717024. + + -- Matthias Klose Thu, 18 Jul 2013 02:02:13 +0200 + +gcc-4.8 (4.8.1-6) unstable; urgency=low + + * Update to SVN 20130709 (r200810) from the gcc-4_8-branch. + + [ Aurelien Jarno ] + * Add 32-bit biarch packages on sparc64. + + [ Matthias Klose ] + * Fix multiarch include path for aarch64. + * Update the Linaro support to the 4.8-2013.07 release. + * Revert the proposed fix for PR target/57637 (ARM only). + * Let gfortran-4.8 provide gfortran-mod-10. Addresses #714730. + + [ Iain Buclaw ] + * Avoid compiler warnings redefining D builtin macros. + + -- Matthias Klose Tue, 09 Jul 2013 16:18:16 +0200 + +gcc-4.8 (4.8.1-5) unstable; urgency=low + + * Update to SVN 20130629 (r200565) from the gcc-4_8-branch. + + [ Aurelien Jarno ] + * Don't pass --with-mips-plt on mips/mipsel. + + [ Matthias Klose ] + * Fix documentation builds with texinfo-5.1. + * Update the ARM libsanitizer backport from the 4.8 Linaro branch. + * libphobos-4.8-dev provides libphobos-dev (Peter de Wachter). + * The gdc cross compiler doesn't depend on libphobos-4.8-dev. + * Work around libgo build failure on ia64. PR 57689. #714090. + * Apply proposed fix for PR target/57637 (ARM only). + + -- Matthias Klose Sat, 29 Jun 2013 14:59:45 +0200 + +gcc-4.8 (4.8.1-4) unstable; urgency=low + + * Update to SVN 20130619 (r200219) from the gcc-4_8-branch. + - Bump the libgo soname (change in type layout for functions that take + function arguments). + - Fix finding the liblto_plugin.so without x permissions set (see + PR driver/57651). Closes: #712704. + * Update maintainer list. + * Fall back to the binutils version of the binutils build dependency + if the binutils version used for the build cannot be determined. + * For ARM multilib builds, use libsf/libhf system directories to lookup + files for the non-default multilib (for now, only for the cross compilers). + * Split out a gcj-4.8 package, allow to build a gcj cross compiler. + * Allow to cross build gcj. + * Don't include object.di in the D cross compiler, but depend on gdc instead. + * Allow to cross build gdc. + * Pass --hash-style=gnu instead of --hash-style=both to the linker. + + -- Matthias Klose Wed, 19 Jun 2013 23:48:02 +0200 + +gcc-4.8 (4.8.1-3) unstable; urgency=low + + * Update to SVN 20130612 (r200018) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Prepare gdc for cross builds, and multiarch installation. + * Prepare gnat to build out of the gcc-4.8 source package, not + building the gnat-4.8-base package anymore. + * Don't build a gcj cross compiler by default (not yet tested). + * Disable D on s390 (doesn't terminate the D testsuite). + * Build libphobos on x32. + * Fix build with DEB_BUILD_OPTIONS="nolang=d". + * Disable D for arm64. + * Update the Linaro support to the 4.8-2013.06 release. + * Fix cross building a native compiler. + * Work around dh_shlibdeps not working on target libraries (see #698881). + * Add build dependency on kfreebsd-kernel-headers (>= 0.84) [kfreebsd-any]. + * Add handling for unwind inside signal trampoline for kfreebsd (Petr + Salinger). Closes: #712016. + * Let gcc depend on the binutils upstream version it was built with. + Addresses #710142. + * Force a build using binutils 2.23.52 in unstable. + + [ Iain Buclaw ] + * Update gdc to 20130610. + * Build libphobos on kFreeBSD. + + -- Matthias Klose Wed, 12 Jun 2013 16:47:25 +0200 + +gcc-4.8 (4.8.1-2) unstable; urgency=low + + * Update to SVN 20130604 (r199596) from the gcc-4_8-branch. + * Force arm mode for libjava on armhf. + * Fix gdc build failure on kFreeBSD and the Hurd. + + -- Matthias Klose Tue, 04 Jun 2013 17:28:06 +0200 + +gcc-4.8 (4.8.1-1) unstable; urgency=low + + * GCC 4.8.1 release. + Support for C++11 ref-qualifiers has been added to GCC 4.8.1, making G++ + the first C++ compiler to implement all the major language features of + the C++11 standard. + * Update to SVN 20130603 (r199596) from the gcc-4_8-branch. + * Build java packages from this source package. Works aroud ftp-master's + overly strict interpretation of the Built-Using attribute. + * Build D and libphobos packages from this source package. + * Disable the non-default multilib test runs for libjava and gnat. + + -- Matthias Klose Mon, 03 Jun 2013 09:28:11 +0200 + +gcc-4.8 (4.8.0-9) unstable; urgency=low + + * Update to SVN 20130529 (r199410) from the gcc-4_8-branch. + * Drop build dependency on automake, not used anymore. + * Build with binutils from unstable (the 4.8.0-8 package was accidentally + built with binutils from experimental). Closes: #710142. + * Explicity configure with --disable-lib{atomic,quadmath,sanitizer} when + not building these libraries. Closes: #710224. + + -- Matthias Klose Wed, 29 May 2013 16:59:50 +0200 + +gcc-4.8 (4.8.0-8) unstable; urgency=medium + + * Update to SVN 20130527 (r199350) from the gcc-4_8-branch (4.8.1 rc2). + - Fix PR tree-optimization/57230 (closes: #707118). + + * Remove gdc-doc.diff. + * libgo: Overwrite the setcontext_clobbers_tls check on mips*, fails + on some buildds. + * Update the Linaro support to the 4.8-2013.05 release. + * Use the %I spec when building the object file for the gcj main function. + * Fix PR c++/57211, don't warn about unused parameters of defaulted + functions. Taken from the trunk. Closes: #705066. + * Update symbols files for powerpcspe (Roland Stigge). Closes: #709383. + * Build zh_TW.UTF-8 locale to fix libstdc++ test failures. + * Keep prev-* symlinks to fix plugin.exp test failures. + + -- Matthias Klose Mon, 27 May 2013 15:43:08 +0200 + +gcc-4.8 (4.8.0-7) unstable; urgency=medium + + * Update to SVN 20130512 (r198804) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Revert the r195826 patch, backported for the 4.8 branch. + * Tighten build dependency on libmpc-dev to ensure using libmpc3. + * Re-add build dependency on locales. + * Enable multilib build for gdc. + * Add build-deps on libn32gcc1 and lib64gcc1 on mips/mipsel. + * Fix libgcc-dbg dependencies on hppa and m68k. Closes: #707745. + * Install host specific libstdc++ headers into the host include dir. + Closes: #707753. + * Enable Go for sparc64. + * Fix host specific c++ include dir on kfreebsd-amd64. Closes: #707957. + + [ Thorsten Glaser ] + * Regenerate m68k patches. Closes: #707766. + + [ Aurelien Jarno ] + * Fix libgcc1 symbols file for sparc64. + + -- Matthias Klose Sun, 12 May 2013 19:26:50 +0200 + +gcc-4.8 (4.8.0-6) unstable; urgency=low + + * Update to SVN 20130507 (r198699) from the gcc-4_8-branch. + + [ Samuel Thibault ] + * Backport r195826 to fix gdb build on hurd-i386. + + [ Matthias Klose ] + * Drop build dependency on locales for this upload. + + -- Matthias Klose Wed, 08 May 2013 01:17:15 +0200 + +gcc-4.8 (4.8.0-5) unstable; urgency=low + + * Update to SVN 20130506 (r198641) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Stop building the spu cross compilers on powerpc and ppc64. + * Merge back changes from gnat-4.8 4.8.0-1~exp2. + + [Ludovic Brenta] + * debian/patches/ada-libgnatprj.diff: do not include indepsw.o in the + library, it is used only in the gnattools. + + -- Matthias Klose Mon, 06 May 2013 21:49:44 +0200 + +gcc-4.8 (4.8.0-4) experimental; urgency=low + + * Update to SVN 20130421 (r198115) from the gcc-4_8-branch. + * Ignore the return value for dh_shlibdeps for builds on precise/ARM. + * Use target specific names for libstdc++ baseline files. LP: #1168267. + * Update gcc-d-lang.diff for GDC port. + * Don't use extended libstdc++-doc build dependencies for older releases. + * In gnatlink, pass the options and libraries after objects to the + linker to avoid link failures with --as-needed. Addresses: #680292. + * Build gcj for aarch64-linux-gnu. + * Update the Linaro support to the 4.8-2013.04 release. + * Fix gdc build on architectures not providing libphobos. + + -- Matthias Klose Mon, 22 Apr 2013 01:36:19 +0200 + +gcc-4.8 (4.8.0-3) experimental; urgency=low + + * Update to SVN 20130411 (r197813) from the gcc-4_8-branch. + + [ Iain Buclaw ] + * Port GDC to GCC 4.8.0 release. + + -- Matthias Klose Thu, 11 Apr 2013 19:18:24 +0200 + +gcc-4.8 (4.8.0-2) experimental; urgency=low + + * Update to SVN 20130328 (r197185) from the gcc-4_8-branch. + * Update NEWS files. + * Apply proposed patch for PR c++/55951. Closes: #703945. + * Configure with --disable-libatomic for hppa64. Closes: #704020. + + -- Matthias Klose Thu, 28 Mar 2013 06:10:29 +0100 + +gcc-4.8 (4.8.0-1) experimental; urgency=low + + * GCC 4.8.0 release. + * Fix build failure on powerpcspe (Roland Stigge). Closes: #703074. + + -- Matthias Klose Fri, 22 Mar 2013 07:47:12 -0700 + +gcc-4.8 (4.8-20130318-1) experimental; urgency=low + + * GCC snapshot 20130318, taken from the trunk. + - Fix the build failures on ARM. + * Install the libasan_preinit.o files. Closes: #703229. + + -- Matthias Klose Mon, 18 Mar 2013 16:18:25 -0700 + +gcc-4.8 (4.8-20130315-1) experimental; urgency=low + + * GCC snapshot 20130315, taken from the trunk. + + -- Matthias Klose Fri, 15 Mar 2013 18:51:15 -0700 + +gcc-4.8 (4.8-20130308-1) experimental; urgency=low + + * GCC snapshot 20130308, taken from the trunk. + + -- Matthias Klose Fri, 08 Mar 2013 12:08:12 +0800 + +gcc-4.8 (4.8-20130222-1) experimental; urgency=low + + * GCC snapshot 20130222, taken from the trunk. + * Update libasan symbols files. + + -- Matthias Klose Sat, 23 Feb 2013 04:47:15 +0100 + +gcc-4.8 (4.8-20130217-1) experimental; urgency=low + + * GCC snapshot 20130217, taken from the trunk. + + * Update libasan symbols files. + * On alpha, link with --no-relax. Update libgcc1 symbols files (Michael + Cree). Closes: #699220. + + -- Matthias Klose Mon, 18 Feb 2013 03:12:31 +0100 + +gcc-4.8 (4.8-20130209-1) experimental; urgency=low + + * GCC snapshot 20130209, taken from the trunk. + + [ Matthias Klose ] + * Add a Build-Using attribute for each binary package, which can be + built from the gcc-4.7-source package (patch derived from a proposal by + Ansgar Burchardt). + - Use it for cross-compiler packages. + - Not yet used when building gcj, gdc or gnat using the gcc-source package. + These packages don't require an exact version of the gcc-source package, + but just a versions which is specified by the build dependencies. + * Fix dh_shlibdeps calls for the libgo packages. + * libstdc-doc: Depend on libjs-jquery. + * Update libstdc++ symbols files. + * Downgrade the priority of the non-default multilib libasan packages. + + [ Thibaut Girka ] + * Fix dh_shlibdeps and dh_gencontrol cross-build mangling for + libgfortran-dev packages. + + -- Matthias Klose Sat, 09 Feb 2013 17:00:06 +0100 + +gcc-4.8 (4.8-20130127-1) experimental; urgency=low + + * GCC snapshot 20130127, taken from the trunk. + + [ Matthias Klose ] + * Fix MULTILIB_OS_DIRNAME for the default multilib on x32. + + [ Thibaut Girka ] + * Fix installation path for libatomic and libsanitizer when building a + cross-compiler with with_deps_on_target_arch_pkgs. + * Fix regexp used to list patched autotools files. + + -- Matthias Klose Sun, 27 Jan 2013 21:02:34 +0100 + +gcc-4.8 (4.8-20130113-1) experimental; urgency=low + + * GCC snapshot 20130113, taken from the trunk. + * Always configure --with-system-zlib. + * Search library dependencies in the build-sysroot too. + * Don't complain about missing .substvars files when trying to mangle + these files. + * Add ARM multilib packages to the control file for staged cross builds. + * Fix ARM multilib shlibs dependency generation for cross builds. + * Don't call dh_shlibdeps for staged cross builds. These packages + are never shipped, and the information is irrelevant. + * Build the libasan and libtsan packages before libstdc++. + * Bump build dependencies on isl and cloog. + * Don't ship libiberty.a in gcc-4.8-hppa64. Closes: #659556. + + -- Matthias Klose Sun, 13 Jan 2013 16:42:33 +0100 + +gcc-4.8 (4.8-20130105-1) experimental; urgency=low + + * GCC snapshot 20130105, taken from the trunk. + * Keep the debug link for libstdc++6. Closes: #696854. + * Update libgfortran symbols file for the trunk. + * Fix libstdc++ symbols files for sparc 128bit symbols. + * Update libgcc and libstdc++ symbols files for s390. + * Keep the rt.jar symlink in the gcj-jre-headless package. + * Explicitly search multiarch and multilib system directories when + calling dh_shlibdeps. + * Let gjdoc accept -source 1.5|1.6|1.7. Addresses: #678945. + * Fix build configured with --enable-java-maintainer-mode. + * Don't ship .md5 files in the libstdc++-doc package. + + -- Matthias Klose Sat, 05 Jan 2013 13:47:51 +0100 + +gcc-4.8 (4.8-20130102-1) experimental; urgency=low + + * GCC snapshot 20130102, taken from the trunk. + + [ Matthias Klose ] + * Resolve libgo dependencies with the built runtime libraries. + * Fix g++-4.8-multilib dependencies. + + [ Thibaut Girka ] + * Prepare for optional dependencies on the packages built on the + target architecture. + * When using the above, + - use the same settings for gcc_lib_dir, sysroot, header and C++ header + locations as for the native build. + - install libraries into the multiarch directories. + - use cpp-4.x- instead of gcc-4.x-base to collect doc files. + + -- Matthias Klose Wed, 02 Jan 2013 14:51:59 +0100 + +gcc-4.8 (4.8-20121218-1) experimental; urgency=low + + * GCC snapshot 20121217, taken from the trunk. + * Fix dependency generation for asan and atomic multilibs. + * Fix libobjc-dbg dependencies on libgcc-dbg packages. + * Fix MULTIARCH_DIRNAME definition for powerpcspe (Roland Stigge). + Closes: #695661. + * Move .jar symlinks from the -jre-lib into the -jre-headless package. + + -- Matthias Klose Tue, 18 Dec 2012 16:44:42 +0100 + +gcc-4.8 (4.8-20121217-1) experimental; urgency=low + + * GCC snapshot 20121217, taken from the trunk. + * Fix package builds with the common libraries provided by a newer + gcc-X.Y package. + * Drop build-dependency on libelf. + * Drop the g++-multilib build dependency, use the built compiler to + check which multilib variants can be run. Provide an asm symlink for + the build. + * Stop configuring cross compilers --with-headers --with-libs. + * Always call dh_shlibdeps with -l, pointing to the correct dependency + packages. + * Fix cross build stage1 package installation, only including the target + files in the gcc package. + * Explicitly configure with --enable-multiarch when doing builds + supporting the multiarch layout. + * Only configure --with-sysroot, --with-build-sysroot when values are set. + * Revert: For stage1 builds, include gcc_lib_dir files in the gcc package. + * Allow multilib enabled stage1 and stage2 cross builds. + * Don't check glibc version to configure --with-long-double-128. + * Don't auto-detect multilib osdirnames. + * Don't set a LD_LIBRARY_PATH when calling dh_shlibdeps in cross builds. + * Allow building a gcj cross compiler. + * Pretend that wheezy has x32 support (sid is now known as wheezy :-/). + + -- Matthias Klose Mon, 17 Dec 2012 18:37:14 +0100 + +gcc-4.8 (4.8-20121211-1) experimental; urgency=low + + * GCC snapshot 20121211, taken from the trunk. + * Fix build failure on multilib configurations. + + -- Matthias Klose Tue, 11 Dec 2012 08:04:30 +0100 + +gcc-4.8 (4.8-20121210-1) experimental; urgency=low + + * GCC snapshot 20121210, taken from the trunk. + * For cross builds, don't use the multiarch location for the C++ headers. + * For cross builds, fix multilib inter package dependencies. + * For cross builds, fix libc6 dependencies for non-default multilib packages. + * Build libasan packages on powerpc, ppc64. + * Only run the libgo testsuite for flags configured in RUNTESTFLAGS. + * Remove the cross-includes patch, not needed anymore with --with-sysroot=/. + * For cross builds, install into /usr/lib/gcc-cross to avoid file conflicts + with the native compiler for the target architecture. + * For cross builds, don't add /usr/local/include to the standard include + path, however /usr/local/include/ is still on the path. + * For cross builds, provide symbols files based on the symbols files for + the native build. Not picked up by dh_makeshlibs yet. + * Drop the g++-multilib build dependency, use the built compiler to + check which multilib variants can be run. + * Fix spu cross build on powerpc/ppc64. + * Make libgcj packages Multi-Arch: same, append the Debian architecture + name to the gcj java home. + * Don't encode versioned build dependencies on binutils and dpkg-dev in + the control file (makes the package cross-buildable). + * Only include gengtype for native builds. Needs upstream changes. + See #645018. + * Fix cross build failure with --enable-libstdcxx-debug. + * Only install libbacktrace if it is built. + * When cross building the native compiler, configure --with-sysroot=/ + and without --without-isl. + + -- Matthias Klose Mon, 10 Dec 2012 14:40:14 +0100 + +gcc-4.8 (4.8-20121128-1) experimental; urgency=low + + [ Matthias Klose ] + * Update patches for GCC 4.8. + * Update debian/copyright for libatomic, libbacktrace, libsanitizer. + * Remove the soversion from the libstdc++*-dev packages. + * Build libatomic and libasan packages. + * Install the static libbacktrace library and header files. + * Update build-indep dependencies for building the libstdc++ docs. + * Fix build failure in libatomic with x32 multilibs, handle -mx32 like -m64. + * Apply proposed fix for PR fortran/55395, supposed to fix the build + failure on armhf and powerpc. + * For hardened builds, disable gcc-default-format-security for now, causing + build failure building the target libstdc++ library. + * Drop the gcc-no-add-needed patch, depend on binutils 2.22 instead. + * Fix gnat build failure on kfreebsd. + * Rename the gccgo info to gccgo-4.8 on installation. + * Install the libitm documentation (if built). + * Rename the gccgo info to gccgo-4.8 on installation, install into gccgo-4.8. + * Include libquadmath documentation in the gcc-4.8-doc package. + * Build libtsan packages. + * Add weak __aeabi symbols to the libgcc1 ARM symbol files. Closes: #677139. + * For stage1 builds, include gcc_lib_dir files in the gcc package. + * Point to gcc's README.Bugs when building gcj packages. Addresses: #623987. + + [ Thibaut Girka ] + * Fix libstdc++ multiarch include path for cross builds. + + -- Matthias Klose Sun, 28 Nov 2012 12:55:27 +0100 + +gcc-4.7 (4.7.2-12) experimental; urgency=low + + * Update to SVN 20121127 (r193840) from the gcc-4_7-branch. + - Fix PR middle-end/55331 (ice on valid), PR tree-optimization/54976 (ice + on valid), PR tree-optimization/54894 (ice on valid), + PR middle-end/54735 (ice on valid), PR c++/55446 (wrong code), + PR fortran/55314 (rejects valid). + + [ Matthias Klose ] + * Fix x32 multiarch name (x86_64-linux-gnux32). + * gcc-4.7-base: Add break to gcc-4.4-base (<< 4.4.7). Closes: #690172. + * Add weak __aeabi symbols to the libgcc1 ARM symbol files. Closes: #677139. + * For stage1 builds, include gcc_lib_dir files in the gcc package. + + [ Thibaut Girka ] + * Fix libstdc++ multiarch include path for cross builds. + + -- Matthias Klose Tue, 27 Nov 2012 11:02:10 +0100 + +gcc-4.7 (4.7.2-11) experimental; urgency=low + + * Update to SVN 20121124 (r193776) from the gcc-4_7-branch. + - Fix PR libgomp/55411, PR libstdc++/55413, PR middle-end/55142, + PR fortran/55352. + + * Update build-indep dependencies for building the libstdc++ docs. + * Drop the gcc-no-add-needed patch, depend on binutils 2.22 instead. + * Pass --hash-style=gnu instead of --hash-style=both. + * Link using --hash-style=gnu on arm64 by default. + * Split multiarch patches into local and upstreamed parts. + * Fix PR54974: Thumb literal pools don't handle PC rounding (Matthew + Gretton-Dann). LP: #1049614, #1065509. + * Rename the gccgo info to gccgo-4.7 on installation, install into gccgo-4.7. + * Include libquadmath documentation in the gcc-4.7-doc package. + * Don't pretend to understand .d files, no D frontend available for 4.7. + * Fix the multiarch c++ include path for multilib'd targets. LP: #1082344. + * Make explicit --{en,dis}able-multiarch options effecitive (Thorsten Glaser). + + -- Matthias Klose Sat, 24 Nov 2012 03:57:00 +0100 + +gcc-4.7 (4.7.2-10) experimental; urgency=low + + * Update to SVN 20121118 (r193598) from the gcc-4_7-branch. + - Fix PR target/54892 (ARM, LP: #1065122), PR rtl-optimization/54870, + PR rtl-optimization/53701, PR target/53975 (ia64), + PR tree-optimization/54902 (LP: #1065559), PR middle-end/54945, + PR target/55019 (ARM), PR c++/54984, PR target/55175, + PR tree-optimization/53708, PR tree-optimization/54985, + PR libstdc++/55169, PR libstdc++/55047, PR libstdc++/55123, + PR libstdc++/54075, PR libstdc++/28811, PR libstdc++/54482, + PR libstdc++/55028, PR libstdc++/55215, PR middle-end/55219, + PR tree-optimization/54986, PR target/55204, PR debug/54828, + PR tree-optimization/54877, PR c++/54988, PR other/52438, + PR fortran/54917, PR libstdc++/55320, PR libstdc++/53841. + + [ Matthias Klose ] + * Update the Linaro support to the 4.7-2012.11 release. + * Define MULTIARCH_DIRNAME for arm64 (Wookey). + * Let the lib*objc-dev packages depend on the lib*gcc-dev packages. + * Let the libstdc++-dev package depend on the libgcc-dev package. + * Drop the dependency of the libstdc++-dev package on g++, make + libstdc++-dev and libstdc++-pic Multi-Arch: same. Closes: #678623. + * Install override files before calling dh_fixperms. + * Backport the libffi arm64 port. + * Build libx32gcc-dev, libx32objc-dev and libx32gfortran-dev packages. + * Allow conditional building of the x32 multilibs. + * Fix libmudflap build failure for x32 multilibs. + * Fix dependency on glibc for triarch builds. + * Add build-{arch,indep} targets. + * Fix libquadmath x32 multilib builds on kernels which don't support x32. + * Fix location of x32 specific C++ header files. + * Turn on -D_FORTIFY_SOURCE=2 by default for C, C++, ObjC, ObjC++, + only if the optimization level is > 0. + * Keep the host alias when building multilib libraries which need to + be cross-built on some architectures/buildds. + * Update arm64 from the aarch64 branch 20121105. + * Fix PR other/54411, libiberty: objalloc_alloc integer overflows + (CVE-2012-3509). + * Use /usr/include//c++/4.x as the include directory + for host dependent c++ header files. + * Add alternative libelf-dev build dependency. Closes: #690952. + * Always build the aarch64-linux-gnu target from the Linaro branch. + * Add __gnu_* symbols to the libgcc1 symbols file for armel and armhf. + * For powerpcspe prevent floating point register handling when there + are none available (Roland Stigge). Closes: #693328. + * Don't apply hurd-pthread.diff for trunk builds, integrated + upstream (Samuel Thibault). Addresses: #692538. + * Again, suggest graphite runtime dependencies. + * Clean up libstdc++ man pages. Closes: #692445. + + [ Thibaut Girka ] + * Split out lib*gcc-dev packages. + * Split out lib*objc-dev packages. + * Split out lib*gfortran-dev packages. + + [ Daniel Schepler ] + * Add support for x32. Closes: #667005. + * New patch hjl-x32-gcc-4_7-branch.diff to incorporate changes from + that branch, including --with-abi=mx32 option. + * Split out lib*stdc++-dev packages. + + [ Marcin Juszkiewicz ] + * lib*-dev packages for cross builds are not Multi-Arch: same. LP: #1070694. + * Remove conflicts for armhf/armel cross packages. + + -- Matthias Klose Sun, 18 Nov 2012 17:54:15 +0100 + +gcc-4.7 (4.7.2-4) unstable; urgency=low + + * Fix PR c++/54858 (ice on valid), taken from the branch. + * Build again Go on armel and armhf. + + -- Matthias Klose Tue, 09 Oct 2012 12:00:59 +0200 + +gcc-4.7 (4.7.2-3) unstable; urgency=low + + * Revert the fix PR c/33763, and just disable the sorry message, + taken from the branch. Closes: #678589. LP: #1062343. + * Update libgo to 1.0.3. + * Go fixes: + - Fix a, b, c := b, a, 1 when a and b already exist. + - Fix some type reflection strings. + - Fix parse of (<- chan <- chan <- int)(x). + - Fix handling of omitted expression in switch. + - Better error for switch on non-comparable type. + * Fix PR debug/53135 (ice on valid), PR target/54703 (x86, wrong code), + PR c++/54777 (c++11, rejects valid), taken from the 4.7 branch. + * gcc-4.7-base: ensure smooth upgrades from squeeze by adding + Breaks: gcj-4.4-base (<< 4.4.6-9~), gnat-4.4-base (<< 4.4.6-3~) + as in gcc-4.4-base (multiarch patches re-worked in 4.6.1-8/4.4.6-9). + Fixes some squeeze->wheezy upgrade paths where apt chooses to hold back + gcc-4.4-base and keep gcj-4.4-base installed instead of upgrading + gcc-4.4-base and removing the obsolete gcj-4.4-base (Andreas Beckmann). + Closes: #677582. + * Add arm64 support, partly based on Wookey's patches (only applied for + arm64). Disabled for arm64 are ssp, gomp, mudflap, boehm-gc, Ada, ObjC, + Obj-C++ and Java). + + -- Matthias Klose Fri, 05 Oct 2012 20:00:30 +0200 + +gcc-4.7 (4.7.2-2) unstable; urgency=low + + * Fix PR tree-optimization/54563 (ice on valid), PR target/54564 (fma builtin + fix), PR c/54552 (ice on valid), PR lto/54312 (memory hog), PR c/54103 (ice + on valid), PR middle-end/54638 (memory corruption), taken from the 4.7 + branch. + * Go fixes, taken from the 4.7 branch. + * On ARM, don't warn anymore that 4.4 has changed the `va_list' mangling, + taken from the trunk. + * Mention the NEWS changes for all uploads. Closes: #688278. + + -- Matthias Klose Fri, 21 Sep 2012 11:58:10 +0200 + +gcc-4.7 (4.7.2-1) unstable; urgency=low + + * GCC 4.7.2 release. + * Issues addressed after the release candidate: + - PR c++/53661 (wrong warning), LTO backport from trunk, documentation fix. + * Update NEWS files. + + -- Matthias Klose Thu, 20 Sep 2012 12:19:07 +0200 + +gcc-4.7 (4.7.1-9) unstable; urgency=low + + * GCC 4.7.2 release candidate 1. + * Update to SVN 20120914 (r191306) from the gcc-4_7-branch. + - Fix PR libstdc++/54388, PR libstdc++/54172, PR libstdc++/54172, + PR debug/54534, PR target/54536 (AVR), PR middle-end/54515 (ice on valid), + PR c++/54506 (rejects valid), PR c++/54341 (ice on valid), + PR c++/54253 (ice on valid), PR c/54559 (closes: #687496), + PR gcov-profile/54487, PR c++/53839, PR c++/54511, PR c++/53836, + PR fortran/54556. + * Update the Linaro support to the 4.7-2012.09 release. + - Adds support for the NEON vext instruction when shuffling. + - Backports improvements to scheduling transfers between VFP and core + registers. + - Backports support for the UBFX instruction on certain bit extract idioms. + + -- Matthias Klose Fri, 14 Sep 2012 19:12:47 +0200 + +gcc-4.7 (4.7.1-8) unstable; urgency=low + + * Update to SVN 20120908 (r191092) from the gcc-4_7-branch. + - Fix PR libstdc++/54376, PR libstdc++/54297, PR libstdc++/54351, + PR libstdc++/54297, PR target/54461 (AVR), PR target/54476 (AVR), + PR target/54220 (AVR), PR fortran/54208 (rejects valid), + PR middle-end/53667 (wrong code), PR target/54252 (ARM, wrong code), + PR rtl-optimization/54455 (ice on valid), PR driver/54335 (docs), + PR tree-optimization/54498 (wrong code), PR target/45070 (wrong code), + PR tree-optimization/54494 (wrong code), PR target/54436 (x86), + PR c/54428 (ice on valid), PR c/54363 (ice on valid, closes: #684635), + PR rtl-optimization/54369 (mips, sparc, wrong code), PR middle-end/54146, + PR target/46254 (ice on valid), PR rtl-optimization/54088 (ice on valid), + PR target/54212 (ARM, wrong code), PR c++/54197 (wrong code), + PR lto/53572, PR tree-optimization/53922 (wrong code). + - Go fixes. + + [ Nobuhiro Iwamatsu ] + * Remove sh4-enable-ieee.diff, -mieee enabled by default. Closes: #685975. + + [ Matthias Klose ] + * Fix PR c++/54341, PR c++/54253, taken from the trunk. Closes: #685430. + * Update libitm package description. Closes: #686802. + + -- Matthias Klose Fri, 07 Sep 2012 22:16:55 +0200 + +gcc-4.7 (4.7.1-7) unstable; urgency=low + + * Update to SVN 20120814 (r190380) from the gcc-4_7-branch. + - Fix PR libstdc++/54036, PR target/53961 (x86), PR libstdc++/54185, + PR rtl-optimization/53942, PR rtl-optimization/54157. + + [ Thibaut Girka ] + * Fix cross compilers for 64bit architectures when using + DEB_CROSS_NO_BIARCH. + * Fix glibc dependency for multiarch enabled builds for architectures + with a different libc-dev package name. + + [ Aurelien Jarno ] + * powerpc64: Fix non-multilib builds. + + [ Matthias Klose ] + * Fix syntax error generating the control file for cross builds. + Closes: #682104. + * spu build: Move static libraries to version specific directories. + Closes: #680022. + * Don't run the libstdc++ tests on mipsel, times out on the buildds. + * Update the Linaro support to the 4.7-2012.08 release. + + -- Matthias Klose Tue, 14 Aug 2012 13:58:03 +0200 + +gcc-4.7 (4.7.1-6) unstable; urgency=low + + * Update to SVN 20120731 (r190015) from the gcc-4_7-branch. + - Fix PR libstdc++/54075, PR libstdc++/53270, PR libstdc++/53978, + PR target/33135 (SH), PR target/53877 (x86), PR rtl-optimization/52250, + PR middle-end/54017, PR target/54029, PR target/53961 (x86), + PR target/53110 (x86), PR rtl-optimization/53908, PR c++/54038, + PR c++/54026, PR c++/53995, PR c++/53989, PR c++/53549 (closes: #680931), + PR c++/53953. + + -- Matthias Klose Tue, 31 Jul 2012 20:00:56 +0200 + +gcc-4.7 (4.7.1-5) unstable; urgency=high + + * Update to SVN 20120713 (r189464) from the gcc-4_7-branch. + - Fix PR libstdc++/53657, PR c++/53733 (DR 1402), PR target/53811, + PR target/53853. + + -- Matthias Klose Fri, 13 Jul 2012 16:59:59 +0200 + +gcc-4.7 (4.7.1-4) unstable; urgency=medium + + * Update to SVN 20120709 (r189388) from the gcc-4_7-branch. + - Fix PR libstdc++/53872, PR libstdc++/53830, PR bootstrap/52947, + PR middle-end/52786, PR middle-end/50708, PR tree-optimization/53693, + PR middle-end/52621, PR middle-end/53433, PR fortran/53732, + PR libstdc++/53578, PR c++/53882 (closes: #680521), PR c++/53826. + * Update the Linaro support to the 4.7-2012.07 release. + * Fix build on pre-multiarch releases (based on a patch from Chip Salzenberg). + Closes: #680590. + + -- Matthias Klose Mon, 09 Jul 2012 18:58:47 +0200 + +gcc-4.7 (4.7.1-3) unstable; urgency=low + + * Update to SVN 20120703 (r189219) from the gcc-4_7-branch. + - Fix PR preprocessor/37215, PR middle-end/38474, PR target/53595 (AVR), + PR middle-end/53790, PR debug/53682, PR target/53759 (x86), + PR c++/53816, PR c++/53821, PR c++/51214, PR c++/53498, PR c++/53305, + PR c++/52988 (wrong code), PR c++/53202 (wrong code), PR c++/53594. + - The change for PR libstdc++/49561 was reverted. The std::list size is + now the same again in c++98 and c++11 mode. + * Revert the local std::list work around. + * Build using isl instead of ppl for snapshot builds. + + -- Matthias Klose Tue, 03 Jul 2012 15:07:14 +0200 + +gcc-4.7 (4.7.1-2) unstable; urgency=medium + + * Update to SVN 20120623 (r188906) from the gcc-4_7-branch. + - Fix PR rtl-optimization/53700 (closes: #677678), PR target/52908, + PR libstdc++/53270, PR libstdc++/53678, PR gcov-profile/53744, + PR c++/52637, PR middle-end/53470, PR c++/53651, PR c++/53137, + PR c++/53599, PR fortran/53691, PR fortran/53685, PR ada/53592. + * Update NEWS files for 4.7.1. + * Bump gcc/FULL-VERSION to 4.7.1. + * Update the Linaro support to the 4.7-2012.06 release. + * Restore std::list ABI compatibility in c++11 mode. The upstream behaviour + can be enabled defining __CXX0X_STD_LIST_ABI_INCOMPAT__. This work around + will be replaced with an upstream solution. + * Fix PR debug/53682, taken from the trunk. Closes: #677606. + * Use $(with_gccbase) and $(with_gccxbase) to determine whether to enable it + in the control file (Thibaut Girka). + * When building a cross-compiler, runtime libraries for the target + architecture may be cross-built. Tell debhelper/dpkg-dev those packages + are indeed for a foreign architecture (Thibaut Girka). + + -- Matthias Klose Sat, 23 Jun 2012 11:58:35 +0200 + +gcc-4.7 (4.7.1-1) unstable; urgency=low + + * GCC 4.7.1 release. + + -- Matthias Klose Fri, 15 Jun 2012 00:38:27 +0200 + +gcc-4.7 (4.7.0-13) unstable; urgency=low + + * Update to SVN 20120612 (r188457) from the gcc-4_7-branch. + - Fix PR c++/53602 (LP: #1007616). + + * Document the changed ssp-buffer-size default in Ubuntu 10.10 and + later (Kees Cook). LP: #990141. + * Fix PR c++/26155, ICE after error with namespace alias. LP: #321883. + * Fix PR c++/53599 (reverting the fix for PR c++/53137). + Closes: #676729. LP: #1010896. + * Fix manual page names for cross builds (Thibaut Girka). Closes: #675516. + * Remove dpkg-cross build dependency for cross builds (Thibaut Girka). + Closes: #675511. + + -- Matthias Klose Tue, 12 Jun 2012 15:47:57 +0200 + +gcc-4.7 (4.7.0-12) unstable; urgency=low + + * Update to SVN 20120606 (r188261) from the gcc-4_7-branch (release + candidate 1 or 4.7.1). + - Fix PR libstdc++/52007, PR c++/53524, PR target/53559, + PR middle-end/47530, PR middle-end/53471, PR middle-end/52979, + PR target/46261, PR tree-optimization/53550, PR middle-end/52080, + PR middle-end/52097, PR middle-end/48124, PR middle-end/53501, + PR target/52667, PR target/52642, PR middle-end/48493, PR c++/53524, + PR c++/52973, PR c++/52725, PR c++/53137, PR c++/53484, PR c++/53500, + PR c++/52905, PR fortran/53521. + - Go and libgo updates. + * Include README.Debian in README.Debian.. + * Fix PR c/33763, proposed patch from the issue. Closes: #672411. + * Fix build failure in libgo with hardening defaults. + + -- Matthias Klose Wed, 06 Jun 2012 13:22:27 +0200 + +gcc-4.7 (4.7.0-11) unstable; urgency=low + + * Update to SVN 20120530 (r188035) from the gcc-4_7-branch. + - Fix PR c++/53356, PR c++/53491, PR c++/53503, PR c++/53220, + PR middle-end/53501, PR rtl-optimization/53519, + PR tree-optimization/53516, PR tree-optimization/53438, + PR target/52999, PR middle-end/53008. + + [ Matthias Klose ] + * Build-depend on netbase when building Go. Closes: #674306. + + [ Marcin Juszkiewicz ] + * Use the multiarch default for staged builds. + + -- Matthias Klose Thu, 31 May 2012 08:25:08 +0800 + +gcc-4.7 (4.7.0-10) unstable; urgency=low + + * Update to SVN 20120528 (r187927) from the gcc-4_7-branch. + - Fix PR rtl-optimization/52528, PR lto/52178, PR target/53435, + PR ada/52362, PR target/53385, PR middle-end/53460, + PR tree-optimization/53465, PR target/53448, PR tree-optimization/53408, + PR ada/52362, PR fortran/53389. + * Fix warning building libiberty/md5.c. PR other/53285. Closes: #674830. + + -- Matthias Klose Mon, 28 May 2012 11:30:36 +0800 + +gcc-4.7 (4.7.0-9) unstable; urgency=low + + * Update to SVN 20120522 (r187756) from the gcc-4_7-branch. + - Fix PR bootstrap/53183, PR tree-optimization/53436, + PR tree-optimization/53366, PR tree-optimization/53409, + PR tree-optimization/53410, PR c/53418, PR target/53416, + PR middle-end/52584, PR debug/52727, PR tree-optimization/53364, + PR target/53358, PR rtl-optimization/52804, PR target/46098, + PR target/53256, PR c++/53209, PR c++/53301, PR ada/52494, + PR fortran/53310 + * Update the Linaro support to the 4.7-2012.05 release. + + -- Matthias Klose Tue, 22 May 2012 13:01:33 +0800 + +gcc-4.7 (4.7.0-8) unstable; urgency=low + + * Update to SVN 20120509 (r187339) from the gcc-4_7-branch. + - Fix PR libstdc++/53193, PR target/53272, PR tree-optimization/53239, + PR tree-optimization/53195, PR target/52999, PR target/53228, + PR tree-optimization/52633, PR tree-optimization/52870, PR target/48496, + PR target/53199, PR target/52684, PR lto/52605, PR plugins/53126, + PR debug/53174, PR target/53187, PR tree-optimization/53144, + PR c++/53186, PR fortran/53255, PR fortran/53111, PR fortran/52864. + - Fix plugin check in gcc-{ar,nm,ranlib}-4.7. + * Install man pages for gcc-{ar,nm,ranlib}-4.7. + + -- Matthias Klose Mon, 07 May 2012 21:56:42 +0200 + +gcc-4.7 (4.7.0-7) unstable; urgency=low + + * Update to SVN 20120502 (r187039) from the gcc-4_7-branch. + - Fix PR libstdc++/53115, PR tree-optimization/53163, + PR rtl-optimization/53160, PR middle-end/53136, PR fortran/53148. + - libgo fix for mips. + * Fix setting MULTILIB_DEFAULTS for ARM multilib builds. + * Build Go on mips. + * Revert: Don't build multilib gnat on armel and armhf. + * Fix multiarch patch for alpha (Michael Cree). Closes: #670571. + * Fix Go multilib packaging issue for mips and mipsel. + + -- Matthias Klose Wed, 02 May 2012 12:42:01 +0200 + +gcc-4.7 (4.7.0-6) unstable; urgency=low + + * Update to SVN 20120430 (r186964) from the gcc-4_7-branch. + - Fix PR target/53138. + * Build Go on ARM. + * Treat wheezy the same as sid in more places (Peter Green). + Addresses: #670821. + + -- Matthias Klose Mon, 30 Apr 2012 13:06:21 +0200 + +gcc-4.7 (4.7.0-5) unstable; urgency=medium + + * Update to SVN 20120428 (r186932) from the gcc-4_7-branch. + - Fix PR c/52880, PR target/53065, PR tree-optimization/53085, + PR c/51527, PR target/53120. + + [ Matthias Klose ] + * Don't build multilib gnat on armel and armhf. + * Don't try to run the libstdc++ testsuite if the C++ frontend isn't built. + * Install the unwind-arm-common.h header file. + * Fix ARM biarch package builds. + + [ Aurelien Jarno ] + * Reenable parallel builds on GNU/kFreeBSD. + * Fix libgcc building on MIPS N32/64. Closes: #669858. + * Add libn32gcc1 and lib64gcc1 symbols files on mips and mipsel. + + -- Matthias Klose Sat, 28 Apr 2012 11:59:36 +0200 + +gcc-4.7 (4.7.0-4) unstable; urgency=low + + * Update to SVN 20120424 (r186746) from the gcc-4_7-branch. + - Fix PR libstdc++/52924, PR libstdc++/52591, PR middle-end/52894, + PR testsuite/53046, PR libstdc++/53067, PR libstdc++/53027, + PR libstdc++/52839, PR bootstrap/52840, PR libstdc++/52689, + PR libstdc++/52699, PR libstdc++/52822, PR libstdc++/52942, + PR middle-end/53084, PR middle-end/52999, PR c/53060, + PR tree-optimizations/52891, PR target/53033, PR target/53020, + PR target/52932, PR middle-end/52939, PR tree-optimization/52969, + PR c/52862, PR target/52775, PR tree-optimization/52943, PR c++/53003, + PR c++/38543, PR c++/50830, PR c++/50303, PR c++/52292, PR c++/52380, + PR c++/52465, PR c++/52824, PR c++/52906. + + [ Matthias Klose ] + * Update the Linaro support to the 4.7-2012.04 release. + * Set the ARM hard-float linker path according to the consensus: + http://lists.linaro.org/pipermail/cross-distro/2012-April/000261.html + * Reenable the spu build on ppc64. Closes: #668272. + * Update and reenable the gcc-cloog-dl patch. + + [ Samuel Thibault ] + * ada-s-osinte-gnu.adb.diff, ada-s-osinte-gnu.ads.diff, + ada-s-taprop-gnu.adb.diff, gcc_ada_gcc-interface_Makefile.in.diff: + Add ada support for GNU/Hurd, thanks Svante Signell for the patches + and bootstrap! (Closes: #668426). + + -- Matthias Klose Tue, 24 Apr 2012 08:44:15 +0200 + +gcc-4.7 (4.7.0-3) unstable; urgency=low + + * Update to SVN 20120409 (r186249) from the gcc-4_7-branch. + - Fix PR libitm/52854, PR libstdc++/52476, PR target/52717, + PR tree-optimization/52406, PR c++/52596, PR c++/52796, + PR fortran/52893, PR fortran/52668. + + [ Matthias Klose ] + * Re-add missing dependency on libgcc in gcc-multilib. Closes: #667519. + * Add support for GNU locales for GNU/Hurd (Svante Signell). + Closes: #667662. + * Reenable the spu build on ppc64. Closes: #664617. + * Apply proposed patch for PR52894, stage1 bootstrap failure on hppa + (John David Anglin). Closes: #667969. + + [ Nobuhiro Iwamatsu ] + * Fix cross build targeting sh4. Closes: #663028. + * Enable -mieee by default on sh4. Closes: #665328. + + -- Matthias Klose Mon, 09 Apr 2012 22:24:14 +0200 + +gcc-4.7 (4.7.0-2) unstable; urgency=low + + * Update to SVN 20120403 (r186107) from the gcc-4_7-branch. + - Fix PR middle-end/52547, PR libstdc++/52540, PR libstdc++/52433, + PR target/52507, PR target/52505, PR target/52461, PR target/52508, + PR c/52682, PR target/52610, PR middle-end/52640, PR target/50310, + PR target/48596, PR target/48806, PR middle-end/52547, R target/52496, + PR rtl-optimization/52543, PR target/52461, PR target/52488, + PR target/52499, PR target/52148, PR target/52496, PR target/52484, + PR target/52506, PR target/52505, PR target/52461, PR other/52545, + PR c/52577, PR c++/52487, PR c++/52671, PR c++/52582, PR c++/52521, + PR fortran/52452, PR target/52737, PR target/52698, PR middle-end/52693, + PR middle-end/52691, PR middle-end/52750, PR target/52692, + PR middle-end/51893, PR target/52737, PR target/52736, PR middle-end/52720, + PR c++/52672, PR c++/52718, PR c++/52685, PR c++/52759, PR c++/52743, + PR c++/52746, PR libstdc++/52799, PR libgfortran/52758, + PR middle-end/52580, PR middle-end/52493, PR tree-optimization/52678, + PR tree-optimization/52701, PR tree-optimization/52754, + PR tree-optimization/52835. + + [ Matthias Klose ] + * Update NEWS files for 4.7. + * Include -print-multiarch option in gcc --help output. Closes: #656998. + * Don't build Go on MIPS. + * Update alpha-ieee.diff for 4.7. + * Update gcc-multiarch.diff for sh4 (untested). Closes: #665935. + * Update gcc-multiarch.diff for hppa (untested). Closes: #666162. + * Re-add build dependency on doxygen. + + [ Samuel Thibault ] + * debian/patches/ada-bug564232.diff: Enable on hurd too. + * debian/patches/ada-libgnatprj.diff: Add hurd configuration. + + -- Matthias Klose Tue, 03 Apr 2012 16:30:58 +0200 + +gcc-4.7 (4.7.0-1) unstable; urgency=low + + * GCC 4.7.0 release. + + -- Matthias Klose Fri, 23 Mar 2012 05:44:37 +0100 + +gcc-4.7 (4.7.0~rc2-1) experimental; urgency=low + + * GCC-4.7 release candidate 2 (r185376). + * libgo: Work around parse error of struct timex_ on ARM. + * Update libstdc++6 symbols files. + * Allow building Go from a separate source package. + * Don't configure with --enable-gnu-unique-object on kfreebsd and hurd. + * Include -print-multiarch option in gcc --help output. Closes: #656998. + * Disable Go on mips* (PR go/52586). + + -- Matthias Klose Wed, 14 Mar 2012 15:49:39 +0100 + +gcc-4.7 (4.7.0~rc1-2) experimental; urgency=low + + * Update to SVN 20120310 (r185183) from the gcc-4_6-branch. + * Always configure with --enable-gnu-unique-object. LP: #949805. + * Enable Go for ARM on releases with working getcontext/setcontext. + + -- Matthias Klose Sat, 10 Mar 2012 23:29:45 +0100 + +gcc-4.7 (4.7.0~rc1-1) experimental; urgency=low + + * GCC-4.7 release candidate 1 (r184777). + + [ Marcin Juszkiewicz ] + * Fix ARM sf/hf multilib dpkg-shlibdeps dependency generation. + + [ Matthias Klose ] + * PR go/52218, don't build Go on ARM, getcontext/setcontext exists, + but return ENOSYS. + * Fix multiarch build on ia64. + * Fix path calculation for the libstdc++ -gdb.py file when installed into + multiarch locations. Closes: #661385. LP: #908163. + * Disable Go on sparc (libgo getcontext/setcontext check failing). + + [ Thorsten Glaser ] + * Apply patch from Alan Hourihane to fix err_bad_abi testcase on m68k. + + [ Jonathan Nieder ] + * libstdc++6: Depends on libc (>= 2.11) for STB_GNU_UNIQUE support + (Eugene V. Lyubimkin). Closes: #584572. + * libstdc++6, libobjc2, libgfortran3, libmudflap0, libgomp1: Breaks + pre-multiarch gcc. Closes: #651550. + * libstdc++6: Lower priority from required to important. Closes: #661118. + + [Samuel Thibault] + * Remove local patch, integrated upstream. Closes: ##661859. + + -- Matthias Klose Fri, 02 Mar 2012 18:42:56 +0100 + +gcc-4.7 (4.7-20120210-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20120210 (r184114). + * kbsd-gnu.diff: Remove, integrated upstream. + * Strip whitespace from with_libssp definition. Closes: #653255. + * Remove soft-float symbols from 64bit powerpc libgcc1 symbols files. + * Fix control file generation for cross packages. LP: #913734. + + -- Matthias Klose Fri, 10 Feb 2012 21:38:12 +0100 + +gcc-4.7 (4.7-20120205-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20120205 (r183903). + * Enable Go on arm*, ia64, mips*, powerpc, s390*, sparc*. + * libgo: Fix ioctl macro extracton. + * Fix PR middle-end/52074, ICE in libgo on powerpc. + * Revert: * Install static libc++{98,11} libraries. + * Don't strip a `/' sysroot from the C++ include directories. + Closes: #658442. + + -- Matthias Klose Sun, 05 Feb 2012 09:16:03 +0100 + +gcc-4.7 (4.7-20120129-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20120129 (r183674). + * Configure --with-sysroot for wheezy and sid. + * Install static libc++{98,11} libraries. + * Install libstdc++ gdb.py file into /usr/lib/debug. + * Just copy libstdc++convenience.a for the libstdc++_pic installation. + * Remove trailing dir separator from system root. + + -- Matthias Klose Sun, 29 Jan 2012 08:19:27 +0100 + +gcc-4.7 (4.7-20120121-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20120121 (r183370). + + [ Matthias Klose ] + * Fix C++ include paths when configured --with-system-root. + + [ Marcin Juszkiewicz ] + * Fix control file generation for ARM multiarch cross builds. + + -- Matthias Klose Sat, 21 Jan 2012 20:24:29 +0100 + +gcc-4.7 (4.7-20120107-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20120107 (r182981). + + * On armel/armhf, allow g*-multilib installation using the runtime + libraries of the corresponding multiarch architecture. + * Fix location of .jinfo files. Addresses: #654579. + * Replace Fortran 95 with Fortran in package descriptions. + + -- Matthias Klose Sat, 07 Jan 2012 21:24:56 +0100 + +gcc-4.7 (4.7-20111231-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20111231 (r182754). + + [ Aurelien Jarno ] + * Re-enable parallel builds on kfreebsd-i386, as the problem from bug + #637236 only affects kfreebsd-amd64. + + [ Matthias Klose ] + * Fix generating libphobos dependency for gdc. Addresses: #653078. + * Link libmudflapth.so with -lpthread. + + -- Matthias Klose Sat, 31 Dec 2011 09:42:13 +0100 + +gcc-4.7 (4.7-20111222-1) experimental; urgency=low + + * Update to SVN 20111222 (r182617) from the trunk. + + [Matthias Klose] + * Remove obsolete ARM patch. + * Install loongson.h header. + * Update libgcc and libstdc++ symbols files. + + [Samuel Thibault] + * Update hurd patch for 4.7, fixing build failure. Closes: #652693. + + [Robert Millan] + * Update kbsd-gnu.diff for the trunk. + + -- Matthias Klose Thu, 22 Dec 2011 10:52:01 +0100 + +gcc-4.7 (4.7-20111217-2) experimental; urgency=low + + * Don't provide 4.6.x symlinks. + * Disable multilib for armhf. + * Fix spu installation. + + -- Matthias Klose Sun, 18 Dec 2011 17:22:10 +0100 + +gcc-4.7 (4.7-20111217-1) experimental; urgency=low + + * GCC-4.7 snapshot build. + - Including the GFDL documentation; will stay in experimental + until the 4.7.0 release sometime next year. + * Update patches for the trunk. + * Update symbols files. + * Build libitm packages. + + -- Matthias Klose Sat, 17 Dec 2011 23:19:46 +0100 + +gcc-4.6 (4.6.2-9) unstable; urgency=medium + + * Update to SVN 20111217 (r182430) from the gcc-4_6-branch. + - Fix PR c++/51331. + * Fix build dependencies for armel/armhf. + + -- Matthias Klose Sat, 17 Dec 2011 10:40:26 +0100 + +gcc-4.6 (4.6.2-8) unstable; urgency=low + + * Update to SVN 20111216 (r182407) from the gcc-4_6-branch. + - Fix PR tree-optimization/51485, PR tree-optimization/50569, PR c++/51248, + PR c++/51406, PR c++/51161, PR rtl-optimization/49720, PR fortran/50923, + PR fortran/51338, PR fortran/51550, PR fortran/47545, PR fortran/49050, + PR fortran/51075. + + [ Matthias Klose ] + * gdc-4.6: Provide -{gdc,gdmd}-4.6 symlinks. + + [Ludovic Brenta] + Merge from gnat-4.6 (4.6.2-2) unstable; urgency=low + [Євгеній МещерÑков] + * debian/patches/pr47818.diff: new. Fixes: #614402. + * debian/rules.patch: apply it. + + Merge from gnat-4.6 (4.6.2-1) unstable; urgency=low + [Ludovic Brenta] + * Suggest ada-reference-manual-{html,info,pdf,text} instead of just + ada-reference-manual which no longer exists. + * Do not suggest gnat-gdb, superseded by gdb. + * Downgrade libgnat{vsn,prj}4.6-dev to priority extra; they conflict + with their 4.4 counterparts and priority optional packages may not + conflict with one another, per Policy 2.5. + + -- Matthias Klose Fri, 16 Dec 2011 16:59:30 +0100 + +gcc-4.6 (4.6.2-7) unstable; urgency=medium + + * Update to SVN 20111210 (r182189) from the gcc-4_6-branch. + - Fix PR rtl-optimization/51469, PR tree-optimization/51466, + PR tree-optimization/50078, PR target/51408, PR fortran/51310, + PR fortran/51448. + + -- Matthias Klose Sat, 10 Dec 2011 20:12:33 +0100 + +gcc-4.6 (4.6.2-6) unstable; urgency=low + + * Update to SVN 20111208 (r182120) from the gcc-4_6-branch. + - Fix PR c++/51265, PR bootstrap/50888, PR target/51393 (ix86), + PR target/51002 (AVR), PR target/51345 (AVR), PR debug/48190, + PR fortran/50684, PR fortran/51218, PR target/50906 (closes: #650318), + PR tree-optimization/51315 (closes: #635126), PR tree-optimization/50622, + PR fortran/51435, PR debug/51410, PR c/51339, PR rtl-optimization/48721, + PR middle-end/51323 (LP: #897583), PR middle-end/50074, + PR middle-end/50074. + + [ Matthias Klose ] + * Run the libstdc++ testsuite on all architectures again. Closes: #622699. + * Apply proposed patch for PR target/50906 (powerpcspe only). Closes: #650318. + * Fix PR target/49030 (ARM), taken from Linaro. Closes: #633479. + * Fix PR target/50193 (ARM), taken from Linaro. Closes: #642127. + * Install the libstdc++.so-gdb.py file. LP: #883269. + * Fix PR c++/50114, backport from trunk. LP: #827806. + * Merge changes to allow gcc-snapshot cross builds, taken from Linaro. + * Update the Linaro support to the 4.6 branch. + + [ Marcin Juszkiewicz ] + * Fix issues with gcc-snapshot cross builds. + * Allow building Linaro binary packages in a single package. + * Apply hardening patches for cross builds when enabled for native builds. + + -- Matthias Klose Thu, 08 Dec 2011 17:14:35 +0100 + +gcc-4.6 (4.6.2-5) unstable; urgency=low + + * Update to SVN 20111121 (r181596) from the gcc-4_6-branch. + - Fix PR c++/50870, PR c++/50608, PR target/47997, PR target/48108, + PR target/45233, PR middle-end/51077, PR target/30282, PR c++/50608, + PR target/50979, PR target/4810, PR rtl-optimization/51187, + PR target/50493, PR target/49992, PR target/49641, PR c++/51150, + PR target/50678, PR libstdc++/51142, PR libstdc++/51133. + + [ Matthias Klose ] + * Use the default gcc as stage1 compiler for all architectures. + + [ Marcin Juszkiewicz ] + * debian/control.m4: Use BASEDEP in more places. + * Work around debhelper not calling the correct strip for cross builds. + * Drop dpkg-cross build dependency for cross builds. + + -- Matthias Klose Mon, 21 Nov 2011 22:26:49 +0100 + +gcc-4.6 (4.6.2-4) unstable; urgency=low + + * Update to SVN 20111103 (r180830) from the gcc-4_6-branch. + - Fix PR target/50691, PR c++/50901, PR target/50945, + PR rtl-optimization/47918, PR libstdc++/50880. + + * Configure the armel build by explicitly passing --with-arch=armv4t + --with-float=soft. + * libffi: Simplify PowerPC assembly and avoid CPU-specific string + instructions (Kyle Moffett). + * Fix MULTIARCH_DIRNAME on powerpcspe (Kyle Moffett). Closes: #647324. + + -- Matthias Klose Thu, 03 Nov 2011 12:03:41 -0400 + +gcc-4.6 (4.6.2-3) unstable; urgency=low + + * disable parallel builds on kfreebsd-* even if DEB_BUILD_OPTIONS + enables them (continued investigation for #637236). + + -- Ludovic Brenta Sat, 29 Oct 2011 00:42:46 +0200 + +gcc-4.6 (4.6.2-2) unstable; urgency=low + + * Update to SVN 20111028 (r180603) from the gcc-4_6-branch. + - Fix PR target/50875. + + * Fix gcj, gdc and gnat builds, broken by the stage1 cross-compiler + package dependency fixes. + * Update the Linaro support to the 4.6 branch. + * Fix gcc-4.6-hppa64 installation. Closes: #646805. + * For ARM hard float, set the dynamic linker to + /lib/arm-linux-gnueabihf/ld-linux.so.3. + * Don't use parallel builds on kfreebsd. + + -- Matthias Klose Fri, 28 Oct 2011 16:36:55 +0200 + +gcc-4.6 (4.6.2-1) unstable; urgency=low + + * GCC 4.6.2 release. + + * Fix libgcc installation into /usr/lib/gcc//4.6. Closes: #645021. + * Fix stage1 cross-compiler package dependencies (Kyle Moffett). + Closes: #644439. + + -- Matthias Klose Wed, 26 Oct 2011 13:10:44 +0200 + +gcc-4.6 (4.6.1-16) unstable; urgency=medium + + * Update to SVN 20111019 (r180208) from the gcc-4_6-branch. + - Fix PR target/49967 (ia64), PR tree-optimization/50189, PR fortran/50273, + PR tree-optimization/50700, PR c/50565 (closes: #642144), + PR target/49965 (sparc), PR middle-end/49801, PR c++/49216, + PR c++/49855, PR c++/49896, PR c++/44473, PR c++/50611, PR fortran/50659, + PR tree-optimization/50723, PR tree-optimization/50712, PR obj-c++/48275, + PR c++/50618, PR fortran/47023, PR fortran/50570, PR fortran/50718, + PR libobjc/49883, PR libobjc/50002, PR target/50350, PR middle-end/50386, + PR middle-end/50326, PR target/50737, PR c++/50787, PR c++/50531, + PR fortran/50016, PR target/50737. + + [ Matthias Klose ] + * Fix libjava installation into /usr/lib/gcc//4.6. + * Fix powerpc and ppc64 libffi builds (Kyle Moffett). + * Apply proposed patch for PR target/50350. Closes: #642313. + * Re-apply the fix for PR tree-optimization/49911 on ia64. + * Apply proposed patch for PR target/50106 (ARM). + + [Xavier Grave] + * debian/patches/address-clauses-timed-entry-calls.diff: new; backport + bug fix about address clauses and timed entry calls. + + [Ludovic Brenta] + * debian/patches/ada-kfreebsd-gnu.diff: new; provide dummy + implementations of some optional POSIX Threads functions missing in + GNU/kFreeBSD. Closes: #642128. + + -- Matthias Klose Thu, 20 Oct 2011 00:24:13 +0200 + +gcc-4.6 (4.6.1-15) unstable; urgency=low + + * Update to SVN 20111010 (r179753) from the gcc-4_6-branch. + - Fix PR target/50652. + * Update the Linaro support to the 4.6-2011.10-1 release. + * Fix gcc-spu installation. + * Restore symlink for subminor GCC version. Closes: #644849. + + -- Matthias Klose Mon, 10 Oct 2011 17:10:40 +0200 + +gcc-4.6 (4.6.1-14) unstable; urgency=low + + * Update to SVN 20111008 (r179710) from the gcc-4_6-branch. + - Fix PR inline-asm/50571, PR c++/46105, PR c++/50508, PR libstdc++/50529, + PR libstdc++/49559, PR c++/40831, PR fortran/48706, PR target/49049, + PR tree-optimization/49279, PR fortran/50585, PR fortran/50625, + PR libstdc++/48698. + + [ Matthias Klose ] + * Configure and build to install into /usr/lib/gcc//4.6. + Closes: #643891. + * libgcc1: Versioned break to gcc-4.3. + * Fix gcc-multiarch for i386-linux-gnu with disabled multilibs. + * libffi: Fix PowerPC soft-floating-point support (Kyle Moffett). + + [ Marcin Juszkiewicz ] + * Enable gcc-snapshot cross builds. + + [ Iain Buclaw ] + * Port gdc to GCC-4.6. + + [ Aurelien Jarno ] + * Backport fix for PR target/49696 from the trunk (Closes: #633443). + + -- Matthias Klose Sat, 08 Oct 2011 14:40:49 +0200 + +gcc-4.6 (4.6.1-13) unstable; urgency=low + + * Update to SVN 20110926 (r179207) from the gcc-4_6-branch. + - Fix PR tree-optimization/50472, PR tree-optimization/50413, + PR tree-optimization/50412, PR c++/20039, PR c++/42844, + PR libstdc++/50510, PR libstdc++/50509. + * Revert the fix for PR tree-optimization/49911, bootstrap error on ia64. + * libffi: Define FFI_MMAP_EXEC_WRIT on kfreebsd-* (Petr Salinger). + + -- Matthias Klose Mon, 26 Sep 2011 19:59:55 +0200 + +gcc-4.6 (4.6.1-12) unstable; urgency=low + + * Update to SVN 20110924 (r179140) from the gcc-4_6-branch. + - Fix PR target/50464, PR target/50341, PR middle-end/49886, + PR target/50091, PR c++/50491, PR c++/50442 (Closes: #642176). + + -- Matthias Klose Sat, 24 Sep 2011 10:39:32 +0200 + +gcc-4.6 (4.6.1-11) unstable; urgency=low + + * Update to SVN 20110917 (r178926) from the gcc-4_6-branch. + - Fix PR c++/50424, PR c++/48320, PR fortran/49479. + + [ Matthias Klose ] + * Update the Linaro support to the 4.6-2011.09-1 release. + + [ Aurelien Jarno ] + * gcc.c (for_each_path): Allocate memory for multiarch suffix. + + -- Matthias Klose Sat, 17 Sep 2011 10:53:36 +0200 + +gcc-4.6 (4.6.1-10) unstable; urgency=medium + + * Update to SVN 20110910 (r178746) from the gcc-4_6-branch. + - Fix PR middle-end/50266, PR tree-optimization/49911, + PR tree-optimization/49518, PR tree-optimization/49628, + PR tree-optimization/49628, PR target/50310, PR target/50289, + PR c++/50255, PR c++/50309, PR c++/49267, PR libffi/49594. + - Revert fix for PR middle-end/49886, causing PR middle-end/50295. + + -- Matthias Klose Sat, 10 Sep 2011 03:38:48 +0200 + +gcc-4.6 (4.6.1-9) unstable; urgency=low + + * Update to SVN 20110903 (r178501) from the gcc-4_6-branch. + - Fix PR target/50090, PR middle-end/50116, PR target/50202, PR c/50179, + PR c++/50157, PR fortran/50163, PR libfortran/50192, + PR middle-end/49886, PR tree-optimization/50178, PR c++/50207, + PR c++/50089, PR c++/50220, PR c++/50234, PR c++/50224, + PR libstdc++/50268. + + [ Matthias Klose ] + * Fix gcc --print-multilib-osdir for non-biarch architectures. + * Fix multiarch for non-biarch builds. Closes: #635860. + * Move the lto plugin to the cpp packge. Closes: #639531. + + [ Thorsten Glaser ] + * [m68k] Disable multilib. Closes: #639303. + + -- Matthias Klose Sat, 03 Sep 2011 20:11:50 +0200 + +gcc-4.6 (4.6.1-8) unstable; urgency=low + + * Update to SVN 20110824 (r178027) from the gcc-4_6-branch. + Fix PR fortran/49792, PR tree-optimization/48739, PR target/50092, + PR c++/50086, PR c++/50054, PR fortran/50050, PR fortran/50130, + PR fortran/50129, PR fortran/49792, PR fortran/50109, PR c++/50024, + PR c++/46862. + + * Properly disable multilib builds for selected libraries on armel and armhf. + * Update and re-enable the gcc-ice patch. + * Update and re-enable the gcc-cloog-dl patch. + * Fix [ARM] PR target/50090: aliases in libgcc.a with default visibility, + taken from the trunk. + * Re-work the multiarch patches. + * Break older gcj-4.6 and gnat-4.6 versions, changed gcc_lib_dir. + * Omit the target alias from the go libdir. + * Linaro updates from the 4.6-2011.07-stable branch. + * Revert: + - libjava: Build with the system libffi PIC library. + * For native builds, gcc -print-file-name now resolve . and .., + and removes the subminor version number. + + -- Matthias Klose Wed, 24 Aug 2011 10:22:42 +0200 + +gcc-4.6 (4.6.1-7) unstable; urgency=low + + * Update to SVN 20110816 (r177780) from the gcc-4_6-branch. + - Fix PR middle-end/49923. + + [ Matthias Klose ] + * gcc-4.6-multilib: Depend on biarch quadmath library. Closes: #637174. + * Don't hard-code build dependency on gcc-multilib. + * Build-depends on python when building java. + * Fix thinko in java::lang::Class::finalize (taken from the trunk). + * Add support for ARM 64bit sync intrinsics (David Gilbert). Only + enable for armv7 or better. + * libjava: Build with the system libffi PIC library. + * Disable gnat multilib builds on armel and armhf. + + Merge from gnat-4.6 (4.6.1-4) unstable; urgency=low + + [Ludovic Brenta] + * debian/patches/ada-symbolic-tracebacks.diff + (src/gcc/ada/gcc-interface/Makefile.in): pass -iquote instead of -I- + to gnatgcc; fixes FTBFS on i386 and closes: #637418. + + Merge from gnat-4.6 (4.6.1-3) unstable; urgency=low + + [Євгеній МещерÑков] + * debian/patches/ada-mips.diff: do not use the alternate stack on mips, + as on mipsel. Closes: #566234. + + [Ludovic Brenta] + * debian/patches/pr49940.diff: new; copy the definition of function + lwp_self from s-osinte-freebsd.ads to s-osinte-kfreebsd-gnu.ads. + Closes: #636291. + * debian/patches/pr49944.diff: new. Closes: #636692. + * debian/patches/pr49819.diff: drop, merged upstream. + + -- Matthias Klose Tue, 16 Aug 2011 13:11:25 +0200 + +gcc-4.6 (4.6.1-6) unstable; urgency=low + + * Update to SVN 20110807 (r177547) from the gcc-4_6-branch. + - Fix PR rtl-optimization/49799, PR debug/49871, PR target/47364, + PR target/49866, PR tree-optimization/49671, PR target/39386, + PR ada/4981, PR fortran/45586, PR fortran/49791, PR middle-end/49897, + PR middle-end/49898, PR target/49920, PR target/47908 (closes: #635919), + PR c++/43886, PR c++/49593, PR c++/49803, PR c++/49924, PR c++/49260, + PR fortran/49885, PR fortran/48876, PR libstdc++/49925, PR target/50001, + PR tree-optimization/49948, PR c++/48993, PR c++/49921, PR c++/49669, + PR c++/49988, PR fortran/49112. + + [ Aurelien Jarno ] + * Update patches/kbsd-gnu.diff for recent changes. Closes: #635195. + * Add s390x support. + + [ Marcin Juszkiewicz ] + * Fixes for multilib cross builds. LP: #816852, #819147. + + [ Matthias Klose ] + * Fix libgo installation for cross builds. + * Only apply arm-multilib when building for multilib. + + -- Matthias Klose Sun, 07 Aug 2011 18:20:00 +0200 + +gcc-4.6 (4.6.1-5) unstable; urgency=low + + * Update to SVN 20110723 (r176672) from the gcc-4_6-branch. + - Fix PR target/49541, PR tree-optimization/49768, PR middle-end/49675, + PR target/49746, PR middle-end/49732, PR tree-optimization/49725, + PR target/49723, PR target/49541, PR tree-opt/49309, PR c++/49785, + PR ada/48711, PR ada/46350, PR fortran/49648, PR testsuite/49753, + PR tree-optimization/49309, PR tree-optimization/45819, PR target/49600, + PR fortran/49708, PR libstdc++/49293. + * Update the Linaro support to the 4.6-2011.07-0 release. + - Fix PR target/49335. LP: #791327. + * Update gcc-multiarch: + - Add -print-multiarch option. + - Fix library path for non-default multilib(s). + - Handle `.' in MULTILIB_DIRNAMES. + * Add support to build multilib on armel and armhf, only enable it for + Ubuntu/oneiric. LP: #810360. + * cpp-4.6: Add empty multiarch directories for the non-default multilibs, + needed for relative lookups from startfile_prefixes. + * Fix PR c++/49756, backport from trunk. LP: #721378. + * libgcc1: Add breaks to gcc-4.1 and gcc-4.3. Closes: #634821. + * Configure for DEB_TARGET_MULTIARCH defaults. + + -- Matthias Klose Sat, 23 Jul 2011 08:15:50 +0200 + +gcc-4.6 (4.6.1-4) unstable; urgency=low + + * Update to SVN 20110714 (r176280) from the gcc-4_6-branch. + - Fix PR tree-optimization/49094, PR target/39633, PR c++/49672, + PR fortran/49698, PR fortran/49690, PR fortran/49562, PR libfortran/49296, + PR target/49487, PR tree-optimization/49651, PR ada/48711. + + [ Matthias Klose ] + * Build Go on alpha for gcc-snapshot builds. + * For multicore ARM, clear both caches, not just the dcache (proposed + patch by Andrew Haley). + * Fix for PR rtl-optimization/{48830,48808,48792}, taken from the trunk. + LP: #807573. + * Fix PR tree-optimization/49169, optimisations strip the Thumb/ARM mode bit + off function pointers (Richard Sandiford). LP: #721531. + + [ Marcin Juszkiewicz ] + * Define DEB_TARGET_MULTIARCH macro. + * debian/rules2: Macro and configuration consolidation. + + -- Matthias Klose Thu, 14 Jul 2011 19:38:49 +0200 + +gcc-4.6 (4.6.1-3) unstable; urgency=medium + + * Update to SVN 20110709 (r176108) from the gcc-4_6-branch. + - Fix PR target/49335, PR tree-optimization/49618, PR c++/49598, + PR fortran/49479, PR target/49621, PR target/46779, PR target/49660, + PR c/49644, PR debug/49522, PR debug/49522, PR middle-end/49640, + PR c++/48157, PR c/49644, PR fortran/48926. + - Apparently fixes a boost issue. Closes: #632938. + * Apply proposed patch for PR fortran/49690. Closes: #631204. + + * README.Debian: New section 'Former and/or inactive maintainers'. + + -- Matthias Klose Sun, 10 Jul 2011 00:04:34 +0200 + +gcc-4.6 (4.6.1-2) unstable; urgency=medium + + * Update to SVN 20110705 (r175840) from the gcc-4_6-branch. + - Fix PR target/47997, PR c++/49528, PR c++/49440, PR c++/49418, + PR target/44643, PR tree-optimization/49615, PR tree-optimization/49572, + PR target/34734, PR tree-optimization/49539, PR tree-optimizations/49516, + PR target/49089, PR rtl-optimization/49014, PR target/48273, + PR fortran/49466, PR libfortran/49296, PR libffi/46660, PR debug/49262, + PR rtl-optimization/49472, PR rtl-optimization/49619, PR fortran/49623, + PR fortran/49540. + + [Ludovic Brenta, Євгеній МещерÑков, Xavier Grave] + * Adjust patches to GCC 4.6. + * Remove patches merged upstream: + - debian/patches/ada-arm-eabi.diff + - debian/patches/ada-bug589164.diff + - debian/patches/ada-bug601133.diff + - debian/patches/ada-gnatvsn.diff + - debian/patches/ada-mips.diff + - debian/patches/ada-polyorb-dsa.diff + + [Ludovic Brenta] + * debian/patches/ada-acats.diff: set LD_LIBRARY_PATH, ADA_INCLUDE_PATH + and ADA_OBJECTS_PATH so that the GNAT testsuite runs. + * debian/patches/adalibgnat{vsn,prj}.diff, + debian/rules.d/binary-ada.mk: install libgnat{vsn,prj}.so.* in the correct + multiarch directory. + * debian/control.m4, debian/rules.d/binary-ada.mk: move the SJLJ version + of the Ada run-time library to a new package, gnat-4.6-sjlj. + * debian/control.m4 (libgnatvsn4.6, libgnatvsn4.6-dbg, libgnatprj4.6, + libgnatprj4.6-dbg): pre-depend on multiarch-support and add + Multi-Arch: same. + + [Nicolas Boulenguez] + * debian/rules.d/binary-ada.mk: add gnathtml to the package gnat-4.6. + * debian/gnat.1: remove the version number of GCC. Mention gnathtml. + + [ Matthias Klose ] + * Do not install the spu and hppa64 cross compilers into the multiarch path. + * Update the Linaro support to 20110704. + + [ Thorsten Glaser ] + * Apply changes from src:gcc-4.4 for m68k support. Closes: #632380. + - debian/rules.defs: Remove m68k from locale_no_cpus. + - debian/patches/gcc-multiarch.diff: Add m68k multiarch_mappings. + - debian/patches/pr43804.diff: Fix backported from SVN. + - debian/rules.patch: Add pr43804. + + -- Matthias Klose Tue, 05 Jul 2011 10:45:56 +0200 + +gcc-4.6 (4.6.1-1) unstable; urgency=low + + * GCC 4.6.1 release. + + [Ludovic Brenta] + * debian/patches/ada-gnatvsn.diff, + debian/patches/ada-polyorb-dsa.diff: remove backports, no longer + needed. + + [ Matthias Klose ] + * Fix plugin header installation. Closes: #631082. + * Stop passing -Wno-error=unused-but-set-parameter and + -Wno-error=unused-but-set-variable if -Werror is present. + This was a temporary workaround introduced in 4.6.0~rc1-2. Closes: #615157. + * gcc-4.6-spu: Install the lto plugin. Closes: #631772. + + -- Matthias Klose Mon, 27 Jun 2011 13:54:04 +0200 + +gcc-4.6 (4.6.0-14) unstable; urgency=low + + * Update to SVN 20110616 (r175102) from the gcc-4_6-branch. + - Fix PR debug/48459, PR fortran/49103, PR rtl-optimization/49390, + PR c++/49117, PR c++/49369, PR c++/49290, PR target/44618, + PR tree-optimization/49419 (closes: #630567). + * Update the Linaro support to the 4.6-2011.06-0 release. + + -- Matthias Klose Thu, 16 Jun 2011 16:10:33 +0200 + +gcc-4.6 (4.6.0-13) unstable; urgency=low + + * Update to SVN 20110611 (r174958) from the gcc-4_6-branch. + * Extend multiarch support for mips/mipsel. + * Fix control files for gcj multiarch builds. + * Update libstdc++ symbols files. + + -- Matthias Klose Sat, 11 Jun 2011 20:49:42 +0200 + +gcc-4.6 (4.6.0-12) unstable; urgency=medium + + * Update to SVN 20110608 (r174800) from the gcc-4_6-branch. + - PR target/49186, PR rtl-optimization/49235, PR tree-optimization/48702, + PR tree-optimization/49243, PR c++/49134, PR target/49238, + PR gcov-profile/49299, PR c++/48780, PR c++/49298, PR fortran/49268. + * Fix c++ biarch header installation on i386. LP: #793411. + * Enable multiarch. + * Add multiarch attributes for gnat and libgnat packages. + * Add multiarch attributes for libgcj* packages. + * Adjust build dependency on multiarch glibc. + + -- Matthias Klose Wed, 08 Jun 2011 11:26:52 +0200 + +gcc-4.6 (4.6.0-11) unstable; urgency=low + + * Update to SVN 20110604 (r174637) from the gcc-4_6-branch. + - Fix PR c++/49165, PR tree-optimization/49218, PR target/45263, + PR target/43700, PR target/43995, PR tree-optimization/49217, + PR c++/49223, PR c++/47049, PR c++/47277, PR c++/48284, PR c++/48657, + PR c++/49176, PR fortran/48955, PR tree-optimization/49038, + PR tree-optimization/49093, PR middle-end/48985, PR middle-end/48953, + PR c++/49276, PR fortran/49265, PR fortran/45786. + * Configure the hppa64 and spu cross builds with --enable-plugin. + + -- Matthias Klose Sat, 04 Jun 2011 16:12:27 +0200 + +gcc-4.6 (4.6.0-10) unstable; urgency=high + + * Update to SVN 20110526 (r174290) from the gcc-4_6-branch. + - Fix PR target/44643, PR c++/49165, PR tree-optimization/49161, + PR target/49128, PR tree-optimization/44897, PR target/49133, + PR c++/44994, PR c++/49156, PR c++/45401, PR c++/44311, PR c++/44311, + PR c++/45698, PR c++/46145, PR c++/46245, PR c++/46696, PR c++/47184, + PR c++/48935, PR c++/45418, PR c++/45080, PR c++/48292, PR c++/49136, + PR c++/49042, PR c++/48884, PR c++/49105, PR c++/47263, PR c++/47336, + PR c++/47544, PR c++/48617, PR c++/48424, PR libstdc++/49141, + PR libobjc/48177. + * Proposed fix for PR tree-optimization/48702, PR tree-optimization/49144. + Closes: #627795. + * Proposed fix for PR fortran/PR48955. + * Add some conditionals to build the package on older releases. + + -- Matthias Klose Thu, 26 May 2011 16:00:49 +0200 + +gcc-4.6 (4.6.0-9) unstable; urgency=low + + * Update to SVN 20110524 (r174102) from the gcc-4_6-branch. + - Fix PR lto/49123, PR debug/49032, PR c/49120, PR middle-end/48973, + PR target/49104, PR middle-end/49029, PR c++/48647, PR c++/48945, + PR c++/48780, PR c++/49066, PR libstdc++/49058, PR target/49104. + * Use gcc-4.4 as the bootstrap compiler for kfreebsd to work around + a bootstrap issue. + + -- Matthias Klose Tue, 24 May 2011 09:41:35 +0200 + +gcc-4.6 (4.6.0-8) unstable; urgency=low + + * Update to SVN 20110521 (r173994) from the gcc-4_6-branch. + - Fix PR target/48986, PR preprocessor/48677, PR tree-optimization/48975, + PR tree-optimization/48822, PR debug/48967, PR debug/48159, + PR target/48857, PR target/48495, PR tree-optimization/48837, + PR tree-optimization/48611, PR tree-optimization/48794, PR c++/48859, + PR c++/48574, PR fortran/48889, PR target/49002, PR lto/48207, + PR tree-optimization/49039, PR tree-optimization/49018, PR lto/48703, + PR tree-optimization/48172, PR tree-optimization/48172, PR c++/48873, + PR tree-optimization/49000, PR c++/48869, PR c++/49043, PR c++/49082, + PR c++/48948, PR c++/48745, PR c++/48736, PR bootstrap/49086, + PR tree-optimization/49079, PR tree-optimization/49073. + * Update the Linaro support to the 4.6-2011.05-0 release. + * pr45979.diff: Update to the version from the trunk. + + -- Matthias Klose Sat, 21 May 2011 12:19:10 +0200 + +gcc-4.6 (4.6.0-7) unstable; urgency=low + + * Update to SVN 20110507 (r173528) from the gcc-4_6-branch. + - Fix PR middle-end/48597, PR c++/48656, PR fortran/48112, + PR fortran/48279, PR fortran/48788, PR tree-optimization/48809, + PR target/48262, PR fortran/48462, PR fortran/48746, + PR fortran/48810, PR fortran/48800, PR libstdc++/48760, + PR libgfortran/48030, PR preprocessor/48192, PR lto/48846, + PR target/48723, PR fortran/48894, PR target/48900, PR target/48252, + PR c++/40975, PR target/48252, PR target/48774, PR c++/48838, + PR c++/48749, PR ada/48844, PR fortran/48720, PR libstdc++/48750, + PR c++/48909, PR c++/48911, PR c++/48446, PR c++/48089. + + * Fix issue with volatile bitfields vs. inline asm memory constraints, + taken from the trunk, apply for ARM only. Addresses: #625825. + + -- Matthias Klose Sat, 07 May 2011 14:54:51 +0200 + +gcc-4.6 (4.6.0-6) unstable; urgency=low + + * Update to SVN 20110428 (r173059) from the gcc-4_6-branch. + - Fix PR c/48685 (closes: #623161), PR tree-optimization/48717, PR c/48716, + PR c/48742, PR debug/48768, PR tree-optimization/48734, + PR tree-optimization/48731, PR other/48748, PR c++/42687, PR c++/48726, + PR c++/48707, PR fortran/48588, PR libstdc++/48521, PR c++/48046, + PR preprocessor/48740. + * Update the ibm/gcc-4_6-branch to 20110428. + * Use gcc-4.6 as bootstrap compiler on kfreebsd-*. + + -- Matthias Klose Thu, 28 Apr 2011 10:33:52 +0200 + +gcc-4.6 (4.6.0-5) unstable; urgency=low + + * Update to SVN 20110421 (r172845) from the gcc-4_6-branch. + - Fix PR target/48288, PR tree-optimization/48611, PR lto/48148, + PR lto/48492, PR fortran/47976, PR c++/48594, PR c++/48657, + PR c++/46304, PR target/48708, PR middle-end/48695. + + * Update the Linaro support to the 4.6-2011.04-0 release. + + -- Matthias Klose Thu, 21 Apr 2011 22:50:25 +0200 + +gcc-4.6 (4.6.0-4) unstable; urgency=medium + + * Update to SVN 20110419 (r172584) from the gcc-4_6-branch. + - Fix PR target/48678, PR middle-end/48661, PR tree-optimization/48616, + PR lto/48538, PR c++/48537, PR c++/48632, PR testsuite/48675, + PR libstdc++/48635, PR libfortran/47571. + + [ Aurelien Jarno ] + * Enable SSP on mips/mipsel. + + [ Matthias Klose ] + * (Build-)depend on binutils 2.21.51. + + -- Matthias Klose Tue, 19 Apr 2011 23:45:16 +0200 + +gcc-4.6 (4.6.0-3) unstable; urgency=high + + * Update to SVN 20110416 (r172584) from the gcc-4_6-branch. + - Fix PR rtl-optimization/48143, PR target/48142, PR target/48349, + PR debug/48253, PR fortran/48291, PR target/16292, PR c++/48280, + PR c++/48212, PR c++/48369, PR c++/48281, PR c++/48265, PR lto/48246, + PR libstdc++/48398, PR bootstrap/48431, PR tree-optimization/48377, + PR debug/48343, PR rtl-optimization/48144, PR debug/48466, PR c/48517, + PR middle-end/48335, PR c++/48450, PR target/47829, PR c++/48534, + PR c++/48523, PR libstdc++/48566, PR libstdc++/48541, PR target/48366, + PR libstdc++/48465, PR middle-end/48591, PR target/48605, + PR middle-end/48591, PR target/48090, PR tree-optimization/48195, + PR rtl-optimization/48549, PR c++/48594, PR c++/48570, PR c++/48574, + PR fortran/48360, PR fortran/48456, PR libstdc++/48631, + PR libstdc++/48635, PR libstdc++/48476. + + [ Matthias Klose ] + * libjava-jnipath.diff: Add /usr/lib//jni as jnipath too. + * Add mudflap support for varargs (patch taken from the trunk). + * gcc-4.6-plugin-dev: Install gtype.state. + * Bootstrap with gcc-4.4 -g -O2 on armel. + * Fix linker plugin configuration. Closes: #620661. + * Update the Linaro support for GCC-4.6. + * gcc-snapshot builds: + - Fix build with multiarch changes. + - Use gcc-snapshot as the bootstrap compiler on armel. + - Re-enable building java in the gcc-snapshot package. + * Build supporting multiarch on wheezy/sid. + * Adjust (build)-dependency to new libgmp-dev name. + + [ Marcin Juszkiewicz ] + * Configure stage1 cross builds with --disable-libquadmath. + + -- Matthias Klose Sat, 16 Apr 2011 17:02:30 +0200 + +gcc-4.6 (4.6.0-2) unstable; urgency=low + + * Update to SVN 20110329 (r171700) from the gcc-4_6-branch. + - Fix PR bootstrap/48135, PR target/47553, PR middle-end/48269, + PR tree-optimization/48228, PR middle-end/48134, PR middle-end/48031, + PR other/48179, PR other/48221, PR other/48234, PR target/48237, + PR debug/48204, PR c/42544, PR c/48197, PR rtl-optimization/48141, + PR rtl-optimization/48141, PR c++/48166, PR c++/48296, PR c++/48289, + PR c++/47999, PR c++/48313, Core 1232, Core 1148, PR c++/47504, + PR c++/47570, PR preprocessor/48248, PR c++/48319. + + [ Matthias Klose ] + * Update NEWS files. + * Configure the hppa64 cross build with --disable-libquadmath. + * Don't build armhf from the Linaro branch. + * Don't try to build Go on sh4. + + [ Marcin Juszkiewicz ] + * Fixes issues with staged cross builds. LP: #741855, #741853. + * Fix libdir setting for multiarch enabled cross builds. LP: #741846. + * Drop alternatives for cross builds. LP: #676454. + + -- Matthias Klose Tue, 29 Mar 2011 23:22:07 +0200 + +gcc-4.6 (4.6.0-1) unstable; urgency=low + + * GCC 4.6.0 release. + + * Build the gold LTO plugin for ppc64 (Hiroyuki Yamamoto). Closes: #618865. + * Fix PR target/48226, Allow Iterator::vector vector on powerpc with VSX, + taken from the trunk. + * Fix PR target/47487 ICE building libgo, taken from the trunk. + * Merge multiarch changes from the gcc-4.5 package. + * Apply proposed patch to reduce the overhead of dwarf2 location tracking. + Addresses: #618748. + + -- Matthias Klose Sat, 26 Mar 2011 03:03:21 +0100 + +gcc-4.6 (4.6.0~rc1-3) experimental; urgency=low + + * GCC 4.6.0 release candidate 2. + + -- Matthias Klose Tue, 22 Mar 2011 22:11:42 +0100 + +gcc-4.6 (4.6.0~rc1-2) experimental; urgency=low + + [ Loic Minier ] + * Rework config/vxworks-dummy.h installation snippet to test + DEB_TARGET_GNU_CPU against patterns close to the upstream ones (arm% mips% + sh% sparc%) as to also install this header on other ports targetting the + relevant upstream CPUs such as armhf. Add a comment pointing at the + upstream bug. + * Update __aeabi symbol handling to test whether DEB_TARGET_GNU_TYPE matches + arm-linux-gnueabi% instead of testing whether DEB_TARGET_ARCH equals + armel. Add a comment pointing at the Debian bug and indicating that this + is only useful for older dpkg-dev versions. + * debian/rules.def: fix "armel" entry to "arm" in list of + DEB_TARGET_ARCH_CPUs for Debian experimental GCC 4.5/4.6 libraries. + * debian/rules2: drop commented out GCC #42509 workaround as this was fixed + upstream in 4.4+. + * Change bogus DEB_TARGET_GNU_CPU test on armel and armhf to just test for + arm as ths is what the Debian arm, armel and armhf port use. + * Rework snippet setting armv7 on Debian armhf / Ubuntu to avoid + duplication, as a comment called out for. + * Use "arm" instead of armel/armhf in DEB_TARGET_GNU_CPU test when deciding + whether to enable profiledbootstrap. + * Set DEJAGNU_TIMEOUT=600 on Ubuntu armhf as well. + * Fix a couple more uses of armel or armhf against DEB_TARGET_GNU_CPU. + * Patched a couple of comments mentioning armel to also mention armhf. + * Add patch armhf-triplet-backport, support for arm-linux-*eabi* backported + from a patch sent on the upstream mailing-list. + + [ Matthias Klose ] + * Update libstdc++ symbols files. + * Update libgfortran symbols files. + + -- Matthias Klose Sun, 20 Mar 2011 13:53:48 +0100 + +gcc-4.6 (4.6.0~rc1-2) experimental; urgency=low + + * Update to SVN 20110320 (r171192) from the gcc-4_6-branch. + + [ Matthias Klose ] + * Update gcc-default-ssp* patches for the release candidate. + * Pass -Wno-error=unused-but-set-parameter if -Werror is present (temporary + for rebuild tests). + * Always configure --with-plugin-ld, always install liblto_plugin.so. + + [ Marcin Juszkiewicz ] + * Add conflicts with -4.5-*dev packages. Closes: #618450. + + [ Petr Salinger] + * Disable lock-2.c test on kfreebsd-*. Closes: #618988. + * Re-enable parallel builds on kfreebsd. + * Package lto_plugin for kfreebsd-* and Hurd. + + -- Matthias Klose Sun, 20 Mar 2011 13:53:48 +0100 + +gcc-4.6 (4.6.0~rc1-1) experimental; urgency=low + + * Build from the GCC 4.6.0 release candidate tarball. + + [ Matthias Klose ] + * Disable Go on powerpc. Closes: #615827. + * Fix lintian errors for the -plugin-dev package. + * Update kbsd-gnu.diff (Petr Salinger). Closes: #615826. + * Disable parallel builds on kfreebsd (Petr Salinger). + * Update gmp (build) dependencies. + * Update GFDL compliant builds. Closes: #609161. + * For GFDL compliant builds, build a dummy s-tm-texi without access + to the texinfo sources. + + [ Aurelien Jarno ] + * Import symbol files for kfreebsd-amd64, kfreebsd-i386, sh4 and + sparc64 from gcc-4.5. + + -- Matthias Klose Mon, 14 Mar 2011 19:01:08 +0100 + +gcc-4.6 (4.6-20110227-1) experimental; urgency=low + + [ Matthias Klose ] + * Update libquadmath symbols file. + * gcc-4.6-plugin-dev: Install gengtype. + + [ Sebastian Andrzej Siewior ] + * Remove -many on powerpcspe (__SPE__). + * Remove classic FPU opcodes from libgcc if target has no support for them + (powerpcspe). + + -- Matthias Klose Sun, 27 Feb 2011 22:33:45 +0100 + +gcc-4.6 (4.6-20110216-1) experimental; urgency=low + + * GCC snapshot, taken from the trunk. + * Pass --no-add-needed by default to the linker. See + http://wiki.debian.org/ToolChain/DSOLinking, section "Not resolving symbols + in indirect dependent shared libraries" for more information. + + -- Matthias Klose Wed, 16 Feb 2011 23:55:32 +0100 + +gcc-4.6 (4.6-20110125-1) experimental; urgency=low + + * debian/copyright: Add unicode copyright for + libjava/classpath/resource/gnu/java/locale/* files. Addresses: #609161. + + -- Matthias Klose Wed, 26 Jan 2011 03:42:10 +0100 + +gcc-4.6 (4.6-20110123-1) experimental; urgency=low + + * GCC snapshot, taken from the trunk. + * Don't run the libstdc++ testsuite on mipsel, times out on the buildd. + + [ Marcin Juszkiewicz ] + * Fix biarch/triarch cross builds. + - dpkg-shlibdeps failed to find libraries for 64 or n32 builds + - LD_LIBRARY_PATH for dpkg-shlibdeps lacked host dirs. + + -- Matthias Klose Sun, 23 Jan 2011 12:14:49 +0100 + +gcc-4.6 (4.6-20110116-1) experimental; urgency=low + + * GCC snapshot, taken from the trunk. + * Update patches for the trunk. + * Pass -Wno-error=unused-but-set-variable if -Werror is present (temporary + for rebuild tests). + * Work around PR libffi/47248, force a read only eh frame section. + + -- Matthias Klose Sun, 16 Jan 2011 23:28:28 +0100 + +gcc-4.6 (4.6-20110105-1) experimental; urgency=low + + [ Matthias Klose ] + * Rename and update libobjc symbols files. + * Update cloog/ppl build dependencies. + * Adjust libstdc++ configure and paths for stylesheets and dtds. + * Update copyright for libquadmath, libgo, gcc/go/gofrontend. + * Enable Go for more architectures. + * DP: libgo: Fix GOARCH for i386 biarch, add GOARCH for powerpc + + [ Kees Cook ] + * Update hardening patches for GCC-4.6. LP: #696990. + + -- Matthias Klose Wed, 05 Jan 2011 22:29:57 +0100 + +gcc-4.6 (4.6-20101220-1) maverick; urgency=low + + * GCC snapshot, taken from the trunk. + + -- Matthias Klose Tue, 21 Dec 2010 00:16:19 +0100 + +gcc-4.5 (4.5.2-7) unstable; urgency=low + + * Update to SVN 20110323 (r171351) from the gcc-4_5-branch. + - Fix PR c++/47125, PR fortran/47348, PR libstdc++/48114, + PR libfortran/48066, PR target/48171, PR target/47862. + PR preprocessor/48192. + + [ Steve Langasek ] + * Make dpkg-dev versioned build-dependency conditional on whether we want + to build for multiarch. + * Add a new patch, gcc-multiarch+biarch.diff, used only when building for + multiarch to set our multilib paths to the correct relative directories. + * debian/rules.defs: support turning on multiarch build by architecture; + but don't enable this yet, we still need to wait for dpkg-dev. + * When DEB_HOST_MULTIARCH is available (i.e., with the next dpkg upload), + use it as our multiarch path. + * debian/rules.d/binary-java.mk: jvm-exports path is /usr/lib/jvm-exports, + not $(libdir)/jvm-exports. + * OTOH, libgcj_bc *is* in $(libdir). + * the spu build is not a multiarch build; look in the correct + non-multiarch directory. + * debian/rules2: pass --libdir also for stageX builds, needed in order to + successfully build for multiarch. + * debian/rules2: $(usr_lib) for a cross-build should not include the + multiarch dir as part of the path. + * debian/patches/gcc-multiarch+biarch.diff: restore the original intent of + the patch, namely, that the multilib dir for the default variant is + always equal to libdir (the multiarch dir), and we walk up the tree + to find lib for the secondary variant. + * debian/patches/gcc-multiarch+biarch32.diff: apply the same multilib + directory rewriting for biarch paths with multiarch as we do without; + still needed in the near term. + * Put our list of patches in README.Debian.$(DEB_TARGET_ARCH) instead of + in README.Debian, so that the individual files are architecture-neutral + and play nicely with multiarch. LP: #737846. + * Add a comment at the bottom of README.Debian with a pointer to the new + file listing the patches. + + [ Loic Minier ] + * Rework config/vxworks-dummy.h installation snippet to test + DEB_TARGET_GNU_CPU against patterns close to the upstream ones (arm% mips% + sh% sparc%) as to also install this header on other ports targetting the + relevant upstream CPUs such as armhf. Add a comment pointing at the + upstream bug. + * Update __aeabi symbol handling to test whether DEB_TARGET_GNU_TYPE matches + arm-linux-gnueabi% instead of testing whether DEB_TARGET_ARCH equals + armel. Add a comment pointing at the Debian bug and indicating that this + is only useful for older dpkg-dev versions. + * debian/rules.def: fix "armel" entry to "arm" in list of + DEB_TARGET_ARCH_CPUs for Debian experimental GCC 4.5/4.6 libraries. + * debian/rules2: drop commented out GCC #42509 workaround as this was fixed + upstream in 4.4+. + * Change bogus DEB_TARGET_GNU_CPU test on armel and armhf to just test for + arm as ths is what the Debian arm, armel and armhf port use. + * Rework snippet setting armv7 on Debian armhf / Ubuntu to avoid + duplication, as a comment called out for. + * Use "arm" instead of armel/armhf in DEB_TARGET_GNU_CPU test when deciding + whether to enable profiledbootstrap. + * Set DEJAGNU_TIMEOUT=600 on Ubuntu armhf as well. + * Fix a couple more uses of armel or armhf against DEB_TARGET_GNU_CPU. + * Patched a couple of comments mentioning armel to also mention armhf. + * Add patch armhf-triplet-backport, support for arm-linux-*eabi* backported + from a patch sent on the upstream mailing-list. + + [ Matthias Klose ] + * Fix PR target/48226, Allow Iterator::vector vector on powerpc with VSX, + taken from the trunk. + * Fix PR preprocessor/48192, make conditional macros not defined for + #ifdef, proposed patch. + * Build the gold LTO plugin for ppc64 (Hiroyuki Yamamoto). Closes: #618864. + * Fix issue with volatile bitfields, default to -fstrict-volatile-bitfields + again on armel for Linaro builds. LP: #675347. + + -- Matthias Klose Wed, 23 Mar 2011 15:44:01 +0100 + +gcc-4.5 (4.5.2-6) unstable; urgency=low + + * Update to SVN 20110312 (r170895) from the gcc-4_5-branch. + - Fix PR tree-optimization/45967, PR tree-optimization/47278, + PR target/47862, PR c++/44629, PR c++/45651, PR c++/47289, PR c++/47705, + PR c++/47488, PR libgfortran/47778, PR c++/48029. + + [ Steve Langasek ] + * Make sure our libs Pre-Depend on 'multiarch-support' when building for + multiarch. + * debian/patches/gcc-multiarch*, debian/rules.patch: use i386 in the + multiarch path for amd64 / kfreebsd-amd64, not i486 or i686. This lets + us use a common set of paths on both Debian and Ubuntu, regardless of + the target default optimization level. + * debian/rules.conf: when building for multiarch, we need to be sure we + are building against a libc-dev that supports the corresponding paths. + (the referenced version number for this needs to be bumped once this is + officially in the archive.) + + [ Matthias Klose ] + * Don't run the libmudflap testsuite on hppa; times out on the buildd. + * Don't run the libstdc++ testsuite on mipsel; times out on the buildd. + * Post Linaro 4.5-2011.03-0 release changes (up to 20110313). + * Undefine LINK_EH_SPEC before redefining it to turn off warnings on + powerpc. + * Update gmp (build) dependencies. + + [ Aurelien Jarno ] + * Add symbol files on kfreebsd-i386. + * Add symbol files on kfreebsd-amd64. + * Add symbol files on sparc64. + * Add symbol files on sh4. + + -- Matthias Klose Sun, 13 Mar 2011 17:30:48 +0100 + +gcc-4.5 (4.5.2-5) unstable; urgency=low + + * Update to SVN 20110305 (r170696) from the gcc-4_5-branch. + - Fix PR target/43810, PR fortran/47886, PR tree-optimization/47615, + PR middle-end/47639, PR tree-optimization/47890, PR libfortran/47830, + PR tree-optimization/46723, PR target/45261, PR target/45808, + PR c++/46159, PR c++/47904, PR fortran/47886, PR libstdc++/47433, + PR target/42240, PR fortran/47878, PR libfortran/47694. + * Update the Linaro support to the 4.5-2011.03-0 release. + - Fix LP: #705689, LP: #695302, LP: #710652, LP: #710623, LP: #721021, + LP: #721021, LP: #709453. + + -- Matthias Klose Sun, 06 Mar 2011 02:58:01 +0100 + +gcc-4.5 (4.5.2-4) unstable; urgency=low + + * Update to SVN 20110222 (r170382) from the gcc-4_5-branch. + - Fix PR target/43653, PR fortran/47775, PR target/47840, + PR libfortran/47830. + + [ Matthias Klose ] + * Don't apply a patch twice. + * Build libgcc_s with -fno-stack-protector, when not building from the + Linaro branch. + * Backport proposed fix for PR tree-optimization/46723 from the trunk. + + [ Steve Langasek ] + * debian/control.m4: add missing Multi-Arch: same for libgcc4; make sure + Multi-Arch: same doesn't get set for libmudflap when building an + Architecture: all cross-compiler package. + * debian/rules2: use $libdir for libiberty.a. + * debian/patches/gcc-multiarch-*.diff: make sure we're using the same + set_multiarch_path definition for all variants. + + [ Sebastian Andrzej Siewior ] + * PR target/44364 + * Remove -many on powerpcspe (__SPE__) + * Remove classic FPU opcodes from libgcc if target has no support for them + (powerpcspe) + + -- Matthias Klose Wed, 23 Feb 2011 00:35:54 +0100 + +gcc-4.5 (4.5.2-3) experimental; urgency=low + + * Update to SVN 20110215 (r170181) from the gcc-4_5-branch. + - Fix PR rtl-optimization/44469, PR tree-optimization/47411, + PR bootstrap/44699, PR target/44392, PR fortran/47331, PR fortran/47448, + PR pch/14940, PR rtl-optimization/47166, PR target/47272, PR target/47580, + PR tree-optimization/47541, PR target/44606, PR boehm-gc/34544, + PR fortran/47569, PR libstdc++/47709, PR libstdc++/46914, PR libffi/46661. + * Update the Linaro support to the 4.5 2011.02-0 release. + * Pass --no-add-needed by default to the linker. See + http://wiki.debian.org/ToolChain/DSOLinking, section "Not resolving symbols + in indirect dependent shared libraries" for more information. + + -- Matthias Klose Wed, 16 Feb 2011 15:29:26 +0100 + +gcc-4.5 (4.5.2-2) experimental; urgency=low + + * Update to SVN 20110123 (r169142) from the gcc-4_5-branch. + - Fix PR target/46915, PR target/46729, PR libgcj/46774, PR target/47038, + PR target/46685, PR target/45447, PR tree-optimization/46758, + PR tree-optimization/45552, PR tree-optimization/43023, + PR middle-end/46734, PR fortran/45338, PR preprocessor/39213, + PR target/43309, PR fortran/46874, PR tree-optimization/47286, + PR tree-optimization/44592, PR target/47201, PR c/47150, PR target/46880, + PR middle-end/45852, PR tree-optimization/43655, PR debug/46893, + PR rtl-optimization/46804, PR rtl-optimization/46865, PR target/41082, + PR tree-optimization/46864, PR fortran/45777, PR tree-optimization/47365, + PR tree-optimization/47167, PR target/47318, PR target/46655, + PR fortran/47394, PR libstdc++/47354. + + [ Matthias Klose ] + * Update the Linaro support to the 4.5 2011.01-1 release. + * Don't build packages now built from the gcc-4.6 package for architectures + with a sucessful gcc-4.6 build. + + [ Kees Cook ] + * debian/patches/gcc-default-ssp.patch: do not ignore -fstack-protector-all + (LP: #691722). + + [ Marcin Juszkiewicz ] + * Fix biarch/triarch cross builds. + - dpkg-shlibdeps failed to find libraries for 64 or n32 builds + - LD_LIBRARY_PATH for dpkg-shlibdeps lacked host dirs. + + -- Matthias Klose Sun, 23 Jan 2011 11:54:52 +0100 + +gcc-4.5 (4.5.2-1) experimental; urgency=low + + * GCC 4.5.2 release. + + -- Matthias Klose Sat, 18 Dec 2010 14:14:38 +0100 + +gcc-4.5 (4.5.1-12) experimental; urgency=low + + * Update to SVN 20101129 (r167272) from the gcc-4_5-branch. + - Fix PR fortran/45742, PR tree-optimization/46498, PR target/45807, + PR target/44266, PR rtl-optimization/46315, PR tree-optimization/44545, + PR tree-optimization/46491, PR rtl-optimization/46571, PR target/31100, + PR c/46547, PR fortran/46638, PR tree-optimization/46675, PR debug/46258, + PR ada/40777. + + [ Matthias Klose ] + * Use lib instead of lib64 as the 64bit system dir on biarch + architectures defaulting to 64bit. Closes: #603597. + * Fix powerpc and s390 builds when biarch is disabled. + * Backport PR bootstrap/44768, miscompilation of dpkg on ARM + with -O2 (Chung-Lin Tang). LP: #674146. + * Update libgcc2 symbols file. Closes: #602099. + + [ Marcin Juszkiewicz ] + * Do not depend on target mpfr and zlib -dev packages for cross builds. + LP: #676027. + + [ Konstantinos Margaritis ] + * Add support for new target architecture `armhf'. Closes: #603948. + + -- Matthias Klose Mon, 22 Nov 2010 08:12:08 +0100 + +gcc-4.5 (4.5.1-11) experimental; urgency=low + + * Update to SVN 20101114 (r166728) from the gcc-4_5-branch. + - Fix PR fortran/45742. + * Don't hardcode debian/patches when referencing patches. Closes: #600502. + + -- Matthias Klose Sun, 14 Nov 2010 08:36:27 +0100 + +gcc-4.5 (4.5.1-10) experimental; urgency=low + + * Update to SVN 20101112 (r166653) from the gcc-4_5-branch. + - Fix PR rtl-optimization/44691, PR tree-optimization/46355, + PR tree-optimization/46177, PR c/44772, PR tree-optimization/46099, + PR middle-end/43690, PR tree-optimization/46165, PR middle-end/46419, + PR tree-optimization/46107, PR tree-optimization/45314, PR debug/45939, + PR rtl-optimization/46237, PR middle-end/44569, PR middle-end/44569, + PR tree-optimization/45902, PR target/46153, PR rtl-optimization/46226, + PR tree-optimization/46167, PR target/46098, PR target/45946, + PR fortran/42169, PR middle-end/46019, PR c/45969, PR c++/45894, + PR c++/46160, PR c++/45983, PR fortran/46152, PR fortran/46140, + PR libstdc++/45999, PR libgfortran/46373, PR libgfortran/46010, + PR fortran/46007, PR c++/46024. + * Update the Linaro support to the 4.5 2010.11 release. + * Update gcc-4.5 source dependencies. Closes: #600503. + * ARM: Fix Thumb-1 reload ICE with nested functions (Julian Brown), + taken from the trunk. + * Fix earlyclobbers on some arm.md DImode shifts (may miscompile "x >> 1"), + taken from the trunk. Closes: #600888. + + -- Matthias Klose Fri, 12 Nov 2010 18:34:47 +0100 + +gcc-4.5 (4.5.1-9) experimental; urgency=low + + * Update to SVN 20101014 (r165474) from the gcc-4_5-branch. + - Fix PR target/45820, PR tree-optimization/45854, PR target/45843, + PR target/43764, PR rtl-optimization/43358, PR bootstrap/44621, + PR libffi/45677, PR middle-end/45869, PR middle-end/45569, + PR tree-optimization/45752, PR fortran/45748, PR libstdc++/45403, + PR libstdc++/45924, PR libfortran/45710, PR bootstrap/44455, + PR java/43839, PR debug/45656, PR debug/44832, PR libstdc++/45711, + PR tree-optimization/45982. + + [ Matthias Klose ] + * Update the Linaro support to the 4.5 2010.10 release. + * Just try to build java on mips/mipsel (was disabled in 4.5.0-9, when + java was built from the same source package). Addresses: #599976. + * Remove the gpc packaging support. + * Fix libmudflap.so symlink. Addresses: #600161. + * Fix pch test failures with heap randomization on armel (PR pch/45979). + + [ Kees Cook ] + * Don't enable -fstack-protector with -ffreestanding. + + -- Matthias Klose Thu, 14 Oct 2010 19:17:41 +0200 + +gcc-4.5 (4.5.1-8) experimental; urgency=low + + * Update to SVN 20100925 (r164618) from the gcc-4_5-branch. + - Fix PR middle-end/44763, PR java/44095, PR target/35664, + PR rtl-optimization/41085, PR rtl-optimization/45051, + PR target/45694, PR middle-end/45678, PR middle-end/45678, + PR middle-end/45704, PR rtl-optimization/45728, PR libfortran/45532, + PR rtl-optimization/45695, PR rtl-optimization/42775, PR target/45726, + PR tree-optimization/45623, PR tree-optimization/45709, PR debug/43628, + PR tree-optimization/45709, PR rtl-optimization/45593, PR fortran/45081, + * Find 32bit system libraries on sparc64, s390x. + * Remove README.Debian from the source package to avoid confusion for + readers of the packaging. + * Don't include info files and man pages in hppa64 and spu builds. + Closes: #597435. + * Apply proposed patch for PR mudflap/24619 (instrumentation of dlopen) + (Brian M. Carlson) Closes: #507514. + + -- Matthias Klose Sat, 25 Sep 2010 14:11:39 +0200 + +gcc-4.5 (4.5.1-7) experimental; urgency=low + + * Update to SVN 20100914 (r164279) from the gcc-4_5-branch. + - Fix PR target/40959, PR middle-end/45567, PR debug/45660, + PR rtl-optimization/41087, PR rtl-optimization/44919, PR target/36502, + PR target/42313, PR target/44651. + * Add support to build from the Linaro 4.5 2010.09 release. + * gcc-4.5-plugin-dev: Install config/arm/arm-cores.def. + * Remove non-existing URL's in README.c++ (Osamu Aoki). Closes: #596406. + * Don't provide c++abi2-dev for g++ cross builds. + * Don't pass -mimplicit-it=thumb if -mthumb to as on ARM, rejected upstream. + + -- Matthias Klose Tue, 14 Sep 2010 12:52:34 +0200 + +gcc-4.5 (4.5.1-6) experimental; urgency=low + + * Update to SVN 20100909 (r164132) from the gcc-4_5-branch. + - Fix PR middle-end/45312, PR bootstrap/43847, PR middle-end/44554, + PR middle-end/40386, PR other/45443, PR c++/45200, PR c++/45293, + PR c++/45558, PR fortran/45595, PR fortran/45530, PR fortran/45489, + PR fortran/45019, PR libstdc++/45398. + + [ Matthias Klose ] + * Tighten binutils dependencies to 2.20.1-14. + + [ Marcin Juszkiewicz ] + * Fix the gcc-4.5-plugin-dev package name for cross builds. LP: #631474. + * Build the gcc-4.5-plugin-dev for stage1 cross builds. + * Fix priorities and sections for some cross packages. + + [ Al Viro ] + * Fix installation of libgcc_s.so as a linker script for biarch builds. + + [ Kees Cook ] + * Push glibc stack traces into stderr when building the package. + * debian/patches/gcc-default-ssp.patch: Lower ssp-buffer-size to 4. + + -- Matthias Klose Fri, 10 Sep 2010 21:25:37 +0200 + +gcc-4.5 (4.5.1-5) experimental; urgency=low + + * Always add dependencies on multilib library packages in *-multilib + packages. + * Fix installation of libgcc_s.so on architectures when libgcc_s.so is + a linker script, not a symlink (Steve Langasek). Closes: #595474. + * Remove the lib32gcc1 preinst script. Closes: #595495. + + -- Matthias Klose Sat, 04 Sep 2010 12:41:40 +0200 + +gcc-4.5 (4.5.1-4) experimental; urgency=low + + * Update to SVN 20100903 (r163833) from the gcc-4_5-branch. + - Fix PR target/45070, PR middle-end/45458, PR rtl-optimization/45353, + PR middle-end/45423, PR c/45079, PR tree-optimization/45393, + PR c++/44991, PR middle-end/45484, PR debug/45500, PR lto/45496. + + [ Matthias Klose ] + * Install config/vxworks-dummy.h in the gcc-4.5-plugin-dev package + on armel, mipsel and sparc64 too. + * Cleanup packaging files in gcc-source package. + * [ARM] Provide __builtin_expect() hints in linux-atomic.c (backport). + + [ Al Viro ] + * Fix builds with disabled biarch library packages. + * New variables {usr_lib,gcc_lib_dir,libgcc_dir}{,32,64,n32}, and switch + to using them in rules.d/*; as the result, most of the explicit pathnames + in there are gone _and_ we get uniformity across different flavours. + * New variables {usr_lib,gcc_lib_dir,libgcc_dir}{,32,64,n32}, and switch + to using them in rules.d/*; as the result, most of the explicit pathnames + in there are gone _and_ we get uniformity across different flavours. + * Merge bi-/tri-arch stuff in binary-gcc.mk. + * Merge rules for libgcc biarch variants. + * Merge rules for libstdc++ biarch variants. Fix n32 variant of + libstdc++-dbg removing _pic.a from the wrong place. + * Merge libgfortran rules. + * Merge rules for cxx-multi and objc-multi packages. + * Enable gcc-hppa64 in cross-gcc-to-hppa build. + + [ Marcin Juszkiewicz ] + * Create libgcc1 and gcc-*-base packages for stage2 cross builds. + LP: #628855. + + -- Matthias Klose Fri, 03 Sep 2010 18:09:40 +0200 + +gcc-4.5 (4.5.1-3) experimental; urgency=low + + * Update to SVN 20100829 (r163627) from the gcc-4_5-branch. + - Fix PR target/45327, PR middle-end/45292, PR fortran/45344, + PR target/41484, PR rtl-optimization/44858, PR rtl-optimization/45400, + PR tree-optimization/45260, PR c++/45315. + + [ Matthias Klose ] + * Don't run the libstdc++ testsuite on armel on the buildds. + * Integrate and extend bi/tri-arch cross builds patches. + * Fix dependencies for mips* triarch library packages depend on *both* lib64* + and libn32* packages. Closes: #594540. + * Tighten binutils dependencies to 2.20.1-13. + * Update LAST_UPDATED file when applying upstream updates. + + [ Al Viro ] + * Bi/tri-arch cross builds patches. + * Fix installation paths in bi/tri-arch libobjc and libmudflap packages. + * Merge rules for all flavours of libgomp, libmudflap, libobjc. + * Crossbuild fix for lib32gomp (use $(PFL)/lib32 instead of $(lib32)). + * gcc-4.5: libgcc_s.so.1 symlink creation on cross-builds. + * Enable gcc-multilib for cross-builds and fix what needs fixing. + * Enable g++-multilib for cross-builds, fix pathnames. + * Enable gobjc/gobjc++ multilib for cross-builds, fixes. + * Enable gfortran multilib for cross-builds, fix paths. + * Multilib dependency fixes for cross-builds. + + -- Matthias Klose Sun, 29 Aug 2010 18:24:37 +0200 + +gcc-4.5 (4.5.1-2) experimental; urgency=low + + * Update to SVN 20100818 (r163323) from the gcc-4_5-branch. + - Fix PR target/41089, PR tree-optimization/44914, PR c++/45112, + PR fortran/44929, PR middle-end/45262, PR debug/45259, PR debug/45055, + PR target/44805, PR middle-end/45034, PR tree-optimization/45109, + PR target/44942, PR fortran/31588, PR fortran/43954, PR fortran/44660, + PR fortran/42051, PR fortran/44064, PR fortran/45151, PR libstdc++/44963, + PR tree-optimization/45241, PR middle-end/44632 (closes: #585925), + PR libstdc++/45283, PR target/45296. + + [ Matthias Klose ] + * Allow overwriting of the PF macro used in the build from the environment + (Jim Heck). Closes: #588381. + * Fix libc-dbg build dependency for java enabled builds. Addresses: #591424. + * gcj: Align data in .rodata.jutf8.* sections, patch taken from the trunk. + * Configure with --enable-checking+release. LP: #612822. + * Add the complete packaging to the -source package. LP: #608650. + * Drop the gcc-ix86-asm-generic32.diff patch. + * Tighten (build-) dependency on cloog-ppl (>= 0.15.9-2). + * Apply proposed patch for PR middle-end/45292. + * Re-enable running the libstdc++ testsuite on armel and ia64 on the buildds. + + [ Steve Langasek ] + * s,/lib/,/$(libdir)/, throughout debian/rules*; a no-op in the current + case, but required for us to find the libraries when building for + multiarch + * Don't append multiarch paths to any multilib paths except for the default; + our biarch (multilib) builds need to remain independent of multiarch in + the near term, so we want to make sure we can find /usr/lib32 without + /usr/lib/i486-linux-gnu being available. + * debian/control.m4, debian/rules.conf: conditionally set packages to be + Multi-Arch: yes when MULTIARCH is defined. + + [ Marcin Juszkiewicz ] + * Allow building intermediate stages for cross builds. LP: #603497. + + -- Matthias Klose Wed, 18 Aug 2010 07:00:12 +0200 + +gcc-4.5 (4.5.1-1) experimental; urgency=low + + * GCC-4.5.1 release. + * Update to SVN 20100731 (r162781) from the gcc-4_5-branch. + - Fix PR tree-optimization/45052, PR target/43698. + * Apply proposed fixes for PR c++/45112, PR c/45079. + * Install config/vxworks-dummy.h in the gcc-4.5-plugin-dev package + on armel, mips, mipsel, sh4, sparc, sparc64. Closes: #590054. + * Link executables statically when `static' is passed in DEB_BUILD_OPTIONS + (Jim Heck). Closes: #590102. + * Stop building java packages from the gcc-4.5 source package. + + -- Matthias Klose Sat, 31 Jul 2010 16:30:20 +0200 + +gcc-4.5 (4.5.0-10) experimental; urgency=low + + * Update to SVN 20100725 (r162508) from the gcc-4_5-branch. + - Fix PR tree-optimization/45047, PR c++/43016, PR c++/45008. + * Disable building gcj/libjava on mips/mipsel (fails to link libgcj). + * Update libstdc++6 symbols files. + + -- Matthias Klose Sun, 25 Jul 2010 16:39:11 +0200 + +gcc-4.5 (4.5.0-9) experimental; urgency=low + + * Update to SVN 20100723 (r162448) from the gcc-4_5-branch (post + GCC-4.5.1 release candidate 1). + - Fix PR debug/45015, PR target/44942, PR tree-optimization/44900, + PR tree-optimization/44977, PR c++/44996, PR fortran/44929, + PR fortran/30668, PR fortran/31346, PR fortran/34260, + PR fortran/40011. + + [ Marcin Juszkiewicz ] + * Fix dependencies on cross library packages. + * Copy all debian/rules* files to the -source package. + + [ Matthias Klose ] + * Fix versioned build dependency on gcc-4.x-source package for cross builds. + LP: #609060. + * Set Vcs attributes in control file. + + -- Matthias Klose Fri, 23 Jul 2010 13:08:07 +0200 + +gcc-4.5 (4.5.0-8) experimental; urgency=low + + * Update to SVN 20100718 (r161892) from the gcc-4_5-branch. + - Fixes: PR target/44531, PR bootstrap/44820, PR target/44597, + PR target/44705, PR middle-end/44777, PR debug/44694, PR c++/44039, + PR tree-optimization/43801, PR target/44575, PR debug/44104, + PR middle-end/44671, PR middle-end/44686, PR tree-optimization/44357, + PR debug/44694, PR middle-end/43866, PR debug/42278, PR c++/44059, + PR tree-optimization/43905, PR middle-end/44133, PR tree-optimize/44063, + PR tree-optimization/44683, PR rtl-optimization/43332, PR debug/44610, + PR middle-end/44684, PR tree-optimization/44393, PR middle-end/44674, + PR c++/44628, PR c++/44587, PR fortran/44582, PR fortran/43841, + PR fortran/43843, PR libstdc++/44708, PR tree-optimization/44886, + PR target/43888, PR tree-optimization/44284, PR middle-end/44828, + PR middle-end/41355, PR c++/44703, PR ada/43731, PR fortran/44773, + PR fortran/44847. + + [ Marcin Juszkiewicz ] + * debian/rules2: Merge rules.d includes. + * Properly -name -dbg packages for cross builds. + * Various cross build fixes. + * Build libmudflap packages for cross builds. + * Fix generation of maintainer scripts for cross packages. + * Build a gcc-base package for cross builds. + + [ Kees Cook ] + * Fix additional libstdc++ testsuite failures for hardening defaults. + + [ Samuel Thibault ] + * Update hurd patch for 4.5, fixing build failure. Closes: #584819. + + [ Matthias Klose ] + * gcc-arm-implicit-it.diff: Only pass -mimplicit-it=thumb when in + thumb mode (Andrew Stubbs). + + -- Matthias Klose Sun, 18 Jul 2010 10:53:51 +0200 + +gcc-4.5 (4.5.0-7) experimental; urgency=low + + * Update to SVN 20100625 (r161383) from the gcc-4_5-branch. + - Fixes: PR bootstrap/44426, PR target/44546, PR target/44261, + PR target/43740, PR libstdc++/44630 (closes: #577458), + PR c++/44627 (LP: #503668), PR target/39690, PR target/44615, + PR fortran/44556, PR c/44555. + - Update libstdc++'s pretty printer for python2.6. Closes: #585202. + + [ Matthias Klose ] + * Fix libstdc++ symbols files for powerpc and sparc. + * Add maintainer scripts for cross packages. + + [ Samuel Thibault ] + * Update hurd patch for 4.5, fixing build failure. Closes: #584454, + #584819. + + [ Marcin Juszkiewicz ] + * Merge the rules.d/binary-*-cross.mk files into rules.d/binary-*.mk. + + -- Matthias Klose Fri, 25 Jun 2010 15:57:38 +0200 + +gcc-4.5 (4.5.0-6) experimental; urgency=low + + [ Matthias Klose ] + + * Update to SVN 20100617 (r161901) from the gcc-4_5-branch. Fixes: + PR target/44169, PR bootstrap/43170, PR objc/35996, PR objc++/32052, + PR objc++/23716, PR lto/44464, PR rtl-optimization/42461, PR fortran/44536, + PR tree-optimization/44258, PR tree-optimization/44423, PR target/44534, + PR bootstrap/44426, PR tree-optimization/44508, PR tree-optimization/44507, + PR lto/42776, PR target/44481, PR debug/41371, PR bootstrap/37304, + PR target/44067, PR debug/41371, PR debug/41371, PR target/44075, + PR c++/44366, PR c++/44401, PR fortran/44347, PR fortran/44430, + PR lto/42776, PR libstdc++/44487, PR other/43838, PR libgcj/44216. + * debian/patches/cross-fixes.diff: Update for 4.5 (Marcin Juszkiewicz). + * debian/patches/libstdc++-pic.diff: Fix installation for cross builds. + * Fix PR bootstrap/43847, --enable-plugin for cross builds. + * Export long double versions of "C" math library for arm-linux-gnueabi, + m68k-linux-gnu (ColdFire), mips*-linux-gnu (o32 ABI), sh*-linux-gnu + (not 32 bit). Merge the libstdc++-*-ldbl-compat.diff patches. + * Merge binary-libgcc.mk packaging changes into binary-libgcc-cross.mk + (Loic Minier). + * Update libgcc and libstdc++ symbols files. + + [ Aurelien Jarno ] + + * libstdc++-mips-ldbl-compat.diff: On MIPS provide the long double + versions of "C" math functions in libstdc++ as we need to keep the + ABI. Closes: #584610. + + -- Matthias Klose Thu, 17 Jun 2010 14:56:14 +0200 + +gcc-4.5 (4.5.0-5) experimental; urgency=low + + * Update to SVN 20100602 (r160097) from the gcc-4_5-branch. Fixes: + PR target/44338, PR middle-end/44337, PR tree-optimization/44182, + PR target/44161, PR c++/44358, PR fortran/44360, PR lto/44385. + * Fix PR target/44261, taken from the trunk. Closes: #582787. + * Fix passing the expanded -iplugindir option. + * Disable broken profiled bootstrap on alpha. + * On ix86, pass -mtune=generic32 in 32bit mode to the assembler, when + configured for i586-linux-gnu or i686-linux-gnu. + + -- Matthias Klose Thu, 03 Jun 2010 00:44:37 +0200 + +gcc-4.5 (4.5.0-4) experimental; urgency=low + + * Update to SVN 20100527 (r160047) from the gcc-4_5-branch. Fixes: + PR rtl-optimization/44164, PR middle-end/44069, PR target/44199, + PR lto/44196, PR target/43733, PR target/44245, PR target/43869, + PR debug/44223, PR tree-optimization/44038, PR tree-optimization/43949, + PR debug/44205, PR debug/44178, PR bootstrap/43870, PR target/44202, + PR target/44074, PR lto/43455, PR lto/42653, PR lto/42425, PR lto/43080, + PR lto/43946, PR c++/43382, PR c++/41510, PR c++/44193, PR c++/44157, + PR c++/44158, PR lto/44256, PR libstdc++/44190, PR lto/44312, + PR target/43636, PR target/43726, PR c++/43555PR libstdc++/40497. + + [ Matthias Klose ] + + * Enable multilibs again on powerpcspe. Closes: #579780. + * Fix setting CC for REVERSE_CROSS build (host == target,host != build). + Closes: #579779. + * Fix setting biarch_cpu macro. + * Don't bother with un-normalized paths in .la files, just remove them. + * debian/locale-gen: Update locales needed for the libstdc++-v3 testsuite. + * If libstdc++6 is built from newer gcc-4.x source, run the libstdc++-v3 + testsuite against the installed lib too. + * Configure with --enable-secureplt on powerpcspe. + + [ Aurelien Jarno ] + + * Fix $(distrelease) on non-official archives. Fix powerpcspe, sh4 and + sparc64 builds. + + -- Matthias Klose Sun, 30 May 2010 12:52:02 +0200 + +gcc-4.5 (4.5.0-3) experimental; urgency=low + + * Update to SVN 20100519 (r159556) from the gcc-4_5-branch. Fixes: + PR c++/43704, PR fortran/43339, PR middle-end/43337, PR target/43635, + PR tree-optimization/43783, PR tree-optimization/43796, PR middle-end/43570, + PR libgomp/43706, PR libgomp/43569, PR middle-end/43835, PR c/43893, + PR tree-optimization/43572, PR tree-optimization/43845, PR libgcj/40860, + PR target/43744, PR debug/43370, PR c++/43880, PR middle-end/43671, + PR debug/43972, PR target/43921, PR c++/38064, PR c++/43953, + PR fortran/43985, PR fortran/43592, PR fortran/40539, PR c++/43787, + PR middle-end/44085, PR middle-end/44071, PR middle-end/43812, + PR debug/44028, PR rtl-optimization/44012, PR target/44046, + PR documentation/44016, PR fortran/44036, PR fortran/40728, + PR libstdc++/44014, PR lto/44184, PR bootstrap/42347, PR middle-end/44102, + PR c++/44127, PR debug/44136, PR target/44088, PR tree-optimization/44124, + PR fortran/43591, PR fortran/44135, PR libstdc++/43259. + + [ Matthias Klose ] + * Revert gcj-arm-no-merge-exidx-entries patch, fixed by PR libgcj/40860. + * Don't run the libstdc++-v3 testsuite on the ia64 buildds. Timeouts. + * Backport two libjava fixes from the trunk to run josm with gcj. + * Ubuntu only: + - Pass --hash-style=gnu instead of --hash-style=both to the linker. + * Preliminary architecture port for powerpcspe (Kyle Moffett). + Closes: #579780. + * Update configury to be able to target i686 instead of i486 on i386. + + [ Aurelien Jarno] + * Don't link with --hash-style=both on mips/mipsel as GNU hash is not + compatible with the MIPS ABI. + * Default to -mplt on mips(el), -march=mips2 and -mtune=mips32 on 32-bit + mips(el), -march=mips3 and -mtune=mips64 on 64-bit mips(el). + + -- Matthias Klose Wed, 19 May 2010 09:48:20 +0200 + +gcc-4.5 (4.5.0-2) experimental; urgency=low + + * Update to SVN 20100419 from the gcc-4_5-branch. + - Fix PR tree-optimization/43627, c++/43641, PR c++/43621, PR c++/43611, + PR fortran/31538, PR fortran/30073, PR target/43662, + PR tree-optimization/43572, PR tree-optimization/43771. + * Install the linker plugin. + * Search the linker plugin as a readable, not an executable file. + * Link with --hash-style=both on mips/mipsel. + * On mips, pass -mfix-loongson2f-nop to as, if -mno-fix-loongson2f-nop + is not passed. + * Sequel to PR40521, fix -g to generate .eh_frame on ARM. + * On ARM, let gcj pass --no-merge-exidx-entries to the linker. + * Build-depend/depend on binutils snapshot. + * Update NEWS.html and NEWS.gcc. + + -- Matthias Klose Mon, 19 Apr 2010 15:22:55 +0200 + +gcc-4.5 (4.5.0-1) experimental; urgency=low + + * GCC 4.5.0 release. + * Always apply biarch patches. + * Build the lto-linker plugin again. Closes: #575448. + * Run the libstdc++v3 testsuite on armel again. + * Fix --enable-libstdcxx-time documentation, show configure result. + * On linux targets always pass --no-add-needed to the linker. + * Update the patch to search for plugins in a default plugin directory. + * Fix java installations in snapshot builds. + * Configure --with-plugin-ld=ld.gold. + * Linker selection: ld is used by default, to use the gold linker, + pass -fuse-linker-plugin (no other side effects if -flto/-fwhopr + is not passed). To force ld.bfd or ld.gold, pass -B/usr/lib/compat-ld + for ld.bfd or /usr/lib/gold-ld for ld.gold. + * Don't apply the gold-and-ld patch for now. + * Stop building the documentation for dfsg compliant builds. Closes: #571759. + + -- Matthias Klose Wed, 14 Apr 2010 13:29:20 +0200 + +gcc-4.5 (4.5-20100404-1) experimental; urgency=low + + * Update to SVN 20100404 from the trunk. + * Fix build failures building cross compilers configure --with-ld. + * lib32gcc1: Set priority to `extra'. + * Apply proposed patch to search for plugins in a default plugin directory. + * In snapshot builds, use for javac/ecj1 the jvm provided by the package. + * libstdc++-arm-ldbl-compat.diff: On ARM provide the long double versions + of "C" math functions in libstdc++; these are dropped when built + against glibc-2.11. + + -- Matthias Klose Sun, 04 Apr 2010 15:51:25 +0200 + +gcc-4.5 (4.5-20100321-1) experimental; urgency=low + + * Update to SVN 20100321 from the trunk. + * gcj-4.5-jre-headless: Stop providing java-virtual-machine. + * gcj-4.5-plugin-dev: Don't suggest mudflap packages. + * Apply proposed patch to enable both gold and ld in a single toolchain. + New option -fuse-ld=ld.bfd, -fuse-ld=gold. + + -- Matthias Klose Sun, 21 Mar 2010 11:45:48 +0100 + +gcc-4.5 (4.5-20100227-1) experimental; urgency=low + + * Update to SVN 20100227 from the trunk. + * Don't run the libstdc++-v3 testsuite on arm*-*-linux-gnueabi, when + defaulting to thumb mode (Timeouts on the Ubuntu buildd). + + -- Matthias Klose Sat, 27 Feb 2010 08:29:55 +0100 + +gcc-4.5 (4.5-20100222-1) experimental; urgency=low + + * Update to SVN 20100222 from the trunk. + - Install additional header files needed by plugins. Closes: #562881. + * gcc-4.5-plugin-dev: Should depend on libgmp3-dev. Closes: #566366. + * Update libstdc++6 symbols files. + + -- Matthias Klose Tue, 23 Feb 2010 02:16:22 +0100 + +gcc-4.5 (4.5-20100216-0ubuntu1~ppa1) lucid; urgency=low + + * Update to SVN 20100216 from the trunk. + * Don't call dh_makeshlibs with -V for shared libraries with + symbol files. + * Don't run the libstdc++-v3 testsuite in thumb mode on armel + to work around buildd timeout (see PR target/42509). + + -- Matthias Klose Wed, 17 Feb 2010 02:06:02 +0100 + +gcc-4.5 (4.5-20100204-1) experimental; urgency=low + + * Update to SVN 20100204 from the trunk. + + -- Matthias Klose Thu, 04 Feb 2010 19:44:19 +0100 + +gcc-4.5 (4.5-20100202-1) experimental; urgency=low + + * Update to SVN 20100202 from the trunk. + - gcc-stack_chk_fail-check.diff: Remove, applied upstream. + * Update libstdc++6 symbol files. + * Build gnat in snapshot builds on arm. + * Configure with --enable-checking=yes for snapshot builds, and for + 4.5 builds before the release. + * Temporary workaround: On arm-linux-gnueabi run the libstdc++v3 testsuite + with -Wno-abi. + * When building the hppa64 cross compiler, add $(builddir)/gcc to + LD_LIBRARY_PATH to find the just built libgcc6. Closes: #565862. + * On sh4-linux, use sh as java architecture name instead of sh4. + * On armel, build gnat-4.5 using gcc-snapshot. + * Revert the bump of the libgcc soversion on hppa (6 -> 4). + + -- Matthias Klose Tue, 02 Feb 2010 19:35:25 +0100 + +gcc-4.5 (4.5-20100107-1) experimental; urgency=low + + [ Matthias Klose ] + * Update to SVN 20100107 from the trunk. + * Revert the workaround for the alpha build (PR bootstrap/42511 is fixed). + * testsuite-hardening-format.diff: Add a fix for the libstdc++ testsuite. + * Build-depend again on autogen. + * Work around PR lto/41569 (installation bug when configured with + --enabled-gold). + * On armel run the testsuite both in arm and thumb mode, when the + distribution is supporthing tumb processors. + * Work around PR target/42509 (armel), not setting BOOT_CFLAGS, but + applying libcpp-arm-workaround.diff. + + [ Nobuhiro Iwamatsu ] + * Update gcc-multiarch patch for sh4. + + -- Matthias Klose Thu, 07 Jan 2010 16:34:57 +0100 + +gcc-4.5 (4.5-20100106-0ubuntu1) lucid; urgency=low + + * Update to SVN 20100106 from the trunk. + * gcj-4.5-jdk: Include /usr/lib/jvm-exports. + * Rename libgcc symbols file for hppa. + * On alpha and armel, set BOOT_CFLAGS to -g -O1 to work around bootstrap + failures (see PR target/42509 (armel) and PR bootstrap/42511 (alpha)). + * Base the source build-dependency on the package version instead of the + gcc version. + + -- Matthias Klose Wed, 06 Jan 2010 14:17:29 +0100 + +gcc-4.5 (4.5-20100103-1) experimental; urgency=low + + * Update to SVN 20100103 from the trunk. + + [ Samuel Thibault ] + * Update hurd patch for 4.5. Closes: #562802. + + [ Aurelien Jarno ] + * Remove patches/kbsd-gnu-ada.diff (merged upstream). + + [ Matthias Klose ] + * libgcj11: Move .so symlinks into gcj-4.5-jdk. Addresses: #563280. + * gcc-snapshot: On sparc64, use gcc-snapshot as bootstrap compiler. + * Don't use expect-tcl8.3 on hppa anymore. + * Merge gnat-4.4 changes back from 4.4.2-5. + * Bump libgcc soversion on hppa (4 -> 6). + * Default to v9a (ultrasparc) on sparc*-linux. + + -- Matthias Klose Sun, 03 Jan 2010 17:25:27 +0100 + +gcc-4.5 (4.5-20091226-1) experimental; urgency=low + + * Update to SVN 20091226 from the trunk. + * Fix powerpc spu installation. + * Enable multiarch for sh4. + * Fix libffi multilib test runs. + * Configure the hppa -> hppa64 cross compiler --with-system-zlib. + * gcc-4.5-hppa64: Don't ship info dir file. + * lib32stdc++6{,-dbg}: Add dependency on 32bit glibc. + + -- Matthias Klose Sat, 26 Dec 2009 15:38:23 +0100 + +gcc-4.5 (4.5-20091223-1) experimental; urgency=low + + * Update to SVN 20091223 from the trunk. + + [ Matthias Klose ] + * Update hardening patches for 4.5. + * Don't call install-info directly, depend on dpkg | install-info instead. + * Add conflicts with packages built from GCC 4.4 sources. + * On ARM, pass --hash-style=both to ld. + * Update libgfortran3 symbols file. + * Update libstdc++6 symbols file. + + [ Arthur Loiret ] + * debian/rules.conf (gen_no_archs): Handle multiple arm ports. + + -- Matthias Klose Wed, 23 Dec 2009 18:02:24 +0100 + +gcc-4.5 (4.5-20091220-1) experimental; urgency=low + + * Update to SVN 20091220 from the trunk. + - Remove patches applied upstream: arm-boehm-gc-locks.diff, + arm-gcc-gcse.diff, deb-protoize.diff, gcc-arm-thumb2-sched.diff, + gcc-atom-doc.diff, gcc-atom.diff, gcc-build-id.diff, + gcc-unwind-debug-hook.diff, gcj-use-atomic-builtins-doc.diff, + gcj-use-atomic-builtins.diff, libjava-atomic-builtins-eabi.diff, + libjava-nobiarch-check-snap.diff, lp432222.diff, pr25509-doc.diff, + pr25509.diff, pr39429.diff, pr40133.diff, pr40134.diff, rev146451.diff, + s390-biarch-snap.diff, sh4-scheduling.diff, sh4_atomic_update.diff. + - Update patches: gcc-multiarch.diff, gcc-textdomain.diff, + libjava-nobiarch-check.diff, libjava-subdir.diff, libstdc++-doclink.diff, + libstdc++-man-3cxx.diff, libstdc++-pic.diff, note-gnu-stack.diff, + rename-info-files.diff, s390-biarch.diff. + * Stop building the protoize package, removed from the GCC 4.5 sources. + * gcc-4.5: Install lto1, lto-wrapper, and new header files for intrinsics. + * libstdc++6-4.5-dbg: Install the python files for use with gdb. + * Build java packages from the gcc-4.5 source package. + + -- Matthias Klose Sun, 20 Dec 2009 10:56:56 +0100 + +gcc-4.4 (4.4.2-6) unstable; urgency=low + + * Update to SVN 20091220 from the gcc-4_4-branch (r155367). + Fix PR c++/42387, PR c++/41183. + + [ Matthias Klose ] + * Apply svn-doc-updates.diff for non DFSG builds. + * gcc-snapshot: + - Remove patches integrated upstream: pr40133.diff. Closes: #561550. + + [ Nobuhiro Iwamatsu ] + * Backport linux atomic ops changes for sh4 from the trunk. Closes: #561550. + * Backport from trunk: [SH] Not run scheduling before reload as default. + Closes: #561429. + + [ Arthur Loiret ] + * Apply spu patches independently of the hardening patches; fix build + failure on powerpc. + + -- Matthias Klose Sun, 20 Dec 2009 10:20:19 +0100 + +gcc-4.4 (4.4.2-5) unstable; urgency=low + + * Update to SVN 20091212 from the gcc-4_4-branch (r155122). + Revert the fix for PR libstdc++/42261, fix PR fortran/42268, + PR target/42263, PR target/42263, PR target/41196, PR target/41939, + PR rtl-optimization/41574. + + [ Matthias Klose ] + * Regenerate svn-updates.diff. + * Disable biarch testsuite runs for libffi (broken and unused). + * Support xz compression of source tarballs. + * Fix typo in PR libstdc++/40133 to do the link tests. + * gcc-snapshot: + - Remove patches integrated upstream: pr40134-snap.diff. + - Update s390-biarch.diff for trunk. + + [ Aurelien Jarno ] + * Add sparc64 support: disable multilib and install the libraries + in /lib. + + -- Matthias Klose Sun, 13 Dec 2009 10:28:19 +0100 + +gcc-4.4 (4.4.2-4) unstable; urgency=low + + * Update to SVN 20091210 from the gcc-4_4-branch (r155122), Fixes: + PR target/42165, PR target/42113, PR libgfortran/42090, + PR middle-end/42049, PR c++/42234, PR fortran/41278, PR libstdc++/42261, + PR libstdc++/42273 PR java/41991. + + [ Matthias Klose ] + * gcc-arm-thumb2-sched.diff: Don't restrict reloads to LO_REGS for Thumb-2. + * PR target/40134: Don't redefine LIB_SPEC on hppa. + * PR target/42263, fix wrong code bugs in SMP support on ARM, backport from + the trunk. + * Pass -mimplicit-it=thumb to as by default on ARM, when configured + --with-mode=thumb. + * Fix boehm-gc build on ARM --with-mode=thumb. + * ARM: Don't copy uncopyable instructions in gcse.c (backport from trunk). + * Build the spu cross compiler for powerpc from the cell-4_4-branch. + * gcj: add option -fuse-atomic-builtins (backport from the trunk). + + [ Arthur Loiret ] + * Make svn update interdiffs more readable. + + -- Matthias Klose Thu, 10 Dec 2009 04:29:36 +0100 + +gcc-4.4 (4.4.2-3) unstable; urgency=low + + * Update to SVN 20091118 from the gcc-4_4-branch (r154294). + Fix PR PR c++/9381, PR c++/21008, PR c++/35067, PR c++/36912, PR c++/37037, + PR c++/37093, PR c++/38699, PR c++/39786, c++/36959, PR c++/41754, + PR c++/41876, PR c++/41967, PR c++/41972, PR c++/41994, PR c++/42059, + PR c++/42061, + PR fortran/41772, PR fortran/41850, PR fortran/41909, + PR middle-end/40946, PR middle-end/41317, R tree-optimization/41643, + PR target/41900, PR rtl-optimization/41917, PR middle-end/41963, + PR middle-end/42029. + * Snapshot builds: + - Patch updates. + - Configure with --disable-browser-plugin. + * Configure with --disable-libstdcxx-pch on hppa. + * Backport armel patches form the trunk: + - Fix PR objc/41848 - workaround ObjC and -fsection-anchors. + - Enable scheduling for Thumb-2, including the fix for PR target/42031. + - Fix PR target/41939, EABI violation in accessing values below the stack. + + -- Matthias Klose Wed, 18 Nov 2009 08:37:18 -0600 + +gcc-4.4 (4.4.2-2) unstable; urgency=low + + * Update to SVN 20091031 from the gcc-4_4-branch (r153603). + - Fix PR debug/40521, PR target/40913, PR middle-end/22072, + PR target/41665, PR c++/38798, PR c++/40092, PR c++/37875, + PR c++/37204, PR fortran/41755, PR libstdc++/40654, PR libstdc++/40826, + PR target/41702, PR c/41842, PR target/41762, PR c++/40808, + PR fortran/41777, PR libstdc++/40852. + * Snapshot builds: + - Configure with --enable-plugin, disable the gcjwebplugin by a patch. + Addresses: #551200. + - Proposed patch for PR lto/41652, compile lto-plugin with + -D_FILE_OFFSET_BITS=64 + - Allow disabling the ada build via DEB_BUILD_OPTIONS nolang=ada. + * Fixes for reverse cross builds. + * On sparc default to v9 in 32bit mode. + * Fix __stack_chk_fail check for cross builds configured --with-headers. + * Apply some fixes for uClibc cross builds (Jonas Meyer, Hector Oron). + + -- Matthias Klose Sat, 31 Oct 2009 14:16:03 +0100 + +gcc-4.4 (4.4.2-1) unstable; urgency=low + + * GCC 4.4.2 release. + - Fixes PR target/26515, PR target/41680, PR rtl-optimization/41646, + PR c++/39863, PR c++/41038. + * Fix setting timeout for testsuite runs. + * gcj-4.4/gcc-snapshot: Drop build-dependency on libgconf2-dev, disabled + by default. + * gcj-4.4: Run the libffi testsuite as well. + * Add explicit build dependency on zlib1g-dev. + * Fix cross builds, add support for gomp and gfortran (only tested for + non-biarch targets). + * (Build-)depend on binutils-2.20. + * Fix up omp.h for multilibs (taken from Fedora). + + -- Matthias Klose Sun, 18 Oct 2009 02:31:32 +0200 + +gcc-4.4 (4.4.1-6) unstable; urgency=low + + * Snapshot builds: + - Add build dependency on libelfg0-dev (>= 0.8.12). + - Add build dependency on binutils-gold where available. + - Suggest binutils-gold; not perfect, it is required when using + -use-linker-plugin. + - Work around installation failure in the lto-plugin (PR lto/41569). + - Install java home symlinks in /usr/lib/jvm. + - Revert the dwarf2cfi_asm workaround, obsoleted by PR debug/40521. + * PR debug/40521: + - Apply patch for PR debug/40521, taken from the trunk. + - Revert the dwarf2cfi_asm workaround, obsoleted by PR debug/40521. + - Depend on binutils (>= 2.19.91.20091005). + * Update to SVN 20091005 from the gcc-4_4-branch (r152450). + - Fixes PR fortran/41479. + * In the test summary, add more information about package versions + used for the build. + + -- Matthias Klose Wed, 07 Oct 2009 02:12:56 +0200 + +gcc-4.4 (4.4.1-5) unstable; urgency=medium + + * Update to SVN 20091003 from the gcc-4_4-branch (r152174). + - Fixes PR target/22093, PR c/39779, PR libffi/40242, PR target/40473, + PR debug/40521, PR c/41049, PR debug/41065, PR ada/41100, + PR tree-optimization/41101, PR libgfortran/41328, PR libffi/41443, + PR fortran/41515. + * Updates for snapshot builds: + - Fix build dependency on automake for snapshot builds. + - Update patches pr40134-snap and libjava-nobiarch-check-snap. + * Fix lintian errors in libstdc++ packages and lintian warnings in the + source package. + * Add debian/README.source. + * Don't apply PR libstdc++/39491 for the trunk anymore. + * Install java home symlinks for snapshot builds in /usr/lib/jvm, + including javac. Depend on ecj. Addresses #536102. + * Fix build failure on armel with -mfloat-abi=softfp. + * Don't pessimize the code for newer armv6 and armv7 processors. + * libjava: Use atomic builtins For Linux ARM/EABI, backported from the + trunk. + * Proposed patch to fix wrong-code on powerpc (Alan Modra). LP: #432222. + * Link against -ldl instead of -lcloog -lppl. Exit with an error when using + the Graphite loop transformation infrastructure without having the + libcloog-ppl0 package installed (patch taken from Fedora). Packages + using these optimizations should build-depend on libcloog-ppl0. + gcc-4.4: Suggest the cloog runtime libraries. + * Install a hook _Unwind_DebugHook, called during unwinding. Intended as + a hook for a debugger to intercept exceptions. CFA is the CFA of the + target frame. HANDLER is the PC to which control will be transferred + (patch taken from Fedora). + + -- Matthias Klose Sat, 03 Oct 2009 13:33:05 +0100 + +gcc-4.4 (4.4.1-4) unstable; urgency=low + + * Update to SVN 20090911 from the gcc-4_4-branch (r151649). + - Fixes PR target/34412, PR middle-end/41094, PR target/40718, + PR fortran/41062, PR libstdc++/41005, PR target/41184, + PR bootstrap/41180, PR c++/41127, PR fortran/41258, + PR rtl-optimization/40861, PR target/41315, PR fortran/39876. + + [ Matthias Klose ] + * Avoid underscores in doc-base document id's to workaround a + dh_installdocs bug. + * Update file names for the Ada user's guide. + * Set Homepage attribute for packages. + * Update the patch for gnat on armel. + * gcj-4.4-jdk: Depend on libantlr-java. Addresses: #546062. + * Backport patch for PR tree-optimization/41101 from the trunk. + Closes: #541816. + * Update libstdc++6.symbols for symbols introduced with the fix + for PR libstdc++/41005. + * Apply proposed patches for PR libstdc++/40133 and PR target/40134. + Add symbols exception propagation support in libstdc++ on armel + to the libstdc++6 symbols. + + [ Ludovic Brenta] + Merge from gnat-4.4 (4.4.1-3) unstable; urgency=low + * debian/rules.defs, debian/rules.d/binary-ada.mk, debian/rules.patch: + better support for architectures that support only one exception + handling mechanism (SJLJ or ZCX). + + -- Matthias Klose Sat, 12 Sep 2009 03:18:17 +0200 + +gcc-4.4 (4.4.1-3) unstable; urgency=low + + * Update to SVN 20090822 from the gcc-4_4-branch (r151011). + - Fixes PR tree-optimization/41016, PR tree-optimization/41011, + PR tree-optimization/41008, PR tree-optimization/40991, + PR tree-optimization/40964, PR target/8603 (closes: #161432), + PR target/41019, PR target/41015, PR target/40957, PR target/40934, + PR rtl-optimization/41033, PR middle-end/41047, PR middle-end/41006, + PR fortran/41070, PR fortran/40995, PR fortran/40847, PR debug/40990, + PR debug/37801, PR c/41046, PR c/40948, PR c/40866, PR bootstrap/41018, + PR middle-end/41123,PR target/40971, PR c++/41131, PR fortran/41102, + PR libfortran/40962. + + [ Arthur Loiret ] + * Only use -fno-stack-protector when known to the stage1 compiler. + + [ Aurelien Jarno ] + * lib32* packages: remove the Pre-Depends: libc6-i386 (>= 2.9-18) and + upgrade the Conflicts: libc6-i386 from (<< 2.9-18) to (<< 2.9-22). + Closes: #537466. + * kbsd-gnu-ada.dpatch: add support for kfreebsd-amd64. + + [ Matthias Klose ] + * Build gnat on armel, the gnat-4.4 build still failing, gcc-snapshot + builds good enough to build itself. + * Merge enough of the gnat-4.4 changes back to allow a combined build + from the gcc-4.4 source. + * Build libgnatprj for armel. + * On armel build just one version of the ada run-time library. + * Update auto* build dependencies for snapshot builds. + * Apply proposed patch for PR target/40718. + + -- Matthias Klose Sun, 23 Aug 2009 11:50:38 +0200 + +gcc-4.4 (4.4.1-2) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20090808 from the gcc-4_4-branch (r150577). + - Fixes PR target/40832, PR rtl-optimization/40710, + PR tree-optimization/40321, PR build/40010, PR fortran/40727, + PR build/40010, PR rtl-optimization/40924, PR c/39902, + PR middle-end/40943, PR target/40577, PR c++/39987, PR debug/39706, + PR c++/40948, PR c++/40749, PR fortran/40851, PR fortran/40878, + PR target/40906. + * Bump GCC version required in dependencies to 4.4.1. + * Enable Ada for snapshot builds on all archs with a gnat package + available in the archive. + * Build-depend on binutils 2.19.51.20090805, needed at least for armel. + + [ Aurelien Jarno ] + * kbsd-gnu-ada.dpatch: new patch to fix build on GNU/kFreeBSD. + + -- Matthias Klose Sat, 08 Aug 2009 10:17:39 +0200 + +gcc-4.4 (4.4.1-1) unstable; urgency=low + + * GCC 4.4.1 release. + - Fixes PR target/39943, PR tree-optimization/40792, PR c++/40780, + PR middle-end/40747, PR libstdc++/40691, PR libfortran/40714, + PR tree-optimization/40813 (ICE in OpenJDK build on sparc). + * Apply proposed patch for PR target/39429, an ARM wrong-code error. + * Fix a typo in the arm back-end (proposed patch). + * Build-depend on libmpc-dev for snapshot builds. + * Fix build failure in cross builds (Hector Oron). Closes: #522597. + * Run the testsuite as part of the build target, not the install target. + + -- Matthias Klose Wed, 22 Jul 2009 13:24:39 +0200 + +gcc-4.4 (4.4.0-11) unstable; urgency=medium + + [ Matthias Klose ] + * Update to SVN 20090715 from the gcc-4_4-branch (r149690). + - Corresponds to the 4.4.1 release candidate. + - Fixes PR target/38900, PR debug/40666, PR middle-end/40669, + PR middle-end/40328, PR target/40587, PR middle-end/40585, + PR c++/40566, PR tree-optimization/40542, PR c/39902, + PR tree-optimization/40579, PR tree-optimization/40550, PR c++/40684, + PR c++/35828, PR c++/37816, PR c++/40639, PR c++/40633, PR c++/40619, + PR c++/40595, PR fortran/40440, PR fortran/40551, PR fortran/40638, + PR fortran/40443, PR libstdc++/40600, PR rtl-optimization/40667, PR c++/40740, + PR c++/36628, PR c++/37206, PR c++/40689, PR c++/40502, PR middle-end/40747. + * Backport of PR c/25509, new option -Wno-unused-result. LP: #305176. + * gcc-4.4: Depend on libgomp1, even if not building the libgomp1 package. + * Add proposed patches for PR libstdc++/40133, PR target/40134; don't apply + yet. + + [Emilio Pozuelo Monfort] + * Backport build-id support, configure with --enable-linker-build-id. + + -- Matthias Klose Tue, 14 Jul 2009 16:09:33 -0400 + +gcc-4.4 (4.4.0-10) unstable; urgency=low + + [ Arthur Loiret ] + * debian/rules.patch: Record the auto* calls to run them once only. + + [ Matthias Klose ] + * Update to SVN 20090627 from the gcc-4_4-branch (r149023). + - Fixes PR other/40024. + * Fix typo, adding blacklisted symbols to the libgcc1 symbols file on armel. + * On mips/mipsel use -O2 in STAGE1_CFLAGS until binutils is updated. + + -- Matthias Klose Sun, 28 Jun 2009 10:13:08 +0200 + +gcc-4.4 (4.4.0-9) unstable; urgency=high + + * Update to SVN 20090624 from the gcc-4_4-branch (r148821). + - Fix PR objc/28050 (LP: #362217), PR libstdc++/40297, PR c++/40342. + * Continue the well planned lib32 transition on amd64, adding pre-dependencies + on libc6-i386 (>= 2.9-18) on Debian. Closes: #533767. + * Enable SSP on arm and armel, run the testsuite with -fstack-protector. + LP: #375189. + * Fix spu fortran build in gcc-snapshot builds. + * Add missing symbols for 64bit libgfortran library. + * Update libstdc++ symbol files for sparc 64bit, adding symbols + for exception propagation support. + * Explicitely add __aeabi symbols to the libgcc1 symbols file on armel. + Closes: #533843. + + -- Matthias Klose Wed, 24 Jun 2009 23:46:02 +0200 + +gcc-4.4 (4.4.0-8) unstable; urgency=medium + + * Let all 32bit libs conflict with libc6-i386 (<< 2.9-17). Closes: #533767. + * Update to SVN 20090620 from the gcc-4_4-branch (r148747). + - Fixes PR fortran/39800, PR fortran/40402. + * Work around tar bug on kfreebsd unpacking java class file updates (#533356). + + -- Matthias Klose Sat, 20 Jun 2009 15:15:22 +0200 + +gcc-4.4 (4.4.0-7) unstable; urgency=medium + + * Update to SVN 20090618 from the gcc-4_4-branch (r148685). + - Fixes PR middle-end/40446, PR middle-end/40389, PR middle-end/40460, + PR fortran/40168, PR target/40470. + * On amd64, install 32bit libraries into /lib32 and /usr/lib32. + * lib32gcc1, lib32gomp1, lib32stdc++6: Conflict with libc6-i386 (= 2.9-15), + libc6-i386 (= 2.9-16). + * Handle serialver alternative in -jdk install scripts, not in -jre-headless. + + -- Matthias Klose Fri, 19 Jun 2009 01:36:00 +0200 + +gcc-4.4 (4.4.0-6) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20090612 from the gcc-4_4-branch (r148433). + - Fixes PR c++/38064, PR c++/40139, PR target/40017, PR target/40266, + PR bootstrap/40027, PR tree-optimization/40087, PR target/39856, + PR rtl-optimization/40105, PR target/39942, PR middle-end/40204, + PR debug/40109, PR tree-optimization/39999, PR libfortran/37754, + PR fortran/22423, PR libfortran/39667, PR libfortran/39782, + PR libfortran/38668, PR libfortran/39665, PR libfortran/39702, + PR libfortran/39709, PR libfortran/39665i, PR libgfortran/39664, + PR fortran/38654, PR libfortran/37754, PR libfortran/37754, + PR libfortran/25561, PR libfortran/37754, PR middle-end/40291, + PR target/40017, PR middle-end/40340, PR c++/40308, PR c++/40311, + PR c++/40306, PR c++/40307, PR c++/40370, PR c++/40372, PR c++/40373, + PR c++/40381, PR fortran/40019, PR fortran/39893. + * gcj-4.4-jdk: Depend on libecj-java-gcj instead of libecj-java. + * Let gjdoc --version use the Configuration class instead of + version.properties (Alexander Sack). LP: #385682. + * Preserve libgcc_s.so linker scripts. Closes: #532263. + + [Ludovic Brenta] + * debian/patches/ppc64-ada.dpatch, + debian/patches/ada-mips.dpatch, + debian/patches/ada-mipsel.dpatch: remove, merged upstream. + * debian/patches/*ada*.dpatch: + - rename to *.diff; + - remove the dpatch prologue shell script + - refresh with quilt -p ab and without time stamps + - adjust to GCC 4.4 + * debian/patches/ada-library-project-files-soname.diff, + debian/patches/ada-polyorb-dsa.diff, + debian/patches/pr39856.diff: new. + * debian/rules.patch: adjust accordingly. + * debian/rules.defs: re-enable Ada. + * debian/rules2: do a lean bootstrap when building Ada. + * debian/rules.d/binary-ada.mk: do not build gnatbl or gprmake anymore, + removed upstream. + + -- Matthias Klose Fri, 12 Jun 2009 18:34:13 +0200 + +gcc-4.4 (4.4.0-5) unstable; urgency=medium + + * Update to SVN 20090517 from the gcc-4_4-branch (r147630). + - Fixes PR tree-optimization/40062, PR middle-end/39986, + PR middle-end/40057, PR fortran/39879, PR libstdc++/40038, + PR middle-end/40035, PR target/37179, PR middle-end/39666, + PR tree-optimization/40074, PR fortran/40018, PR fortran/38863, + PR middle-end/40147, PR fortran/40018, PR target/40153. + + [ Matthias Klose ] + * Update libstdc++ symbols files. + * Update libgcc, libobjc, libstdc++ symbols files for armel. + * Fix version symlink in gcc_lib_dir. Closes: #527837. + * Fix symlinks for javac and header files in /usr/lib/jvm. + Closes: #528084. + * Don't build the stage1 compiler with -O with recent binutils (trunk). + * Revert doing link tests to check for the atomic builtins, disabling + exception propagation support in libstdc++ on armel. See PR40133, PR40134. + * On mips/mipsel don't run the java testsuite with -mabi=64. + * Default to armv4 for the gcc-snapshot package as well. Closes: #523936. + * Mention GCC trunk in the gcc-snapshot package description. Closes: #526309. + * Remove unneed '..' elements from symlinks in JAVA_HOME. + * Fix some lintian warnings for gcc-snapshot. + + [ Arthur Loiret ] + * Add missing dir separator to multiarch path. Closes: #527537. + + -- Matthias Klose Sun, 17 May 2009 11:15:52 +0200 + +gcc-4.4 (4.4.0-4) unstable; urgency=medium + + * Update to SVN 20090506 from the gcc-4_4-branch (r147161). + - Fixes PR rtl-optimization/39914, PR testsuite/39776, + PR tree-optimization/40022, PR libstdc++/39909. + + [ Matthias Klose ] + * gcc-4.4-source: Don't depend on gcc-4.4-base, depend on quilt + and patchutils. + * On armel, link the shared libstdc++ with both -lgcc_s and -lgcc. + * Update libgcc and libstdc++ symbol files for mips and mipsel. + * Update libstdc++ symbol files for armel and hppa, adding symbols + for exception propagation support. + * Add ARM EABI symbols to libstdc++ symbol files for armel. + * Add libobjc symbols file for armel. + * Fix PR libstdc++/40038, missing ceill/tanhl symbols in libstdc++. + + [ Aurelien Jarno ] + * Fix libc name for biarch packages on kfreebsd-amd64. + + -- Matthias Klose Wed, 06 May 2009 15:10:36 +0200 + +gcc-4.4 (4.4.0-3) unstable; urgency=low + + * libstdc++-doc: Install the man pages again. + * Fix build configuration for the GC enabled ObjC runtime library. + * Fix thinko in autotools_files, resulting in autoconf not run in + some cases. + * Do link tests to check for the atomic builtins, enables exception + propagation support in libstdc++ on armel and hppa. + + -- Matthias Klose Sun, 03 May 2009 23:38:56 +0200 + +gcc-4.4 (4.4.0-2) unstable; urgency=low + + [ Samuel Thibault ] + * Enable java build on the hurd. + + [ Matthias Klose ] + * libobjc2.symbols.armel: Remove, use the default one. + * Address PR libstdc++/39491, removing __signbitl from the libstdc++6 + symbols file on hppa. + * libstdc++6.symbols.armel: Fix error introduced with copy from the + arm symbols file. + * libstdc++6.symbols.*: Don't assume exception propagation support + enabled for all architectures (although it should on armel, hppa, + sparc). + * Disable the build of the ObjC garbage collection library on mips*, + working around a build failure. + + -- Matthias Klose Sat, 02 May 2009 14:22:35 +0200 + +gcc-4.4 (4.4.0-1) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20090429 from the gcc-4_4-branch (r146989). + * Configure java enabled builds with --enable-java-home. + * Integrate the bits previously found in java-gcj-compat. + * Rename the packages using the naming schema used for OpenJDK: + gcj-X.Y-{jre-headless,jre,jre-lib,jdk,source}. The packages + {gij,gcj,gappletviewer}-X.Y and libgcjN-{jar,source} are gone. + * Build the libgcj documentation with the just built gjdoc. + * Don't use profiled bootstrap when building the gcj source. + * Apply proposed patch for PR target/39856. + * Fix some lintian warnings. + * Don't include debug symbols for libstdc++.so.6, if the library is + built by a newer GCC version. + * Adjust hrefs to point to the local libstdc++ documentation. LP: #365414. + * Update libgcc, libgfortran, libobjc, libstdc++ symbol files. + * gcc-4.4: Include libssp_nonshared.a. + * For ix86, set the java architecture directory to i386. + + [ Samuel Thibault ] + * Update Hurd changes. + * Configure with --enable-clocale=gnu on hurd-i386. + * debian/patches/hurd-pthread.diff: Reapply. + + -- Matthias Klose Thu, 30 Apr 2009 00:30:20 +0200 + +gcc-4.4 (4.4.0-1~exp2) experimental; urgency=low + + * Update to SVN 20090423 from the gcc-4_4-branch. + + [ Aurelien Jarno ] + * kbsd-gnu.diff: remove parts merged upstream. + + [ Matthias Klose ] + * Remove conflicts/replaces for *-spu packages. + * Configure the spu cross compiler without --with-sysroot and + --enable-multiarch. + * Fix and reenable the gfortran-spu build. + * Work around build failures with missing libstdc++ baseline files. + * Install gjdoc man page. + * Fix java configuration with --enable-java-home and include symlinks + for JAVA_HOME in /usr/lib/jvm. + * Apply proposed fix for PR middle-end/39794. + * Install libstdc++ man pages with suffix .3cxx instead of .3. + Closes: #525244. + * lib*stdc++6-{dbg,doc}: Add conflicts to the corresponding 4.3 packages. + + -- Matthias Klose Thu, 23 Apr 2009 18:11:49 +0200 + +gcc-4.4 (4.4.0-1~exp1) experimental; urgency=low + + * Final GCC 4.4.0 release. + + * Don't build the Fortran SPU cross compiler, currently broken. + * spu cross build: Build without spucache and spumea64. + * Configure --with-arch-32=i486 on amd64, i386, and kfreebsd-{amd64,i386}, + --with-arch-32=i586 on hurd-i386, --with-cpu=atom on lpia. + * Build using profiled bootstrap. + * Remove the gcc-4.4-base.postinst. Addresses: #524708. + * Update debian/copyright: Include runtime library exception, remove + D and Phobas license. + * Apply proposed patch for PR libstdc++/39491, missing symbol in libstdc++ + on hppa. + * Remove unsused soft-fp functions in the 64bit libgcc on powerpc (PR39828). + * Update NEWS files for 4.4. + * Build again libgfortran for the non-default multilib configuration. + * Restore missing chunks in note-gnu-stack.diff, lost during the conversion + to quilt. + + -- Matthias Klose Wed, 22 Apr 2009 00:53:16 +0200 + +gcc-4.4 (4.4-20090418-1) experimental; urgency=low + + * Update to SVN 20090418 from the gcc-4_4-branch. + + [ Arthur Loiret ] + * Update patches: + - boehm-gc-nocheck, cross-include, libjava-rpath, link-libs: + Rebase on trunk. + - gcc-m68k-pch, libjava-debuginfo, libjava-loading-constraints: + Remove, merged in trunk. + - cell-branch, cell-branch-doc: Remove, there is no upstream cell 4.4 + branch yet. + - gdc-fix-build-kbsd-gnu, svn-gdc-updates, gpc-4.1, gpc-gcc-4.x, + gpc-names: Remove, gpc and gdc are not ported to GCC 4.4 yet. + - svn-class-updates, svn-doc-updates, svn-updates: Make empty. + - Refresh all others, and convert them all to quilt. + + * Build system improvements: + - Partial rewrite/refactor of rules files. + - Switch patch system to quilt. + - Autogenerate debian/copyright. + - Use the autoconf2.59 package. + + * multilib/multiarch support improvements: Closes: #369064, #484589. + - mips-triarch.diff: Replace with a newer version (approved upstream). + - s390-biarch.diff: Ditto. + - debian/rules2: Configure with --enable-targets=all on mips-linux, + mipsel-linux and s390-linux. + - gcc-multiarch.diff: New, add multiarch include directories and + libraries path to the system paths. + - debian/rules2: Configure with --enable-multiarch. Configure spu build + with --with-multiarch-defaults=spu-elf. + - multiarch-include.diff: Remove. + - debian/multiarch.inc: Ditto. + + * cross-compilers changes: + - Never build a separated -base package, don't symlink any doc dir. + - Build gobjc again. + + * Run the 64-bit tests with -mabi=64 instead of -m64 on mips/mipsel to + hopefully fix the massive failure. + * Always set $(distribution) to "Debian" on mips/mipsel, workarounds FTBFS + on those archs due to a kernel bug triggered by lsb_release call. + Adresses: #524416. + * debian/rules.patch: Only apply the ada-nobiarch-check patch when ada is + enabled. Remove gpc and gdc patches. + * debian/rules.unpack (install_autotools_stamp): Remove. + * debian/rules.defs (configure_dependencies): Remove autotools dependency. + * debian/rules.conf: Add a copyright-file target. + * debian/control.m4: Build-Depends on autoconf2.59 and patchutils. + Make gcc-4.4-source Depends on autoconf2.59. + Add myself to Uploaders. + * debian/rules.d/binary-source.mk: Don't build and install an embedded + copy or autoconf2.59 in gcc-4.4-source. + * debian/copyright.in: New. + + [ Matthias Klose ] + * Build gcj on hppa. + * Add support to build vfp optimized runtime libraries on armel. + * gcc-4.4-spu: Depend on newlib-spu. + * Fix sections of -dbg and java packages. + * gcc-default-ssp.dpatch: Set the default as well, when calling the + preprocessor. LP: #346126. + * Build-depend on quilt. + * Keep the copyright file in the archive. + * Remove conflict of the gcc-X.Y-source packages. + * Update removal of gfdl doc files for 4.4. + * Don't re-run the autotools (introduced with the switch to quilt). + * On arm and armel, install the arm_neon.h header. LP: #360819. + * When hardening options are turned on by default, patch the testsuite + to handle the hardening defaults (Kees Cook). + * Only run the patch target once. Avoids multiple autotool runs, but + doesn't reflect changes in the series file anymore. + * libgcj-doc: Fix documentation title. + * Fix gcj source build with recent build changes. + * Don't check for libraries in DEB_BUILD_OPTIONS/nolang. + * gappletviewer: Include missing binary. + + [ Aurelien Jarno ] + * Remove: patches/kbsd-gnu-ada.dpatch (merged upstream). + * kbsd-gnu.diff: add fix for stuff broken by upstream. + + -- Matthias Klose Mon, 20 Apr 2009 01:34:26 +0200 + +gcc-4.4 (4.4-20090317-1) experimental; urgency=low + + * Initial upload of GCC-4.4, based on trunk 20090317 (r144904). + + [Matthias Klose] + * Branch from the gcc-4.3 packaging. + * Remove *-trunk patches, update remaining patches for the trunk. + * Remove patches integrated upstream: libobjc-gc-link, libjava-file-support, + libjava-realloc-leak, libjava-armel-ldflags, libstdc++-symbols-hppa, + gcc-m68k-pch, libjava-extra-cflags, libjava-javah-bridge-tgts, + hppa-atomic-builtins, armel-atomic-builtins, libssp-gnu, libobjc-armel, + gfortran-armel-updates, sparc-biarch, libjava-xulrunner-1.9. + * Update patches for 4.4, mostly using the patches converted for quilt by + Arthur Loiret. + * debian/patches/libjava-soname.dpatch: Remove, unmodifed upstream library. + * debian/patches/gcc-driver-extra-langs.dpatch: Search Ada files in subdir. + * debian/rules.unpack, debian/rules.d/binary-source.mk: Update for included + autoconf tarball. + * debian/rules.d/binary-{gcc,java}.mk: Install new header files. + * debian/libgfortran3.symbols.common: Remove symbol not generated by + gfortran (__iso_c_binding_c_f_procpointer@GFORTRAN_1.0), PR38871. + * debian/rules.conf: Update for 4.4. + * Fix build dependencies and configure options for 4.4, which were applied + for snapshot builds only. + + [Arthur Loiret] + * Update patches from debian/patches: + - Remove backported fixes: + PR ada: pr10768.dpatch, pr15808.dpatch, pr15915.dpatch, pr16086.dpatch, + pr16087.dpatch, pr16098.dpatch, pr17985.dpatch, pr18680.dpatch, + pr22255.dpatch, pr22387.dpatch, pr28305.dpatch, pr28733.dpatch, + pr29015.dpatch, pr30740.dpatch, pr30827.dpatch pr33688.dpatch, + pr34466.dpatch, pr35050.dpatch, pr35792.dpatch. + PR target: pr27880.dpatch, pr28102.dpatch, pr30961.dpatch, + pr35965.dpatch, pr37661.dpatch. + PR libgcj: pr24170.dpatch, pr35020.dpatch. + PR gcov-profile: pr38292.dpatch. + PR other: pr28322.dpatch. + * debian/rules.patch: Update. + * debian/symbols/libgomp1.symbols.common: Add new symbols from OpenMP 3.0. + + -- Matthias Klose Tue, 17 Mar 2009 02:28:01 +0100 + +gcc-4.3 (4.3.3-5) unstable; urgency=low + + Merge from gnat-4.3 (4.3.3-1): + + [Petr Salinger] + * debian/patches/ada-libgnatprj.dpatch: enable support for GNU/kFreeBSD. + Fixes: #512277. + + [Ludovic Brenta] + * debian/patches/ada-acats.dpatch: attempt to fix ACATS tests (not entirely + successful yet). + * New upstream version. Fixes: #514565. + + [Matthias Klose] + * Update to SVN 20090301 from the gcc-4_3-branch. + - Fix PR c/35446, PR c++/38950, PR fortran/38852, PR fortran/39006, + PR c++/39225 (closes: #516727), PR c++/38950, PR target/38056, + PR target/39228, PR middle-end/36578, PR inline-asm/39058, + PR middle-end/37861. + * Don't provide the 4.3.2 symlink in gcc_lib_dir anymore. + * Require binutils-2.19.1. + + -- Matthias Klose Sun, 01 Mar 2009 14:18:09 +0100 + +gcc-4.3 (4.3.3-4) unstable; urgency=low + + * Fix Fix PR gcov-profile/38292 (wrong profile information), taken + from the trunk. + * Update to SVN 20090215 from the gcc-4_3-branch. + Fix PR c/35435, PR tree-optimization/39100, PR rtl-optimization/39076, + PR c/35433, PR tree-optimization/39041, PR target/38988, + PR middle-end/38969, PR c++/36897, PR c++/39054, PR c/39035, PR c/35434, + PR c/36432, PR target/38991, PR c/39084, PR target/39118. + * Reapply the fix for PR middle-end/38615. + * Include autoconf-2.59 sources into the source package, and install as + part of the gcc-4.3-source package. + * Explicitely use autoconf-1.9. + * Disable building the gcjwebplugin. + * Don't configure with --enable-cld on amd64 and i386. + + -- Matthias Klose Sun, 15 Feb 2009 23:40:09 +0100 + +gcc-4.3 (4.3.3-3) unstable; urgency=medium + + * Revert fix for PR middle-end/38615. Closes: #513420. + + -- Matthias Klose Thu, 29 Jan 2009 07:05:15 +0100 + +gcc-4.3 (4.3.3-2) unstable; urgency=low + + * Update to SVN 20090127 from the gcc-4_3-branch. + - Fix PR tree-optimization/38359. Closes: #492505. + - Fix PR tree-optimization/38932 (ice-on-valid-code), PR target/38931 + (ice-on-valid-code), PR rtl-optimization/38879 (wrong-code), + PR c++/23287 (rejects-valid), PR fortran/38907 (ice-on-valid-code), + PR fortran/38859 (wrong-code), PR fortran/38657 (rejects-valid), + PR fortran/38672 (ice-on-valid-code). + * Fix PR middle-end/38969, taken from the trunk. Closes: #513007. + + -- Matthias Klose Tue, 27 Jan 2009 23:42:45 +0100 + +gcc-4.3 (4.3.3-1) unstable; urgency=low + + * GCC-4.3.3 release (no changes compared to the 4.3.2-4 upload). + * Fix PR middle-end/38615 (wrong code, taken from the trunk). + + -- Matthias Klose Sat, 24 Jan 2009 14:43:09 +0100 + +gcc-4.3 (4.3.2-4) unstable; urgency=medium + + * Update to SVN 20090119 from the gcc-4_3-branch. + - Fix PR tree-optimization/36765 (wrong code). + * Remove patch for PR 34571, applied upstream (fix build failure on alpha). + * Apply proposed patch for PR middle-end/38902 (wrong code). + + -- Matthias Klose Tue, 20 Jan 2009 00:22:41 +0100 + +gcc-4.3 (4.3.2-3) unstable; urgency=low + + * Update to SVN 20090117 from the gcc-4_3-branch (4.3.3 release candidate). + - Fix PR target/34571, PR debug/7055, PR tree-optimization/37194, + PR tree-optimization/38529, PR fortran/38763, PR fortran/38765, + PR fortran/38669, PR fortran/38487, PR fortran/35681, PR fortran/38657, + PR c++/36019, PR c++/31488, PR c++/37646, PR c++/36334, PR c++/38357, + PR c++/31260, PR c++/38877, PR libstdc++/36801, PR libgcj/38396. + - debian/patches/libgcj-bc.dpatch: Remove, applied upstream. + * Fix PR middle-end/38616 (wrong code with -fstack-protector). + * Update backport for PR28322 (Gunther Nikl). + + -- Matthias Klose Sat, 17 Jan 2009 21:09:35 +0100 + +gcc-4.3 (4.3.2-2) unstable; urgency=low + + * Update to SVN 20090110 from the gcc-4_3-branch. + - Fix PR target/36654, PR tree-optimization/38752, PR fortran/38675, + PR fortran/37469, PR libstdc++/38000. + + -- Matthias Klose Sat, 10 Jan 2009 18:32:34 +0100 + +gcc-4.3 (4.3.2-2~exp5) experimental; urgency=low + + * Adjust build-dependencies for cross builds. Closes: #499998. + * Update to SVN 20081231 from the gcc-4_3-branch. + - Fix PR middle-end/38565, PR target/38062, PR bootstrap/38383, + PR target/38402, PR testsuite/35677, PR tree-optimization/38478, + PR target/38054, PR middle-end/29056, PR testsuite/28870, + PR target/38254. + - Fix PR libstdc++/37144, PR c++/37582, PR libstdc++/38080. + - Fix PR fortran/38602, PR fortran/38602, PR fortran/38487, + PR fortran/38113, PR fortran/35983, PR fortran/35937, PR testsuite/36889. + * Update the spu cross compiler from the cell-gcc-4_3-branch 20081217. + * debian/patches/libobjc-armel.dpatch: Don't define EH_USES. + * Apply the Atomic builtins patch for PARISC. + + -- Matthias Klose Thu, 18 Dec 2008 00:34:46 +0100 + +gcc-4.3 (4.3.2-2~exp4) experimental; urgency=low + + * Update to SVN 20081130 from the gcc-4_3-branch. + - Fix PR bootstrap/33304, PR middle-end/37807, PR middle-end/37809, + PR rtl-optimization/37489, PR target/35574, PR c/37924, + PR tree-optimization/37879, PR middle-end/37858, PR middle-end/37870, + PR target/38016, PR target/37939, PR rtl-optimization/37769, + PR target/37909, PR fortran/37597, PR fortran/35820, PR fortran/37445, + PR fortran/PR35769, PR fortran/37903, PR fortran/37749. + - Fix PR target/37640, PR tree-optimization/37868, PR bootstrap/33100, + PR other/38214, PR c++/37142, PR c++/35405, PR c++/37563, PR c++/38030, + PR c++/37932, PR c++/38007. + - Fix PR fortran/37836, PR fortran/38171, PR fortran/35681, + PR fortran/37792, PR fortran/37926, PR fortran/38033, PR fortran/36526. + - Fix PR target/38287. Closes: #506713. + * Atomic builtins using kernel helpers for PARISC and ARM Linux/EABI, taken + from the trunk. + + -- Matthias Klose Mon, 01 Dec 2008 01:29:51 +0100 + +gcc-4.3 (4.3.2-2~exp3) experimental; urgency=low + + * Update to SVN 20081117 from the gcc-4_3-branch. + * Add build dependencies on spu packages for snapshot builds. + * Add build dependency on libantlr-java for snapshot builds. + * Disable fortran on spu for snapshot builds. + * Add dependency on binutils-{hppa64,spu} for snapshot builds. + + -- Matthias Klose Mon, 17 Nov 2008 21:57:51 +0100 + +gcc-4.3 (4.3.2-2~exp2) experimental; urgency=low + + * Update to SVN 20081023 from the gcc-4_3-branch. + - General regression fixes: PR rtl-optimization/37882 (wrong code), + - Fortran regression fixes: PR fortran/37787, PR fortran/37723. + * Use gij-4.3 for builds in java maintainer mode. + * Don't run the testsuite with -fstack-protector for snapshot builds. + * Update the spu cross compiler from the cell-gcc-4_3-branch 20081023. + Don't disable multilibs, install additional components in the gcc-4.3-spu + package. + * Enable building the spu cross compiler for powerpc and ppc64 snapshot + builds. + * Apply proposed patch for PR tree-optimization/37868 (wrong code). + * Apply proposed patch to parallelize make check. + * For biarch builds, disable the gnat testsuite for the non-default + architecture (no biarch support in gnat yet). + + -- Matthias Klose Thu, 23 Oct 2008 22:06:38 +0200 + +gcc-4.3 (4.3.2-2~exp1) experimental; urgency=low + + * Update to SVN 20081017 from the gcc-4_3-branch. + - General regression fixes: PR rtl-optimization/37408 (wrong code), + PR tree-optimization/36630, PR tree-optimization/37102 (wrong code), + PR c/35437 (ice on invalid code), PR middle-end/37731 (wrong code), + PR target/37603 (wrong code, hppa), PR tree-optimization/35737 (ice on + valid code), PR middle-end/36575 (wrong code), PR c/37645 (ice on valid + code), PR tree-optimization/37539 (compile time hog), PR middle-end/37236 + (ice on invalid code), PR tree-optimization/36343 (wrong code), + PR rtl-optimization/37544 (wrong code), PR target/35620 (ice on valid + code), PR target/35713 (ice on valid code, wrong code), PR c/35712 (wrong + code), PR target/37466 (wrong code, AVR). + - C++ regression fixes: PR c++/37389 (LP: #252301), PR c++/37555 (ice on + invalid code). + - Fortran regression fixes: PR fortran/37199, PR fortran/36214, + PR fortran/35770, PR fortran/36454, PR fortran/36374, PR fortran/37274, + PR fortran/37583, PR fortran/36700, PR fortran/35945, PR fortran/37626, + PR fortran/37504, PR fortran/37580, PR fortran/37706, PR fortran/35680, + PR fortran/37794. + * Remove obsolete patches: ada-driver.dpatch, pr33148.dpatch. + * Fix naming of bridge targets in gjavah (wrong header generation). + * Fix PR target/37661, SPARC64 int-to-TFmode conversions. + * Include the complete test summaries in a binary package, to allow + regression checking from the previous build. + * Tighten inter-package dependencies to (>= 4.3.2-1). + * Drop the 4.3.1 symlink in gcc_lib_dir, add a 4.3.3 symlink to 4.3. + + -- Matthias Klose Fri, 17 Oct 2008 23:26:50 +0200 + +gcc-4.3 (4.3.2-1) unstable; urgency=medium + + [Matthias Klose] + * Final gcc-4.3.2 release (regression fixes). + - Remove the generated install docs from the tarball (GFDL licensed). + - C++ regression fixes: PR debug/37156. + - general regression fixes: PR debug/37156, PR target/37101. + - Java regression fixes: PR libgcj/8995. + * Update to SVN 20080905 from the gcc-4_3-branch. + - C++ regression fixes: PR c++/36741 (wrong diagnostic), + - general regression fixes: PR target/37184 (ice on valid code), + PR target/37191 (ice on valid code), PR target/37197 (ice on valid code), + PR middle-end/36817 (ice on valid code), PR middle-end/36548 (wrong code), + PR middle-end/37125 (wrong code), PR c/37261 (wrong diagnostic), + PR target/37168 (ice on valid code), PR middle-end/36449 (wrong code), + PR middle-end/37248 (missed optimization), PR target/36332 (wrong code). + - Fortran regression fixes: PR fortran/37193 (rejects valid code). + * Move symlinks in gcc_lib_dir from cpp-4.3 to gcc-4.3-base. Closes: #497369. + * Don't build-depend on autogen on architectures where it is not installable + (needed for the fixincludes testsuite only); don't build-depend on it for + source packages not running the fixincludes testsuite. + + [Ludovic Brenta] + * Add sdefault.ads to libgnatprj4.3-dev. Fixes: #492866. + * turn gnatvsn.gpr and gnatprj.gpr into proper library project files. + * Unconditionally build-depend on gnat when building gnat-4.3. + Fixes: #487564. + * (debian/rules.d/binary-ada.mk): Add a symlink libgnat.so to + /usr/lib/libgnat-4.3.so in the adalib directory. Fixes: #493814. + * (debian/patches/ada-sjlj.dpatch): remove dangling symlinks from all + adalib directories. + * debian/patches/ada-alpha.dpatch: remove, applied upstream. + + [Samuel Tardieu, Ludovic Brenta] + * debian/patches/pr16086.dpatch: new; backport from GCC 4.4. + Closes: #248172. + * debian/patches/pr35792.dpatch: new; backport from GCC 4.4. + * debian/patches/pr15808.dpatch (fixes: #246392), + debian/patches/pr30827.dpatch: new; backport from the trunk. + + -- Matthias Klose Fri, 05 Sep 2008 22:52:58 +0200 + +gcc-4.3 (4.3.1-9) unstable; urgency=low + + * Update to SVN 20080814 from the gcc-4_3-branch. + - C++/libstdc++ regression fixes: PR c++/36688, PR c++/37016, PR c++/36999, + PR c++/36405, PR c++/36767, PR c++/36852. + - general regression fixes: PR target/36613, PR rtl-optimization/36998, + PR middle-end/37042, PR middle-end/35432, PR target/35659, + PR middle-end/37026, PR middle-end/36691, PR tree-optimization/36991, + PR rtl-optimization/35542, PR bootstrap/35752, PR rtl-optimization/36419, + PR debug/36278, PR preprocessor/36649, PR rtl-optimization/36929, + PR tree-optimization/36830, PR c/35746, PR middle-end/37014, + PR middle-end/37103. + - Fortran regression fixes: PR fortran/36132. + - Java regression fixes: PR libgcj/31890. + - Fixes PR middle-end/37090. Closes: #494815. + + -- Matthias Klose Thu, 14 Aug 2008 18:02:52 +0000 + +gcc-4.3 (4.3.1-8) unstable; urgency=low + + * Undo Revert PR tree-optimization/36262 on i386 (PR 36917 is invalid). + + -- Matthias Klose Fri, 25 Jul 2008 21:47:52 +0200 + +gcc-4.3 (4.3.1-7) unstable; urgency=low + + * Update to SVN 20080722 from the gcc-4_3-branch. + - Fix PR middle-end/36811, infinite loop building with -O3. + - C++/libstdc++ regression fixes: PR c++/36407, PR c++/34963, + PR libstdc++/36832, PR libstdc++/36552, PR libstdc++/36729. + - Fortran regression fixes: PR fortran/36366, PR fortran/36824. + - general regression fixes: PR middle-end/36877, PR target/36780, + PR target/36827, PR rtl-optimization/35281, PR rtl-optimization/36753, + PR target/36827, PR target/36784, PR target/36782, PR middle-end/36369, + PR target/36780, PR target/35492, PR middle-end/36811, + PR rtl-optimization/36419, PR target/35802, PR target/36736, + PR target/34780. + * Revert PR tree-optimization/36262 on i386, causing miscompilation of + OpenJDK hotspot. + * gij/gcj: Don't remove alternatives on upgrade. Addresses: #479950. + + -- Matthias Klose Tue, 22 Jul 2008 23:55:54 +0200 + +gcc-4.3 (4.3.1-6) unstable; urgency=low + + * Start the logwatch script on alpha as well to avoid timeouts in + the testsuite. + + -- Matthias Klose Mon, 07 Jul 2008 11:31:58 +0200 + +gcc-4.3 (4.3.1-5) unstable; urgency=low + + * Update to SVN 20080705 from the gcc-4_3-branch. + - Fix PR target/36634, wrong-code on powerpc with -msecure-plt. + * Fix PR target/35965, PIC + -fstack-protector on arm/armel. Closes: #469517. + * Don't run the libjava testsuite with -mabi=n32. + * Update patch for PR other/28322, that unknown -Wno-* options do not + cause errors, but warnings instead. + * On m68k, add -fgnu89-inline when in gnu99 mode (requested by Michael + Casadeval for the m68k port). Closes: #489234. + + -- Matthias Klose Sun, 06 Jul 2008 01:39:30 +0200 + +gcc-4.3 (4.3.1-4) unstable; urgency=low + + * Revert: debian/patches/gcc-multilib64dir.dpatch: Remove obsolete patch. + * Remove obsolete multiarch-lib patch. + + -- Matthias Klose Mon, 30 Jun 2008 23:05:17 +0200 + +gcc-4.3 (4.3.1-3) unstable; urgency=medium + + [Arthur Loiret] + * debian/rules2: + - configure sh4-linux with --with-multilib-list=m4,m4-nofpu + and --with-cpu=sh4. + - configure sparc-linux with --enable-targets=all on snapshot builds + (change already in 4.3.1-1). + * debian/rules.patch: Don't apply sh4-multilib.dpatch. + + [Matthias Klose] + * Update to SVN 20080628 from the gcc-4_3-branch. + - Fix PR target/36533, wrong-code with incorrectly assumed aligned_operand. + Closes: #487115. + * debian/rules.defs: Remove hurd-i386 from ssp_no_archs (Samuel Thibault). + Closes: #483613. + * Do not create a /usr/lib/gcc//4.3.0 symlink. + * debian/patches/gcc-multilib64dir.dpatch: Remove obsolete patch. + * libjava/classpath: Set and use EXTRA_CFLAGS (taken from the trunk). + + -- Matthias Klose Sat, 28 Jun 2008 16:00:38 +0200 + +gcc-4.3 (4.3.1-2) unstable; urgency=low + + * Update to SVN 20080610 from the gcc-4_3-branch. + - config.gcc: Fix quoting for in the enable_cld test. + * Use GNU locales on hurd-i386 (Samuel Thibault). Closes: #485395. + * libstdc++-doc: Fix URL's for locally installed docs. Closes: #485133. + * libjava: On armel apply kludge to fix unwinder infinitely looping 'til + it runs out of memory. + * Adjust dependencies to require GCC 4.3.1. + + -- Matthias Klose Wed, 11 Jun 2008 00:35:38 +0200 + +gcc-4.3 (4.3.1-1) unstable; urgency=high + + [Samuel Tardieu, Ludovic Brenta] + * debian/patches/pr16087.dpatch: new. Fixes: #248173. + * Correct the patches from the previous upload. + + [Ludovic Brenta] + * debian/patches/ada-acats.dpatch: really run the just-built gnat, not the + bootstrap gnat. + * debian/rules2: when running the Ada test suite, do not run the multilib + tests as gnat does not support multilib yet. + * Run the ACATS testsuite again (patch it so it correctly finds gnatmake). + + [Thiemo Seufer] + * debian/patches/ada-libgnatprj.dpatch, + debian/patches/ada-mips{,el}.dpatch: complete support for mips and mipsel. + Fixes: #482433. + + [Matthias Klose] + * GCC-4.3.1 release. + * Do not include standard system paths in libgcj pkgconfig file. + * Suggest the correct libmudflap0-dbg package. + * Fix PR libjava/35020, taken from the trunk. + * Apply proposed patch for PR tree-optimization/36343. + * On hurd-i386 with -fstack-protector do not link with libssp_nonshared + (Samuel Thibault). Closes: #483613. + * Apply proposed patch for PR tree-optimization/34244. + * Remove debian-revision in symbols files. + * Fix installation of all biarch -multilib packages which are not triarch. + * Fix some lintian warnings. + * Include library symlinks in gobjc and gfortran multilib packages, when + not building the library packages. + * Fix sections in doc-base files. + * Don't apply the sparc-biarch patch when building the gcc-snapshot package. + * libjava: Add @file support for gjavah & gjar. + * Apply patch for PR rtl-optimization/36111, taken from the trunk. + + * Closing reports reported against gcc-4.0 and fixed in gcc-4.3: + - General + + Fix PR optimization/3511, inlined strlen() could be smarter. + Close: #86251. + - C + + Fix PR c/9072, Split of -Wconversion in two different flags. + Closes: #128950, #226952. + - C++/libstdc++ + + PR libstdc++/24660, implement versioning weak symbols in libstdc++. + Closes: #328421. + - Architecture specific: + - mips + + PR target/26560, unable to find a register to spill in class + 'FP_REGS'. Closes: #354439. + - sparc + + Fix PR rtl-optimization/23454, ICE in invert_exp_1. Closes: #340951. + * Closing reports reported against gcc-4.1 and fixed in gcc-4.2: + - General + + PR tree-optimization/30132, ICE in find_lattice_value. Closes: #400484. + + PR other/29534, ICE in "gcc -O -ftrapv" with decreasing array index. + Closes: #405065. + + Incorrect SSE2 code generation for vector initialization. + Closes: #406442. + + Fix segfault in cc1 due to infinite loop in error() when using -ftrapv. + Closes: #458072. + + Fix regression in code size with -Os compared to GCC-3.3. + Closes: #348298. + - C++ + + Fix initialization of global variables with non-constant initializer. + Closes: #446067. + + Fix ICE building muse. Closes: #429385. + * Closing reports reported against gcc-4.1 and fixed in gcc-4.3: + - C++ + + PR c++/28705, ICE: in type_dependent_expression_p. Closes: #406324. + + PR c++/7302, -Wnon-virtual-dtor should't complain of protected dtor. + Closes: #356316. + + PR c++/28316, PR c++/24791, PR c++/20133, ICE in instantiate_decl. + Closes: #327346, #355909. + - Fortran + + PR fortran/31639, ICE in gfc_conv_constant. Closes: #401496. + - Java + + Fix ICE using gcj with --coverage. Closes: #416326. + + PR libgcj/29869, LogManager class loading failure. Closes: #399251 + + PR swing/29547 setText (String) of JButton does not work + with HTML code. Closes: #392791. + + PR libgcj/29178, CharsetEncoder.canEncode() gives different results + than Sun version. Closes: #388596. + + PR java/8923, ICE when modifying a variable decleared "final static". + Closes: #351512. + + PR java/22507, segfault building Apache Cocoon. Closes: #318534. + + PR java/2499, class members should be inherited from implemented + interfaces. Closes: #225434. + + PR java/10581, ICE compiling freenet. Closes: #186922. + + PR libgcj/28340, gij ignores -Djava.security.manager. Closes: #421098. + + PR java/32846, build failure on GNU/Hurd. Closes: #408888. + + PR java/29194, fails to import package from project. Closes: #369873. + + PR libgcj/31700, -X options not recognised by JNI_CreateJavaVM. + Closes: #426742. + + java.util.Calendar.setTimeZone fails to set ZONE_OFFSET. + Closes: #433636. + - Architecture specific: + - alpha + + C++, fix segfault in constructor with -Os. Closes: #438436. + - hppa + + PR target/30131, ICE in propagate_one_insn. Closes: #397341. + - m32r + + PR target/28508, assembler error (operand out of range). + Closes: #417542. + - m68k + + PR target/34688, ICE in output_operand. Closes: #459429. + * Closing reports reported against gcc-4.2 and fixed in gcc-4.3: + - General + + PR tree-optimization/33826, wrong code generation for infinitely + recursive functions. Closes: #445536. + - C++ + + PR c++/24791, ICE on invalid instantiation of template's static member. + Closes: #446698. + + [Aurelien Jarno] + * Really apply arm-funroll-loops.dpatch on arm and armel. Closes: #476460. + + -- Matthias Klose Sat, 07 Jun 2008 23:16:21 +0200 + +gcc-4.3 (4.3.0-5) unstable; urgency=medium + + * Update to SVN 20080523 from the gcc-4_3-branch. + - Remove gcc-i386-emit-cld patch. + - On Debian amd64 and i386 configure with --enable-cld. + * Fix PR tree-optimization/36129, ICE with -fprofile-use. + * Add spu build dependencies independent of the architecture. + * Move arm -funroll-loops fix to arm-funroll-loops from + gfortran-armel-updates. Apply it on both arm and armel. + Closes: #476460. + * Use iceape-dev as a build dependency for Java enabled builds. + * Build the sru cross compiler from a separate source dir without applying + the hardening patches. + + -- Matthias Klose Fri, 23 May 2008 10:12:02 +0200 + +gcc-4.3 (4.3.0-4) unstable; urgency=low + + [ Aurelien Jarno ] + * Fix gnat-4.3 build on mips/mipsel. + * Update libgcc1 symbols for hurd-i386. + + [ Arthur Loiret ] + * Make gcc-4.3-spu Recommends newlib-spu. Closes: #476088 + * Build depend on spu build dependencies only when building + as gcc-4.x source package. + * Disable spu for snapshot builds. + * Support sh4 targets: + - sh4-multilib.dpatch: Add, fix multilib (m4/m4-nofpu) for sh4-linux + - multiarch-include.dpatch: Don't apply on sh4. + + [ Matthias Klose ] + * Stop building libffi packages. + * Update to SVN 20080501 from the gcc-4_3-branch. + - Fix PR target/35662, wrong gfortran code on mips/mipsel. Closes: #476427. + - Fixes mplayer build on powerpc. Closes: #475153. + * Stop building gij/gcj on alpha, arm and hppa. Closes: #459560. + * libstdc++6-4.3-doc: Fix file location in doc-base file. Closes: #476253. + * debian/patches/template.dpatch: Remove the `exit 0' line. + * Fix alternative names for amd64 cross builds. Addresses: #466422. + * debian/copyright: Update to GPLv3, remove the text of the GFDL + and reference the copy in common-licenses. + * Generate the locale data for the testsuite, if the locales package + is installed (not a dependency on all archs). + * Update libgcc2 symbols for m68k, libstdc++6 symbols for arm, m68k, mips + and mipsel. + * Do not include a symbols file for libobjc_gc.so. + * Add four more symbols to libgcj_bc, patch taken from the trunk. + * Adjust names of manual pages in the spu build on powerpc. + * ARM EABI (armel) updates (Andrew Jenner, Julian Brown): + - Add Objective-C support. + - Fortran support patches. + - Fix ICE in gfortran.dg/vector_subscript_1.f90 for -Os -mthumb reload. + * Build ObjC and Obj-C++ packages on armel. + * Reenable running the testsuite on m68k. + + [Samuel Tardieu, Ludovic Brenta] + * debian/patches/gnalasup_to_lapack.dpatch: new. + * debian/patches/pr34466.dpatch, + debian/patches/pr22255.dpatch, + debian/patches/pr33688.dpatch, + debian/patches/pr10768.dpatch, + debian/patches/pr28305.dpatch, + debian/patches/pr17985.dpatch (#278685) + debian/patches/pr15915.dpatch, + debian/patches/pr16098.dpatch, + debian/patches/pr18680.dpatch, + debian/patches/pr28733.dpatch, + debian/patches/pr22387.dpatch, + debian/patches/pr29015.dpatch: new; backport Ada bug fixes from GCC 4.4. + * debian/patches/rules.patch: apply them. + * debian/patches/pr35050.dpatch: update. + + [Andreas Jochens] + * debian/patches/ppc64-ada.dpatch: update, adding support for ppc64. + (#476868). + + [Ludovic Brenta] + * Apply ppc64-ada.dpatch whenever we build libgnat, not just on ppc64. + * debian/patches/pr28322.dpatch: never pass -Wno-overlength-strings to + the bootstrap compiler, as the patch breaks the detection of whether + the bootstrap compiler supports this option or not. + Fixes: #471192. Works around #471767. + * Merge Aurélien Jarno's mips patch. Fixes: #472854. + + [ Samuel Tardieu ] + * debian/patches/pr30740.dpatch: new Ada bug fix. + * debian/patches/pr35050.dpatch: new Ada bug fix. + + [ Xavier Grave ] + * debian/patches/ada-mips{,el}.dpatch: new; split mips/mipsel support + into new patches, out of ada-sjlj.dpatch. + * debian/rules.d/binary-ada.mk: fix the version number of libgnarl-4.3.a. + + [Roman Zippel] + * PR target/25343, fix gcc.dg/pch/pch for m68k. + + -- Matthias Klose Thu, 01 May 2008 21:08:09 +0200 + +gcc-4.3 (4.3.0-3) unstable; urgency=medium + + [ Matthias Klose ] + * Update to SVN 20080401 from the gcc-4_3-branch. + - Fix PR middle-end/35705 (hppa only). + * Update libstdc++6 symbols for hurd-i386. Closes: #472334. + * Update symbol files for libgomp (ppc64). + * Only apply the gcc-i386-emit-cld patch on amd64 and i386 architectures. + * Update libstdc++ baseline symbols for hppa. + * Install powerpc specific header files new in 4.3. + * gcc-4.3-hppa64: Don't include the install tools in the package. + + [ Aurelien Jarno ] + * Fix gobjc-4.3-multilib dependencies. Closes: #473455. + * Fix gnat-4.3 build on mips/mipsel. + * patches/ada-alpha.dpatch: new patch to fix gnat-4.3 build on alpha. + Closes: #472852. + * patches/config-ml.dpatch: also check for n32 multidir. + + [ Arthur Loiret ] + * Build-Depends on binutils (>= 2.18.1~cvs20080103-2) on mips and mipsel, + required for triarch. + * libstdc++-pic.dpatch: Update, don't fail anymore if shared lib is disabled. + + [ Andreas Jochens ] + * Fix build failures on ppc64. Closes: #472917. + - gcc-multilib64dir.dpatch: Remove "msoft-float" and "nof" from MULTILIB + variables. + - Removed ppc64-biarch.dpatch. + - Add debian/lib32gfortan3.symbols.ppc64. + + [ Arthur Loiret, Matthias Klose ] + * Build compilers for spu-elf target on powerpc and ppc64. + - Add gcc-4.3-spu, g++-4.3-spu and gfortran-4.3-spu packages. + - Partly based on the work in Ubuntu on the spu toolchain. + + -- Matthias Klose Tue, 01 Apr 2008 23:29:21 +0000 + +gcc-4.3 (4.3.0-2) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20080321 from the gcc-4_3-branch. + - Remove some broken code that attempts to enforce linker + constraints. Closes: #432541. + * Temporary fix, will be removed once a fixed kernel is available + in testing: Emit cld instruction when stringops are used (i386). + Do not expose the -mcld option until added upstream. Closes: #469567. + * Update NEWS files. + * libjava: Don't leak upon failed realloc (taken from the trunk). + * debian/rules2: The build is not yet prepared to take variables from + the environment; unexport and unset those. + + [Arthur Loiret/Aurelien Jarno] + * MIPS tri-arch support: + - mips-triarch.dpatch: new patch to default to o32 and follow the + glibc convention for n32 & 64 bit names. + - Rename $(biarch) and related vars into $(biarch64). + - Fix biarchsubdir to allow triarch. + - Add biarchn32 support. + - Add mips and mipsel to biarch64 and biarchn32 archs. + - Update binary rules for biarchn32 and libn32 targets. + - Fix multilib deps for triarch. + - control.m4: Add libn32 packages. + + -- Matthias Klose Sat, 22 Mar 2008 00:06:33 +0100 + +gcc-4.3 (4.3.0-1) unstable; urgency=low + + [Matthias Klose] + * GCC-4.3.0, final release. + * Update to SVN 20080309 from the gcc-4_3-branch. + * Build from a modified tarball, without GFDL documentation with + invariant sections and cover texts. + * debian/rules.unpack: Avoid make warnings. + * debian/rules.d/binary-cpp.mk: Add 4.3.0 symlink in gcclibdir. + * Stop building treelang (removed upstream). + * gcj-4.3: Hardcode libgcj-bc dependency, don't run dh_shlibdeps on ecj1. + + [Aurelien Jarno] + * Update libssp-gnu.dpatch and reenable it. + + -- Matthias Klose Sun, 09 Mar 2008 15:18:08 +0100 + +gcc-4.3 (4.3.0~rc2-1) unstable; urgency=medium + + * Update to SVN 20080301 from the gcc-4_3-branch. + * Include the biarch libobjc_gc library in the packages. + * Link libobjc_gc with libgcjgc_convenience.la. + * Add new symbols to libstdc++6 symbol files, remove the symbols for + support (reverted upstream for the 4.3 branch). + * Disable running the testsuite on m68k. + * Update PR other/28322, ignore only unknown -W* options. + + -- Matthias Klose Sat, 01 Mar 2008 15:09:16 +0100 + +gcc-4.3 (4.3-20080227-1) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20080227 from the gcc-4_3-branch. + * Fix PR other/28322, GCC new warnings and compatibility. + Addresses: #367657. + + [Hector Oron] + * Fix cross-compile builds. Closes: #467471. + + -- Matthias Klose Thu, 28 Feb 2008 00:30:38 +0100 + +gcc-4.3 (4.3-20080219-1) unstable; urgency=medium + + [Matthias Klose] + * Update to SVN 20080219 from the gcc-4_3-branch. + * Apply proposed patch for PR target/34571 (alpha). + * libgcj9-dev: Don't claim that the package contains the static + libraries. + * libjava-xulrunner1.9.dpatch: Add configure check for xulrunner-1.9. + Name the alternative xulrunner-1.9-javaplugin.so. + * libgcj-doc: Don't include the examples; these cannot be built + with the existing Makefile anyway. Addresses: #449608. + * Manpages for gc-analyze and grmic are GFDL. Don't include these when + building DFSG compliant packages. + * Fix build failure building amd64 cross-target libstdc++ packages + (Tim Bagot). Addresses: #464365. + * Fix typos in rename-info-files patch (Richard Guenther). + * Fix PR libgcj/24170. + + [Aurelien Jarno] + * kbsd-gnu-ada.dpatch: new patch to fix build on GNU/kFreeBSD. + + [Ludovic Brenta] + * debian/rules.defs: Temporarily disable the testsuite when building gnat. + * debian/patches/libffi-configure.dpatch: run autoconf in the top-level + directory, where we've changed configure.ac; not in src/gcc. + * debian/patches/ada-sjlj.dpatch: do not run autoconf since we don't + change configure.ac. + * debian/control.m4 (gnat-4.3-doc): conflict with gnat-4.[12]-doc. + Closes: #464801. + + -- Matthias Klose Tue, 19 Feb 2008 23:20:45 +0000 + +gcc-4.3 (4.3-20080202-1) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20080202 from the trunk. + - Fix PR c/35017, pedwarns about valid code. Closes: #450506. + - Fix PR target/35045, wrong code generation with -O3 on i386. + Closes: #463478. + * gcj-4.3: On armel depend on g++-4.3. + * Re-enable build of libobjc_gc, using the internal version of boehm-gc. + Closes: #212248. + + [Ludovic Brenta] + * debian/patches/ada-default-project-path.dpatch, + debian/patches/ada-gcc-name.dpatch, + debian/patches/ada-symbolic-tracebacks.dpatch, + debian/patches/ada-link-lib.dpatch, + debian/patches/ada-libgnatvsn.dpatch, + debian/patches/ada-libgnatprj.dpatch, + debian/patches/ada-sjlj.dpatch: adjust to GCC 4.3. + * debian/README.gnat, debian/TODO, + debian/rules.d/binary-ada.mk: merge from gnat-4.2. + * debian/README.maintainers: add instructions for patching GCC. + * debian/patches/ada-driver.dpatch: remove, no longer used. + * debian/patches/libffi-configure.dpatch: do not patch the top-level + configure anymore; instead, rerun autoconf. This allows removing the + patch cleanly. + * debian/rules2: use gnatgcc as the bootstrap compiler, not gcc-4.2. + + -- Matthias Klose Sat, 02 Feb 2008 19:58:48 +0100 + +gcc-4.3 (4.3-20080127-1) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20080126 from the trunk. + * Tighten build dependency on doxygen. + * Update libstdc++ patches to current svn. + * gij-4.3: Provide java*-runtime-headless instead of java*-runtime. + + [ Aurelien Jarno] + * debian/multiarch.inc: change mipsel64 into mips64el. + + -- Matthias Klose Sun, 27 Jan 2008 01:33:35 +0100 + +gcc-4.3 (4.3-20080116-1) unstable; urgency=medium + + * Update to SVN 20080116 from the trunk. + * Update debian/watch. + * Build libgomp documentation without building libgomp. Addresses: #460660. + * Handle lzma compressed tarballs. + * Fix dependency generation for the gcc-snapshot package: Addresses: #454667. + * Restore lost chunk in libjava-subdir.dpatch. + + -- Matthias Klose Wed, 16 Jan 2008 20:33:50 +0100 + +gcc-4.3 (4.3-20080112-1) unstable; urgency=low + + * Update to SVN 20080112 from the trunk. + * Tighten build-dependency on dpkg-dev (closes: #458894). + * Update symbol definitions for alpha. + * Build-depend on libmpfr-dev for all source packages. + + -- Matthias Klose Sun, 13 Jan 2008 00:40:28 +0100 + +gcc-4.3 (4.3-20080104-1) unstable; urgency=low + + * Update to SVN 20080104 from the trunk. + * Update symbol definitions for alpha, hppa, ia64, mips, mipsel, powerpc, + s390, sparc. + + -- Matthias Klose Fri, 04 Jan 2008 07:34:15 +0100 + +gcc-4.3 (4.3-20080102-1) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20080102 from the trunk. + - Fix 64bit biarch builds (addresses: #447443). + * debian/rules.d/binary-java.mk: Reorder packaging to get shlibs + dependencies right. + * Use lib instead of lib64 as multilibdir on amd64 and ppc64. + * Build the java plugin always using libxul-dev. + * Add libgcj_bc to the libgcj9-0 shlibs file. + * Add symbol files for libgcc1, lib32gcc1, lib64gcc1, libstdc++6, + lib32stdc++6, lib64stdc++6, libgomp1, lib32gomp1, lib64gomp1, libffi4, + lib32ffi4, lib64ffi4, libobjc2, lib32objc2, lib64objc2, libgfortran3, + lib32gfortran3, lib64gfortran3. + Adjust build dependencies on dpkg-dev and debhelper. + * Do not build the java packages from the gcc-4.3 source package. + + [ Aurelien Jarno ] + * Disable amd64-biarch patch on kfreebsd-amd64. + + -- Matthias Klose Wed, 02 Jan 2008 23:48:14 +0100 + +gcc-4.3 (4.3-20071124-1) experimental; urgency=low + + [ Matthias Klose ] + * Update to SVN 20071124 from the trunk. + * Fix dependencies of lib*gcc1-dbg packages. + * gcjwebplugin: Fix path of the gcj subdirectory. LP: #149792. + * gij-hppa: Call gij-4.2, not gij-4.1. Addresses: #446282. + * Don't run the testsuite on hppa when expect-tcl8.3 is not available. + * Fix libgcc1-dbg doc directory symlink. Closes: #447969. + + [ Aurelien Jarno ] + * Update kbsd-gnu patch. + * Remove kbsd-gnu-ada patch (merged upstream). + + -- Matthias Klose Sat, 24 Nov 2007 13:14:29 +0100 + +gcc-4.3 (4.3-20070930-1) experimental; urgency=low + + [Matthias Klose] + * Update to SVN 20070929 from the trunk. + * Update debian patches to the current trunk. + * Regenerate the control file. + * On powerpc-linux-gnu and i486-linux-gnu cross-compile the 64bit + multilib libraries to allow a sucessful build on 32bit kernels + (our buildds). Although we won't get 64bit test results this way ... + * Remove the build dependency on expect-tcl8.3. + * Fix MULTILIB_OSDIRNAMES for cross builds targeted for amd64 and ppc64. + * When -fstack-protector is the default (Ubuntu), do not enable + -fstack-protector when -nostdlib is specified. LP: #77865. + * Always set STAGE1_CFLAGS to -g -O2, only pass other settings + when configuring when required. + * Configure --with-bugurl, adjust the bug reporting instructions. + * gcc-4.3: Install new cpuid.h header. + * Fix installation of the s390 libstdc++ biarch headers. + * Install new bmmintrin.h, mmintrin-common.h headers. + * Build -dbg packages for libgcc, libgomp, libmudflap, libffi, libobjc, + libgfortran. + * Downgrade libmudflap-dev recommendation to a suggestion. Closes: #443929. + + [Riku Voipio] + * Configure armeabi with --disable-sjlj-exceptions. + * armel testsuite takes ages, adjust build accordingly. + + -- Matthias Klose Sun, 30 Sep 2007 12:06:02 +0200 + +gcc-4.3 (4.3-20070902-1) experimental; urgency=low + + * Upload to experimental. + + -- Matthias Klose Sun, 2 Sep 2007 20:51:16 +0200 + +gcc-4.3 (4.3-20070902-0ubuntu1) gutsy; urgency=low + + * Update to SVN 20070902 from the trunk. + * Fix the build logic for the Ubuntu i386 buildd; we can't build biarch. + * Only remove libgcj9's classmap db if no other libgcj9* library is + installed. + * A lot more updates for 4.3 packaging. + + -- Matthias Klose Sat, 01 Sep 2007 21:01:43 +0200 + +gcc-4.3 (4.3-20070901-0ubuntu1) gutsy; urgency=low + + * Update to SVN 20070901 from the trunk. + * First gcc-4.3 package build. + - Update patches for the *-linux-gnu builds. + - Update build files for 4.3. + * Add proposed patch for PR middle-end/33029. + * gcj-4.3: Install gc-analyze. + + -- Matthias Klose Sat, 1 Sep 2007 20:52:16 +0200 + +gcc-4.2 (4.2.2-7) unstable; urgency=low + + * Update to SVN 20080114 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/34762. LP: #182412. + * Update debian/watch. Closes: #459259. Addresses: #459391, #459392. + * Build libgomp documentation without building libgomp. Closes: #460660. + * Restore gomp development files. Closes: #460736. + + -- Matthias Klose Mon, 14 Jan 2008 23:20:04 +0100 + +gcc-4.2 (4.2.2-6) unstable; urgency=low + + * Update to SVN 20080113 from the ubuntu/gcc-4_2-branch. + * Adjust build-dependency on debhelper, dpkg-dev. + * Fix gnat-4.2 build failure (addresses: #456867). + * Do not build packages built from the gcc-4.3 source. + + -- Matthias Klose Sun, 13 Jan 2008 13:48:49 +0100 + +gcc-4.2 (4.2.2-5) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20080102 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/32889, ICE in delete_output_reload. + Closes: #444873, #445336, #451047. + - Fix PR target/34215, ICE in assign_386_stack_local. + Closes: #446714, #452451. + - Fix PR target/33848, reference to non-existent label at -O1 on + mips/mipsel. Closes: #441633. + * debian/rules.d/binary-java.mk: dpkg-shlibsdeps can't handle the dangling + symlink to libgcj_bc.so.1. Remove it temporarily. + * Add libgcj_bc to the libgcj8-1 shlibs file. + * Fix build failures for gnat-4.2, gpc-4.2, gdc-4.2 introduced by recent + gdc changes. + * Add symbol files for libgcc1, lib32gcc1, lib64gcc1, libstdc++6, + lib32stdc++6, lib64stdc++6, libgomp1, lib32gomp1, lib64gomp1, libffi4, + lib32ffi4, lib64ffi4, libobjc2, lib32objc2, lib64objc2. Adjust build + dependencies on dpkg-dev and debhelper. + Adjust build-dependency on dpkg-dev. + + [Arthur Loiret] + * Fix gdc-4.2 build failure. + * Update gdc to upstream SVN 20071124. + - d-bi-attrs: Support attributes on declarations in other modules. + - d-codegen.cc (IRState::attributes): Support constant declarations as + string arguments. + * Enable libphobos: + - gdc-4.2.dpatch: Fix ICEs. + - gdc-4.2-build.dpatch: Update, make it cleaner. + * Install libphobos in the private gcc lib dir. + * gdc-4.2.dpatch: Update from gdc-4.1.dpatch. + - gcc/tree-sra.c: Do not use SRA on structs with aliased fields created + for anonymous unions. + - gcc/predict.c: Add null-pointer check. + * debian/rules.defs: Disable phobos on hurd-i386. + - gdc-hurd-proc_maps.dpatch: Remove. + + -- Matthias Klose Wed, 02 Jan 2008 15:49:30 +0100 + +gcc-4.2 (4.2.2-4) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20071123 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/34130, wrong code with some __builtin_abs expressions. + Closes: #452108. + * Don't run the testsuite on hppa when expect-tcl8.3 is not available. + * Fix libgcc1-dbg doc directory symlink. Closes: #447969. + * Use gcc-multilib as build-dependency instead of gcc-4.1-mulitlib. + * Support for fast-math on hurd-i386 (Michael Banck). Closes: #451520. + * Fix again profiling support on the Hurd (Thomas Schwinge). Closes: #434937. + + [Arthur Loiret] + * Merge gdc-4.1 patches and build infrastructure: + - gdc-4.2.dpatch: Add, setup gcc-4.2.x for D. + - gdc-4.2-build.dpatch: Add, update gdc builtins and driver objs. + - gdc-driver-zlib.dpatch: Add, use up-to-date system zlib. + - gdc-driver-defaultlib.dpatch: Add, add -defaultlib/-debuglib switches. + - gdc-driver-nophobos.dpatch: Add, disable libphobos when unsupported. + - gdc-libphobos-build.dpatch: Add, enable libphobos build when supported. + - gdc-fix-build.dpatch: Add, fix build on non-biarched 64bits targets. + - gdc-libphobos-std-format.dpatch: Add, replace assert when formating a + struct on non-x86_64 archs by a FormatError. + - gdc-arm-unwind_ptr.dpatch: Add, fix build on arm. + - gdc-mips-gcc-config.dpatch: Add, fix build on mips. + - gdc-hurd-proc_maps.dpatch: Add, fix build on hurd. + + -- Matthias Klose Sat, 24 Nov 2007 12:01:06 +0100 + +gcc-4.2 (4.2.2-3) unstable; urgency=low + + * Update to SVN 20071014 from the ubuntu/gcc-4_2-branch. + - Fix build failure in libjava on mips/mipsel. + * Make 4.2.2-2 a requirement for frontends built from separate sources. + Addresses: #446596. + + -- Matthias Klose Sun, 14 Oct 2007 14:13:00 +0200 + +gcc-4.2 (4.2.2-2) unstable; urgency=low + + * Update to SVN 20071011 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/33448, ICE in create_tmp_var. Closes: #439687. + - Remove debian/patches/pr31899.dpatch, applied upstream. + - Remove debian/patches/pr33381.dpatch, applied upstream. + * gij-hppa: Call gij-4.2, not gij-4.1. Addresses: #446282. + + -- Matthias Klose Thu, 11 Oct 2007 23:41:52 +0200 + +gcc-4.2 (4.2.2-1) unstable; urgency=low + + * Update to SVN 20071008 from the ubuntu/gcc-4_2-branch, corresponding + to the GCC-4.2.2 release. + * Fix dependencies of lib*gcc1-dbg packages. Closes: #445190. + * Remove libjava-armeabi patch integrated upstream. + * gcjwebplugin: Fix path of the gcj subdirectory. LP: #149792. + * Apply proposed patch for PR debug/31899. Closes: #445268. + + * Add niagara2 optimization support (David Miller). + + -- Matthias Klose Mon, 08 Oct 2007 21:12:41 +0200 + +gcc-4.2 (4.2.1-6) unstable; urgency=high + + [Matthias Klose] + * Update to SVN 20070929 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/33382, ICE (closes: #441481). + - Fix PR tree-optimization/28544 (4.2.1, closes: #380482). + - Fix PR libffi/28313, port to mips64 (closes: #358235). + * Fix PR tree-optimization/33099, PR tree-optimization/33381, + wrong code generation with VRP/SCEV. Closes: #440545, #443576. + * Update Hurd fixes (Samuel Thibault). + * When -fstack-protector is the default (Ubuntu), do not enable + -fstack-protector when -nostdlib is specified. LP: #77865. + * Add -g to BOOT_CFLAGS, set STAGE1_CFLAGS to -g -O, only pass + other settings when required. + * Fix installation of the s390 libstdc++ biarch headers. + * Allow the powerpc build on a 32bit machine (without running the + biarch testsuite). + * Build -dbg packages for libgcc, libgomp, libmudflap, libffi, libobjc, + libgfortran. + * Drop the build dependency on expect-tcl8.3 (the hppa testsuite seems + to complete sucessfully with the expect package). + * Downgrade libmudflap-dev recommendation to a suggestion. Closes: #443929. + + * Closing reports reported against gcc-4.1 and fixed in gcc-4.2: + - General + + PR rtl-optimization/21299, error in invalid asm statement. + Closes: #380121. + - C++ + + PR libstdc++/19664, libstdc++ headers have pop/push of the visibility + around the declarations (closes: #307207, #324290, #423547). + + PR c++/21581, functions in anonymous namespaces default to "hidden" + visibility (closes: #278310). + + PR c++/4882, specialization of inner template using outer template + argument (closes: #269513). + + PR c++/6634, wrong parsing of "long long double" (closes: #247112). + + PR c++/10891, code using dynamic_cast causes segfaults when -fno-rtti + is used (closes: #188943). + + PR libstdc++/14991, stream::attach(int fd) porting entry out-of-date. + Closes: #178561. + + PR libstdc++/31638, string usage leads to warning with -Wcast-align. + Closes: #382153. + + Fix memory hog seen with g++-4.1. Closes: #411234. + - Fortran + + PR fortran/29228, ICE in gfc_trans_deferred_array (closes: #387222). + + PR fortran/24285, allow dollars everywhere in format (closes: #324600). + + PR libfortran/28354, 0.99999 printed as 0. instead of 1. by + format(f3.0). Closes: #397671. + + Fix ICE in gfc_get_extern_function_decl (closes: #396292). + - Architecture specific: + - i386 + + Fix error with -m64 (unable to find a register to spill in class + 'DIREG'). Closes: #430049. + - mips + + Fix ICE in tsubst (closes: #422303). + - s390 + + Fix ICE (segmentation fault) building dcmtk (closes: #435736). + + [Roman Zippel] + * Update the m68k patches. + + [Riku Voipio] + * Configure armeabi with --disable-sjlj-exceptions. + * armel testsuite takes ages, adjust build accordingly. + + [Ludovic Brenta and Xavier Grave] + * Add a version of the Ada run-time library using the setjump/longjump + exception handling mechanism (static library only). Use with + gnatmake --RTS=sjlj. Particularly useful for distributed (Annex E) + programs. + * Restore building libgnatvsn-dev and libgnatprj-dev. + + -- Matthias Klose Sat, 29 Sep 2007 11:19:40 +0200 + +gcc-4.2 (4.2.1-5) unstable; urgency=low + + * Update to SVN 20070825 from the ubuntu/gcc-4_2-branch. + - Fix PR debug/32610, LP: #121911. + * Apply proposed patches: + - Improve debug info for packed arrays with constant bounds + (PR fortran/22244). + - Fix ICE in rtl_for_decl_init on const vector initializers + (PR debug/32914). + - Fix (neg (lt X 0)) optimization (PR rtl-optimization/33148). + - Fix libgcc.a(tramp.o) on ppc32. + - Fix redundant reg/mem stores/moves (PR target/30961). + * Update the -fdirectives-only backport. + * gappletviewer-4.2: Include the gcjwebplugin binary. LP: #131114. + * Update gpc patches and build support (not yet enabled). + * Fix gcc-snapshot hppa64 install target. + * Set the priority of the source package to optional. + * Remove .la files from the biarch libstdc++ debug packages, + conflict with the 3.4 package. Closes: #440490. + + [Arthur Loiret] + * Add build support for GDC. + + -- Matthias Klose Mon, 27 Aug 2007 01:39:32 +0200 + +gcc-4.2 (4.2.1-4) unstable; urgency=medium + + * gcc-4.2: Include missing std*.h header files. + + -- Matthias Klose Tue, 14 Aug 2007 11:14:35 +0200 + +gcc-4.2 (4.2.1-3) unstable; urgency=low + + * Update to SVN 20070812 from the ubuntu/gcc-4_2-branch. + * debian/rules.defs: Fix typo, run the checks in biarch mode too. + * libgcj8-awt: Loosen dependency on gcj-4.2-base. + * Build only needed multilib libraries when building as gcj or gnat. + * Always build biarch libgomp in biarch builds. + * debian/rules2: Adjust testsuite logs files for logwatch.sh. + * Include header files from $/gcc_lib_dir)/include-fixed. + * Backport from trunk: -fdirectives-only (when preprocessing, handle + directives, but do not expand macros). + * Report an ICE to apport (if apport is available and the environment + variable GCC_NOAPPORT is not set) + * Fix gcj build failure on the Hurd (Samuel Thibault). Closes: #437470. + + -- Matthias Klose Sun, 12 Aug 2007 21:11:00 +0200 + +gcc-4.2 (4.2.1-2) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20070804 from the ubuntu/gcc-4_2-branch (20070804): + - Merge gcc-4_2-branch SVN 20070804. + - Imported classpath CVS 20070727. + - Bump the libgcj soname, add conflict with java-gcj-compat (<< 1.0.76-4). + - Remove patches integrated in the branches: pr32862. + - Update patches: libjava-subdir, libjava-jar. + - Add regenerated class files: svn-class-updates. + + * Fix profiling support on the Hurd (Michael Casadeval). Closes: #434937. + * Fix build on kfreebsd-amd64 (Aurelien Jarno). Closes: #435053. + * Period of grace is over, run the testsuite on m68k-linux again. + * Update infrastructure for the gcc-source package (Bastian Blank). + * Update profiling on the Hurd (Samuel Thibault, Michael Casadevall). + Closes: #433539. + * debian/rules2: Allow DEB_BUILD_OPTIONS=parallel= to overwrite NJOBS. + * Allow lang=, nolang= in DEB_BUILD_OPTIONS; deprecating + WITHOUT_LANG, and WITHOUT_CHECK. + * debian/rules.defs, debian/rules.conf: Cache some often used macros. + + * Preliminary work: Enable Java for ARM EABI (Andrew Haley), build + libffi for armel. + * gcj: Don't build the browser plugin in gcc-snapshot builds to get + rid of the xulrunner dependency. + * gcjwebplugin: Register for more browsers (package currently not built). + * gij/boehm-gc: Use sysconf as fallback, if reading /proc/stat fails. + Closes: #422469. + * libjava: Avoid dependency on MAXHOSTNAMELEN (Samuel Thibault). + * gcj: On arm and armel, use the ecj1 binary built from the ecj package. + * gcj: Don't require javac without java maintainer mode, remove build + dependencies on gcj and ecj, add build dependency on libecj-java. + + -- Matthias Klose Sun, 05 Aug 2007 15:56:07 +0200 + +gcc-4.2 (4.2.1-1) unstable; urgency=medium + + [Ludovic Brenta] + * debian/patches/ada-symbolic-tracebacks.c: remove all trace of + the function convert_addresses from adaint.c. Fixes FTBFS on alpha, + s390 and possibly other platforms. Closes: #433633. + * debian/control.m4: list myself as uploader if the source package name + is gnat. Relax build-dependency on gnat-4.2-source. + * debian/control.m4, debian/rules.conf: Build-depend on libmpfr-dev only + if building Fortran. + + [Matthias Klose] + * debian/rules.conf: Fix breakage of Fortran build dependencies introduced + by merge of the Ada bits. + * Don't include the gccbug binary anymore in the gcc package; upstream bug + reports should be reported to the upstream bug tracker at + http://gcc.gnu.org/bugzilla. + * Don't build and test libjava for the biarch architecture. + * Install gappletviewer man page. Addresses: #423094. + * debian/patches/m68k-java.dpatch: Readd. + * gjar: support @ arguments. + * Update to SVN 20070726 from the ubuntu/gcc-4_2-branch. + - Fix mips/mipsel builds. + * libmudflap0: Fix update leaving an empty doc dir. Closes: #428306. + * arm/armel doesn't have ssp support. Closes: #433172. + * Update kbsd-gnu-ada patch (Aurelien Jarno): Addresses: #434754. + * gcj-4.2: Build depend on gcj-4.2 to build the classpath examples files + for the binary-indep target. + * Fix PR java/32862, bugs in EnumMap implementation. Addresses: #423160. + + [Arthur Loiret] + * Fix cross builds targeting x86_64. Closes: LP: #121834. + + -- Matthias Klose Thu, 26 Jul 2007 21:46:03 +0200 + +gcc-4.2 (4.2.1-0) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20070719 from the ubuntu/gcc-4_2-branch, corresponding + to the GCC-4.2.1 release. + - debian/patches/arm-gij.dpatch: Remove. Closes: #433714. + * Apply proposed patch for PR tree-optimization/32723. + * Tighten build dependency on libmpfr-dev. + * On ia64, apply proposed patch for PR target/27880. Closes: #433719. + + [Hector Oron] + * Fix cross and reverse-cross builds. Closes: #432356. + + -- Matthias Klose Thu, 19 Jul 2007 17:59:37 +0200 + +gnat-4.2 (4.2-20070712-1) unstable; urgency=low + + * debian/rules.d/binary-ada.mk, debian/control.m4: + disable building libgnatvsn-dev and libgnatprj-dev, as they conflict + with packages from gnat-4.1. Will reenable them for the transition to + gnat-4.2. + * Upload as gnat-4.2. Closes: #432525. + + -- Ludovic Brenta Sat, 14 Jul 2007 15:12:34 +0200 + +gcc-4.2 (4.2-20070712-1) unstable; urgency=high + + [Matthias Klose] + * Update to SVN 20070712 from the ubuntu/gcc-4_2-branch. + - 4.2.1 RC2, built from SVN. + - same as gcc-4_2-branch, plus backport of gcc/java, boehm-gc, libffi, + libjava, zlib from the trunk. + - debian/patches/arm-libffi.dpatch: Remove. + - Fixes ICE in update_equiv_regs. Closes: #432604. + * debian/control.m4: Restore build dependency on dejagnu. + * debian/patches/arm-gij.dpatch: Update. + * i386-biarch.dpatch: Update for the backport for PR target/31868. + Closes: #432599. + + -- Matthias Klose Fri, 13 Jul 2007 08:07:51 +0200 + +gcc-4.2 (4.2-20070707-1) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20070707 from the ubuntu/gcc-4_2-branch. + - debian/patches/libjava-soname.dpatch: Remove. + - debian/patches/disable-configure-run-check.dpatch: Update. + * Only suggest multilib packages on multilib architectures. + * Point ICE messages to the 4.2 docdir. + * Explicitely use fastjar to build gcj-4.1. Addresses: #416001. + * Configure with --enable-libgcj on m32r (Kazuhiro Inaoka). + * Include the hppa64 cross compiler on hppa snapshot builds. + * debian/patches/arm-libffi.dpatch: Update. + * libgcj-doc: Include the generated documentation. + * Fix building the libjava/classpath examples. + * Support reverse cross builds (Neil Williams). Closes: #431086. + + -- Matthias Klose Sat, 07 Jul 2007 10:59:26 +0200 + +gcc-4.2 (4.2-20070627-1) unstable; urgency=high + + [Matthias Klose] + * Update to SVN gcc-4_2-branch/20070626. + * Update to SVN trunk/20070626 (gcc/java, libjava, libffi, boehm-gc). + * On mips*-linux, always imply -lpthread for -pthread (Thiemo Seufer). + Addresses: #428741. + * Fix libstdc++ cross builds (Arthur Loiret). Closes: #430395. + * README.Debian: Point to debian-toolchain for general toolchain topics. + * Use the generated locales for the libstdc++ build to fix the setting + of the gnu locale model. Closes: #428926, #429660. + * For ix86 lpia targets, configure --with-tune=i586. + * Make build dependency on gcc-4.1-multilib architecture specific. + * Do not ignore bootstrap comparision failure on ia64. + + [Ludovic Brenta] + * ada-link-lib.dpatch: update to apply cleanly on GCC 4.2. + * ada-libgnat{vsn,prj}.dpatch: adjust to GCC 4.2. Reenable in rules.patch. + * rules.conf: do not build libgomp as part of gnat-4.2. + * rules.conf, control.m4: build-depend on libz-dev, lib32z-dev or + lib64-dev only when building Java. + * rules2, rules.defs: $(with_mudflap): remove, use $(with_libmudflap) only. + * config.m4, binary-ada.mk: tighten dependencies; no Ada package depends + on gcc-4.2-base anymore. + * TODO: rewrite. + * README.gnat: include in gnat-4.2-base. Remove outdated information. + * README.maintainers: new. Include in gnat-4.2-base. + + [Hector Oron] + * Merge DEB_CROSS_INDEPENDENT with DEB_CROSS. + * Disables libssp0 for arm and armel targets when cross compiling. + * Updates README.cross. + * Fixes linker mapping problem on binary-libstdcxx-cross.mk. Closes: #430688. + + -- Matthias Klose Wed, 27 Jun 2007 21:54:08 +0200 + +gcc-4.2 (4.2-20070609-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070609. + - Remove patches integrated upstream: pr30052, hppa-caller-save-pic-tls. + * Update to SVN trunk/20070609 (gcc/java, libjava, libffi, boehm-gc). + - Remove patches integrated upstream: libjava-qt-peer, + classpath-config-guess. + * Do not build with --enable-java-maintainer-mode. + * debian/rules.patch: Comment out m68k-peephole, requires m68k-split_shift. + * Add target to apply patches up to a specific patch (Wouter Verhelst). + Closes: #424855. + * libstdc++6-4.2-*: Add conflicts with 4.1 packages. Closes: #419511. + * Apply proposed fix for PR target/28102. Closes: #426905. + * Fix build failure for cross compiler builds (Jiri Palecek). Closes: #393897. + * Update build macros for kfreebsd-amd64. Closes: #424693. + + -- Matthias Klose Sat, 9 Jun 2007 06:54:13 +0200 + +gcc-4.2 (4.2-20070528-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070528. + * Add backport for PR middle-end/20218. + * Add proposed PTA solver backport, PR tree-optimization/30052. + * Add backport for PR target/31868. + * Reenable the testsuite for arm, mips, mipsel. + + -- Matthias Klose Mon, 28 May 2007 09:03:04 +0200 + +gcc-4.2 (4.2-20070525-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070525. + * Update to SVN trunk/20070520 (gcc/java, libjava, libffi, boehm-gc). + * Do not explicitely configure for __cxa_atexit. + * libstdc++6-4.2-doc: Conflict with libstdc++6-4.1-doc. Closes: #424896. + * Update m68k patches: + - Remove patches applied upstream: m68k-jumptable, m68k-gc, + - Reenable patches: m68k-save_pic, m68k-dwarf, m68k-limit_reload, + m68k-prevent-qipush, m68k-peephole, m68k-return, m68k-sig-unwind, + m68k-align-code m68k-align-stack, m68k-symbolic-operand, + m68k-bitfield-offset. + - Update: m68k-return, m68k-secondary-addr-reload, m68k-notice-move + m68k-secondary-addr-reload, m68k-notice-move. + - TODO: m68k-split_shift, m68k-dwarf3, m68k-fpcompare. + * Update the kfreebsd and arm patches (Aurelien Jarno). Closes: #425011. + * Temporarily disable the testsuite on slow architectures to get the + package built soon. + + -- Matthias Klose Fri, 25 May 2007 07:14:36 +0200 + +gcc-4.2 (4.2-20070516-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070516. + * Update to SVN trunk/20070516 (gcc/java, libjava, libffi, boehm-gc). + * Merge changes from gcc-4.1_4.1.2-7. + * Update NEWS files. + + -- Matthias Klose Wed, 16 May 2007 02:33:57 +0200 + +gcc-4.2 (4.2-20070502-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070502. + - Remove pr11953 patch, integrated upstream. + * Update to SVN trunk/20070502 (gcc/java, libjava, libffi, boehm-gc). + * Adjust tetex/tex-live build dependency. + * Fix gobjc-4.2's, gobjc++-4.2's dependency on libobjc2. + * Tighten (build) dependency on binutils. Addresses: #421197. + * gfortran-4.2: Depend on libgfortran2, provide the libgfortran.so + symlink. Adresses: #421362. + * Build-depend on gcc-multilib [amd64 i386 powerpc ppc64 s390 sparc]. + * (Build-) depend on glibc (>= 2.5) for all architectures. + * Remove libssp packages from the control file. + + -- Matthias Klose Wed, 2 May 2007 18:46:57 +0200 + +gcc-4.2 (4.2-20070405-1) experimental; urgency=low + + * Update to SVN gcc-4_2-branch/20070405. + * Update to SVN trunk/20070405 (gcc/java, libjava, libffi, boehm-gc). + * gcc-4.2-hppa64: Don't depend on libc6-dev. + * Robustify setting of make's -j flag. Closes: #410919. + * gcc-snapshot: Use the install_snap_stamp target for installation. + + -- Matthias Klose Thu, 5 Apr 2007 23:56:35 +0200 + +gcc-4.2 (4.2-20070307-1) experimental; urgency=low + + * Update to SVN gcc-4_2-branch/20070307. + * Update to SVN trunk/20070307 (gcc/java, libjava, libffi, boehm-gc). + * Build gnat from separate sources. + * Merge changes from gcc-4.1-4.1.2-1. + * Install into /usr/lib/gcc//4.2, to ease upgrades + between subminor versions. + * Configure --with-gxx-include-dir=/usr/include/c++/4.2 + + -- Matthias Klose Thu, 8 Mar 2007 02:52:00 +0100 + +gcc-4.2 (4.2-20070210-1) experimental; urgency=low + + * Merge Java backport from Ubuntu: + - Update to SVN gcc-4_2-branch/20070210. + - Update to SVN trunk/20070210 (gcc/java, libjava). + - Backout trunk specific gcc/java changes. + - Build-depend on gcj-4.1 and ecj-bootstrap. + - gcj-4.2: Depend on ecj-bootstrap, recommend ecj-bootstrap-gcj. + - Merge libgcj8-awt-gtk back into libgcj8-awt; the Qt peers + are disabled by upstream again. + - Generate manual pages for the classpath tools from the classpath + documentation. + - Adopt packaging for the merged libjava. + - Update patches for the merged libjava: libjava-lib32-properties, + i386-biarch, reporting, libjava-soname, libjava-subdir, + libjava-lib32subdir. + - Remove obsolete patches: libjava-plugin-binary, libjava-ia32fix, + libstdc++-docfixes. + + * Set priority of development packages to optional. + * debian/libgcjGCJ.postrm: Don't fail on purge when directories + don't exist anymore. Closes: #406017. + * debian/patches/gcc-textdomain.dpatch: Update for 4.2. + * Generate and install libgomp docs into gcc-4.2-doc. + + -- Matthias Klose Sat, 10 Feb 2007 16:53:11 +0100 + +gcc-4.2 (4.2-20070105-1) experimental; urgency=low + + * Update to SVN 20070105. + * Add tetex-extra to Build-Depend-Indep (libstd++ doxygen docs), + fix doxygen build (libstdc++-docfixes.dpatch). + * Enable parallel build by default on SMP machines. + + -- Matthias Klose Fri, 5 Jan 2007 22:42:18 +0100 + +gcc-4.2 (4.2-20061217-1) experimental; urgency=low + + * Update to SVN 20061217. + * Merge changes from gcc-4.1_4.1.1-16 to gcc-4.1_4.1.1-21. + * Update patches to the current branch. + * Add multilib packages for gcc, g++, gobjc, gobjc++, gfortran. + * Link using --hash-style=gnu (alpha, amd64, ia64, i386, powerpc, ppc64, + s390, sparc). + + -- Matthias Klose Sun, 17 Dec 2006 15:54:54 +0100 + +gcc-4.2 (4.2-20061003-1) experimental; urgency=low + + * libgcj.postinst: Remove /var/lib/gcj-4.2 on package removal. + * Don't install backup files in the doc directory, only one gcc-4.1 + upgrade was broken. Closes: #389366. + * Merge gcc-biarch-generic.dpatch into i386-biarch.dpatch. + * Update link-libs.dpatch. + * Merge libgfortran2-dev into gfortran-4.2. + + -- Matthias Klose Tue, 3 Oct 2006 16:26:38 +0000 + +gcc-4.2 (4.2-20060923-1) experimental; urgency=low + + * Update to SVN 20060923. + * Remove patches applied upstream: kbsd-gnu-java, kbsd-gnu. + + -- Matthias Klose Sat, 23 Sep 2006 15:11:36 +0200 + +gcc-4.2 (4.2-20060905-1) experimental; urgency=low + + * Update to SVN 20060905. + * Merge changes from gcc-4.1 (4.1.1-10 - 4.1.1-12). + * Move gomp development files into gcc and gfortran. + * Build-depend on binutils (>= 2.17). + + -- Matthias Klose Tue, 5 Sep 2006 03:33:00 +0200 + +gcc-4.2 (4.2-20060818-1) experimental; urgency=low + + * Update to SVN 20060818. + - libjava-libgcjbc.dpatch: Remove, applied upstream. + * Merge changes from the Ubuntu gcj-4.2 package: + - libjava-soname.dpatch: Remove, applied upstream. + - libjava-native-libdir.dpatch: update. + - libffi-without-libgcj.dpatch: Remove, new libffi-configure to + enable --disable-libffi. + - Changes required for the classpath-0.92 update: + - New packages gappletviewer-4.2, gcjwebplugin-4.2. + - gij-4.2: Add keytool alternative. + - gcj-4.2: Add jarsigner alternative. + - libgcj8-dev: Remove conflicts with older libgcjX-dev packages. + - lib32gcj8: Populate the /usr/lib32/gcj-4.2 directory. + - libjava-library-path.dpatch: + - When running the i386 binaries on amd64, look in + /usr/lib32/gcj-x.y and /usr/lib32/jni instead. + - Add /usr/lib/jni to java.library.path. Adresses: #364820. + - Add more debugging symbols to libgcj8-dbg. Adresses: #383705. + - Fix and renable the biarch build for sparc. + * Disable gnat for alpha, fails to build. + * Configure without --enable-objc-gc, fails to build. + + -- Matthias Klose Sat, 19 Aug 2006 18:25:50 +0200 + +gcc-4.2 (4.2-20060709-1) experimental; urgency=low + + * Test build, SVN trunk 20060709. + * Merge libssp0-dev into gcc-4.1 (-fstack-protector is a common option). + * Rename libmudflap0-dev to libmudflap0-4.2-dev. + * Ignore compiler warnings when checking whether compiler driver understands + Ada fails. + * Merge changes from the gcc-4.1 package. + + -- Matthias Klose Sun, 9 Jul 2006 14:28:03 +0200 + +gcc-4.2 (4.2-20060617-1) experimental; urgency=low + + * Test build, SVN trunk 20060617. + + [Matthias Klose] + * Configure using --enable-objc-gc, using the internal boehm-gc. + * Build-depend on bison (>= 1:2.3). + * Build the QT based awt peer library, not yet the same functionality + as the GTK based peer library. + * Update libjava-* patches. + + [Ludovic Brenta] + * Do not provide the symbolic link /usr/bin/gnatgcc; this will now + be provided by package gnat from the source package gcc-defaults. + * debian/control.m4, debian/control (gnat): conflict with gnat (<< 4.1), + not all versions of gnat, since gcc-defaults will now provide gnat (= 4.1) + which depends on gnat-4.1. + + [Bastian Blank] + * Make it possible to overwrite arch per DEB_TARGET_ARCH and + DEB_TARGET_GNU_TYPE. + * Disable biarch only on request for cross builds. + * Use correct source directory for tarballs. + * Produce correct multiarch.inc for source builds. + + -- Matthias Klose Sat, 17 Jun 2006 19:02:01 +0200 + +gcc-4.2 (4.2-20060606-1) experimental; urgency=low + + * Test build, SVN trunk 20060606. + * Remove obsolete patches, update patches for 4.2. + * Update the biarch-include patches to work with mips-triarch. + * Disable Ada, not yet updated. + * New packages: libgomp*. + * Remove fastjar, not included upstream anymore. + + -- Matthias Klose Tue, 6 Jun 2006 10:52:28 +0200 + +gcc-4.1 (4.1.2-12) unstable; urgency=high + + * i386-biarch.dpatch: Update for the backport for PR target/31868. + Closes: #427185. + * m68k-libffi2.dpatch: Update. Closes: #425399. + + -- Matthias Klose Mon, 4 Jun 2007 23:53:23 +0200 + +gcc-4.1 (4.1.2-11) unstable; urgency=low + + * Update to SVN 20070601. + * Build the libmudflap0-dev package again. + * Don't build libffi, when the packages are not built. + + -- Matthias Klose Fri, 1 Jun 2007 23:55:22 +0200 + +gcc-4.1 (4.1.2-10) unstable; urgency=low + + * Regenerate the control file. + + -- Matthias Klose Wed, 30 May 2007 00:29:29 +0200 + +gcc-4.1 (4.1.2-9) unstable; urgency=low + + * Update to SVN 20070528. + * Don't build packages now built from the gcc-4.2 source (arm, m68k, + mips, mipsel). + * Add backport for PR middle-end/20218. + * Add backport for PR target/31868. + + -- Matthias Klose Tue, 29 May 2007 00:01:12 +0200 + +gcc-4.1 (4.1.2-8) unstable; urgency=low + + * Update to SVN 20070518. + * Don't build packages now built from the gcc-4.2 source. + + [ Aurelian Jarno ] + * Update libffi patch for ARM. Closes: #425011. + * arm-pr30486, arm-pr28516, arm-unbreak-eabi-armv4t: New. + * Disable FFI, Java, ObjC for armel. + + -- Matthias Klose Sun, 20 May 2007 10:31:24 +0200 + +gcc-4.1 (4.1.2-7) unstable; urgency=low + + * Update to SVN 20070514. + * Link using --hash-style=both on supported architectures. Addresses: #421790. + * On hppa, build ecjx as a native binary. + * note-gnu-stack.dpatch: Fix ARM comment marker (Daniel Jacobowitz). + Closes: #422978. + * Add build dependency on libxul-dev for *-freebsd. Closes: #422995. + * Update config.guess/config.sub and build gcjwebplugin on GNU/kFreeBSD + (Aurelian Jarno). Closes: #422995. + * Disable ssp on hurd-i386. Closes: #423757. + + -- Matthias Klose Mon, 14 May 2007 08:40:08 +0200 + +gcc-4.1 (4.1.2-6) unstable; urgency=low + + * Update libjava from the gcc-4.1 Fedora branch 20070504. + * gfortran-4.1: Fix the target of the libgfortran.so symlink. + Closes: #421362. + * Build-depend on gcc-multilib [amd64 i386 powerpc ppc64 s390 sparc]. + * Readd build dependency on binutils on arm. + * (Build-) depend on glibc (>= 2.5) for all architectures. + * Remove libssp packages from the control file. + * Fix wrong code generation on hppa when TLS variables are used. + Closes: #422421. + + -- Matthias Klose Sun, 6 May 2007 10:00:23 +0200 + +gcc-4.1 (4.1.2-5) unstable; urgency=low + + * Update to SVN 20070429. + * Update libjava from the gcc-4.1 Fedora branch 20070428. + * Update m68k patches: + - Remove pr25514, pr27736, applied upstream. + - Update m68k-java. + * Link using --hash-style=gnu/both. + * Tighten (build) dependency on binutils. Closes: #421197. + * gij-4.1: Add a conflict with java-gcj-compat (<< 1.0.69). + * gfortran-4.1: Depend on libgfortran1, provide the libgfortran.so + symlink. Closes: #421362. + * gcc-4.1, gcc-4.1-multilib: Fix compatibility symlinks. Closes: #421382. + * Temporarily remove build dependency on locales on arm, hppa, m68k, mipsel. + * Temporarily remove build dependency on binutils on arm. + * Fix FTBFS on GNU/kFreeBSD (Aurelian Jarno). Closes: #421423. + * gij-4.1 postinst: Create /var/lib/gcj-4.1. Closes: #421526. + + -- Matthias Klose Mon, 30 Apr 2007 08:13:32 +0200 + +gcc-4.1 (4.1.2-4) unstable; urgency=medium + + * Update to SVN 20070423. + - Remove pr11953, applied upstream. + - Fix ld version detection in libstdc++v3. + * Update libjava from the gcc-4.1 Fedora branch 20070423. + * Merge libgfortran1-dev into gfortran-4.1. + * Add multilib packages for gcc, g++, gobjc, gobjc++, gfortran. + * Don't link using --hash-style=gnu/both; loosen dependency on binutils. + * Don't revert the patch to fix PR c++/27227. + + -- Matthias Klose Mon, 23 Apr 2007 23:13:14 +0200 + +gcc-4.1 (4.1.2-3) experimental; urgency=low + + * Update to SVN 20070405. + * Update libjava from the gcc-4.1 Fedora branch 20070405. + * Robustify setting of make's -j flag. Closes: #414316. + * Only build the libssp packages, when building the common libraries. + * gcc-4.1-hppa64: Don't depend on libc6-dev. + + -- Matthias Klose Fri, 6 Apr 2007 00:28:29 +0200 + +gcc-4.1 (4.1.2-2) experimental; urgency=low + + * Update to SVN 20070306. + * Update libjava from the gcc-4.1 Fedora branch 20070306. + + [Matthias Klose] + * Don't install gij-wrapper anymore, directly register gij as a java + alternative. + * Don't install gcjh-wrapper anymore. + * Don't use exact versioned dependencies on gcj-base for libgcj and + libgcj-awt. + * Fix glibc build dependency for alpha. + * Support -ffast-math on hurd-i386 (Samuel Thibault). Closes: #413342. + * Update kfreebsd-amd64 patches (Aurelien Jarno). Closes: #406015. + * gij: Consistently use $(dbexecdir) to reference the gcj sub dir. + * Install into /usr/lib/gcc//4.1, to ease upgrades + between minor versions. + Add compatibility symlinks in /4.1.2 to build gnat-4.1 + and gcj-4.1 from separate sources. + + -- Matthias Klose Wed, 7 Mar 2007 03:51:47 +0100 + +gcc-4.1 (4.1.2-1) experimental; urgency=low + + [Matthias Klose] + * Update to gcc-4.1.2. + * Update libjava backport patches, split out boehm-gc-backport patch. + * Enable the cpu-default-generic patch (i386, amd64), backport from 4.2. + * Correct mfctl instruction syntax (hppa), backport from the trunk. + * Backport PR java/9861 (name mangling updates). + * gcc.c (main): Call expandargv (backport from 4.2). + * Apply gcc dwarf2 unwinding patches from the trunk. + * Apply backport for PR 20208 on amd64 i386 powerpc ppc64 sparc s390. + * Apply patches from the 4.1 branch for PR rtl-optimization/28772, + PR middle-end/30313, PR middle-end/30473, PR c++/30536, PR debug/30189, + PR fortran/30478, PR rtl-optimization/30787, PR tree-optimization/30823, + PR rtl-optimization/28173, PR ada/30684, bug in pointer dependency test, + PR rtl-optimization/30931, PR fortran/25392, PR fortran/30400, + PR libgfortran/30910, PR libgfortran/30918, PR fortran/29441, + PR target/30634. + * Update NEWS files. + * Include a backport of the ecj+generics java updates as + gcj-ecj-20070215.tar.bz2. Install it into the gcc-4.1-source package. + * Do not build fastjar anymore from this source. + * debian/control.m4: Move expect-tcl8.3 before dejagnu. + * Work around firefox/icewhatever dropping plugin dependencies on xpcom. + * Refactor naming of libgcj packages in the build files. + * Make libstdc++-doc's build dependencies depending on the source package. + * Do not build packages on architectures, which are already built by gcc-4.2. + + * Merge the gcj generics backport from Ubuntu: + + - Merge the Java bits (eclipse based compiler, 1.5 compatibility, + classpath generics) from the gcc-4.1 Fedora branch. + - Drop all previous patches from the classpath-0.93 merge, keep + the boehm-gc backport (splitted out as a separate patch). + - Add a gcj-ecj-generics.tar.bz2 tarball, containing gcc/java, libjava, + config/unwind_ipinfo.m4, taken from the Fedora branch. + - Drop the libjava-hppa, libjava-plugin-binary, pr29362, pr29805 patches + integrated in the backport. + - Update patches for the merge: reporting, libjava-subdir, i386-biarch, + classpath-tooldoc, pr26885 + - Add libjava-dropped, libjava-install; dropped chunks from the merge. + - Add pr9861-nojava mangling changes, non-java parts for PR 9861. + - Add gcc-expandv, expand `@' parameters on the commandline; backport + from the trunk. + - Disable the m68k-gc patch, needs update for the merge. + - Configure --with-java-home set for 1.5.0. + - Configure with --enable-java-maintainer-mode to build the header + and class files on the fly. + - Add build dependency on ecj-bootstrap, configure --with-ecj-jar. + - Build an empty libgcj-doc package; gjdoc currently cannot handle + generics. + - Apply gcc dwarf2 unwinding patches from the trunk, allowing the Events + testcase to pass. + - Tighten dependencies on shared libraries. + - Use /usr/lib/gcj-4-1-71 as private gcj subdir. + - Bump the libgcj soversion to 71, rename the libgcj7-0 package + to libgcj7-1, rename the libgcj7-awt package to libgcj7-1-awt. + - gij-4.1: Add and provide alternatives for gorbd, grmid, gserialver. + - gcj-4.1: Remove gcjh, gcjh-wrapper, gjnih. + - gcj-4.1: Add and provide alternatives for jar, javah, native2ascii, + tnameserv. + - gcj-4.1: Add dependency on ecj-bootstrap, recommend fastjar, + ecj-bootstrap-gcj. + - Add build dependency on ecj-bootstrap version providing the GCCMain + class. + - libgcj7-1: Recommend libgcj7-1-awt. + - Add build dependency on libmagic-dev. + - Build-depend on gcj-4.1; build our own ecj1 and gjdoc before + starting the build. + - Make ecj1 available when running the testsuite. + - Fix build failure on sparc-linux. + - Fix gjavah compatibility problems (PR cp-tools/3070[67]). + - Fixed driver issue source files (PR driver/30714). + - Add (rudimentary) manual pages for classpath tools. + + [Kevin Brown] + * debian/control.m4, debian/rules.d/binary-ada.mk: provide new packages + containing debugging symbols for Ada libraries: libgnat-4.1-dbg, + libgnatprj4.1-dbg, and libgnatvsn4.1-dbg. Adresses: #401385. + + -- Matthias Klose Sat, 3 Mar 2007 23:12:08 +0100 + +gcc-4.1 (4.1.1ds2-30) experimental; urgency=low + + * Update to SVN 20070106. + * Do not revert the fixes for PR 25878, PR 29138, PR 29408. + * Don't build the packages built by gcc-4.2 source. + * debian/patches/note-gnu-stack.dpatch: Add .note.GNU-stack sections + for gcc's crt files, libffi and boehm-gc. Taken from FC. Closes: #382741. + * Merge from Ubuntu: + - Backport g++ visibility patches from the FC gcc-4_1-branch. + - Update the long-double patches; require glibc-2.4 as a build dependency + on alpha, powerpc, sparc, s390. Bump the shlibs dependencies to + require 4.1.1-21. + - On powerpc-linux configure using --enable-secureplt. Closes: #382748. + - When using the cpu-default-generic patch, build for generic x86-64 + on amd64 and i386 biarch. + - Link using --hash-style=both (alpha, amd64, ia64, i386, powerpc, ppc64, + s390, sparc). + * gij-4.1: Recommends libgcj7-awt instead of suggesting it. Closes: #394917. + * Split the gcc-long-double patch into a code and doc part. + * Set priority of development packages to optional. + * Add support for kfreebsd-amd64 (Aurelian Jarno). Closes: #406015. + + -- Matthias Klose Sat, 6 Jan 2007 10:35:42 +0100 + +gcc-4.1 (4.1.1ds2-22) unstable; urgency=high + + * Enable -pthread for GNU/Hurd (Michael Banck). Closes: #400031. + * Update the m68k-fpcompare patch (Roman Zippel). Closes: #401585. + + -- Matthias Klose Sun, 10 Dec 2006 12:35:06 +0100 + +gcc-4.1 (4.1.1ds2-20) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20061115. + - Fix PR tree-optimization/27891, ICE in tree_split_edge. + Closes: #370248, #391657, #394630. + - Fix PR tree-optimization/9814, duplicate of PR tree-optimization/29797. + Closes: #181096. + * Apply the libjava/net backport from the redhat/gcc-4_1-branch. + * Apply proposed patch for PR java/29805. + + [Roman Zippel] + * Build the ObjC and ObjC++ compilers in cross builds. + * debian/patches/m68k-symbolic-operand.dpatch: Better recognize + symbolic operands in addresses. + * debian/patches/m68k-bitfield-offset.dpatch: Only use constant offset + for register bitfields (combine expects shifts, but does a rotate). + * debian/patches/m68k-bitfield-offset.dpatch: Update and apply. + + [Daniel Jacobowitz] + * Don't try to use _Unwind_Backtrace on SJLJ targets. + See bug #387875, #388505, GCC PR 29206. + + -- Matthias Klose Wed, 15 Nov 2006 08:59:53 -0800 + +gcc-4.1 (4.1.1ds2-19) unstable; urgency=low + + * Fix typo in arm-pragma-pack.dpatch. + + -- Matthias Klose Sat, 28 Oct 2006 11:04:00 +0200 + +gcc-4.1 (4.1.1ds2-18) unstable; urgency=medium + + [Matthias Klose] + * Update to SVN 20061028. + * Fix #pragma pack on ARM (Paul Brook). Closes: #394703. + * Revert PR c++/29138, PR c++/29408. Closes: #392559. + * Revert PR c++/25878. Addresses: #387989. + * fastjar: Provide jar. Closes: #395397. + + [Ludovic Brenta] + * debian/control.m4 (libgnatprj-dev): depend on libgnatvsn-dev. + debian/gnatprj.gpr: with gnatvsn.gpr. Closes: #395000. + + -- Matthias Klose Thu, 26 Oct 2006 23:51:10 +0200 + +gcc-4.1 (4.1.1ds2-17) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20061020. + - Fix PR debug/26881, ICE in dwarf2out_finish. Closes: #377613. + - Fix PR PR c++/29408, parse error for valid code. Closes: #392327, #393010. + - Fix PR c++/29435, segfault with sizeof and templates. Closes: #393071. + - Fix PR target/29338, segfault with -finline-limit on arm. Closes: 390620. + - Fix 3.4/4.0 backwards compatibility problem in libstdc++. + * Fix PR classpath/29362, taken from the redhat/gcc-4_1-branch. + * Remove the INSTALL directory from the source tarball. Closes: #392974. + * Disable building the static libgcj; non-functional, and cutting + down build times. + * libgcj7-0: Tighten dependency on libgcj-common. + * libgcj7-dev: Install .pc file as libgcj-4.1.pc. + * README.cross: Updated (Hector Oron). Addresses: #380251. + * config-ml.dpatch: Use *-linux-gnu as *_GNU_TYPE. Closes: #394034. + + [Nikita V. Youshchenko] + * Fix typo in the cross build scripts. Closes: #391445. + + [Falk Hueffner] + * alpha-no-ev4-directive.dpatch: Fix kernel build failure. + + [Roman Zippel] + * debian/patches/m68k-align-code.dpatch: Use "move.l %a4,%a4" to advance + within code. + * debian/patches/m68k-align-stack.dpatch: Try to keep the stack word aligned. + * debian/patches/m68k-dwarf3.dpatch: Emit correct dwarf info for cfa offset + and register with -fomit-frame-pointer. + * debian/patches/m68k-fpcompare.dpatch: Bring fp compare early to its + desired form to relieve reload. Closes: #390879. + * debian/patches/m68k-prevent-swap.dpatch: Don't swap operands + during reloads. + * debian/patches/m68k-reg-inc.dpatch: Reinsert REG_INC notes after splitting + an instruction. + * debian/patches/m68k-secondary-addr-reload.dpatch: Add secondary reloads + to allow reload to get byte values into addr regs. Closes: #385327. + * debian/patches/m68k-symbolic-operand.dpatch: Better recognize symbolic + operands in addresses. + * debian/patches/m68k-limit_reload.dpatch: Remove, superseded by + m68k-secondary-addr-reload.dpatch. + * debian/patches/m68k-notice-move.dpatch: Apply, was checked in in -16. + * debian/patches/m68k-autoinc.dpatch: Updated, don't attempt to increment + the register, if it's used multiple times in the instruction . + + -- Matthias Klose Sat, 21 Oct 2006 00:25:05 +0200 + +gcc-4.1 (4.1.1ds1-16) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20061008. + - Fix PR c++/29226, ICE in make_decl_rtl. Closes: #388263. + * libgcj7-0: Fix package removal. Closes: #390874. + * Configure with --disable-libssp on architectures that don't + support it (alpha, hppa, ia64, m68k, mips, mipsel). + * On hppa, remove build-dependency on dash. + * gij/gcj: Do not install slave links for the non DFSG manpages. + Closes: #390425, #390532. + * libgcj-common: rebuild-gcj-db: Don't do anything, if no classmap + files are found. Closes: #390966. + * Fix PR libstdc++/11953, extended for all linux architectures. + Closes: #391268. + * libffi4-dev: Conflict with libffi. Closes: #387561. + * Backport PR target/27880 to the gcc-4_1-branch. Patch by Steve Ellcey. + Closes: #390693. + * On ia64, don't use _Unwind_GetIPInfo in libjava and libstdc++. + * Add a README.ssp with minimal documentation about stack smashing + protection. Closes: #366094. + * Do not build libgcj-common from the gcc-4.1/gcj-4.1 sources anymore. + + [Roman Zippel] + * debian/patches/m68k-notice-move.dpatch: Don't set cc_status + for fp move without fp register. + + -- Matthias Klose Sun, 8 Oct 2006 02:21:49 +0200 + +gcc-4.1 (4.1.1ds1-15) unstable; urgency=medium + + * Update to SVN 20060927. + - Fix PR debug/29132, exception handling on mips. Closes: #389468, #390042. + - Fix typo in gcc documentation. Closes: #386180. + - Fix PR target/29230, wrong code generation on arm. Closes: #385505. + * libgcj-common: Ignore exit value of gcj-dbtool in rebuild-gcj-db on + arm, m68k, hppa. Adresses: #388505. + * libgcj-common: Replaces java-gcj-compat-dev and java-gcj-compat. + Closes: #389539. + * libgcj-common: /usr/share/gcj/debian_defaults: Define gcj_native_archs. + * Update the java backport from the redhat/gcc-4_1-branch upto 2006-09-27; + remove libjava-str2double.dpatch, pr28661.dpatch. + * Disable ssp on hppa, not supported. + * i386-biarch.dpatch: Avoid warnings about macro redefinitions. + + -- Matthias Klose Fri, 29 Sep 2006 22:32:41 +0200 + +gcc-4.1 (4.1.1ds1-14) unstable; urgency=medium + + [Matthias Klose] + * Update to SVN 20060920. + - Fix PR c++/26957. Closes: #373257, #386910. + - Fix PR rtl-optimization/28243. Closes: #378325. + * Remove patch for PR rtl-optimization/28634, applied upstream. + * Fix FTBFS on GNU/kFreeBSD (fallout from the backport of classpath-0.92). + (Petr Salinger). Closes: #385974. + * Merge from Ubuntu: + - Do not encode the subminor version in the jar files. + - Fix typo for the versioned gcj subdirectory in lib32gcj-0. + - When running the i386 binaries on amd64, adjust the properties + java.home, gnu.classpath.home.url, sun.boot.class.path, + gnu.gcj.precompiled.db.path. + - Configure the 32bit build on amd64 + --with-java-home=/usr/lib32/jvm/java-1.4.2-gcj-4.1-1.4.2.0/jre. + - Configure --with-long-double-128 for glibc-2.4 on alpha, powerpc, ppc64, + s390, s390x, sparc, sparc64. + - Update the java backport from the redhat/gcc-4_1-branch upto 2006-09-20. + - Fix PR java/29013, invalid byte code generation. Closes: #386926. + - debian/patches/gcc-pfrs-2.dpatch: Apply a fix for a regression in the + backport of PR 28946 from the trunk (H.J. Lu). + * Backport PR classpath/28661 from the trunk. + * Don't ship the .la files for the java modules. Closes: #386228. + * gcj-4.1: Remove dangling symlink. Closes: #386430. + * gij: Suggest java-gcj-compat, gcj: Suggest java-gcj-compat-dev. + Closes: #361942. + * Fix infinite loop in string-to-double conversion on 64bit targets. + Closes: #348792. + * gij-4.1: Ignore exit value of gcj-dbtool in postinst. Adresses: #388505. + * libgcj-common: Move rebuild-gcj-db from java-gcj-compat into libgcj-common. + * On hppa, install a wrapper around gij-4.1 to ignore unaligned memory + accesses. Works around buildd configurations enabling this check by + default. Addresses: #364819. + + [Ludovic Brenta] + * debian/patches/ada-libgnatprj.dpatch: Build mlib-tgt-linux.adb instead of + mlib-tgt.adb. Closes: #387826. + * debian/patches/ada-pr15802.dpatch: Backport from the trunk. + Closes: #246384. + * debian/control.m4 (gnat-4.1): do not provide gnat (supplied by + gcc-defaults instead); conflict with gnat-4.2 which will soon be in + unstable. + + [Roman Zippel] + * debian/patches/m68k-dwarf2.dpatch: Recognize stack adjustments also + in the src of an instruction. + * debian/patches/m68k-jumptable.dpatch: Don't force byte offset when + accessing the jumptable, gas can generate the correct offset size instead. + * debian/patches/m68k-peephole.dpatch: Convert some text peepholes to rtl + peepholes, so the correct DWARF2 information can be generated for stack + manipulations (Keep a few peepholes temporarily disabled). + * debian/patches/m68k-peephole-note.dpatch: Don't choke on notes while + reinserting REG_EH_REGION notes. + * debian/patches/m68k-return.dpatch: Don't use single return if fp register + have to be restored. Closes: #386864. + * debian/patches/m68k-sig-unwind.dpatch: Add support for unwinding over + signal frames. + * Fix PR rtl-optimization/27736, backport from the trunk. + * Add java support for m68k. Closes: #312830, #340874, #381022. + + -- Matthias Klose Sun, 24 Sep 2006 19:36:31 +0200 + +gcc-4.1 (4.1.1ds1-13) unstable; urgency=medium + + * Update to SVN 20060901; remove patches applied upstream: + - PR target/24367. + - PR c++/26670. + * Apply proposed patch for PR fortran/28908. + * Fix biarch symlinks in lib64stdc++ for cross builds. + * Fix biarch symlinks in lib32objc on amd64. + + -- Matthias Klose Fri, 1 Sep 2006 00:04:05 +0200 + +gcc-4.1 (4.1.1ds1-12) unstable; urgency=medium + + [Matthias Klose] + * Update to SVN 20060830. + * Add backport of PR other/26208, bump libgcc1 shlibs dependency. + * Add backport of PR c++/26670. Closes: #356548. + * Apply proposed patch for PR target/24367 (s390). + * Add /usr/lib/jni to the libjava dlsearch path. Closes: #364820. + * Build without GFDL licensed docs. Closes: #384036. + - debian/patches/{svn-doc-updates,pr25524-doc,pr26885-doc}.dpatch: + Split out -doc specific patches. + - debian/*.texi, debian/porting.html: Add dummy documentation. + - debian/rules.unpack, debian/rules.patch: Update for non-gfdl build. + - fastjar.texi: Directly define the gcctabopt and gccoptlist macros. + + * Merge from Ubuntu: + - Backport the classpath-0.92, libjava, gcc/java merge from the + redhat/gcc-4_1-branch branch. + - Apply the proposed patch for PR libgcj/28698. + - Change the libgcj/libgij sonames. Rename libgcj7 to libgcj7-0. + - Do not remove the rpath from libjvm.so and libjawt.so. Some + configure scripts rely on being able to link that libraries + directly. + - When running the i386 binaries on amd64, look in + /usr/lib32/gcj-x.y and /usr/lib32/jni instead. + - Add /usr/lib/jni to java.library.path. Closes: #364820. + - Add debugging symbols for more binary packages to libgcj7-dbg. + Closes: #383705. + - libgcj7-dev: Remove conflicts with older libgcjX-dev packages. + - Do not build the libgcj-bc and lib32gcj-bc packages anymore from + the gcj-4.1 source. + + [Roman Zippel] + * debian/patches/m68k-limit_reload.dpatch: Correctly limit reload class. + Closes: #375522. + * debian/patches/m68k-split_shift.dpatch: Use correct predicates for long long + shifts and use more splits. Closes: #381572. + * debian/patches/m68k-prevent-qipush.dpatch: Prevent combine from creating + a byte push on the stack (invalid on m68k). Closes: #385021. + * debian/patches/m68k-autoinc.dpatch: Recognize a few more autoinc possibilities. + * debian/patches/pr25514.dpatch: Backport from the trunk. + * debian/patches/m68k-gc.dpatch: Change STACKBOTTOM to LINUX_STACKBOTTOM + so it works with 2.6 kernels. + * Other m68k bug reports fixed in 4.1.1-11 and 4.1.1-12: + Closes: #378599, #345574, #344041, #323426, #340293. + * Build the stage1 compiler using -g -O2; saves a few hours build time + and apparently is working at the moment. + + -- Matthias Klose Tue, 29 Aug 2006 21:37:28 +0200 + +gcc-4.1 (4.1.1-11) unstable; urgency=low + + * The "Our priority are our users, remove the documentation!" release. + + [Matthias Klose] + * Fix build failure building the hppa->hppa64 cross compiler. + * Update to SVN 20060814. + - Fix directory traversal vulnerability in fastjar. Closes: #368397. + CVE-2006-3619. + - Fix PR rtl-optimization/23454, ICE in invert_exp_1 on sparc. + Closes: #321215. + - Fix PR c++/26757, C++ front-end producing two DECLs with the same UID. + Closes: #356569. + * Remove patch for PR rtl-optimization/28075, applied upstream. + * Apply proposed patch for PR rtl-optimization/28634, rounding problem with + -fdelayed-branch on hppa/mips. Closes: #381710. + * Fixed at least in 4.1.1-10: boost::date_time build failure. + Closes: #382352. + * Build-depend on make (>= 3.81), add make (>= 3.81) as dependency to + gcc-4.1-source. Closes: #381117. + * Backport of libffi from the trunk; needed for the java backport in + experimental. + * libffi4-dev: Install the libffi_convenience library as libffi_pic.a. + * When building a package without the GFDL'd documentation, don't create + the alternative's slave links for manual pages for the java tools. + * Do not build the -doc packages and derived manual pages licensed under + the GFDL with invariant sections or cover texts. + * Only build the libssp package, if the target libc doesn't provide + ssp support. + * Run the complete testsuite, when building a standalone gcj package. + + [Roman Zippel] + * debian/patches/m68k-fjump.dpatch: + Always use as fjcc pseudo op, we rely heavily on as to generate the + right size for the jump instructions. Closes: #359281. + * debian/patches/m68k-gc.dpatch: + The thread suspend handler has to save all registers. + Reenable MPROTECT_VDB, it should work, otherwise it's probably a kernel bug. + * debian/patches/m68k-save_pic.dpatch: + Correctly save the pic register, when not done by reload(). + (fixes _Unwind_RaiseException and thus exception handling). + * debian/patches/m68k-libffi.dpatch: Add support for closures. + * debian/patches/m68k-bitfield.dpatch: Avoid propagation of mem expression + past a zero_extract lvalue. + * debian/patches/m68k-dwarf.dpatch: Correct the dwarf frame information, + but preserve compatibility. + + [Christian Aichinger] + * Fix building a cross compiler targeted for ia64. Closes: #382627. + + -- Matthias Klose Tue, 15 Aug 2006 00:41:00 +0200 + +gcc-4.1 (4.1.1-10) unstable; urgency=low + + * Update to SVN 20060729. + - Fix PR c++/28225, segfault in type_dependent_expression_p. + Closes: #376148. + * Apply proposed patch for PR rtl-optimization/28075. + Closes: #373820. + * Apply proposed backport and proposed patch for PR rtl-optimization/28221. + Closes: #376084. + * libgcj7-jar: Loosen dependency on gcj-4.1-base. + * Add ssp header files to the private gcc includedir. + * Do not build the Ada packages from the gcc-4.1 source, introducing + a new gnat-4.1 source package. + * Build libgnat on alpha and s390 as well. + * Do not build the gnat-4.1-doc package (GFDL with invariant sections or + cover texts). + * Remove references to the stl-manual package. Closes: #378698. + + -- Matthias Klose Sat, 29 Jul 2006 22:08:59 +0200 + +gcc-4.1 (4.1.1-9) unstable; urgency=low + + * Update to SVN 20060715. + - Fix PR c++/28016, do not emit uninstantiated static data members. + Closes: #373895, #376871. + * Revert the patch to fix PR c++/27227. Closes: #378321. + * multiarch-include.dpatch: Renamed from biarch-include.dpatch; + apply for all architectures. + * Do not build the java compiler in gcc-4.1 package, just include the + options and specs in the gcc driver. + * Remove gnat-4.0 as an alternative build dependency. + * Add a patch to enable -fstack-protector by default for C, C++, ObjC, ObjC++. + The patch is disabled by default. + + -- Matthias Klose Sat, 15 Jul 2006 17:07:29 +0200 + +gcc-4.1 (4.1.1-8) unstable; urgency=medium + + * Update to SVN 20060708. + - Fix typo in gcov documentation. Closes: #375140. + - Fix typo in gccint documentation. Closes: #376412. + - [alpha], Fix -fvisibility-inlines-hidden segfaults on reference to + static method. PR target/27082. Closes: #369642. + + * Fix ppc64 architecture string in debian/multiarch.inc. Closes: #374535. + * Fix conflict, replace and provide libssp0-dev for cross compilers. + Closes: #377012. + * Ignore compiler warnings when checking whether compiler driver understands + Ada fails. Closes: #376660. + * Backport fix for PR libmudflap/26864 from the trunk. Closes: #26864. + * README.C++: Remove non-existing URL. Closes: #347601. + * gij-4.1: Provide java2-runtime. Closes: #360906. + + * Closed reports reported against gcc-3.0 and fixed in gcc-4.1: + - C++ + + PR libstdc++/13943, call of overloaded `llabs(int)' is ambiguous. + Closes: #228645. + - Java + + Fixed segmentation fault on compiling bad program. Closes: #165635 + * Closed reports reported against gcc-3.3 and fixed in gcc-4.1: + - Stack protector available. Closes: #213994, #233208. + - Better documentation of -finline-limit option. Closes: #296047. + * Closed reports reported against gcc-3.4 and fixed in gcc-4.1: + - General + + Fixed [unit-at-a-time] Using -O2 cannot detect missing return + statement in a function. Closes: #276843. + - C++ + + PR13943, call of overloaded `llabs(int)' is ambiguous. Closes: #228645. + + PR c++/21280, #pragma interface, templates, and "inline function used + but never defined". Closes: #364412. + - Architecture specific: + - m68k + + Segfault building glibc. Closes: #353618. + + ICE when trying to build boost. Closes: #321486. + * Closed reports reported against gcc-4.0 and fixed in gcc-4.1: + - General + + Handling of #pragma GCC visibility for builtin functions. + Closes: #330279. + + gettext interpretation the two conditional strings as one. + Closes: #227193. + + ICE due to if-conversion. Closes: #335078. + + Fix unaligned accesses with __attribute__(packed) and memcpy. + Closes: #355297. + + Fix ICE in expand_expr_real_1, at expr.c. Closes: #369817. + - Ada + + Link error not finding -laddr2line. Closes: #322849. + + ICE on invalid code. Closes: #333564. + - C++ + + libstdc++: bad thousand separator with fr_FR.UTF-8. Closes: #351786. + + The Compiler uses less memory than 4.0. Closes: #336225. + + Fix "fails to compare reverse map iterators". Closes: #362840. + + Fix "fail to generate code for base destructor defined inline with + pragma interface". Closes: #356435. + + Fix ICE in cp_expr_size, at cp/cp-objcp-common.c. Closes: #317455. + + Fix wrong warning: control may reach end of non-void function. + Closes: #319309. + + Fix bogus warning "statement has no effect" with template and + statement-expression. Closes: #336915. + + Fixed segfault on syntax error. Closes: #349087. + + Fix ICE with __builtin_constant_p in template argument. + Closes: #353366. + + Implement DR280 (fixing "no operator!= for const_reverse_iterator"). + Closes: #244894. + - Fortran + + Fix wrong behaviour in unformatted writing. Closes: #369547. + - Java + + Fixed segfault on -fdump-tree-all-all. Closes: #344265. + + Fixed ant code completion in eclipse generating a nullpointer + exception. Closes: #337510. + + Fixed abort in gnu_java_awt_peer_gtk_GtkImage.c. Closes: #343112. + + Fixed assertion failure in gij with rhdb-explain. Closes: #335650. + + Fixed assertion failure when calling JTabbedPane.addTab(null, ...). + Closes: #314704. + + Fixed error when displaying empty window with bound larger than the + displayed content. Closes: #324502. + + Fixed: Exception in JComboBox.removeAllItems(). Closes: #314706. + + Fixed assertian error in gnu_java_awt_peer_gtk_GtkImage.c. + Closes: #333733. + - libmudflap + + PR libmudflap/23170, libmudflap should not use functions marked + obsolescent by POSIX/SUS. Closes: #320398. + - Architecture specific: + - m68k + + FTBFS building tin. Closes: #323016. + + ICE with -g -fomit-frame-pointer. Closes: #331150. + + ICE in instantiate_virtual_regs_lossage. Closes: #333536. + + Wrong code generation with loop unrolling. Closes: #342121. + + ICEs while building gst-ffmpeg. Closes: #343692. + - mips + + Fix gjdoc build failure. Closes: #344986. + + Fix link failure for static libs and object files when xgot + needs to be used. Closes: #274942. + * gnat bug reports fixed since gnat-3.15p: + - GNAT miscounts UTF8 characters in string with -gnaty. Closes: #66175. + - Bug box from "with Text_IO" when compiling optimized. Closes: #243795. + - Nonconforming parameter lists not detected. Closes: #243796. + - Illegal use clause not detected. Closes: #243797. + - Compiler enters infinite loop on illegal program with tagged records. + Closes: #243799. + - Compiler crashes on illegal program (missing discriminant, unconstrained + parent). Closes: #243800. + - Bug box at sinfo.adb:1215 on illegal program. Closes: #243801. + - Bug box at sinfo.adb:1651 on illegal program. Closes: #243802. + - Illegal program not detected (entry families). Closes: #243803. + - Illegal program not detected, RM 10.1.1(14). Closes: #243807. + - Bug box at exp_ch9.adb:7254 on illegal code. Closes: #243812. + - Illegal program not detected, RM 4.1.4(14). Closes: #243816. + - Bug box in Gigi, code=116, on legal program. Closes: #244225. + - Illegal program not detected, 12.7(10) (generic parameter is visible, + shouldn't be). Closes: #244483. + - Illegal program not detected, ambiguous aggregate. Closes: #244496. + - Bug box at sem_ch3.adb:8003. Closes: #244940. + - Bug box in Gigi, code=103, on illegal program. Closes: #244945. + - Legal program rejected, overloaded procedures. Closes: #246188. + - Bug box in Gigi, code=999, on legal program. Closes: #246388. + - Illegal program not detected, RM 10.1.6(3). Closes: #246389. + - Illegal program not detected, RM 3.10.2(24). Closes: #247014. + - Illegal program not detected, RM 3.9(17). Closes: #247015. + - Legal program rejected. Closes: #247016. + - Legal program rejected. Closes: #247021. + - Illegal program not detected, RM 4.7(3). Closes: #247022. + - Illegal program not detected, RM 3.10.2(27). Closes: #247562. + - Legal program rejected, "limited type has no stream attributes". + Closes: #247563. + - Wrong output from legal program. Closes: #247565. + - Compiler enters infinite loop on illegal program. Closes: #247567. + - Illegal program not detected, RM 8.6(31). Closes: #247568. + - Legal program rejected, visible declaration not seen. Closes: #247572. + - Illegal program not detected, RM 8.2(9). Closes: #247573. + - Wrong output from legal program, dereferencing access all T'Class. + Closes: #248171. + - Compiler crashes on illegal program, RM 5.2(6). Closes: #248174. + - Cannot find generic package body, RM 1.1.3(4). Closes: #248677. + - Illegal program not detected, RM 3.4.1(5). Closes: #248679. + - Compiler ignores legal override of abstract subprogram. Closes: #248686. + - Bug box, Assert_Failure at sinfo.adb:2365 on illegal program. + Closes: #251266. + - Ada.Numerics.Generic_Elementary_Functions.Log erroneout with -gnatN. + Closes: #263498. + - Bug box, Assert_Failure at atree.adb:2906 or Gigi abort, code=102 + with -gnat -gnatc. Closes: #267788. + - Bug box in Gigi, code=116, 'Unrestricted_Access of a protected + subprogram. Closes: #269775. + - Stack overflow on illegal program, AI-306. Closes: #276225. + - Illegal program not detected, RM B.1(24). Closes: #276226. + - Wrong code generated with -O -fPIC. Closes: #306833. + - Obsolete: bashism's in debian/rules file. Closes: #370681. + - Supports more debian architectures. Closes: #171477. + + -- Matthias Klose Sat, 8 Jul 2006 16:24:47 +0200 + +gcc-4.1 (4.1.1-7) unstable; urgency=low + + * Prefer gnat-4.1 over gnat-4.0 as a build dependency. + * libssp0: Set priority to standard. + + -- Matthias Klose Sun, 2 Jul 2006 10:22:50 +0000 + +gcc-4.1 (4.1.1-6) unstable; urgency=low + + [Ludovic Brenta] + * Do not provide the symbolic link /usr/bin/gnatgcc; this will now + be provided by package gnat from the source package gcc-defaults. + * debian/control.m4, debian/control (gnat): conflict with gnat (<< 4.1), + not all versions of gnat, since gcc-defaults will now provide gnat (= 4.1) + which depends on gnat-4.1. + + [Matthias Klose] + * libjava: Change the default for enable_hash_synchronization_default + on PA-RISC. Tighten the libgcj7 shlibs version on hppa. + * Update to SVN 20060630. + * Apply proposed patch for PR 26991. + * Don't use the version for the libstdc++ shlibs dependency for the libgcj + shlibs dependency. + * Merge from Ubuntu edgy: + - Fix %g7 usage in TLS, add patch sparc-g7.dpatch, fixes glibc-2.4 build + failure on sparc (Fabio M. Di Nitto). + - Merge libssp0-dev into gcc-4.1 (-fstack-protector is a common option). + - Run the testsuite with -fstack-protector as well. + + [Bastian Blank] + * Make it possible to overwrite arch per DEB_TARGET_ARCH and DEB_TARGET_GNU_TYPE. + * Disable biarch only on request for cross builds. + * Use correct source directory for tarballs. + * Produce correct multiarch.inc for source builds. + + -- Matthias Klose Sat, 1 Jul 2006 01:49:55 +0200 + +gcc-4.1 (4.1.1-5) unstable; urgency=low + + * Fix build error running with dpkg-buildpackage -rsudo. + + -- Matthias Klose Wed, 14 Jun 2006 01:54:13 +0200 + +gcc-4.1 (4.1.1-4) unstable; urgency=low + + * Really do not backout the fix for PR c++/26068. + Closes: #372152, #372559. + * Update fastjar version string to 4.1. + * Disable pascal again. + + -- Matthias Klose Mon, 12 Jun 2006 20:29:57 +0200 + +gcc-4.1 (4.1.1-3) unstable; urgency=low + + * Update to SVN 20060608, do not revert the fix for PR c++/26068. + Closes: #372152, #372559. + * Fix build failures for Pascal, enable Pascal on all architectures. + * Fix another build failure on GNU/kFreeBSD (Aurelien Jarno). + Closes: #370661. + * Fix build fauilure in gcc/p with parallel make. + * Remove cross-configure patch (Kazuhiro Inaoka). Closes: #370649. + * Only build the gcc-4.1-source package, when building from the gcc-4.1 + source. + * Fix upgrade problem from standalone gcj-4.1. + * Fix build error using bison-2.2, build-depend on bison (>= 2.3). + Closes: #372605. + * Backport PR libstdc++/25524 from the trunk, update the biarch-include + patch. mips triarch support can be added more easily. + + -- Matthias Klose Mon, 12 Jun 2006 00:23:45 +0200 + +gcc-4.1 (4.1.1-2) unstable; urgency=low + + * Update to SVN 20060604. + - Fix PR c++/26757, C++ front-end producing two DECLs with the same UID. + Closes: #356569. + - Fix PR target/27158, ICE in extract_insn with -maltivec. + Closes: #362307. + * Revert PR c++/26068 to work around PR c++/27884 (Martin Michlmayr). + Closes: #370308. + * Mention Ada in copyright, update copyright file (Ludovic Brenta). + Closes: #366744. + * Fix kbsd-gnu-java.dpatch (Petr Salinger). Closes: #370320. + * Don't include version control files in gcc-4.1-source. + + -- Matthias Klose Sun, 4 Jun 2006 19:13:37 +0000 + +gcc-4.1 (4.1.1-1) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20060601. + * Reenable the gpc build. + * PR libgcj/26483, libffi patch for IA-64 denorms, taken from trunk. + * Disable Ada for m32r targets. Closes: #367595. + * lib32gfortran1: Do not create empty directory /usr/lib32. Closes: #367999. + * gcc-4.1: Add a conflict to the gcj-4.1 version with a different + gcc_libdir. + * Build gij/gcj for GNU/k*BSD. Closes: #367166. + * Update hurd-changes patch (Michael Banck). Closes: #369690. + * debian/copyright: Add exception for the gpc runtime library. + * Update gpc/gpc-doc package descriptions. + + [Ludovic Brenta] + * patches/ada-libgnatprj.dpatch: add prj-pars.ad[bs] and sfn_scan.ad[bs] + to libgnatprj; remove them from gnatmake. + + -- Matthias Klose Thu, 1 Jun 2006 20:35:54 +0200 + +gcc-4.1 (4.1.0-4) unstable; urgency=low + + [Ludovic Brenta] + * Fix a stupid bug whereby fname.ad{b,s} would be included in both + libgnatvsn-dev and libgnatprj-dev, preventing use of gnatprj.gpr. + Closes: #366733. + + -- Matthias Klose Thu, 11 May 2006 04:34:50 +0200 + +gcc-4.1 (4.1.0-3) unstable; urgency=low + + * Update to SVN 20060507. + * debian/rules.d/binary-java.mk: Use $(lib32) everywhere. Closes: #365388. + * Always configure hppa64-linux-gnu with + --includedir=/usr/hppa64-linux-gnu/include. + * Make libgnatvsn4.1 and libgnatprj4.1 priority optional. Closes: #365900. + * Call autoconf2.13 explicitely in the Ada patches, build-depend on + autoconf2.13. Closes: #365780. + * Fix libgnatprj-dev and libgnatvsn-dev dependencies on their shared + libraries. + * Deduce softfloat and vfp (ARM) configure options (Pjotr Kourzanov). + * Update proposed patch for PR26885 (May 2 version). + * Build the libxxstdc++-dbg packages, when not building the library pacakges. + * Do not include the _pic library in the libxxstdc++-dbg packages. + + -- Matthias Klose Sun, 7 May 2006 15:29:53 +0200 + +gcc-4.1 (4.1.0-2) unstable; urgency=medium + + * Update to SVN 20060428. + * Apply proposed patches for PR26885. + + * Keep libffi doc files in its own directory. Closes: #360466. + * Update ppc64 patches for 4.1 (Andreas Jochens). Closes: #360498. + * Fix PR tree-optimization/26763, wrong-code, taken from the 4.1 branch. + Closes: #356896. CVE-2006-1902. + * hppa-cbranch, hppa-cbranch2 patches: Fix for PR target/26743, + PR target/11254, PR target/10274, backport from trunk (Randolph Chung). + * Let libgccN provide -dcv1 when cross-compiling (Pjotr Kourzanov). + Closes: #363289. + * (Build-)depend on glibc-2.3.6-7. Closes: #360895, #361904. + * Fix a pedantic report about a package description. Add a hint that + we do not like bug reports with locales other than "C". Closes: #361409. + * Enable the libjava interpreter on mips/mipsel. + * gcc-4.1-source: Depend on gcc-4.1-base. + * gnat-4.1: Fix permissions of .ali files. + * Build lib32gcj7 on amd64. + * debian/patches/ada-gnatvsn.dpatch: New. Apply proposed fix for + PR27194. + + [Ludovic Brenta] + * debian/patches/ada-default-project-path.dpatch: new. Change the + default search path for project files to the one specified + by the Debian Policy for Ada: /usr/share/ada/adainclude. + * debian/patches/ada-symbolic-tracebacks.dpatch: new. Enable support for + symbolic tracebacks in exceptions. + * debian/patches/ada-missing-lib.dpatch: remove, superseded by the above. + * debian/patches/ada-link-lib.dpatch: changed. + - Instead of building libada as a target library only, build it as + both a host and, if different, target library. + - Build the GNAT tools in their top-level directory; do not use + recursive makefiles. + - Link the GNAT tools dynamically against libgnat. + - Apply proposed fix for PR27300. + - Rerun autoconf (Matthias Klose). + * debian/patches/ada-libgnatvsn.dpatch: new. + - Introduce a new shared library named libgnatvsn, containing + common components of GNAT under the GNAT-Modified GPL, for + use in GNAT tools, ASIS, GLADE and GPS. + - Link the gnat tools against this new library. + - Rerun autoconf (Matthias Klose). + * debian/patches/ada-libgnatprj.dpatch: new. + - Introduce a new shared library named libgnatprj, containing the + GNAT Project Manager, i.e. the parts of GNAT that parses project + files (*.gpr). Licensed under pure GPL; for use in GLADE and GPS. + - Link the gnat tools against this new library. + - Rerun autoconf (Matthias Klose). + * debian/patches/ada-acats.dpatch: new. + - When running the ACATS, look for the gnat tools in their new + directory (build/gnattools), and for the shared libraries in + build/gcc/ada/rts, build/libgnatvsn and build/libgnatprj. + * debian/gnatvsn.gpr, debian/gnatprj.gpr: new. + * debian/rules.d/binary-ada.mk, debian/control.m4: new binary packages: + libgnatvsn-dev, libgnatvsn4.1, libgnatprj-dev, libgnatprj4.1. Place + the *.gpr files in their respective -dev packages. + + -- Matthias Klose Sat, 29 Apr 2006 00:32:09 +0200 + +gcc-4.1 (4.1.0-1) unstable; urgency=low + + * libstdc++CXX-BV-dev.preinst: Remove (handling of c++ include dir for 4.0). + * libgcj-common: Move removal of docdir from preinst into postinst. + * libgcj7: Move removal of docdir from preinst into postinst. + * Drop alternative build dependency on gnat-3.4, not built anymore. + * Fix PR libgcj/26103, wrong exception thrown (4.1 branch). + * debian/patches/libjava-stacktrace.dpatch: Add support to print file names + and line numbers in stacktraces. + * Add debugging symbols for libgcjawt and lib-gnu-java-awt-peer-gtk + in the libgcj7-dbg and lib32gcj7-dbg packages. + * Remove dependency of the libgcj-dbg packages on the libgcj-dev packages, + add recommendations on binutils and libgcj-dev. Mention the requirement + of binutils for the stacktraces. + * Fix upgrade from version 4.0.2-9, loosing the Debian changelog. + Closes: #355439. + * gij/gcj: Install one alternative for each command, do not use slave + links for rmiregistry, javah, rmic. Ubuntu #26781. Closes: #342557. + * Fix for PR tree-optimization/26587, taken from the 4.1 branch. + * Fix PR libstdc++/26526 (link failure when _GLIBCXX_DEBUG is defined). + * Configure with --enable-clocale=gnu, even if not building C++ packages. + * Remove runtime path from biarch libraries as well. + * PR middle-end/26557 (ice-on-vaild-code, regression), taken from + the gcc-4_1-branch. Closes: #349083. + * PR tree-optimization/26672 (ice-on-vaild-code, regression), taken from + the gcc-4_1-branch. Closes: #356231. + * PR middle-end/26004 (rejects-vaild-code, regression), taken from + the gcc-4_1-branch. + * When building as standalone gcj, build libgcc4 (hppa only) and fastjar. + * Configure --with-cpu=v8 on sparc. + * debian/patches/libjava-hppa.dpatch: pa/pa32-linux.h + (CRT_CALL_STATIC_FUNCTION): Define when CRTSTUFFS_O is defined. + (John David Anglin). Closes: #353346. + * Point to the 4.1 version of README.Bugs (closes: #356230). + * Disable the libmudflap testsuite on alpha (getting killed). + + -- Matthias Klose Sat, 18 Mar 2006 23:00:39 +0100 + +gcc-4.1 (4.1.0-0) experimental; urgency=low + + * GCC 4.1.0 final release. + * Build the packages for the Java language from a separate source. + * Update NEWS.html, NEWS.gcc. + * libgcj-doc: Auto generated API documentation for libgcj7, classpath + example programs. + * Add gjdoc to Build-Depends-Indep. + * On amd64, build-depend on libc6-dev-i386 instead of ia32-libs-dev. + * Internal ssp headers now installed in the gcc libdir. + * Do not build gcj-4.1-base when building the gcc-4.1 packages. + * When building as gcj-4.1, use the tarball from the gcc-4.1-source + package. + + [Ludovic Brenta] + * Allow to enable and disable NLS and bootstrapping from the environment. + - Adding "nls" to WITHOUT_LANG disables NLS support. + - If WITH_BOOTSTRAP is set, debian/rules2 calls configure + --enable-bootstrap=$(WITH_BOOTSTRAP) and just "make". If + WITH_BOOTSTRAP is unset, it calls configure without a bootstrapping + option and calls "make profiledbootstrap" or "make bootstrap-lean" + depending on the target CPU. + Currently overwritten to default to "bootstrap". + + -- Matthias Klose Thu, 2 Mar 2006 00:03:45 +0100 + +gcc-4.1 (4.1ds9-0exp9) experimental; urgency=low + + * Update to GCC 4.1.0 release candidate 1 (gcc-4.1.0-20060219 tarball). + * Update gcc-version patch for gcc-4.1. + * libgccN, libstdc++N*: Fix upgrade of /usr/share/doc symlinks. + * libjava awt & swing update, taken from trunk 2006-02-16. + * libgcj7-dev: Suggest libgcj-doc, built from a separate source package. + * Shorten build-dependency line (work around buildd problems + on arm* and mips*). + * New patch gcc-ice-hack (saving the preprocessed source on an ICE), + taken from Fedora. + + -- Matthias Klose Mon, 20 Feb 2006 10:07:23 +0100 + +gcc-4.1 (4.1ds8-0exp8) experimental; urgency=low + + * Update to SVN 20060212, taken from the 4.1 release branch. + * libgccN: Fix upgrade of /usr/share/doc/libgccN symlink. + + -- Matthias Klose Sun, 12 Feb 2006 19:48:31 +0000 + +gcc-4.1 (4.1ds7-0exp7) experimental; urgency=low + + * Update to SVN 20060127, taken from the 4.1 release branch. + - On hppa, bump the libgcc soversion to 4. + * Add an option not to depend on the system -base package for cross compiler + (Ian Wienand). Closes: #347484. + * Remove workaround increasing the stack size limit for some architectures, + not needed anymore on ia64. + * On amd64, build-depend on libc6-dev-i386, depend on libc6-i386, where + available. + * libstdc++6: Properly upgrade the doc directory. Closes: #346171. + * libstdc++6: Add a conflict to scim (<< 1.4.2-1). Closes: #343313. + * Set default 32bit ix86 architecture to i486. + + -- Matthias Klose Fri, 27 Jan 2006 22:23:22 +0100 + +gcc-4.1 (4.1ds6-0ubuntu6) experimental; urgency=low + + * Update to SVN 20060107, taken from the 4.1 release branch. + - Remove fix for PR ada/22533, fixed by patch for PR c++/23171. + * Remove binary packages from the control file, which aren't built + yet on any architecture. + * gcc-hppa64: Use /usr/hppa64-linux-gnu/include as location for the glibc + headers, tighten glibc (build-)dependency. + * libffi [arm]: Add support for closures, libjava [arm]: enable the gij + interpreter (Phil Blundell). Addresses: #337263. + * For the gcj standalone build, include cc1 into the gcj-4.1 package, + needed for linking java programs compiled to native code. + + -- Matthias Klose Sat, 7 Jan 2006 03:36:33 +0100 + +gcc-4.1 (4.1ds4-0exp4) experimental; urgency=low + + * Update to SVN 20051210, taken from the 4.1 release branch. + * Prepare to build the java packages from it's own source (merged + from Ubuntu). + - Build the java packages from the gcc-4.1 source, as long as packages + are prepared for experimental. + - When built as gcj, run only the libjava testsuite, don't build the + libstdc++ debug packages, don't package the gcc source. + - Loosen package dependencies, when java packages are built from + separate sources. + - Fix gcj hppa build, when java packages are built from separate sources. + - gij-4.1: Install test-summary, when doing separate builds. + - Allow java packages be installed independent from other packages built + from the source package. + - Rename libgcj7-common to libgcj7-jar. + - Introduce a gcj-4.1-base package to completely separate the two and not + duplicate the changelog in each gcj/gij package. + * Java related changes: + - libjava-xml-transform: Update from classpath trunk, needed for + eclipse (Michael Koch), applied upstream. + - Fix java wrapper scripts to point to 4.1 (closes: #341710). + - Reenable java on mips and mipsel. + - Fix libgcj6 dependency. Ubuntu #19935. + - Add libxt-dev as a java build dependency. autoconf explicitely checks + for X11/Intrinsic.h. + * Ada related changes: + - Apply proposed fix for PR ada/22533, reenable ada on alpha, powerpc, + mips, mipsel and s390. + - Add Ada support for GNU/kFreeBSD (Aurelien Jarno). Closes: #341356. + - Remove ada bootstrap workaround for alpha. + * Build a separate gcc-4.1-source package (Bastian Blank). Closes: #333922. + * Remove obsolete patch: libstdc++-automake. + * Remove patch integrated upstream: libffi-mips. + * Fix the installation of the hppa64 compiler in snapshot builds. + * Rename libgfortran0* to libgfortran1* (upstream soversion change). + * Add a dependency on libc-dev for all compilers / -dev packages except + gcc (which can be used for kernel builds without libc-dev). + * libffi4-dev: Fix package description. + * On amd64, install 32bit libraries into /emul/ia32-linux/usr/lib. + Addresses: #341147. + * Fix installation of biarch libstdc++ headers on amd64. + * Configure --with-tune=i686 on ix86 architectures (on Ubuntu with + -mtune=pentium4). Remove the cpu-default-* patches. + * debian/control.m4: Fix libxxgcc package names. + * Update the build infrastructure to build cross compilers + (Nikita V. Youshchenko). + * Tighten binutils (build-)dependency. Closes: #342484. + * Symlink more doc directories. + * debian/control.m4: Explicitely set Architecture for biarch packages. + + -- Matthias Klose Sat, 10 Dec 2005 16:56:45 +0100 + +gcc-4.1 (4.1ds1-0ubuntu1) UNRELEASED; urgency=low + + * Build Java packages only. + * Update to SVN 20051121, taken from the 4.1 release branch. + - Remove libjava-saxdriver-fix patch, applied upstream. + - Remove ada-gnat-version patch, applied upstream. + * Fix FTBFS in biarch builds on 32bit kernels. + * Update libstdc++-doc doc-base file (closes: #339046). + * Remove obsolete patch: gcc-alpha-ada_fix. + * Fix installation of biarch libstdc++ headers (Ubuntu #19655). + * Fix sparc and s390 biarch patches to build the 64bit libffi. + * Work around biarch build failure in libjava/classpath/native/jni/midi-alsa. + * Install spe.h header on powerpc. + * Add libasound build dependencies. + * libgcj: Fix installation of libgjsmalsa library. + * Remove patches not used anymore: libjava-no-rpath, i386-config-ml-nomf, + libobjc, multiarch-include, disable-biarch-check-mf, gpc-profiled, + gpc-no-gpidump, libgpc-shared, acats-expect. + * Fix references to manuals in gnat(1). Ubuntu #19772. + * Remove build dependency on xlibs-dev, add libxtst-dev. + * Do not configure with --disable-werror. + * Merge *-config-ml patches into one config-ml patch, configure the biarch + libs in debian/rules.defs. + * debian/gcj-wrapper: Accept -Xss. + * Do not build biarch java on Debian (missing biarch libasound). + * Do not build the java packages from this source package, avoiding + dependencies on X. + + -- Matthias Klose Mon, 21 Nov 2005 20:29:43 +0100 + +gcc-4.1 (4.1ds0-0exp0) experimental; urgency=low + + * Configure libstdc++ using the default allocator. + * Update to 20051112, taken from the svn trunk. + + -- Matthias Klose Sat, 12 Nov 2005 23:47:01 +0100 + +gcc-4.1 (4.1ds0-0ubuntu0) breezy; urgency=low + + * UNRELEASED + * First snapshot of gcc-4.1 (CVS 20051019). + - adds SSP support (closes: #213994, #233208). + * Remove patches applied upstream/not needed anymore. + * Update patches for 4.1: link-libs, gcc-textdomain, libjava-dlsearch-path, + rename-info-files, reporting, classmap-path, i386-biarch, sparc-biarch, + libjava-biarch-awt, ada-gcc-name. + * Disable patches: + - 323016, m68k, necessary for 4.1? + * debian/copyright: Update for 4.1. + * debian/control, debian/control.m4, debian/rules.defs, debian/rules.conf: + Update for 4.1, add support for Obj-C++ and SSP. + * Fix generation of Ada docs in info format. + * Set Ada library version to 4.1. + * Drop gnat-3.3 as an alternative build dependency. + * Use fortran instead of f95 for the build files. + * Update build support for awt peer libs. + * Add packaging support for SSP library. + * Add packaging support for Obj-C++. + * Run the testsuite for -march=i686 on i386 and amd64 as well. + * Fix generation of Pascal docs in html format. + * Update config-ml patches to build libssp biarch. + * Disable libssp for hppa64 build. + * libgcj7-dev: Install jni_md.h. + * Disable gnat for powerpc, currently fails to build. + * Add biarch runtime lib packages for ssp, mudflap, ffi. + * Do not explicitely configure with --enable-java-gc=boehm, which is the + default. + * libjava-saxdriver-fix: Fix a problem in the Aelfred2 SAX parser. + * libstdc++6-4.0-dev: Depend on the libc-dev package. Ubuntu #18885. + * Build-depend on expect-tcl8.3 on all architectures. + * Build-depend on lib32z1-dev on amd64 and ppc64, drop build dependency on + amd64-libs. + * Disable ada on alpha mips mipsel powerpc s390, currently broken. + + -- Matthias Klose Wed, 19 Oct 2005 11:02:31 +0200 + +gcc-4.0 (4.0.2-3) unstable; urgency=low + + * Update to CVS 20051015, taken from the gcc-4_0-branch. + - gcc man page fixes (closes: #327254, #330099). + - PR java/19870, PR java/20338, PR java/21844, PR java/21540: + Remove Debian patches. + - Applied libjava-echo-fix patch. + - Fix PR target/24284, ICE (Segmentation fault) on sparc-linux. + Closes: #329840. + - Fix PR c++/23797, ICE on typename outside template. Closes: #325545. + - Fix PR c++/22551, ICE in tree_low_cst. Closes: #318932. + * libstdc++6: Tighten libstdc++ shlibs version to 4.0.2-3 (new symbol). + * Update generated Ada files. + * Fix logic to disable mudflap and Obj-C++ via the environment. + * Remove f77 build bits. + * gij-4.0: Remove /var/lib/gcj-4.0/classmap.db on purge (closes: #330800). + * Let gcj-4.0 depend on libgcj6-dev, instead of recommending it. This is + not necessary for byte-code compilations, but for compilations to native + code. For compilations to byte-code, use a better compiler like ecj + for now (found in the ecj-bootstrap package). + * Disable biarch setup in cross compilers (Josh Triplett). Closes: #333952. + * Fix with_libnof logic for cross-compilations (Josh Triplett). + Closes: #333951. + * Depend on binutils (>= 2.16.1cvs20050902-1) on the alpha architecture. + Closes: #333954. + * On i386, build-depend on libc6-dev-amd64. Closes: #329108. + * (Build-)depend on glibc 2.3.5-5. + + -- Matthias Klose Sun, 2 Oct 2005 14:25:54 +0200 + +gcc-4.0 (4.0.2-2) unstable; urgency=low + + * Update to CVS 20051001, taken from the gcc-4_0-branch. Includes the + changes between 4.0.2 RC3 and the final 4.0.2 release, missing from + the upstream tarball. Remove patches applied upstream (gcc-c-decl, + pr23182, pr23043, pr23367, pr23891, pr21418, pr24018). + * On ix86 architectures run the testsuite for -march=i686 as well. + * Build libffi on the Hurd (closes: #328705). + * Add big-endian arm (armeb) support (Lennert Buytenhek). Closes: #330730. + * Update libjava xml to classpath CVS HEAD 20050930 (Michael Koch). + * Reapply patch to make -mieee the default on alpha-linux. Closes: #330826. + * Add workaround not to make libmudflap _start/_end not small data on + mips/mipsel, taken from CVS HEAD. + * Don't build the nof libraries on powerpc. + * Number crunching time on m68k, reenable gfortran on m68k-linux-gnu. + + -- Matthias Klose Sat, 1 Oct 2005 15:42:10 +0200 + +gcc-4.0 (4.0.2-1) unstable; urgency=low + + * GCC 4.0.2 release. + * lib64stdc++6: Set priority to optional. + * Fix bug in StreamSerializer, seen with eclipse-3.1 (Ubuntu 12744). + Backport from CVS HEAD, Michael Koch. + * Apply java patches, proposed for the 4.0 branch: PR java/24018, + PR libgcj/23182, PR java/19870, PR java/21844, PR libgcj/23367, + PR java/20338. + * Update the expect/pty test to actually call expect directly, rather + than test for the existence of PTYs, since a working expect is what + we really care about, not random device files (Adam Conrad). + Closes: #329715. + * Add build dependencies on lib64z1-dev. + * gcc-c-decl.dpatch: Fix C global decl handling regression in 4.0.2 from + 4.0.1 + + -- Matthias Klose Thu, 29 Sep 2005 19:50:08 +0200 + +gcc-4.0 (4.0.1-9) unstable; urgency=low + + * Update to CVS 20050922, taken from the gcc-4_0-branch (4.0.2 RC3). + * Apply patches: + - Fix PR java/21418: Order of source files matters when compiling, + backported from mainline. + - Fix for PR 23043, backported form mainline. + - Proposed patch for #323016 (m68k only). Patch by Roman Zippel. + * libstdc++6: Tighten libstdc++ shlibs version to 4.0.1-9 (new symbol). + * Fail the build early, if the system doesn't have any pty devices + created in /dev. Needed for running the testsuite. + * Update hurd changes again (closes: #328973). + + -- Matthias Klose Thu, 22 Sep 2005 07:28:18 +0200 + +gcc-4.0 (4.0.1-8) unstable; urgency=medium + + * Update to CVS 20050917, taken from the gcc-4_0-branch. + - Fix FTBFS for boost, introduced in 4.0.1-7 (closes: #328684). + * Fix PR java/23891, eclipse bootstrap. + * Set priority of gcc-4.0-hppa64 package to standard. + * Bump standards version to 3.6.2. + * Fix java wrapper script, mishandles command line options with arguments. + Patch from Olly Betts. Closes: #296456. + * Bump epoch of the lib32gcc1 package to the same epoch as for the the + libgcc1 and lib64gcc1 packages. + * Fix some lintian warnings. + * Build libffi on the Hurd (closes: #328705). + * For biarch builds, disable the testsuite for the non-default architecture + for runtime libraries, which are not built by default (libjava). + * Add gsfonts-x11 to Build-Depends-Indep to avoid warnings from doxygen. + * Install Ada .ali files read-only. + + -- Matthias Klose Sat, 17 Sep 2005 10:35:23 +0200 + +gcc-4.0 (4.0.1-7) unstable; urgency=low + + * Update to CVS 20050913, taken from the gcc-4_0-branch. + - Fix PR c++/19004, ICE in uses_template_parms (closes: #284777). + - Fix PR rtl-optimization/23454, ICE in invert_exp_1 on sparc. + Closes: #321215. + - Fix PR libstdc++/23417, make bits/stl_{list,tree}.h -Weffc++ clean. + Closes: ##322170. + * Install 'altivec.h' on ppc64 (closes: #323945). + * Install locale data with the versioned package name (closes: #321591). + * Fix fastjar build without building libjava. + * On hppa, don't build using gcc-3.3 when ada is disabled. + * On m68k, don't build the stage1 compiler using -O. + + * Ludovic Brenta + - Allow the choice whether or not to build with NLS. + - Fix a typo whereby libffi was always enabled on i386. + + -- Matthias Klose Tue, 13 Sep 2005 23:23:11 +0200 + +gcc-4.0 (4.0.1-6) unstable; urgency=low + + * Update to CVS 20050821, taken from the gcc-4_0-branch. + - debian/patches/pr21562.dpatch: Removed, applied upstream. + - debian/patches/libjava-awt-name.dpatch: Updated. + - debian/patches/classpath-20050618.dpatch: Updated. + * Use all available CPU's for the check target, unless USE_NJOBS == no. + * debian/patches/biarch-include.dpatch: Include + /usr/local/include/-linux-gnu before including /usr/local/include. + * Fix biarch system include directories for the non-default architecture. + * Prefer gnat-4.0 over gnat-3.4 over gnat-3.3 as a build-dependency. + + -- Matthias Klose Thu, 18 Aug 2005 18:36:23 +0200 + +gcc-4.0 (4.0.1-5) unstable; urgency=low + + * Update to CVS 20050816, taken from the gcc-4_0-branch. + - Fix PR middle-end/23369, wrong code generation for funcptr comparison + on hppa. Closes: #321785. + - Fix PR fortran/23368 ICE with NAG routines (closes: #322912). + * Build-depend on libcairo2-dev (they say, that's the final package name ...) + * libgcj: Search /usr/lib/gcj-4.0 for dlopened libraries, place a copy + of the .la files in the libgcj6 package into this directory. + Closes: #322576. + * Tighten the dependencies between the compiler packages to the same + version and release. Use some substitution variables for control file + generation. + * Remove build dependencies for gpc. + * Don't use '/emul/ia32-linux' on ppc64 (closes: #322890). + * Synchronize with Ubuntu. + + -- Matthias Klose Tue, 16 Aug 2005 22:45:47 +0200 + +gcc-4.0 (4.0.1-4ubuntu1) breezy; urgency=low + + * Jeff Bailey + + Enable i386 biarch using biarch glibc (not yet enabled for unstable). + - debian/rules.d/binary-libgcc.mk: Make i386 lib64gcc1 depend on + libc6-amd64 + - debian/control.m4: Suggest libc6-amd64 rather than amd64-libs. + - debian/rules.conf: Build-Dep on libc6-dev-amd64 [i386] + Build-Dep on binutils >= 2.16.1-2ubuntu3 + - debian/rules2: Enable biarch build in Ubuntu. + + * Matthias Klose + + - Add shlibs file and dependency information for the lib32gcc1 package. + - debian/patches/gcc-textdomain.dpatch: Update (closes: #321591). + - Set priority of gcc-4.0-base and libstdc++6 packages to `required'. + Closes: #321016. + - libffi-hppa.dpatch: Remove, applied upstream. + + -- Matthias Klose Mon, 8 Aug 2005 19:39:02 +0200 + +gcc-4.0 (4.0.1-4) unstable; urgency=low + + * Enable the biarch compiler for powerpc (closes: #268023). + * Update to CVS 20050806, taken from the gcc-4_0-branch. + * Build depend on libcairo0.6.0-dev (closes: #321540). + * Fix Ada build on the hurd (closes: #321350). + * Update libffi for mips (Thiemo Seufer). Closes: #321100. + * Fix segfault on 64bit archs in the AWT Gtk peer library (Dan Frazier). + Closes: #320915. + * Add libXXgcc1 build dependencies for biarch builds. + + -- Matthias Klose Sun, 7 Aug 2005 07:01:59 +0000 + +gcc-4.0 (4.0.1-3) unstable; urgency=medium + + * Update to CVS 20050725, taken from the gcc-4_0-branch. + - Fix ICE with -O and -mno-ieee-fp/-ffast-math (closes: #319087). + * Synchronize with Ubuntu. + * Fix applying hurd specific patches for the hurd build (closes: #318443). + * Do not build-depend on libmpfr-dev on architectures, where fortran + is not built. + * Apply biarch include patch on ppc64 as well (closes: #318603). + * Correct libstdc++-dev package description (closes: #319082). + * debian/rules.defs: Replace DEB_TARGET_GNU_CPU with DEB_TARGET_ARCH_CPU. + * gcc-4.0-hppa64: Rename hppa64-linux-gcc to hppa64-linux-gnu-gcc. + Closes: #319818. + + -- Matthias Klose Mon, 25 Jul 2005 10:43:06 +0200 + +gcc-4.0 (4.0.1-2ubuntu3) breezy; urgency=low + + * Update to CVS 20050720, taken from the gcc-4_0-branch. + - Fix PR22278, volatile issues, seen when building xorg. + * Build against new libcairo1-dev (0.5.2). + + -- Matthias Klose Wed, 20 Jul 2005 12:29:50 +0200 + +gcc-4.0 (4.0.1-2ubuntu2) breezy; urgency=low + + * Acknowledge that i386 biarch builds still need to be fixed for glibc-2.3.5. + + -- Matthias Klose Tue, 19 Jul 2005 08:29:30 +0000 + +gcc-4.0 (4.0.1-2ubuntu1) breezy; urgency=low + + * Synchronize with Debian. + * Update to CVS 20050718, taken from the gcc-4_0-branch. + - Fix PR c++/22132 (closes: #318488), upcasting a const class pointer + to struct the class derives from generates wrong code. + * Build biarch runtime libraries for Fortran and ObjC. + * Apply proposed patch for PR22309 (crash with mt_allocator if libstdc++ + is dlclosed). Closes: #293466. + + -- Matthias Klose Mon, 18 Jul 2005 17:10:18 +0200 + +gcc-4.0 (4.0.1-2) unstable; urgency=low + + * Don't apply the patch to make -mieee the default on alpha-linux-gnu. + Causes the bootstrap to fail on alpha-linux-gnu. + + -- Matthias Klose Tue, 12 Jul 2005 00:14:12 +0200 + +gcc-4.0 (4.0.1-1) unstable; urgency=high + + * GCC 4.0.1 final release. See /usr/share/doc/gcc-4.0/NEWS.{gcc,html}. + * Build fastjar on mips/mipsel, fix fastjar build without building java. + * Disable the comparision check on unstable/ia64. adaint.o differs, + currently cannot be reproduced with glibc-2.3.5 and binutils-2.16.1. + * libffi/hppa: Fix handling of 3 and 5-7 byte struct returns. + * amd64: Fix libgcc symlinks to point to /usr/lib32, instead of /lib32. + * On powerpc, don't build with -j >1, apparently doesn't succeeds + on the Debian buildd. + * Apply revised patch to make -mieee the default on alpha-linux, + and add -mieee-disable switch to turn the default off (Tyson Whitehead). + * Disable multiarch-includes; redo biarch-includes to include the paths + for the non-default biarch, when called with -m32/-m64. + * Move new java headers from libstdc++-dev to libgcj-dev, add replaces + line. + * Update classpath patch to work with cairo-0.5.1. Patch provided by + Michael Koch. + * Further classpath updates for gnu.xml and javax.swing.text.html. + Patch provided by Michael Koch. + * Require binutils (>= 2.16.1) as a build dependency and a dependency. + * On i386, require amd64-libs-dev (>= 1.2). + * Update debian/NEWS.{html,gcc}. + + * Closing bug reports reported against older gcc versions (some of them + still present in Debian, but not anymore as the default compiler). + Usually, forwarded bug reports are linked to + http://gcc.gnu.org/PR + The upstream bug number usually can be found in the Debian reports. + + * Closed reports reported against gcc-3.3 and fixed in gcc-3.4: + - General: + + PR rtl-optimization/2960: Duplicate loop conditions even with -Os + Closes: #94701. + + PR optimization/3995: i386 optimisation: joining tests. + Closes: #105309. + + PR rtl-optimization/11635: Unnecessary store onto stack, more + curefully expand union cast (closes: #202016). + + PR target/7618: vararg disallowed in virtual function. Closes: #205404. + + Large array problem on 64 bit platforms (closes: #209152). + + Mark more strings as translatable (closes: #227129). + + PR gcc/14711: ICE when compiling a huge source file Closes: #234711. + + Better code generation for if(!p) return NULL;return p; + Closes: #242318. + + PR rtl-optimization/16152: Perl ftbfs on {ia64,arm,m68k}-linux. + Closes: #255801. + + ICE (segfault) while compiling Linux 2.6.9 (closes: #277206). + + Link error building memtest (closes: #281445). + - Ada: + + PR ada/12450: Constraint error for valid input (closes: #210844). + + PR ada/13620: miscompilation of array initializer with + -O3 -fprofile-arcs. Closes: #226244. + - C: + + PR c/6897: Code produced with -fPIC reserves EBX, but compiles + bad __asm__ anyway (closes: #73065). + + PR c/9209: On i386, gcc-3.0 allows $ in indentifiers but not the asm. + Closes: #121282. + + PR c/11943: Accepts invalid declaration "int x[2, 3];" in C99 mode. + Closes: #177303. + + PR c/11942: restrict keyword broken in C99 mode. Closes: #187091. + + PR other/11370: -Wunreachable-code gives false complaints. + Closes: #196600. + + PR c/11369: Too relaxed checking with -Wstrict-prototypes. + Closes: #197504. + + PR c/11445: False positive warning with -Wunreachable-code. + Closes: #200140. + + PR c/11459: -stdc=c90 -pedantic warns about C90's non long-long + support when in C99 mode. Closes: #200392. + + PR c/456: Handling of constant expressions. Closes: #225935. + + ICE on invalid #define with -traditional (closes: #242916). + + No warning when initializing a variable with itself, new option + -Winit-self (closes: #293957). + - C++: + + C++ parse error (closes: #42946). + + PR libstdc++/9073: Replacement for __STL_ASSERTIONS (libstdc++v3 + debug mode). Closes: #128993. + + Parse errors in nested constructor calls (closes: #138561). + + PR optimization/1823: -ftrapv aborts with pointer difference due to + division optimization. Closes: #169862. + + ICE on invalid code (closes: #176101). + + PR c++/10199: ICE handling method parametrized by template. + Closes: #185604. + + High memory usage building packages OpenOffice.org and MythTV. + Closes: #194345, #194513. + + Improved documentation of std::lower_bound (closes: #196380). + + ICE in regenerate_decl_from_template (closes: #197674). + + PR c++/11444: Function fails to propagate up class tree + (template-related). Closes: #198042. + + ICE when using namespaced typedef of primitive type as struct. + Closes: #198261. + + Bug using streambuf / iostream to read from a named pipe. + Closes: #216105. + + PR c++/11437: ICE in lookup_name_real (closes: #200011). + + Add large file support (LFS) in libstdc++ (closes: #220000). + + PR c++/13621: ICE compiling a statement expression returning type + string (closes: #224413). + + g++ doesn't find inherited inner class after template instantiation. + Closes: #227518. + + PR libstdc++/13928: Add whatis info in man pages generated by doxygen. + Closes: #229642. + + Missing symbol _M_setstate in libstdc++ (closes: #232709). + + Unable to parse declaration of inline constructor explicit + specialization (closes: #234709). + + ICE (segfault) on invalid C++ code (closes: #246031). + + ICE in lookup_tempate_function (closes: #262441). + + Undefined symbols in libstdc++, when using specials char_traits. + Closes: #266110. + + PR libstdc++/16011: Outputting numbers with ostream in the locale fr_BE + causes infinite recursion (closes: #270795). + + ICE in tree_low_cst (closes: #276291). + + ICE in in expand_call (closes: #283503). + + typeof operator is misparsed in a template function (closes: #288555). + + ICE in tree_low_cs (closes: #291374). + + Improve uninformative error messages (closes: #292961, #293076). + + ICE on array initialization (closes: #294560). + + Failure to build xine-lib with -finline-functions (closes: #306854). + - Java: + + Fix error finding files in subdirectories (closes: #195480). + + Implement java.text.CollationElementIterator lacks getOffset(). + Closes: #259789. + - Treelang: + + Pointer truncation on 64bit architectures (closes: #308367). + - Architecture specific: + - alpha + + PR debug/10695: ICE on alpha while building agistudio. + Closes: #192568. + + ICE when building fceu (closes: #228018, #252764). + - amd64 + + Miscompilation of Objective-C code (closes: #250174). + + g++ hangs compiling k3d on amd64 (closes: #285364). + - arm + + PR target/19008: gcc -O3 -fPIC produces wrong code via auto inlining. + Closes: #285238. + - i386 + + PR target/4106: i386 -fPIC asm ebx clobber no error. + Closes: #153472. + + PR target/10984: x86/sse2 ICEs on vector intrinsics. Closes: #166940. + + Wrong code generation on at least ix86 (closes: #275655). + - m68k + + PR target/9201: ICE compiling octave-2.1 (closes: #175478). + + ICE in verify_initial_elim_offsets (closes: #204407, #257012). + + g77 generates invalid assembly code (closes: #225621). + + ICE in verify_local_live_at_start (closes #245584). + - powerpc + + PR optimization/12828: -floop-optimize is unstable on PowerPC (float + to int conversion problem). Closes: #218219. + + PR target/13619: ICE building altivec code in ffmpeg. + Closes: #226148. + + PR target/20046: Miscompilation of bind 9.3.0. Closes: #292958. + - sparc + + ICE (segfault) while building atlas3 on sparc32 (closes: #249108). + + Wrong optimization on sparc32 when building linux kernel. + Closes: #254626. + + * Closed reports reported against gcc-3.3 or gcc-3.4 and fixed in gcc-4.0: + - General: + + PR rtl-optimization/6901: Optimizer improvement (removing unused + local variables). Closes: #67206. + + PR middle-end/179: Failure to detect use of unitialized variable + with -O -Wall. Closes: #117765. + + ICE building glibc's nptl on amd64 (closes: #260710, #307993). + + PR middle-end/17827: ICE in make_decl_rtl. Closes: #270854. + + PR middle-end/21709: ICE on compile-time complex NaN. Closes: #305344. + - Ada: + + PR ada/10889: Convention Fortran matrices mishandled in generics. + Closes: #192135. + + PR ada/13897: Implement tasking on powerpc. Closes: #225346. + - C: + + PR c/13072: Bogus warning with VLA in switch. Closes: #218803. + + PR c/13519: typeof(nonconst+const) is const. Closes: #208981. + + PR c/12867: Incorrect warning message (void format, should be void* + format). Closes: #217360. + + PR c/16066: PR 16066] i386 loop strength reduction bug. + Closes: #254659. + - C++: + + PR c++/13518: -Wnon-virtual-dtor doesn't always work. Closes: #212260. + + PR translation/16025: ICE with unsupported locale(closes: #242158). + + PR c++/15125: -Wformat doesn't warn for different types in fprintf. + Closes: #243507. + + PR c++/15214: Warn only if the dtor is non-private or the class has + friends. (closes: #246639). + + PR libstdc++/17218: Unknown subjects in generated libstdc++ manpages. + Closes: #262934. + + PR libstdc++/17223: Missing .so references in generated libstdc++ + manpages. Closes: #262956. + + libstdc++-doc: Improve man pages (closes: #280910). + + PR c++/19006: ICE in tree_low_cst. Closes: #285692. + + g++ does not check arguments to fprintf. Closes: #281847. + - Java: + + PR java/7304: gcj ICE (closes: #152501). + + PR libgcj/7305: Installation of headers not directly in /usr/include. + Closes: #195483. + + PR libgcj/11941: libgcj timezone handling (closes: #203212). + + PR java/14709: gcj fails to wait for its child processes on exec(). + Closes: #238432. + + PR libgcj/21703: gcj hangs when rapidly calling String.intern(). + Closes: #275547. + + SocketChannel.get(ByteBuffer) returns 0 at EOF. Closes: #281602. + + PR java/19711: gcj segfaults instead of reporting the ambiguous + expression. Closes: #286715. + + Static libgcj contains repeated archive members (closes: #298263). + - Architecture specific: + - alpha + + Unaligned accesses with ?-operator (closes: #301983). + - arm + + Compilation error of glibc-2.3.4 on arm (closes: #298508). + - m68k + + ICE in add_insn_before (closes: #248432). + - mips + + Fix o32 ABI breakage in gcc 3.3/3.4 (closes: #270620). + - powerpc + + ICE in extract_insn (closes: #311128). + + * Closing bug reports as wontfix: + - g++ defines _GNU_SOURCE when using the libstdc++ header files. + Behaviour did change since 3.0. Closes: #126703, #164872. + + -- Matthias Klose Sat, 9 Jul 2005 17:10:54 +0000 + +gcc-4.0 (4.0.0ds2-12) unstable; urgency=high + + * Update to CVS 20050701, taken from the gcc-4_0-branch. + * Apply proposed patch for MMAP configure fix; aka PR 19877. Backport + from mainline. + * Disable Fortran on m68k. Currently FTBFS. + * Split multiarch-include/lib patches. Update multiarch-include patch. + * Fix FTBFS of the hppa64-linux cross compiler. Don't add the + multiarch include dirs when cross compiling. + * Configure --with-java-home, as used by java-gcj-compat. + Closes: #315646. + * Make libgcj-dbg packages priority extra. + * Set the path of classmap.db to /var/lib/gcj-@gcc_version@. + * On m68k, do not create the default classmap.db in the gcj postinst. + See #312830. + * On amd64, install the 32bit libraries into /emul/ia32-linux/usr/lib. + Restore the /usr/lib32 symlink. + * On amd64, don't reference lib64, but instead lib (lib64 is a symlink + to lib). Closes: #293050. + * Remove references to build directories from the .la files. + * Make cpp-X.Y conflict with earlier versions of gcc-X.Y, g++-X.Y, gobjc-X.Y, + gcj-X.Y, gfortran-X.Y, gnat-X.Y, treelang-X.Y, if a path component in + the gcc library path changes (i.e. version or target alias). + * Disable Ada for sh3 sh3eb sh4 sh4eb. + * For gcj-4.0, add a conflict to libgcj4-dev and libgcj5-dev. + Closes: #316499. + + -- Matthias Klose Sat, 2 Jul 2005 11:04:35 +0200 + +gcc-4.0 (4.0.0ds1-11) unstable; urgency=low + + * debian/rules.defs: Disable Ada for alpha. + * debian/rules.conf: Fix typo in type-handling replacement code. + * Don't ship an empty libgcj6-dbg package. + + -- Matthias Klose Thu, 23 Jun 2005 09:03:21 +0200 + +gcc-4.0 (4.0.0ds1-10) unstable; urgency=medium + + * debian/patches/libstdc++-api-compat.dpatch: Apply proposed patch + to fix libstdc++ 3.4.5/4.0 compatibility. + * type-handling output became insane. Don't use it anymore. + * Drop the reference to the stl-manual package (closes: #314983). + * Disable java on GNU/kFreeBSD targets, requested by Robert Millan. + Closes: #315140. + * Terminate the acats-killer process, even if the build is aborted + by the user (closes: #314405). + * debian/rules.defs: Define DEB_TARGET_ARCH_{OS,CPU}. + * Start converting the use of DEB_*_GNU_* to DEB_*_ARCH_* in the build + files. + * Do not configure with --enable-gtk-cairo. Needs newer gtk. Drop + build dependency on libcairo-dev. + * Fix setting of the system header directory for the hurd (Michael Banck). + Closes: #315386. + * Fix FTBFS on hurd-i386: MAXPATHLEN issue (Michael Banck). Closes: #315384. + + -- Matthias Klose Wed, 22 Jun 2005 19:45:50 +0200 + +gcc-4.0 (4.0.0ds1-9ubuntu2) breezy; urgency=low + + * Fix version number in libgcj shlibs file. + + -- Matthias Klose Sun, 19 Jun 2005 10:34:02 +0200 + +gcc-4.0 (4.0.0ds1-9ubuntu1) breezy; urgency=low + + * Update to 4.0.1, release candidate 2. + * libstdc++ shlibs file: Require 4.0.0ds1-9ubuntu1 as minimum version. + * Rename libawt to libgcjawt to avoid conflicts with other + libawt implementations (backport from HEAD). + * Update classpath awt, swing and xml parser for HTML support in swing. + Taken from classpath CVS HEAD 2005-06-18. Patch provided by Michael Koch. + * Remove the libgcj-buffer-strategy path, part of the classpath update. + * libgcj shlibs file: Require 4.0.0ds1-9ubuntu1 as minimum version. + * Require cairo-0.5 as build dependency. + * gij-4.0: Provide java1-runtime. + * gij-4.0: Provide an rmiregistry alternative (using grmiregistry-4.0). + * gcj-4.0: Provide an rmic alternative (using grmic-4.0). + * libgcj6-dev conflicts with libgcj5-dev, libgcj4-dev, not libgcj6. + Closes: #312741. + * libmudflap-entry-point.dpatch: Correct name of entry point on mips/mipsel. + * Apply proposed patch for PR 18421 and PR 18719 (m68k only). + * Apply proposed path for PR 21562. + * Add build dependency on dpkg (>= 1.13.7). + * On linux systems, configure for -linux-gnu. + * Configure the hppa64 cross compiler to target hppa64-linux-gnu. + * (Build-)depend on binutils-2.16.1. + * libstdc{32,64}++6-4.0-dbg: Depend on libstdc++6-4.0-dev. + * gnat-4.0: only depend on libgnat, when a shared libgnat is built. + * gfortran-4.0: Depend on libgmp3c2 | libgmp3. + * On hppa, explicitely use gcc-3.3 as a build dependency in the case + that Ada is disabled. + * libmudflap: Always build the library for the non-default biarch + architecture, or else the test results show link failures. + + -- Matthias Klose Sat, 18 Jun 2005 00:42:55 +0000 + +gcc-4.0 (4.0.0-9) unstable; urgency=low + + * Upload to unstable. + + -- Matthias Klose Wed, 25 May 2005 19:02:20 +0200 + +gcc-4.0 (4.0.0-8ubuntu3) breezy; urgency=low + + * debian/control: Regenerate. + + -- Matthias Klose Sat, 4 Jun 2005 10:56:27 +0200 + +gcc-4.0 (4.0.0-8ubuntu2) breezy; urgency=low + + * Fix powerpc-config-ml patch. + + -- Matthias Klose Fri, 3 Jun 2005 15:47:52 +0200 + +gcc-4.0 (4.0.0-8ubuntu1) breezy; urgency=low + + * powerpc biarch support: + - Enable powerpc biarch support, build lib64gcc1 on powerpc. + - Add patch to disable libstdc++'s configure checking, if it can't run + 64bit binaries on 32bit kernels (Sven Luther). + - Apply the same patch to the other runtime librararies as well. + - Run the testsuite with -m64, if we can execute 64bit binaries. + - Add libc6-dev-ppc64 as build dependency for powerpc. + * 32bit gcj libs for amd64. + * debian/logwatch.sh: Don't remove logwatch pid file on exit (suggested + by Ryan Murray). + * Update to CVS 20050603, taken from the gcc-4_0-branch. + * g++-4.0 provides c++abi2-dev. + * Loosen dependencies on packages of architecture `all' to not break + binary only uploads. + * Build libgfortran for biarch as well, else the testsuite will fail. + + -- Matthias Klose Fri, 3 Jun 2005 13:38:19 +0200 + +gcc-4.0 (4.0.0-8) experimental; urgency=low + + * Synchronize with Ubuntu. + + -- Matthias Klose Mon, 23 May 2005 01:56:28 +0000 + +gcc-4.0 (4.0.0-7ubuntu7) breezy; urgency=low + + * Fix build failures for builds with disabled testsuite. + * Adjust debian/rules conditionals to work with all dpkg versions. + * Build separate lib32stdc6-4.0-dbg/lib64stdc6-4.0-dbg packages. + * Add the debugging symbols of the optimzed libstdc++ build in the + lib*stdc++6-dbg packages as well. + * Build a libgcj6-dbg package. + * Update to CVS 20050522, taken from the gcc-4_0-branch. + * Add Ada support for the ppc64 architecture (Andreas Jochens): + * debian/patches/ppc64-ada.dpatch + - Add gcc/ada/system-linux-ppc64.ads, which has been copied from + gcc/ada/system-linux-ppc.ads and changed to use 'Word_Size' 64 + instead of 32. + - gcc/ada/Makefile.in: Use gcc/ada/system-linux-ppc64.ads on powerpc64. + * debian/rules.patch + - Use ppc64-ada patch on ppc64. + * debian/rules.d/binary-ada.mk + Place the symlinks libgnat.so, libgnat-4.0.so, libgnarl.so, + libgnarl-4.0.so in '/usr/lib' instead of '/adalib'. + Closes: #308948. + * Add libc6-dev-i386 as an alternative build dependency for amd64. + Closes: #305690. + + -- Matthias Klose Sun, 22 May 2005 22:14:20 +0200 + +gcc-4.0 (4.0.0-7ubuntu6) breezy; urgency=low + + * Don't trust dpkg-architecture (1.13.4), it "hurds" ... + + -- Matthias Klose Wed, 18 May 2005 11:36:38 +0200 + +gcc-4.0 (4.0.0-7ubuntu5) breezy; urgency=low + + * libgcj6-dev: Don't provide libgcj-dev. + + -- Matthias Klose Wed, 18 May 2005 00:30:32 +0000 + +gcc-4.0 (4.0.0-7ubuntu4) breezy; urgency=low + + * Update to CVS 20050517, taken from the gcc-4_0-branch. + * Apply proposed patch for PR21293. + + -- Matthias Klose Tue, 17 May 2005 23:05:40 +0000 + +gcc-4.0 (4.0.0-7ubuntu2) breezy; urgency=low + + * Update to CVS 20050515, taken from the gcc-4_0-branch. + + -- Matthias Klose Sun, 15 May 2005 23:48:00 +0200 + +gcc-4.0 (4.0.0-7ubuntu1) breezy; urgency=low + + * Synchronize with Debian. + + -- Matthias Klose Mon, 9 May 2005 19:35:29 +0200 + +gcc-4.0 (4.0.0-7) experimental; urgency=low + + * Update to CVS 20050509, taken from the gcc-4_0-branch. + * Remove the note from the fastjar package description, stating, that + fastjar is incomplete compared to the "standard" jar utility. + * Fix typo in build depends. dpkg-checkbuilddeps doesn't like a comma + inside []. + * Tighten shlibs dependencies to require the current version. + + -- Matthias Klose Mon, 9 May 2005 19:02:03 +0200 + +gcc-4.0 (4.0.0-6) experimental; urgency=low + + * Update to CVS 20050508, taken from the gcc-4_0-branch. + + -- Matthias Klose Sun, 8 May 2005 14:08:28 +0200 + +gcc-4.0 (4.0.0-5ubuntu1) breezy; urgency=low + + * Temporarily disable the i386 biarch build. Remove the amd64-libs-dev + build dependency, add (build-)conflict (<= 1.1ubuntu1). + + -- Matthias Klose Sat, 7 May 2005 16:56:21 +0200 + +gcc-4.0 (4.0.0-5) breezy; urgency=low + + * gnat-3.3 and gnat-4.0 are alternative build dependencies (closes: #308002). + * Update to CVS 20050507, taken from the gcc-4_0-branch. + * gcj-4.0: Install gjnih. + * Add libgcj buffer strategy framework (Thomas Fitzsimmons), needed for OOo2. + Backport from 4.1. + * Fix all lintian errors and most of the warnings. + + -- Matthias Klose Sat, 7 May 2005 12:26:15 +0200 + +gcc-4.0 (4.0.0-4) breezy; urgency=low + + * Still prefer gnat-3.3 over gnat-4.0 as a build dependency. + + -- Matthias Klose Fri, 6 May 2005 22:30:43 +0200 + +gcc-4.0 (4.0.0-3) breezy; urgency=low + + * Update to CVS 20050506, taken from the gcc-4_0-branch. + * Update priority of java alternatives to 40. + * Move gcj-dbtool to gij package, move the default classmap.db to + /var/lib/gcj-4.0/classmap.db. Create it in the postinst. + * Fix gcc-4.0-hppa64 postinst (closes: #307762). + * Fix gcc-4.0-hppa64, gij-4.0 and gcj-4.0 postinst, to not ignore errors + from update-alternatives. + * Fix gcc-4.0-hppa64, fastjar, gij-4.0 and gcj-4.0 prerm, + to not ignore errors from update-alternatives. + + -- Matthias Klose Fri, 6 May 2005 17:50:58 +0200 + +gcc-4.0 (4.0.0-2) experimental; urgency=low + + * GCC 4.0.0 release. + * Update to CVS 20050503, taken from the gcc-4_0-branch. + * Add gnat-4.0 as an alternative build dependency (closes: #305690). + + -- Matthias Klose Tue, 3 May 2005 15:41:26 +0200 + +gcc-4.0 (4.0.0-1) experimental; urgency=low + + * GCC 4.0.0 release. + + -- Matthias Klose Sun, 24 Apr 2005 11:28:42 +0200 + +gcc-4.0 (4.0ds11-0pre11) breezy; urgency=low + + * CVS 20050413, taken from the gcc-4_0-branch. + * Add proposed patches for PR20126, PR20490, PR20929. + + -- Matthias Klose Wed, 13 Apr 2005 09:43:00 +0200 + +gcc-4.0 (4.0ds10-0pre10) experimental; urgency=low + + * gcc-4.0.0-20050410 release candidate 1, built from the prerelease tarball. + - C++ fix for "optimizer breaks function inlining". Closes: #302989. + * Append the GCC version to the fastjar/grepjar version string. + * Use short file names in the libstdc++ docs (closes: #301140). + * Fix libstdc++-dbg dependencies (closes: #303866). + + -- Matthias Klose Mon, 11 Apr 2005 13:16:01 +0200 + +gcc-4.0 (4.0ds9-0pre9) experimental; urgency=low + + * CVS 20050326, taken from the gcc-4_0-branch. + * Reenable Ada on ia64. + * Build libgnat on hppa, sparc, s390 again. + * ppc64 support (Andreas Jochens): + * debian/control.m4 + - Add libc6-dev-powerpc [ppc64] to the Build-Depends. + - Change the Description for lib32gcc1: s/ia32/32 bit Version/ + * debian/rules.defs + - Define 'biarch_ia32' for ppc64 to use the same 32 bit multilib + facilities as amd64. + * debian/rules.d/binary-gcc.mk + - Correct an error in the 'files_gcc' definition for biarch_ia32 + (replace '64' by '32'). + * debian/rules2 + - Do not use '--disable-multilib' on powerpc64-linux. + Use '--disable-nof --disable-softfloat' instead. + * debian/rules.d/binary-libstdcxx.mk + - Put the 32 bit libstdc++ files in '/usr/lib32'. + * debian/rules.patch + - Apply 'ppc64-biarch' patch on ppc64. + * debian/patches/ppc64-biarch.dpatch + - MULTILIB_OSDIRNAMES: Use /lib for native 64 bit libraries and + /lib32 for 32 bit libraries. + - Add multilib handling to src/config-ml.in (taken from + amd64-biarch.dpatch). + * Rename biarch_ia32 to biarch32, as suggsted by Andreas. + * Use /bin/dash on hppa. + * Reenable the build of the hppa64 compiler. + * Enable parallel builds by defaults (set environment variale USE_NJOBS=no + or USE_NJOBS= to modify the default, which is to use the + number of available processors). + + -- Matthias Klose Sat, 26 Mar 2005 19:07:30 +0100 + +gcc-4.0 (4.0ds8-0pre8) experimental; urgency=low + + * CVS 20050322, taken from the gcc-4_0-branch. + - Add proposed fix for PR19406. + * Configure --with-gtk-cairo only if version 0.3.0 is found. + * Split out gcc-4.0-locales package. Better chance of getting + bug reports in english language. + + -- Matthias Klose Tue, 22 Mar 2005 14:20:24 +0100 + +gcc-4.0 (4.0ds7-0pre7) experimental; urgency=low + + * CVS 20050304, taken from the gcc-4_0-branch. + * Build the treelang compiler. + + -- Matthias Klose Fri, 4 Mar 2005 21:29:56 +0100 + +gcc-4.0 (4.0ds6-0pre6ubuntu6) hoary; urgency=low + + * Fix lib32gcc1 symlink on amd64. Ubuntu #7099. + + -- Matthias Klose Thu, 3 Mar 2005 00:17:26 +0100 + +gcc-4.0 (4.0ds6-0pre6ubuntu5) hoary; urgency=low + + * Add patch from PR20160, avoid creating archives with components + that have duplicate basenames. + + -- Matthias Klose Wed, 2 Mar 2005 14:22:04 +0100 + +gcc-4.0 (4.0ds6-0pre6ubuntu4) hoary; urgency=low + + * CVS 20050301, taken from the gcc-4_0-branch. + Test builds on i386, amd64, powerpc, ia64, check libgcc_s.so.1. + * Add fastjar-4.0 binary and manpage. Some java packages append it + for all java related tools. + * Add libgcj6-src package for source code availability in IDE's. + * On hppa, disable the build of the hppa64 cross compiler, disable + java, disable running the testsuite (request by Lamont). + * On amd64, lib32gcc1 replaces ia32-libs.openoffice.org (<< 1ubuntu3). + * Build-Depend on libcairo1-dev, configure with --enable-gtk-cairo. + Work around libtool problems install libjawt. + Install jawt header files in libgcj6-dev. + * Add workaround for PR debug/19769. + + -- Matthias Klose Tue, 1 Mar 2005 11:26:19 +0100 + +gcc-4.0 (4.0ds5-0pre6ubuntu3) hoary; urgency=low + + * Drop libgmp3-dev (<< 4.1.4-3) as an alterntative build dependency. + + -- Matthias Klose Thu, 10 Feb 2005 15:16:27 +0100 + +gcc-4.0 (4.0ds5-0pre6ubuntu2) hoary; urgency=low + + * Disable Ada for powerpc. + + -- Matthias Klose Wed, 9 Feb 2005 16:47:07 +0100 + +gcc-4.0 (4.0ds5-0pre6ubuntu1) hoary; urgency=low + + * Avoid build dependency on type-handling. + * Install 32bit libs on amd64 in /lib32 and /usr/lib32. + + -- Matthias Klose Wed, 9 Feb 2005 08:27:21 +0100 + +gcc-4.0 (4.0ds5-0pre6) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050208. + * Build-depend on graphviz (moved to main), remove the pregenerated + libstdc++ docs from the diff. + * Fix PR19162, libobjc build failure on arm-linux (closes: #291497). + + -- Matthias Klose Tue, 8 Feb 2005 11:47:31 +0000 + +gcc-4.0 (4.0ds4-0pre5) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050125. + * Call the 4.0 gcx versions in the java wrappers (closes: #291075). + * Correctly install libgij (closes: #291077). + * libgcj6-dev: Add conflicts to other libgcj-dev packages (closes: #290950). + + -- Matthias Klose Mon, 24 Jan 2005 23:59:54 +0100 + +gcc-4.0 (4.0ds3-0pre4) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050115. + * Update cross build patches (Nikita V. Youshchenko). + * Enable Ada on i386, amd64, mips, mipsel, powerpc, sparc, s390. + Doesn't yet bootstrap on alpha, hppa, ia64. + + -- Matthias Klose Sat, 15 Jan 2005 18:44:03 +0100 + +gcc-4.0 (4.0ds2-0pre3) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041224. + + -- Matthias Klose Wed, 22 Dec 2004 00:31:44 +0100 + +gcc-4.0 (4.0ds1-0pre2) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041205. + * Lot's of merges and updates from the gcc-3.4 packages. + + -- Matthias Klose Sat, 04 Dec 2004 12:14:51 +0100 + +gcc-4.0 (4.0ds0-0pre1) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041114. + - Addresses many issues with the libstdc++ man pages (closes: #278549). + * Disable Ada on hppa, ia64, mips, mipsel, powerpc, s390 and sparc, at least + these are known to be broken at the time of the snapshot. + * Minor kbsd.gnu build fixes (Robert Millan). Closes: #273004. + * For amd64, add missing libstdc++ files to 'libstdc++6-dev' package. + (Andreas Jochens). Fixes: #274362. + * Update libffi-mips patch (closes: #274096). + * Updated i386-biarch patch. Don't build 64bit libstdc++, ICE. + * Update sparc biarch patch. + * Fix symlinks for gfortran manpage (closes: #278548). + * Update cross build patches (Nikita V. Youshchenko). + * Update Ada patches (Ludovic Brenta). + + -- Matthias Klose Sat, 13 Nov 2004 10:38:25 +0100 + +gcc-4.0 (4.0-0pre0) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20040912. + + * Matthias Klose + + - Integrate accumulated packaging patches from gcc-3.4. + - Rename libstdc++6-* packages to libstdc++6-4-* (closes: #261693). + - libffi4-dev: conflict with libffi3-dev (closes: #265939). + + * Robert Millan + + * control.m4: + - s/locale_no_archs !hurd-i386/locale_no_archs/g + (This is now handled in rules.defs. [1]) + - s/procps [check_no_archs]/procps [linux_gnu_archs]/g [2] + - Add type-handling to build-deps. [3] + * rules.conf: + - Don't require (>= $(libc_ver)) for libc0.1-dev. [4] + - Generate *_no_archs variables with type-handling and use them for + for m4's -D parameters. [3] + * rules.defs: + - use filter instead of findstring [1]. + - s/netbsd-elf-gnu/netbsdelf-gnu/g [5]. + - enable java for kfreebsd-gnu [6] + - enable ffi for kfreebsd-gnu and knetbsd-gnu [6] + - enable libgc for kfreebsd-gnu [6] + - enable checks for kfreebsd-gnu and knetbsd-gnu [7] + - enable locales for kfreebsd-gnu and gnu [1] [8]. + * Closes: #264025. + + -- Matthias Klose Sun, 12 Sep 2004 12:52:56 +0200 + +gcc-3.5 (3.5ds1-0pre1) experimental; urgency=low + + * gcc-3.5 snapshot, taken from the HEAD branch CVS 20040724. + * Install locale data with versioned package name (closes: #260497). + * Fix libgnat symlinks. + + -- Matthias Klose Sat, 24 Jul 2004 21:26:23 +0200 + +gcc-3.5 (3.5-0pre0) experimental; urgency=low + + * gcc-3.5 snapshot, taken from the HEAD branch CVS 20040718. + + -- Matthias Klose Sun, 18 Jul 2004 12:26:00 +0200 + +gcc-3.4 (3.4.1-1) experimental; urgency=low + + * gcc-3.4.1 final release. + - configured wth --enable-libstdcxx-allocator=mt. + * Fixes for generating cross compiler packages (Jeff Bailey). + + -- Matthias Klose Fri, 2 Jul 2004 22:49:05 +0200 + +gcc-3.4 (3.4.0-4) experimental; urgency=low + + * gcc-3.4.1 release candidate 1. + * Add logic to build biarch compiler on powerpc (disabled, needs lib64c). + * Don't build the libg2c0 package on mipsel-linux (no clear answer on + debian-mips, if the libg2c0's built by gcc-3.3 and gcc-3.4 are compatible + (post-sarge issue). + * Don't use gcc-2.95 as bootstrap compiler on m68k anymore. + + -- Matthias Klose Sat, 26 Jun 2004 22:40:20 +0200 + +gcc-3.4 (3.4.0-3) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040613. + * On sparc, set the the build target to sparc64-linux, build with + switch defaulting to code generation for v7. To generate code for + sparc64, use the -m64 switch. + * Add missing doc-base files to -doc packages. + * Add portability patches and kbsd-gnu patch (Robert Millan). + Closes: #251293, #251294. + * Apply fixes for cross build (Nikita V. Youshchenko). + * Do not include the precompiled libstdc++ header files into the -dev + package (still experimental). Closes: #251707. + * Reflect renaming of Ada user's guide. + * Move AWT peer libraries for libgcj into it's own package (fixes: #247791). + + -- Matthias Klose Mon, 14 Jun 2004 00:03:18 +0200 + +gcc-3.4 (3.4.0-2) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040516. + * Do not provide the /usr/hppa64-linux/include in the gcc-hppa64 package, + migrated to libc6-dev. Adjust dependencies. + * Integrate gpc test results into the GCC test summary. + * gnatchop calls gcc-3.4 (closes: #245438). + * debian/locale-gen.sh: Update for recent libstdc+++ testsuite. + * debian/copyright: Add libstdc++-v3's exception clause. + * Add libffi update for mips (Thiemo Seufer). + * Reference Debian specific bug reporting instructions. + * Update README.Bugs. + * Fix FTBFS for libstdc++-doc. + * Update libjava patch for hppa (Randolph Chung). + * Fix installation of ffitarget.h header file. + * On amd64-linux, configure --without-multilib, disable Ada. + + -- Matthias Klose Sun, 16 May 2004 07:53:39 +0200 + +gcc-3.4 (3.4.0-1) experimental; urgency=low + + * gcc-3.4.0 final release. + + * Why experimental? + - Do not interfer with packages currently built from gcc-3.3 sources, + i.e. libgcc1, libobjc1, libffi2, libffi2-dev, libg2c0. + - Biarch sparc compiler doesn't built yet. + - Use of configure flags affecting binary ABI's not yet determined. + - Several ABI bugs have been fixed. Unfortunately, these changes will break + binary compatibility with earlier releases on several architectures: + alpha, mips, sparc, + - hppa and m68k changed sjlj based exception handling to dwarf2 based + exception handling. + + See NEWS.html or http://gcc.gnu.org/gcc-3.4/changes.html for more + specific information. + + -- Matthias Klose Tue, 20 Apr 2004 20:54:56 +0200 + +gcc-3.4 (3.4ds3-0pre4) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040403. + * Add gpc tarball, gpc patches for 3.4 (Waldek Hebisch). + * Reenable sparc-biarch patches (closes: #239856). + * Build the shared libgnat library, needed to fix FTBFS for some + Ada library packages (Ludovic Brenta). + Currently enabled for hppa, i386, ia64. + + -- Matthias Klose Sat, 3 Apr 2004 08:47:55 +0200 + +gcc-3.4 (3.4ds1-0pre2) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040320. + * For libstdc++6-doc, add a conflict to libstdc++5-3.3-doc (closes: #236560). + * For libstdc++6-dbg, add a conflict to libstdc++5-3.3-dbg (closes: #236798). + * Reenable s390-biarch patches. + * Update the cross compiler build files (Nikita V. Youshchenko). + + -- Matthias Klose Sat, 20 Mar 2004 09:15:10 +0100 + +gcc-3.4 (3.4ds0-0pre1) experimental; urgency=low + + * Start gcc-3.4 packaging, get rid of the epoch for most of the + packages. + + -- Matthias Klose Sun, 22 Feb 2004 16:00:03 +0100 + +gcc-3.3 (1:3.3.3ds6-6) unstable; urgency=medium + + * Update to gcc-3_3-branch CVS 20040401. + - Fixed ICE in emit_move_insn_1 on legal code (closed: #223215). + - Fix PR 14755, miscompilation of loops with bitfield counter. + Closes: #241255. + - Fix PR 16040, crash in function initializing const data with + reinterpret_cast-ed pointer-to-member function crashes (closes: #238621). + - Remove patches integrated upstream. + * Reenable build of gpidump on powerpc and s390. + + -- Matthias Klose Thu, 1 Apr 2004 23:51:54 +0200 + +gcc-3.3 (1:3.3.3ds6-5) unstable; urgency=medium + + * Update to gcc-3_3-branch CVS 20040321. + - Fix PR target/13889 (ICE on valid code on m68k). + * Fix FTFBS on s390. Do not build gpc's gpidump on s390. + * Reenable gpc on arm. + + -- Matthias Klose Mon, 22 Mar 2004 07:37:26 +0100 + +gcc-3.3 (1:3.3.3ds6-4) unstable; urgency=low + + * Update to gcc-3_3-branch CVS 20040320. + - Revert patch for PR14640 (with this, at least mozilla-firefox was + miscompiled on x86 (closes: #238621). + * Update the gpc tarball (there were two releases with the same name ...). + * Reenable gpc on alpha and ia64. + + -- Matthias Klose Sat, 20 Mar 2004 07:39:24 +0100 + +gcc-3.3 (1:3.3.3ds5-3) unstable; urgency=low + + * Update to gcc-3_3-branch CVS 20040314. + - Fixes miscompilation with -O -funroll-loops on powerpc (closes: #229567). + - Fix ICE in dwarf-2 on code using altivec (closes: #203835). + * Update hurd-changes patch. + * Add libgcj4-dev as a recommendation for gcj (closes: #236547). + * debian/copyright: Added exemption to static linking of libgcc. + + * Phil Blundell: + - debian/patches/arm-ldm.dpatch, debian/patches/arm-gotoff.dpatch: Update. + + -- Matthias Klose Sun, 14 Mar 2004 09:56:06 +0100 + +gcc-3.3 (1:3.3.3ds5-2) unstable; urgency=low + + * Update to gcc-3_3-branch CVS 20040306. + - Fixes bootstrap comparision error on ia64. + - Allows ghc build with gcc-3.3. + - On amd64, don't imply 3DNow! for -m64 by default. + - Some arm specific changes + - Fix C++/13944: exception in constructor of a class to be thrown is not + caught. Closes: #228099. + * Enable the build of gcc-3.3-hppa64 on hppa. + Add symlinks for as and ld to point to hppa64-linux-{as,ld}. + * gcj-3.3 depends on g++-3.3, recommends gij-3.3. gij-3.3 suggests gcj-3.3. + * Fix libgc2c-pic compatibility links (closes: #234333). + The link will be removed for gcc-3.4. + * g77-3.3: Conflict with other g77-x.y packages. + * Tighten shlibs dependencies to latest released versions. + + * Phil Blundell: + - debian/patches/arm-233633.dpatch: New Fixes problems with half-word + loads on ARMv3 architecture. (Closes: #233633) + - debian/patches/arm-ldm.dpatch: New. Avoids inefficient epilogue for + leaf functions in PIC code on ARM. + + -- Matthias Klose Sat, 6 Mar 2004 10:57:14 +0100 + +gcc-3.3 (1:3.3.3ds5-1) unstable; urgency=medium + + * gcc-3.3.3 final release. + See /usr/share/doc/gcc-3.3/NEWS.{gcc,html}. + + -- Matthias Klose Mon, 16 Feb 2004 08:59:52 +0100 + +gcc-3.3 (1:3.3.3ds4-0pre4) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20040214 (2nd gcc-3.3.3 prerelease). + * Fix title of libstdc++'s html main index (closes: #196381). + * Move libg2c libraray files out of the gcc specific libdir to /usr/lib. + For g77-3.3 add conflicts to other g77 packages. Closes: #224848. + * Update the stack protector patch to 3.3-7, but don't apply it by default. + Closes: #230338. + * On arm, use arm6 as the cpu default (backport from mainline, PR12527). + * Add libffi and libjava support for hppa (Randolph Chung). Closes: #232615. + + -- Matthias Klose Sat, 14 Feb 2004 09:26:15 +0100 + +gcc-3.3 (1:3.3.3ds3-0pre3) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20040125. + - Fixed PR11350, undefined labels with -Os -fPIC (closes: #195911). + - Fixed PR11793, ICE in extract_insn, at recog.c (closes: #203835). + - Fixed PR13544, removed backport for PR12862. + - Integrated backport for PR12441. + * Fixed since 3.3: java: not implemented interface methods of abstract + classes not found (closes: #225438). + * Disable pascal on arm architecture (currently broken). + * Update the build files to build a cross compiler (Nikita V. Youshchenko). + See debian/README.cross in the source package. + * Apply revised patch to make -mieee the default on alpha-linux, + and add -mieee-disable switch to turn the default off (closes: #212912). + (Tyson Whitehead) + + -- Matthias Klose Sun, 25 Jan 2004 17:41:04 +0100 + +gcc-3.3 (1:3.3.3ds2-0pre2) unstable; urgency=medium + + * Update to gcc-3.3.3 CVS 20040110. + - Fixes compilation not terminating at -O1 on hppa (closes: #207516). + * Add backport to fix PR12441 (closes: #224576). + * Revert backport to 3.3 branch to fix PR12862, which introduced another + regression (PR13544). Closes: #225663. + * Tighten dependency of gnat-3.3 on gcc-3.3 (closes: #226273). + * Disable treelang build for cross compiler build. + * Disable pascal on alpha and ia64 architectures (currently broken). + + -- Matthias Klose Sat, 10 Jan 2004 12:33:59 +0100 + +gcc-3.3 (1:3.3.3ds1-0pre1) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20031229. + - Fixes bootstrap error on ia64-linux. + - Fix -pthread on mips{,el}-linux (closes: #224875). + - Fix -Wformat for C++ (closes: #217075). + * Backport from mainline: Preserve inline-ness when redeclaring + a function template (closes: #195264). + * Add missing intrinsics headers on ix86 (closes: #224593). + * Fix location of libg2c libdir in libg2c.la file (closes: #224848). + + -- Matthias Klose Mon, 29 Dec 2003 10:36:29 +0100 + +gcc-3.3 (1:3.3.3ds0-0pre0.1) unstable; urgency=high + + * NMU + * Fixed mips(el) spec file for -pthread: (Closes: #224875) + * [debian/patches/mips-pthread.dpatch] New. + * [debian/rules.patch] Added it to debian_patches. + + -- J.H.M. Dassen (Ray) Sat, 27 Dec 2003 15:51:47 +0100 + +gcc-3.3 (1:3.3.3ds0-0pre0) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20031206. + - Fixes ICE in verify_local_live_at_start (hppa). Closes: #201550. + - Fixes miscompilation of linux-2.6/sound/core/oss/rate.c. + Closes: #219949. + * Add missing unwind.h to gcc package (closes: #220846). + * Regenerate control file to fix build dependencies for m68k. + * More gpc only patches to fix test failures on m68k. + * Reenable gpc for the Hurd (closes: #189851). + + -- Matthias Klose Sat, 6 Dec 2003 10:29:07 +0100 + +gcc-3.3 (1:3.3.2ds5-4) unstable; urgency=low + + * Update libffi-dev package description (closes: #219508). + * For gij and libgcj fix dependency on the libstdc++ package, if + the latter isn't installed during the build. + * Apply patch to emit .note.GNU-stack section on linux arches + which by default need executable stack. + * Prefer gnat-3.3 over gnat-3.2 as a build dependency. + * Update the pascal tarball (different version released with the + same name). + * Add pascal patches to address various gpc testsuite failures. + On alpha and ia64, build gpc from the 20030830 version. Reenable + the build on m68k. + Remove the 20030507 gpc version from the tarball. + * Apply patch to build the shared ada libs and link the ada tools + against the shared libs. Not enabled by default, because gnat + and gnatlib are rebuilt during install. (Ludovic Brenta) + + -- Matthias Klose Sun, 9 Nov 2003 22:34:33 +0100 + +gcc-3.3 (1:3.3.2ds4-3) unstable; urgency=low + + * Fix rules to omit inclusion of gnatpsta in mips(el) gnat package. + + -- Matthias Klose Sun, 2 Nov 2003 14:29:59 +0100 + +gcc-3.3 (1:3.3.2ds4-2) unstable; urgency=medium + + * s390-ifcvt patch added. Fixes gcl miscompilation (closes: #217240). + (Gerhard Tonn) + * Fix an infinite loop in g++ compiling lufs, regression from 3.3.1. + * Fix a wrong code generation bug on alpha. + (Falk Hueffner) + * Update NEWS files. + * Add Falk Hueffner to the Debian GCC maintainers. + * Enable ada on mips and mipsel, but don't build the gnatpsta tool. + + -- Matthias Klose Wed, 29 Oct 2003 00:12:37 +0100 + +gcc-3.3 (1:3.3.2ds4-1) unstable; urgency=medium + + * Update to gcc-3.3.2. + * Update NEWS files. + * Miscompilation in the pari package at -O3 fixed (closes: #198172). + * On alpha-linux, revert -mieee as the default (Falk Hueffner). + Reopens: #212912. + * Add ia64-unwind patch (Jeff Bailey). + * Closed reports reported against gcc-2.96 (ia64), fixed at least in gcc-3.3: + - ICE in verify_local_live_at_start, at flow.c:2733 (closes: #135404). + - Compilation failure of stlport (closes: #135224). + - Infinite loop compiling cssc's pfile.cc with -O2 (closes: #115390). + - Added missing some string::compare() members (closes: #141199). + - header declares std::pow (closes: #161853). + - does have at() method (closes: #59776). + - Fixed error in stl_deque.h (closes: #69530). + - Fixed problem with bastring (closes: #75759, #96539). + - bad_alloc and std:: namespace problem (closes: #75120). + - Excessive warnings from headers with -Weffc++ (closes: #76827). + + -- Matthias Klose Fri, 17 Oct 2003 08:07:01 +0200 + +gcc-3.3 (1:3.3.2ds3-0pre5) unstable; urgency=low + + * Update to gcc-3.3.2 CVS 20031005. + - Fixes cpp inserting a spurious newline (closes: #210478, #210482). + - Fixes generation of unrecognizable insn compiling kernel source + on alpha (closes: #202762). + - Fixes ICE in add_abstract_origin_attribute (closes: #212406). + - Fixes forward declaration in libstdc++ (closes: #209386). + - Fixes ICE in in extract_insn, at recog.c on alpha (closes: #207564). + * Make libgcj-common architecture all (closes: #211909). + * Build depend on: flex-old | flex (<< 2.5.31). + * Fix spec linking libraries with -pthread on powerpc (closes: #211054). + * debian/patches/arm-gotoff.dpatch: fix two kinds of PIC lossage. + (Phil Blundell) + * debian/patches/arm-common.dpatch: fix excessive alignment of common + blocks causing binutils testsuite failures. + (Phil Blundell) + * Update priorities in debian/control to match the archive. + (Ryan Murray) + * s390-nonlocal-goto patch added. Fixes some pascal testcase failures. + (Gerhard Tonn) + * On alpha-linux, make -mieee default and add -mieee-disable switch + to turn default off (closes: #212912). + (Tyson Whitehead) + * Add gpc upstream patch for memory corruption fix. + + -- Matthias Klose Sun, 5 Oct 2003 19:53:49 +0200 + +gcc-3.3 (1:3.3.2ds2-0pre4) unstable; urgency=low + + * Add gcc-unsharing_lhs patch (closes: #210848) + + -- Ryan Murray Fri, 19 Sep 2003 22:51:19 -0600 + +gcc-3.3 (1:3.3.2ds2-0pre3) unstable; urgency=low + + * Update to gcc-3.3.2 CVS 20030908. + * PR11716 (Michael Eager, Dan Jacobowitz): + Make GCC think that the maximum length of a short branch is + 64K instead of 128K. It's a big hammer, but it works. + Closes: #207915. + * Downgrade gpc to 20030507 on alpha and ia64 (closes: #208717). + + -- Matthias Klose Mon, 8 Sep 2003 21:49:52 +0200 + +gcc-3.3 (1:3.3.2ds1-0pre2) unstable; urgency=low + + * Update to gcc-3.3.2 CVS 20030831. + - Fix java NullPointerException detection with 2.6 kernels. + Closes: #206377. + - Fix bug in C++ typedef handling (closes: #205402). + - Fix -Wunreachable-code giving false complaints (closes: #196600). + * Update to gpc-20030830. + * Don't include /usr/share/java/repository into the class path according + to the new version of th Debian Java policy (closes: #205643). + * Build-Depend/Depend on libgc-dev. + + -- Matthias Klose Sun, 31 Aug 2003 08:56:53 +0200 + +gcc-3.3 (1:3.3.2ds0-0pre1) unstable; urgency=low + + * Remove the build dependency on locales for now. + + -- Matthias Klose Fri, 15 Aug 2003 07:48:18 +0200 + +gcc-3.3 (1:3.3.2ds0-0pre0) unstable; urgency=medium + + * Update to gcc-3.3.2 CVS 20030812. + - Fixes generation of wrong code for XDM-AUTHORIZATION-1 key generation + and/or validation. Closes: #196090. + * Update NEWS files. + * Change ix86 default CPU type for code generation: + - i386-linux -> i486-linux + - i386-gnu -> i586-gnu + - i386-freebsd-gnu -> i486-freebsd-gnu + Use -march=i386 to target i386 CPUs. + + -- Matthias Klose Tue, 12 Aug 2003 10:31:28 +0200 + +gcc-3.3 (1:3.3.1ds3-1) unstable; urgency=low + + * gcc-3.3.1 (taken from CVS 20030805). + - C++: Fix declaration conflicts (closes: #203351). + - Fix ICE on ia64 (closes: #203840). + + -- Matthias Klose Tue, 5 Aug 2003 20:38:02 +0200 + +gcc-3.3 (1:3.3.1ds2-0rc2) unstable; urgency=low + + * Update to gcc-3.3.1 CVS 20030728. + - Fix ICE in extract_insn, at recog.c:2148 on m68k. + Closes: #177840, #180375, #190818. + - Fix ICE while building libquicktime on alpha (closes: #192576). + - Fix failure to deal with using and private inheritance (closes: #202696). + * On sparc, /usr/lib was added to the library search path. Fix it. + * Closed reports reported against gcc-3.2.x and fixed in gcc-3.3: + - Fix error building the gcl package on arm (closes: #199835). + + -- Matthias Klose Mon, 28 Jul 2003 20:39:07 +0200 + +gcc-3.3 (1:3.3.1ds1-0rc1) unstable; urgency=low + + * Update to gcc-3.3.1 CVS 20030722 (3.3.1 release candidate 1). + - Fix ICE in copy_to_mode_reg on 64-bit targets (closes: #189365). + - Remove documentation about multi-line strings (closes: #194391). + - Correctly document -falign-* parameters (closes: #198269). + - out-of-class specialization of a private nested template class. + Closes: #193830. + - Tighten shlibs dependency due to new symbols in libgcc. + * README.Debian for libg2c0, describing the need for g77-x.y when + working with the g2c header and library (closes: #189059). + * Call make with -j, if USE_NJOBS is set and non-empty + in the environment. + * Add another two m68k patches, partly replacing the workarounds provided + by Roman Zippel. + * Add the stack protector patch, but don't apply it by default. Edit + debian/rules.patch to apply it (closes: #171699, #189494). + * Remove wrong symlinks from gnat package (closes: #201882). + * Closed reports reported against gcc-2.95 and fixed in newer versions: + - SMP kernel compilation on alpha (closes: #134197, #146883). + - ICE on arm while building imagemagick (closes: #173475). + * Closed reports reported against gcc-3.2.x and fixed in gcc-3.3: + - Miscompilation of octave2.1 on hppa (closes: #192296, #193804). + + -- Matthias Klose Sun, 13 Jul 2003 10:26:30 +0200 + +gcc-3.3 (1:3.3.1ds0-0pre0) unstable; urgency=medium + + * Update to gcc-3.3.1 CVS 20030626. + - Fix ICE on arm compiling xfree86 (closes: #195424). + - Fix ICE on arm compiling fftw (closes: #186185). + - Fix ICE on arm in change_address_1, affecting a few packages. + Closes: #197099. + - Fix ICE in merge_assigned_reloads building Linux 2.4.2x sched.c. + Closes: #195237. + - Do not warn about failing to inline functions declared in system headers. + Closes: #193049. + - Fix ICE on mips{,el} in propagate_one_insn (closes: #194330, #196091). + - Fix ICE on m68k in reg_overlap_mentioned_p (closes: #194749). + - Build crtbeginT.o on m68k (closes: #197613). + * Fix g++ man page symlink (closes: #196271). + * mips/mipsel: Depend on binutils (>= 2.14.90.0.4). Closes: #196744. + * Disable treelang on powerpc (again). Closes: #196915. + * Pass -encoding in gcj-wrapper. + + -- Matthias Klose Fri, 27 Jun 2003 00:14:43 +0200 + +gcc-3.3 (1:3.3ds9-3) unstable; urgency=low + + * Closing more reports, fixed in 3.2/3.3: + - ICE building texmacs on m68k (closes: #177433). + - libstdc++: doesn't define trunc(...) (closes: #105285). + - libstdc++: setw is ignored for strings output (closes: #52382, #76645). + * Add build support to omit the manual pages and info docs from the + packages, disabled by default. Wait for a Debian statement, which can + be cited. Adresses: #193787. + * Reenable the m68k-const patch, don't run the g77 testsuite on m68k. + Addresses ICEs (#177840, #190818). + * Update arm-xscale patch. + * libstdc++: use __attribute__(__unknown__), instead of (unknown). + Closes: #195796. + * Build-Depend on glibc (>= 2.3.1) to prevent incorrect builds on woody. + Request from Adrian Bunk. + * Add treelang-update patch (Tim Josling), reenable treelang on powerpc. + * Add -{cpp,gcc,g++,gcj,g77} symlinks (addresses: #189466). + * Make sure not to build using binutils-2.14.90.0.[12]. + + -- Matthias Klose Mon, 2 Jun 2003 22:35:45 +0200 + +gcc-3.3 (1:3.3ds9-2) unstable; urgency=medium + + * Correct autoconf-related snafu in newly added ARM patches (Phil Blundell). + * Correct libgcc1 dependency (closes: #193689). + * Work around ldd/dpkg-shlibs failure on s390x. + + -- Matthias Klose Sun, 18 May 2003 09:40:15 +0200 + +gcc-3.3 (1:3.3ds9-1) unstable; urgency=low + + * gcc-3.3 final release. + See /usr/share/doc/gcc-3.3/NEWS.{gcc,html}. + * First merge of i386/x86-64 biarch support (Arnd Bergmann). + Disabled by default. Closes: #190066. + * New gpc-20030507 version. + * Upstream gpc update to fix netbsd build failure (closes: #191407). + * Add arm-xscale.dpatch, arm-10730.dpatch, arm-tune.dpatch, copied + from gcc-3.2 (Phil Blundell). + * Closing bug reports reported against older gcc versions (some of them + still present in Debian, but not anymore as the default compiler). + Usually, forwarded bug reports are linked to + http://gcc.gnu.org/PR + The upstream bug number usually can be found in the Debian reports. + + * Closed reports reported against gcc-3.1.x, gcc-3.2.x and fixed in gcc-3.3: + - General: + + GCC accepts multi-line strings without \ or " " &c (closes: #2910). + + -print-file-name sometimes fails (closes: #161615). + + ICE: reporting routines re-entered (closes: #179597, #180937). + + Misplaced paragraph in gcc documentation (closes: #179363). + + Error: suffix or operands invalid for `div' (closes: #150558). + + builtin memcmp() could be optimised (closes: #85535). + - Ada: + + Preelaborate, exceptions, and -gnatN (closes: #181679). + - C: + + Duplicate loop conditions even with -Os (closes: #94701). + + ICE (signal 11) (closes: #65686). + - C++: + + C++ error on virtual function which uses ... (closes: #165829). + + ICE when warning about cleanup nastiness in switch statements + (closes: #184108). + + Fails to compile virtual inheritance with variable number of + argument method (closes: #151357). + + xmmintrin.h broken for c++ (closes: #168310). + + Stack corruption with variable-length automatic arrays and virtual + destructors (closes: #188527). + + ICE on illegal code (closes: #184862). + + _attribute__((unused)) is ignored in C++ (closes: #45440). + + g++ handles &(void *)foo bizzarely (closes: #79225). + + ICE (with wrong code, though) (closes: #81122). + - Java: + + Broken zip file handling (closes: #180567). + - ObjC: + + @protocol forward definitions do not work (closes: #80468). + - Architecture specific: + - alpha + + va_start is off by one (closes: #186139). + + ICE while building kseg/ddd (closes: #184753). + + g++ -O2 optimization error (closes: #70743). + - arm + + ICE with -O2 in change_address_1 (closes: #180750). + + gcc optimization error with -O2, affecting bison (closes: #185903). + - hppa + + ICE in insn_default_length (closes: #186447). + - ia64 + + gcc-3.2 fails w/ optimization (closes: #178830). + - i386 + + unnecessary generation of instruction cwtl (closes: #95318). + + {athlon} ICE building mplayer (closes: #184800). + + {pentium4} ICE while compiling mozilla with -march=pentium4 + (closes: #187910). + + i386 optimisation: joining tests (closes: #105309). + - m68k + + ICE in instantiate_virtual_regs_1 (closes: #180493). + + gcc optimizer bug on m68k (closes: #64832). + - powerpc + + ICE in extract_insn, at recog.c:2175 building php3 (closes: #186299). + + ICE with -O -Wunreachable-code (closes: #189702). + - s390 + + Operand out of range at assembly time when using -O2 + (closes: #178596). + - sparc + + gcc-3.2 regression (wrong code) (closes: #176387). + + ICE in mem_loc_descriptor when optimizing (closes: #178909). + + ICE in gen_reg_rtx when optimizing (closes: #178965). + + Optimisation leads to unaligned access in memcpy (closes: #136659). + + * Closed reports reported against gcc-3.0 and fixed in gcc-3.2.x: + - General: + + Use mkstemp instead of mktemp (closed: #127802). + - Preprocessor: + + Fix redundant error message from cpp (closed: #100722). + - C: + + Optimization issue on ix86 (pointless moving) (closed: #97904). + + Miscompilation of allegro on ix86 (closed: #105741). + + Fix generation of ..ng references for static aliases (alpha-linux). + (closed: #108036). + + ICE compiling pari on hppa (closed: #111613). + + ICE on ia64 in instantiate_virtual_regs_1 (closed: #121668). + + ICE in c-typeck.c (closed: #123687). + + ICE in gen_subprogram_die on alpha (closed: #127890). + + SEGV in initialization of flexible char array member (closed: #131399). + + ICE on arm compiling lapack (closed: #135967). + + ICE in incomplete_type_error (closed: #140606). + + Fix -Wswitch (also part of -Wall) (closed: #140995). + + Wrong code in mke2fs on hppa (closed: #150232). + + sin(a) * sin(b) gives wrong result (closed: #164135). + - C++: + + Error in std library headers on arm (closed: #107633). + + ICE nr. 19970302 (closed: #119635). + + std::wcout does not perform encoding conversions (closed: #128026). + + SEGV, when compiling iostream.h with -fPIC (closed: #134315). + + Fixed segmentation fault in included code for (closed: #137017). + + Fix with exception handling and -O (closed: #144232). + + Fix octave-2.1 build failure on ia64 (closed: #144584). + + nonstandard overloads in num_get facet (closed: #155900). + + ICE in expand_end_loop with -O (closed: #158371). + - Fortran: + + Fix blas build failure on arm (closed: #137959). + - Java: + + Interface members are public by default (closed: #94974). + + Strange message with -fno-bounds-check in combination with -W. + (closed: #102353). + + Crash in FileWriter using IOException (closed: #116128). + + Fix ObjectInputStream.readObject() calling constructors. + (closed: #121636). + + gij: better error reporting on `class not found' (closed: #125649). + + Lockup during .java->.class compilation (closed: #141899). + + Compile breaks using temporary inner class instance (closed: #141900). + + Default constructor for inner class causes broken bytecode. + (closed: #141902). + + gij-3.2 linked against libgcc1 (closed: #165180). + + gij-wrapper understands -classpath parameter (closed: #146634). + + gij-3.2 doesn't ignore -jar when run as "java" (closed: #167673). + - ObjC: + + ICE on alpha (closed: #172353). + + * Closed reports reported against gcc-2.95 and fixed in newer versions: + - General: + + Undocumented option -pthread (closes: #165110). + + stdbool.h broken (closes: #167439). + + regparm/profiling breakage (closes: #20695). + + another gcc optimization error (closes: #51456). + + ICE in `output_fix_trunc' (closes: #55967). + + Fix "Unable to generate reloads for" (closes: #58219, #131890). + + gcc -c -MD x/y.c -o x/y.o leaves y.d in cwd (closes: #59232). + + Compiler error with -O2 (closes: #67631). + + ICE (unrecognizable insn) compiling php4 (closes: #83550, #84969). + + Another ICE (closes: #90666). + + man versus info inconsistency (-W and -Wall) (closes: #93708). + + ICE on invalid extended asm (closes: #136630). + + ICE in `emit_no_conflict_block' compiling perl (closes: #154599). + + ICE in `gen_tagged_type_instantiation_die'(closes: #166766). + + ICE on __builtin_memset(s, 0, -1) (closes: #170994). + + -Q option to gcc appears twice in the documentation (closes: #137382). + + New options for specifying targets:- -MQ and -MT (closes: #27878). + + Configure using --enable-nls (closes: #51651). + + gcc -dumpspecs undocumented (closes: #65406). + - Preprocessor: + + cpp fails to parse macros with varargs correctly(closes: #154767). + + __VA_ARGS__ stringification crashes preprocessor if __VA_ARGS__ is + empty (closes: #152709). + + gcc doesn't handle empty args in macro function if there is only + one arg(closes: #156450). + - C: + + Uncaught floating point exception causes ICE (closes: #33786). + + gcc -fpack-struct doesn't pack structs (closes: #64628). + + ICE in kernel (matroxfb) code (closes: #151196). + + gcc doesn't warn about unreachable code (closes: #158704). + + Fix docs for __builtin_return_address(closes: #165992). + + C99 symbols in limits.h not defined (closes: #168346). + + %zd printf spec generates warning, even in c9x mode (closes: #94891). + + Update GCC attribute syntax (closes: #12253, #43119). + - C++ & libstdc++-v3: + + template and virtual inheritance bug (closes: #152315). + + g++ has some troubles with nested templates (closes: #21255). + + vtable thunks implementation is broken (closes: #34876, #35477). + + ICE for templated friend (closes: #42662). + + ICE compiling mnemonic (closes: #42989). + + Deprecated: result naming doesn't work for functions defined in a + class (closes: #43170). + + volatile undefined ... (closes: #50529). + + ICE concerning templates (closes: #53698). + + Program compiled -O3 -malign-double segfaults in ofstream::~ofstream + (closes: #56867). + + __attribute__ ((constructor)) doesn't work with C++ (closes: #61806). + + Another ICE (closes: #65687). + + ICE in `const_hash' (closes: #72933). + + ICE on illegal code (closes: #83221). + + Wrong code with -O2 (closes: #83363). + + ICE on template class (closes: #85934). + + No warning for missing return in non-void member func (closes: #88260). + + Not a bug/fixed in libgcc1: libgcc.a symbols end up exported by + shared libraries (closes: #118670). + + ICE using nested templates (closes: #118781). + + Another ICE with templates (closes: #127489). + + More ICEs (closes: #140427, #141797). + + ICE when template declared after use(closes: #148603). + + template function default arguments are not handled (closes: #157292). + + Warning when including stl.h (closes: #162074). + + g++ -pedantic-errors -D_GNU_SOURCE cannot #include + (closes: #151671). + + c++ error message improvement suggestion (closes: #46181). + + Compilation error in stl_alloc.h with -fhonor-std (closes: #59005). + + libstdc++ has no method at() in stl_= (closes: #68963). + - Fortran: + + g77 crash (closes: #130415). + - ObjC: + + ICE: program cc1obj got fatal signal 11 (closes: #62309). + + Interface to garbage collector is undocumented. (closes: #68987). + - Architecture specific: + - alpha + + Can't compile with define gnu_source with stdio and curses + (closes: #97603). + + Header conflicts on alpha (closes: #134558). + + lapack-dev: cannot link on alpha (closes: #144602). + + ICE `fixup_var_refs_1' (closes: #43001). + + Mutt segv on viewing list of attachments (closes: #47981). + + ICE building open-amulet (closes: #48530). + + ICE compiling hatman (closes: #55291). + + dead code removal in switch() broken (closes: #142844). + - arm + + Miscompilation using -fPIC on arm (closes: #90363). + + infinite loop with -O on arm (closes: #151675). + - i386 + + ICE when using -mno-ieee-fp and -march=i686 (closes: #87540). + - m68k + + Optimization (-O2) broken on m68k (closes: #146006). + - mips + + g++ exception catching does not work... (closes: #105569). + + update-menus gets Bus Error (closes: #120333). + - mipsel + + aspell: triggers ICE on mipsel (closes: #128367). + - powerpc + + -O2 produces wrong code (gnuchess example) (closes: #131454). + - sparc + + Misleading documentation for -malign-{jump,loop,function}s + (closes: #114029). + + Sparc GCC issue with -mcpu=ultrasparc (closes: #172956). + + flightgear: build failure on sparc (closes: #88694). + + -- Matthias Klose Fri, 16 May 2003 07:13:57 +0200 + +gcc-3.3 (1:3.3ds8-0pre9) unstable; urgency=high + + * gcc-3.3 second prerelease. + - Fixing exception handling on s390 (urgency high). + * Reenabled gpc build (I had it disabled ...). Closes: #192347. + + -- Matthias Klose Fri, 9 May 2003 07:32:14 +0200 + +gcc-3.3 (1:3.3ds8-0pre8) unstable; urgency=low + + * gcc-3.3 prerelease. + - Fixes gcj ICE (closes: #189545). + * For libstdc++ use the i486 atomicity implementation, introduced with + 0pre6, left out in 0pre7 (closes: #191684). + * Add README.Debian for treelang (closes: #190812). + * Apply NetBSD changes (Joel Baker). Closes: #191551. + * New symbols in libgcc1, tighten the shlibs dependency. + * Disable testsuite run on mips/mipsel because of an outdated libc-dev + package. + * Do not build libffi with debug information, although configuring + with --enable-debug. + + -- Matthias Klose Tue, 6 May 2003 06:53:49 +0200 + +gcc-3.3 (1:3.3ds7-0pre7) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030429). + * Revert upstream libstdc++ change (closes: #191145, #191147, #191148, + #191149, #149159, #149151, and other reports). + Sorry for not detecting this before the upload, seems to be + broken on i386 "only". + * hurd-i386: Use /usr/include, not /include. + * Disable gpc on hurd-i386 (closes: #189851). + * Disable building the debug version of libstdc++ on powerpc-linux + (fixes about 200 java test cases). + * Install libstdc++v3 man pages (closes: #127263). + + -- Matthias Klose Tue, 29 Apr 2003 23:28:44 +0200 + +gcc-3.3 (1:3.3ds6-0pre6) unstable; urgency=high + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030426). + * libstdc++-doc: Fix index.html link (closes: #189424). + * Revert back to the i486 atomicity implementation, that was used + for gcc-3.2 as well. Reopens: #184446, #185662. Closes: #189983. + For this reason, tighten the libstdc++5 shlibs dependency. See + http://lists.debian.org/debian-devel/2003/debian-devel-200304/msg01895.html + Don't build the ix86 specfic libstdc++ libs anymore. + + -- Matthias Klose Sun, 27 Apr 2003 19:47:54 +0200 + +gcc-3.3 (1:3.3ds5-0pre5) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030415). + * Disable treelang on powerpc. + * Disable gpc on m68k. + * Install locale data. Conflict with gcc-3.2 (<= 1:3.2.3-0pre8). + * Fix generated bits/atomicity.h (closes: #189183). + * Tighten libgcc1 shlibs dependency (new symbol _Unwind_Backtrace). + + -- Matthias Klose Wed, 16 Apr 2003 00:37:05 +0200 + +gcc-3.3 (1:3.3ds4-0pre4) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030412). + * Avoid sparc64 dependencies for libgcc1 on sparc (Clint Adams). + * Make the default sparc 32bit target v8 instead of v7. This mainly + enables hardmul, which should speed up v8 and v9 systems by a large + margin (Ben Collins). + * Tighten binutils dependency for sparc. + * On i386, build libstdc++ optimized for i486 and above. The library + in /usr/lib is built for i386. Closes: #184446, #185662. + * Add gpc build (from gcc-snapshot package). + * debian/control: Include all packages, that _can_ be built from + this source package (except the cross packages). + * Add m68k patches: m68k-const, m68k-subreg, m68k-loop. + * Run the 3.3 testsuite a second time with the installed gcc-3.2 + to check for regressions (promised, only this time, and for the + final release ;). Add build dependencies (gobjc-3.2, g77-3.2, g++-3.2). + + -- Matthias Klose Sat, 12 Apr 2003 10:11:11 +0200 + +gcc-3.3 (1:3.3ds3-0pre3) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030331). + * Reenable java on arm. + * Build-Depend on binutils-2.13.90.0.18-1.3 on m68k. Fixes all + bprob/gcov testsuite failures. + * Enable C++ build on arm. + * Enable the sparc64 build. + + -- Matthias Klose Mon, 31 Mar 2003 23:24:54 +0200 + +gcc-3.3 (1:3.3ds2-0pre2) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030317). + * Disable building the gcc-3.3-nof package. + * Disable Ada on mips and mipsel. + * Remove the workaround to build Ada on powerpc. + * Add GNU Free documentation license to copyright file. + * Update the sparc64 build patches (Clint Adams). Not yet enabled. + * Disable C++ on arm (Not yet tested). + * Add fix for ICE on powerpc (see: #184684). + + -- Matthias Klose Sun, 16 Mar 2003 21:40:57 +0100 + +gcc-3.3 (1:3.3ds1-0pre1) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030310). + * Add gccbug manpage. + * Don't build libgnat package (no shared library). + * Configure with --enable-sjlj-exceptions on hppa and m68k for + binary compatibility with libstdc++ built with gcc-3.2. + * Disable Java on arm-linux (never seen it sucessfully bootstrap). + * Install non-conflicting baseline README. + * multilib *.so and *.a moved to /usr/lib/gcc-lib/... , so that several + compiler versions can be installed concurrently. + * Remove libstdc++-incdir patch applied upstream. + * libstdc++ 64 bit development files now handled in -dev target. + (Gerhard Tonn) + * Drop build dependencies for gpc (tetex-bin, help2man, libncurses5-dev). + * Add libstdc++5-3.3-dev confict to libstdc++5-dev (<= 1:3.2.3-0pre3). + * Enable builds on m68k (all but C++ for the moment). gcc-3.3 bootstraps, + while gcc-3.2 doesn't. + + -- Matthias Klose Mon, 10 Mar 2003 23:41:00 +0100 + +gcc-3.3 (1:3.3ds0-0pre0) unstable; urgency=low + + * First gcc-3.3 package, built for s390 only. All other architectures + build the gcc-3.3-base package only. + To build the package on other architectures, edit debian/rules.defs + (macro no_dummy_archs). + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030301). + * Don't include the gcc locale files (would conflict with 3.2). + * Remove libffi-install-fix patch. + * Fix netbsd-i386 patches. + * Change priority of libstdc++5 and gcc-3.2-base to important. + * Install gcjh-wrapper for javah. + * gij suggests fastjar, gcj recommends fastjar. + * Allow builds using automake1.4 | automake (<< 1.5). + * Backport fix for to output more correct line numbers. + * Add help2man to build dependencies needed for some gpc man pages. + * gpc: Install binobj and gpidump binaries and man pages. + * Apply cross compilation patches submitted by Bastian Blank. + * Replace s390-biarch patch and copy s390-config-ml patch from 3.2 + (Gerhard Tonn). + * Configure using --enable-debug. + * Add infrastructure to only build a subset of binary packages. + * Rename libstdc++-{dev,dbg,pic,doc} packages. + * Build treelang compiler. + + -- Matthias Klose Sat, 1 Mar 2003 12:56:42 +0100 + +gcc-3.2 (1:3.2.3ds2-0pre3) unstable; urgency=low + + * gcc-3.2.3 prerelease (CVS 20030228) + - Fixes bootstrap failure on alpha-linux. + - Fixes ICE on m68k (closes: #177016). + * Build Pascal with -O1 on powerpc, disable Pascal on arm, m68k and + sparc (due to wrong code generation for fwrite in glibc, + see PR optimization/9279). + * Apply cross compilation patches submitted by Bastian Blank. + + -- Matthias Klose Fri, 28 Feb 2003 20:26:30 +0100 + +gcc-3.2 (1:3.2.3ds1-0pre2) unstable; urgency=medium + + * gcc-3.2.3 prerelease (CVS 20030221) + - Fixes ICE on hppa (closes: #181813). + * Patch for ffitest in s390-java.dpatch deleted, since already fixed + upstream. (Gerhard Tonn) + * Build crtbeginT.o on m68k-linux (closes: #179807). + * Install gcjh-wrapper for javah (closes: #180218). + * gij suggests fastjar, gcj recommends fastjar (closes: #179298). + * Allow builds using automake1.4 | automake (<< 1.5) (closes: #180048). + * Backport fix for to output more correct line numbers (closes: #153965). + * Add help2man to build dependencies needed for some gpc man pages. + * gpc: Install binobj and gpidump binaries and man pages. + * Disable gpc on arm due to wrong code generation for fwrite in + glibc (see PR optimization/9279). + + -- Matthias Klose Sat, 22 Feb 2003 19:58:20 +0100 + +gcc-3.2 (1:3.2.3ds0-0pre1) unstable; urgency=low + + * gcc-3.2.3 prerelease (CVS 20030210) + - Fixes long millicode calls on hppa (closes: #180520) + * New gpc-20030209 version. Remove gpc-update.dpatch and gpc-testsuite.dptch + as they are no longer needed. + * Fix netbsd-i386 patches (closes: #180129, #179931) + * m68k-bootstrap.dpatch: backport gcse.c changes from 3.3/MAIN to 3.2 + * Change priority of libstdc++5 and gcc-3.2-base to important. + + -- Ryan Murray Tue, 11 Feb 2003 06:18:09 -0700 + +gcc-3.2 (1:3.2.2ds8-1) unstable; urgency=low + + * gcc-3.2.2 release. + - Fixes ICE, regression from 2.95 (closes: #176117). + - Fixes ICE, regression from 2.95 (closes: #179161). + * libstdc++ for biarch installs now upstream to usr/lib64, + therefore mv usr/lib/64 usr/lib64 no longer necessary. (Gerhard Tonn) + + -- Ryan Murray Wed, 5 Feb 2003 01:35:29 -0700 + +gcc-3.2 (1:3.2.2ds7-0pre8) unstable; urgency=low + + * gcc-3.2.2 prerelease (CVS 20030130). + * update s390 libffi patch + * debian/control: add myself to uploaders and change libc12-dev depends to + libc-dev on i386 (closes: #179128) + * Build-Depend on procps so that ps is available for logwatch + + -- Ryan Murray Fri, 31 Jan 2003 04:00:15 -0700 + +gcc-3.2 (1:3.2.2ds6-0pre7) unstable; urgency=low + + * gcc-3.2.2 prerelease (CVS 20030128). + - Update needed for hppa. + - Fixes ICE on arm, regression from 2.95.x (closes: #168086). + - Can use default bison (1.875). + * Apply netbsd build patches (closes: #177674, #178328, #178325, + #178326, #178327). + * Run the logwatch script on "slow" architectures (arm, m68k) only. + * autoreconf.dpatch: Only update libtool.m4, which is newer conceptually + than libtool 1.4 (Ryan Murray). + * Apply autoreconf patch universally (Ryan Murray). + * More robust gij/gcj wrapper scripts, include /usr/lib/jni in default + JNI search path (Ben Burton). Closes: #167932. + * Build crtbeginT.o on m68k (closes: #177036). + * Fixed libc-dev source dependency (closes: #178602). + * Tighten shlib dependency to the current package version; should be + 1:3.2.2-1 for the final release (closes: #178867). + + -- Matthias Klose Tue, 28 Jan 2003 21:59:30 +0100 + +gcc-3.2 (1:3.2.2ds5-0pre6) unstable; urgency=low + + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20030123). + * Build locales needed by the libstdc++ testsuite. + * Update config.{guess,sub} files from autotools-dev (closes: #177674). + * Disable Ada and Java on netbsd-i386 (closes: #177679). + * gnat: Add suggests for gnat-doc and ada-reference-manual. + + -- Matthias Klose Thu, 23 Jan 2003 22:16:53 +0100 + +gcc-3.2 (1:3.2.2ds4-0pre5.1) unstable; urgency=low + + * Readd build dependency `locales' on arm. locales is now installable + * Add autoreconf patch for mips{,el}. (closes: #176311) + + -- Ryan Murray Wed, 22 Jan 2003 14:31:14 -0800 + +gcc-3.2 (1:3.2.2ds4-0pre5) unstable; urgency=low + + * Remove build dependency `libc6-dev-sparc64 [sparc]' for now. + * Remove build dependency `locales' on arm. locales is uninstallable + on arm due to the missing glibc-2.3. + * Use bison-1.35. bison-1.875 causes an hard error on the reduce/reduce + conflict in objc-parse.y. + + -- Matthias Klose Fri, 10 Jan 2003 10:10:43 +0100 + +gcc-3.2 (1:3.2.2ds4-0pre4) unstable; urgency=low + + * Try building with gcc-2.95 on m68k-linux. Building gcc-3.2 with gcc-3.2 + does not work for me. m68k-linux doesn't look good at all ... + * Fix s390 build error. + * Add locales to build dependencies. A still unsolved issue is the + presence of the locales de_DE, en_PH, en_US, es_MX, fr_FR and it_IT, + or else some tests in the libstdc++ testsuite will fail. + * Put all -nof files in the -nof package (closes: #175253). + * Correctly exit logwatch script (closes: #175251). + * Install linker-map.gnu file for libstdc++_pic (closes: #175144). + * Install versioned gpcs docs only (closes: #173844). + * Include gpc test results in gpc package. + * Link local libstdc++ documentation to local source-level documentation. + * Clarify libstdc++ description (so version and library version). + Closes: #175799. + * Include library in libstdc++-dbg package (closes: #176005). + + -- Matthias Klose Wed, 8 Jan 2003 23:39:50 +0100 + +gcc-3.2 (1:3.2.2ds3-0pre3) unstable; urgency=low + + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021231). + - Fix loop count computation for preconditioned unrolled loops. + Closes: #162919. + - Fix xmmintrin.h (_MM_TRANSPOSE4_PS) CVS 20021027 (closes: #163647). + - Fix [PR 8601] strlen/template interaction causes ICE CVS 20021201. + Closes: #166143. + * Watch the log files, which are written during the testsuite runs and print + out a message, if there is still activity. No more buildd timeouts on arm + and m68k ... + * Remove gpc's reference to librx1g-dev package (closes: #172953). + * Remove trailing dots on package descriptions. + * Fix external reference to cpp.info in gcc.info (closes: #174598). + + -- Matthias Klose Tue, 31 Dec 2002 13:47:52 +0100 + +gcc-3.2 (1:3.2.2ds2-0pre2) unstable; urgency=medium + + * Friday, 13th upload, so what do you expect ... + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021212). + * Fix gnat build (autobuild maintainers: please revert back to gnat-3.2 + (<= 1:3.2.1ds6-1) for building gnat-3.2, if the build fails building + gnatlib and gnattools). + * Really disable sparc64 support. + + -- Matthias Klose Fri, 13 Dec 2002 00:26:37 +0100 + +gcc-3.2 (1:3.2.2ds1-0pre1) unstable; urgency=low + + * A candidate for the transition ... + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021210). + - doc/invoke.texi: Remove last reference to -a (closes: #171748). + * Disable sparc64 support. For now please use egcs64 to build sparc64 + kernels. + * Disable Pascal on the sparc architecture (doesn't bootstrap). + + -- Matthias Klose Tue, 10 Dec 2002 22:33:13 +0100 + +gcc-3.2 (1:3.2.2ds0-0pre0) unstable; urgency=low + + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021202). + - Should fix _Pragma expansion within macros (closes: #157416). + * New gpc-20021128 version. Run check using EXTRA_TEST_PFLAGS=-g0 + * Add tetex-bin to build dependencies (gpc needs it). Closes: #171203. + + -- Matthias Klose Tue, 3 Dec 2002 08:22:33 +0100 + +gcc-3.2 (1:3.2.1ds6-1) unstable; urgency=low + + * gcc-3.2.1 final release. + * Build gpc-20021111 for all architectures. hppa and i386 are + known to work. For the other architectures, send the usual FTBFS ... + WARNING: this gpc version is an alpha version, especially debug info + doesn't work well, so use -g0 for compiling. If you need a stable + gpc compiler, use gpc-2.95. + * Encode the gpc upstream version in the package name, the gpc release + date in the version number (requested by gpc upstream). + * Added libncurses5-dev and libgmp3-dev as build dependencies for the + gpc tests and runtime. + * Clean CVS files as well (closes: #169101). + * s390-biarch.dpatch added, backported from CVS (Gerhard Tonn). + * s390-config-ml.dpatch added, disables biarch for java, + libffi and boehm-gc on s390. They need a 64 bit runtime + during build which is not yet available on s390 (Gerhard Tonn). + * Biarch support for packaging adapted (Gerhard Tonn). + biarch variable added and with-sparc64 variable substituted in + most places by biarch. + dh_shlibdeps is applied only to 32 bit libraries on s390, since + ldd for 64 bit libraries don't work on 32 bit runtime. + Build dependency to libc6-dev-s390x added. + + -- Matthias Klose Wed, 20 Nov 2002 00:20:58 +0100 + +gcc-3.2 (1:3.2.1ds5-0pre6) unstable; urgency=medium + + * gcc-3.2.1 prerelease. + * Removed arm patch integrated upstream. + * Adjust gnat build dependency (closes: #167116). + * Always configure with --enable-clocale=gnu. The autobuilders do have + locales installed, but not generated the "de_DE" locale needed for + the autoconf test in libstdcc++-v3/aclocal.m4. + * libstdc++ documentaion: Don't compresss '*.txt' referenced by html pages. + + -- Matthias Klose Tue, 12 Nov 2002 07:19:44 +0100 + +gcc-3.2 (1:3.2.1ds4-0pre5) unstable; urgency=medium + + * gcc-3.2.1 snapshot (CVS 20021103). + * sparc64-build.dpatch: Updated. Lets sparc boostrap again. + * s390-loop.dpatch removed, already fixed upstream (Gerhard Tonn). + * bison.dpatch: Removed, patch submitted upstream. + * backport-java-6865.dpatch: Apply again during build. + * Tighten glibc dependency (closes: #166703). + + -- Matthias Klose Sun, 3 Nov 2002 12:22:02 +0100 + +gcc-3.2 (1:3.2.1ds3-0pre4) unstable; urgency=high + + * gcc-3.2.1 snapshot (CVS 20021020). + - Expansion of _Pragma within macros fixed (closes: #157416). + * FTBFS: With the switch to bison-1.50 (and 1.75), gcc-3.2 fails to build from + source on Debian unstable systems. This is fixed in gcc HEAD, but not on + the current release branch. + HELP NEEDED: + - check what is missing from the patches in debian/patches/bison.dpatch. + This is a backport of the bison related patches, but showing regressions + in the gcc testsuite, so it cannot be applied. + - build gcc using byacc (bootstrap currently fails using byacc). + - build bison-1.35 in it's own package (the current 1.35-3 package fails + to build form source). + - and finally ask upstream to backport the patch to the branch. It's not + helpful not beeing able to follow the stable branch. Maybe we should + just switch to gcc HEAD as BSD does ... + As a terrible workaround, build the sources from CVS first on a machine, + with bison-1.35 installed, then package the tarball, so the bison + generated files are not rebuilt. + + * re-add lost patch: configure with --enable-__cxa_atexit (closes: #163422), + Therefore urgency high. + * gcj-wrapper, gij-wrapper: Accept names starting with `.' (closes: #163172, + #164009). + * Point g++ manpage to correct g++ version (closes: #162843). + * Support for i386-freebsd-gnu (closes: #163883). + * s390-java.dpatch replaced with backport from cvs head (Gerhard Tonn). + * Disable the testsuite run on the Hurd (closes: #159650). + * s390-loop.dpatch added, fixes runtime problem (Gerhard Tonn). + * debian/patches/bison.dpatch: Backport for bison-1.75 compatibility. + Don't use it due to regressions. + * debian/patches/backport-java-6865.dpatch: Directly applied in the + included tarball because of bison problems. + * Make fixincludes priority optional, so linda can depend on it. + * Tighten binutils dependency. + + -- Matthias Klose Sun, 20 Oct 2002 10:52:49 +0200 + +gcc-3.2 (1:3.2.1ds2-0pre3) unstable; urgency=low + + * gcc-3.2.1 snapshot (CVS 20020923). + * Run the libstdc++ check-abi script. Results are put into the file + /usr/share/doc/libstdc++5/README.libstdc++-baseline in the libstdc++5-dev + package. This file contains a new baseline, if no baseline for this + architecture is included in the gcc sources. + * gcj-wrapper: Accept files starting with an underscore, accept + path names (closes: #160859, #161517). + * Explicitely call automake-1.4 when rebuilding Makefiles (closes: #161438). + * Let installed fixincludes script find files in /usr/lib/fixincludes. + * debian/rules.patch: Add .NOTPARALLEL as target, so that patches are + applied sequentially (closes: #159395). + + -- Matthias Klose Tue, 24 Sep 2002 07:36:56 +0200 + +gcc-3.2 (1:3.2.1ds1-0pre2) unstable; urgency=low + + * gcc-3.2.1 snapshot (CVS 20020913). Welcome back m68k in bootstrap land! + * Fix arm-tune.dpatch (closes: #159354). + * Don't overwrite LD_LIBRARY_PATH in build (closes: #158459). + * --disable-__cxa_atexit on NetBSD (closes: #159620). + * Reenable installation of message catalogs (disabled in 3.2-0pre2). + Closes: #160175. + * Ben Collins + - Re-enable sparc64 build. This time, it's part of the default compiler. + I have disabled 64/alt libraries as they are too much overhead. All + libraries build 64bit, but currently only libgcc/libstdc++ include the + 64bit libraries. + Closes: #160404. + * Depend on autoconf2.13, instead of autoconf. + * Phil Blundell + - debian/patches/arm-update.dpatch: Fix python2.2 build failure. + + -- Matthias Klose Sat, 7 Sep 2002 08:05:02 +0200 + +gcc-3.2 (1:3.2.1ds0-0pre1) unstable; urgency=medium + + * gcc-3.2.1 snapshot (CVS 20020829). + New g++ option -Wabi: + Warn when G++ generates code that is probably not compatible with the + vendor-neutral C++ ABI. Although an effort has been made to warn about + all such cases, there are probably some cases that are not warned about, + even though G++ is generating incompatible code. There may also be + cases where warnings are emitted even though the code that is generated + will be compatible. + The current version of the ABI is 102, defined by the __GXX_ABI_VERSION + macro. + * debian/NEWS.*: Updated. + * Fix libstdc++-dev dependency on libc-dev for the Hurd (closes: #157004). + * Add versioned expect build dependency. + * Tighten binutils dependency to 2.13.90.0.4. + * debian/patches/arm-tune.dpatch: Increase stack limit for configure. + * 3.2-0pre4 did build gnat-3.2 compilers for all architectures. Build-Depend + on gnat-3.2 now (closes: #156734). + * Remove bashism's in gcj-wrapper (closes: #157982). + * Add -cp and -classpath options to gij(1). Backport from HEAD (#146634). + * Add fastjar documentation. + + -- Matthias Klose Fri, 30 Aug 2002 10:35:00 +0200 + +gcc-3.2 (1:3.2ds0-0pre4) unstable; urgency=low + + * Correct build dependency on gnat-3.1. + + -- Matthias Klose Mon, 12 Aug 2002 01:21:58 +0200 + +gcc-3.2 (1:3.2ds0-0pre3) unstable; urgency=low + + * gcc-3.2 upstream prerelease. + * Disable all configure options, which are standard: + --enable-threads=posix --enable-long-long, --enable-clocale=gnu + + -- Matthias Klose Fri, 9 Aug 2002 21:59:08 +0200 + +gcc-3.2 (1:3.2ds0-0pre2) unstable; urgency=low + + * gcc-3.2 snapshot (CVS 20020802). + * Fix g++-include dir. + * Don't install the locale files (temporarily, until we don't build + gcc-3.1 anymore). + * New package libgcj-common to avoid conflict with classpath package. + + -- Matthias Klose Sat, 3 Aug 2002 09:08:34 +0200 + +gcc-3.2 (1:3.2ds0-0pre1) unstable; urgency=low + + * gcc-3.2 snapshot (CVS 20020729). + + -- Matthias Klose Mon, 29 Jul 2002 20:36:54 +0200 + +gcc-3.1 (1:3.1.1ds3-1) unstable; urgency=low + + * gcc-3.1.1 release. Following this release we will have a gcc-3.2 + release soon, which is gcc-3.1.1 plus some C++ ABI changes. Once + gcc-3.2 hits the archives, gcc-3.1.1 will go away. + * Don't build the sparc64 compiler. The packaging/patches are + currently broken. + * Add missing headers on m68k and powerpc. + * Install libgcc_s_nof on powerpc. + * Install libffi's copyright and doc files (closes: #152198). + * Remove dangling symlink (closes: #149002). + * libgcj3: Add a conflict to the classpath package (closes: #148664). + * README.C++: Fix URLs. + * libstdc++-dbg: Install into /usr/lib/debug, document it. + * backport-java-6865.dpatch: backport from HEAD. + * Fix typo in gcj docs (closes: #148890). + * Change libstdc++ include dir: /usr/include/c++/3.1. + * libstdc++-codecvt.dpatch: New patch (closes: #149776). + * Build libstdc++-pic package. + * Move 64bit libgcc in its own package libgcc1-64 (closes: #147249). + * Tighten glibc dependency. + + -- Matthias Klose Mon, 29 Jul 2002 00:34:49 +0200 + +gcc-3.1 (1:3.1.1ds2-0pre3) unstable; urgency=low + + * Updated to CVS 2002-06-06 (gcc-3_1-branch). + * Updated s390-java patch (Gerhard Tonn). + * Don't use -O in STAGE1_FLAGS on m68k. + * Fix `-classpath' option in gcj-wrapper script (closes: #150142). + * Remove g++-cxa-atexit patch, use --enable-__cxa_atexit configure option. + + -- Matthias Klose Wed, 3 Jul 2002 23:52:58 +0200 + +gcc-3.1 (1:3.1.1ds1-0pre2) unstable; urgency=low + + * Updated to CVS 2002-06-06 (gcc-3_1-branch), fixing an ObjC regression. + * Welcome m68k to bootstrap land (thanks to Andreas Schwab). + * Add javac wrapper for gcj-3.1 (Michael Koch). + * Remove dangling symlink in /usr/share/doc/gcc-3.1 (closes: #149002). + + -- Matthias Klose Fri, 7 Jun 2002 00:26:05 +0200 + +gcc-3.1 (1:3.1.1ds0-0pre1) unstable; urgency=low + + * Updated to CVS 2002-05-31 (gcc-3_1-branch). + * Change priorities from fastjar and gij-wrapper-3.1 from 30 to 31. + * Update arm-tune patch. + * Install xmmintrin.h header on i386 (closes: #148181). + * Install altivec.h header on powerpc. + * Call correct gij in gij-wrapper (closes: #148662, #148682). + + -- Matthias Klose Wed, 29 May 2002 22:47:40 +0200 + +gcc-3.1 (1:3.1ds2-2) unstable; urgency=low + + * Tighten binutils dependency. + * Fix libstdc include dir for multilibs (Dan Jacobowitz). + + -- Matthias Klose Tue, 21 May 2002 08:03:49 +0200 + +gcc-3.1 (1:3.1ds2-1) unstable; urgency=low + + * GCC 3.1 release. + * Ada cannot be built by the autobuilders for the first time. Do it by hand. + gnatgcc and gnatbind need to be in the PATH. + * Build with CC=gnatgcc, when building the Ada compiler. + * Hurd fixes. + * Don't build the sparc64 compiler; the hack isn't up to date and glibc + isn't converted to use /lib64 and /usr/lib64. + * m68k-linux shows bootstrap comparision failures. If you want to build + the compiler anyway and ignore the bootstrap comparision failure, edit + debian/rules.patch and uncomment the patch to ignore the failure. See + /usr/share/doc/gcc-3.1/BOOTSTRAP_COMPARISION_FAILURE for the differences. + + -- Matthias Klose Wed, 15 May 2002 09:53:00 +0200 + +gcc-3.1 (1:3.1ds1-0pre6) unstable; urgency=low + + * Build from the "final prerelease" tarball (gcc-3.1-20020508.tar.gz). + * Build gnat-3.1-doc package. + * Build fastjar package without building java packages. + * Hurd fixes. + * Updated sparc64-build patch. + * Add s390-ada patch (Gerhard Tonn). + * Undo the dwarf2 support for hppa from -0pre5. + + -- Matthias Klose Thu, 9 May 2002 17:21:09 +0200 + +gcc-3.1 (1:3.1ds0-0pre5) unstable; urgency=low + + * Use /usr/include/g++-v3-3.1 as C++ include dir. + * Update s390-java patch (Gerhard Tonn). + * Tighten binutils dependency (gas patch for m68k-linux). + * Use gnat-3.1 as the gnat package name (as found in gcc/ada/gnatvsn.ads). + * dwarf2 support hppa: a snapshot of the gcc/config/pa directory + from the trunk dated 2002-05-02. + + -- Matthias Klose Fri, 3 May 2002 22:51:37 +0200 + +gcc-3.1 (1:3.1ds0-0pre4) unstable; urgency=low + + * Use gnat-5.00w as the gnat package name (as found in gcc/ada/gnatvsn.ads). + * Don't build the shared libgnat library. It assumes an existing shared + libiberty library. + * Don't install the libgcjgc library. + + -- Matthias Klose Thu, 25 Apr 2002 08:48:04 +0200 + +gcc-3.1 (1:3.1ds0-0pre3) unstable; urgency=low + + * Build fastjar on all architectures. + * Update m68k patches. + * Update s390-java patch (Gerhard Tonn). + + -- Matthias Klose Sun, 14 Apr 2002 15:34:47 +0200 + +gcc-3.1 (1:3.1ds0-0pre2) unstable; urgency=low + + * Add Ada support. To successfully build, a working gnatbind and gcc + driver with Ada support is needed. + * Apply needed arm patches from 3.0.4. + + -- Matthias Klose Sat, 6 Apr 2002 13:17:08 +0200 + +gcc-3.1 (1:3.1ds0-0pre1) unstable; urgency=low + + * First try for gcc-3.1. + + -- Matthias Klose Mon, 1 Apr 2002 23:39:30 +0200 + +gcc-3.0 (1:3.0.4ds3-6) unstable; urgency=medium + + * Second try at fixing sparc build problems. + + -- Phil Blundell Sun, 24 Mar 2002 14:49:26 +0000 + +gcc-3.0 (1:3.0.4ds3-5) unstable; urgency=medium + + * Enable java on ARM. + * Create missing directory to fix sparc build. + + -- Phil Blundell Fri, 22 Mar 2002 20:21:59 +0000 + +gcc-3.0 (1:3.0.4ds3-4) unstable; urgency=low + + * Link with system zlib (closes: #136359). + + -- Matthias Klose Tue, 12 Mar 2002 20:47:59 +0100 + +gcc-3.0 (1:3.0.4ds3-3) unstable; urgency=low + + * Build libf2c (pic and non-pic) with -mieee on alpha-linux. + + -- Matthias Klose Sun, 10 Mar 2002 00:37:24 +0100 + +gcc-3.0 (1:3.0.4ds3-2) unstable; urgency=medium + + * Apply hppa-build patch (Randolph Chung). Closes: #136731. + * Make libgcc1 conflict/replace with libgcc1-sparc64. Closes: #135709. + * gij-3.0 provides the `java' command. Closes: #128947. + * Depend on binutils (>= 2.11.93.0.2-2), allows stripping of libgcj.a + again. Closes: #99307. + * Update README.cross pointing to the README of the toolchain-source + package. + + -- Matthias Klose Wed, 6 Mar 2002 21:53:34 +0100 + +gcc-3.0 (1:3.0.4ds3-1) unstable; urgency=low + + * Final gcc-3.0.4 release. + * debian/rules.d/binary-java.mk: Fix dormant typo, exposed by removing the + duplicate libgcj dependency and adding the gij-3.0 package. + Closes: #134005. + * New patch by Phil Blundell to fix scalapack build error on m68k. + + -- Matthias Klose Wed, 20 Feb 2002 23:59:43 +0100 + +gcc-3.0 (1:3.0.4ds2-0pre020210) unstable; urgency=low + + * Make the base package dependent on the binary-arch target. Closes: #133433. + * Get libstdc++ on arm woring (define _GNU_SOURCE). Closes: #133435. + + -- Matthias Klose Mon, 11 Feb 2002 20:31:12 +0100 + +gcc-3.0 (1:3.0.4ds2-0pre020209) unstable; urgency=high + + * Update to CVS sources (20020209 gcc-3_0-branch). + * Apply patch to fix bootstrap error on arm-linux (submitted upstream + by Phil Blundell). Closes: #130422. + * Make base package architecture any. + * Decouple versioned shlib dependencies from release number for + libobjc as well. + + -- Matthias Klose Sat, 9 Feb 2002 01:30:11 +0100 + +gcc-3.0 (1:3.0.4ds1-0pre020203) unstable; urgency=medium + + * One release critical bug outstanding: + - bootstrap error on arm. + * Update to CVS sources (20020203 gcc-3_0-branch). + * Fixed upstream: PR c/3504: Correct documentation of __alignof__. + Closes: #85445. + * Remove libgcc-powerpc patch, integrated upstream (closes: #131977). + * Tighten binutils build dependency (to address #126162). + * Move jv-convert to gcj package (closes: #131985). + + -- Matthias Klose Sun, 3 Feb 2002 14:47:14 +0100 + +gcc-3.0 (1:3.0.4ds0-0pre020127) unstable; urgency=low + + * Two release critical bugs outstanding: + - bootstrap error on arm. + - bus errors for C++ and java executables on sparc (see the testsuite + results). + * Update to CVS sources (20020125 gcc-3_0-branch). + * Enable java support for s390 architecture (patch from Gerhard Tonn). + * Updated NEWS file for 3.0.3. + * Disable building the gcc-sparc64, but build a multilibbed compiler + for sparc as the default. + * Disabled the subreg-byte patch for sparc (request from Ben Collins). + * Fixed reference to libgcc1 package in README (closes: #126218). + * Do recommend libc-dev, not depend on it. For low-end or embedded systems + the dependency on libc-dev can make the difference between + having enough or having too little space to build a kernel. + * README.cross: Updated by Hakan Ardo. + * Decouple versioned shlib dependencies from release number. Closes: #118391. + * Fix diversions for gcc-3.0-sparc64 package (closes: #128178), + unconditionally remove `sparc64-linux-gcc' alternative. + * g77/README.libg2c.Debian: New file mentioning `libg2c-pic'. The next + g77 version (3.1) does build a static and shared library (closes: #104250). + * Fix formatting errors in the synopsis of the java man pages. Maybe the + reason for #127571. Closes: #127571. + * fastjar: Fail for the (currently incorrect) -u option. Addresses: #116145. + Add alternative for `jar' using priority 30 (closes: #118648). + * jv-convert: Add --help option and man page. Backport from HEAD branch. + * libgcj2-dev: Remove duplicate dependency (closes: #127805). + * Giving up and make just another new package gij-X.Y with only the gij-X.Y + binary for policy conformance (closes: #127111). + * gij: Provides an alternative for `java' (priority 30) using a wrapper + script (Stephen Zander) (closes: #128974). Added simple manpage. + + -- Matthias Klose Sun, 27 Jan 2002 13:33:41 +0100 + +gcc-3.0 (1:3.0.3ds3-1) unstable; urgency=low + + * Final gcc-3.0.3 release. + * Do not compress .txt files in libstdc++ docs referenced from html + pages (closes: #124136). + * libstdc++-dev suggests libstdc++-doc. + * debian/patches/gcc-ia64-NaT.dpatch: Update (closes: #123685). + + -- Matthias Klose Fri, 21 Dec 2001 02:54:11 +0100 + +gcc-3.0 (1:3.0.3ds2-0pre011215) unstable; urgency=low + + * Update to CVS sources (011215). + * libstdc++ documentation updated upstream (closes: #123790). + * debian/patches/gcc-ia64-NaT.dpatch: Disable. Fixes bootstrap error + on ia64 (#123685). + + -- Matthias Klose Sat, 15 Dec 2001 14:43:21 +0100 + +gcc-3.0 (1:3.0.3ds1-0pre011210) unstable; urgency=medium + + * Update to CVS sources (011208). + * Supposed to fix powerpc build error (closes: #123155). + + -- Matthias Klose Thu, 13 Dec 2001 07:26:05 +0100 + +gcc-3.0 (1:3.0.3ds0-0pre011209) unstable; urgency=medium + + * Update to CVS sources (011208). Frozen for upstream 3.0.3 release. + * Apply contrib/PR3145.patch, a backport of Nathan Sidwell's patch to + fix PR c++/3145, the infamous "virtual inheritance" bug. This affected + especially KDE2 (eg. artsd). Franz Sirl + * cc1plus segfault in strength reduction fixed upstream. Closes: #122547. + * debian/patches/gcc-ia64-NaT.dpatch: Add patch to avoid a bug that can + cause miscompiled userapps to crash the kernel. Closes: #121924. + * Reenable shared libgcc for powerpc. Fixed upstream. + http://gcc.gnu.org/ml/gcc-patches/2001-11/msg00340.html + debian/patches/libgcc-powerpc.dpatch: New patch. + * Add upstream changelogs. + * Remove gij alternative. Move to gij package. + + -- Matthias Klose Sun, 9 Dec 2001 09:36:48 +0100 + +gcc-3.0 (1:3.0.2ds4-4) unstable; urgency=medium + + * Disable building of libffi on mips and mipsel. + (closes: #117503). + * Enable building of shared libgcc on s390 + (closes: #120452). + + -- Christopher C. Chimelis Sat, 1 Dec 2001 06:15:29 -0500 + +gcc-3.0 (1:3.0.2ds4-3) unstable; urgency=medium + + * Fix logic to build libffi without java (closes: #117503). + + -- Matthias Klose Sun, 4 Nov 2001 14:34:50 +0100 + +gcc-3.0 (1:3.0.2ds4-2) unstable; urgency=medium + + * Enable java for ia64 (Jeff Licquia). Closes: #116798. + * Allow building of libffi without gcj (Jeff Licquia). + New libffi packages for arm hurd-i386 mips mipsel, + still missing: hppa, s390. + * debian/NEWS.gcc: Add 3.0.2 release notes. + * debian/patches/hppa-align.dpatch: New patch from Alan Modra, + submitted by Randolph Tausq. + + -- Matthias Klose Thu, 25 Oct 2001 23:59:31 +0200 + +gcc-3.0 (1:3.0.2ds4-1) unstable; urgency=medium + + * Final gcc-3.0.2 release. The source tarball is not the released + tarball, but taken from CVS 011024). + * Remove patch for s390, included upstream. + + -- Matthias Klose Wed, 24 Oct 2001 00:49:40 +0200 + +gcc-3.0 (1:3.0.2ds3-0pre011014) unstable; urgency=low + + * Update to CVS sources (011014). Frozen for upstream 3.0.2 release. + Closes: #109351, #114099, #114216, #105741 (allegro3938). + * Added debian/patches/fastjar.dpatch, which makes fastjar extract + filenames correctly (previously, some had incorrect names on extract). + Closes: #113236. + * Priorities fixed in the past (closes: #94404). + + -- Matthias Klose Sun, 14 Oct 2001 13:19:43 +0200 + +gcc-3.0 (1:3.0.2ds2-0pre010923) unstable; urgency=low + + * Bootstraps on powerpc again (closes: #112777). + + -- Matthias Klose Sun, 23 Sep 2001 01:32:11 +0200 + +gcc-3.0 (1:3.0.2ds2-0pre010922) unstable; urgency=low + + * Update to CVS sources (010922). + * Fixed upstream (closes: #111801). #105569 on hppa. + * Update hppa patch (Matt Taggart). + * Fix libstdc++-dev package description (closes: #112758). + * debian/rules.d/binary-objc.mk: Fix build error (closes: #112462). + * Make gobjc-3.0 conflict with gcc-3.0-sparc64 (closes: #111772). + + -- Matthias Klose Sat, 22 Sep 2001 09:34:49 +0200 + +gcc-3.0 (1:3.0.2ds1-0pre010908) unstable; urgency=low + + * Update to CVS sources (010908). + * Update hppa patch (Matt Taggart). + * Depend on libgc6-dev, not libgc5-dev, which got obsolete (during + the freeze ...). However adds s390 support (closes: #110189). + * debian/patches/m68k-reload.dpatch: New patch (Roman Zippel). + Fixes #89023. + * debian/patches/gcc-sparc.dpatch: New patch ("David S. Miller"). + Fixes libstdc++ testsuite failures on sparc. + + -- Matthias Klose Sat, 8 Sep 2001 14:26:20 +0200 + +gcc-3.0 (1:3.0.2ds0-0pre010826) unstable; urgency=low + + * gcc-3.0-nof: Fix symlink to gcc-3.0-base doc directory. + * debian/patches/gcj-without-rpath: New patch. + * Remove self dependency on libgcj package. + * Handle diversions for upgrades from 3.0 and 3.0.1 -> 3.0.2 + in gcc-3.0-sparc64 package. + * Build libg2c.a with -fPIC -DPIC and name the result libg2c-pic.a. + Link with this library to avoid linking with non-pic code. + Use this library when building dynamically loadable objects (python + modules, gimp plugins, ...), which need to be linked against g2c or + a library which is linked against g2c (i.e. lapack). + Packages needing '-lg2c-pic' must have a build dependency on + 'g77-3.0 (>= 1:3.0.2-0pre010826). + + -- Matthias Klose Sun, 26 Aug 2001 13:59:03 +0200 + +gcc-3.0 (1:3.0.2ds0-0pre010825) unstable; urgency=low + + * Update to CVS sources (010825). + * Add libc6-dev-sparc64 to gcc-3.0-sparc64 and to sparc build dependencies. + * Remove conflicts on egcc package (closes: #109718). + * Fix gcc-3.0-nof dependency. + * s390 patches against gcc-3.0.1 (Gerhard Tonn). + * debian/control: Require binutils (>= 2.11.90.0.27) + + -- Matthias Klose Sat, 25 Aug 2001 10:59:15 +0200 + +gcc-3.0 (1:3.0.1ds3-1) unstable; urgency=low + + * Final gcc-3.0.1 release. + * Changed upstream: default of -flimit-inline is 600 (closes: #106716). + * Add fastjar man page (submitted by "The Missing Man Pages Project", + http://www.netmeister.org/misc/m2p2i/) (closes: #103051). + * Fixed in last upload as well: #105246. + * debian/patches/cpp-memory-leak.dpatch: New patch + * Disable installation of shared libgcc on s390 (Gerhard Tonn). + + -- Matthias Klose Mon, 20 Aug 2001 20:47:13 +0200 + +gcc-3.0 (1:3.0.1ds2-0pre010811) unstable; urgency=high + + * Update to CVS sources (010811). Includes s390 support. + * Add xlibs-dev to Build-Depends (libgcj). + * Enable java for powerpc, disable java for ia64. + * Enable ObjC garbage collection for all archs, which have a libgc5-dev + package. + * New patch libstdc++-codecvt (Michael Piefel) (closes: #104614). + * Don't strip static libgcj library (work around binutils bug #107812). + * Handle diversions for upgrade 3.0 -> 3.0.1 in gcc-3.0-sparc64 package + (closes: #107569). + + -- Matthias Klose Sat, 11 Aug 2001 20:42:15 +0200 + +gcc-3.0 (1:3.0.1ds1-0pre010801) unstable; urgency=high + + * Update to CVS sources (010801). (closes: #107012). + * Remove build dependency on non-free graphviz and include pregenerated + docs (closes: #107124). + * Fixed in 3.0.1 (closes: #99307). + * Updated m68k-updates patch (Roman Zippel). + * Another fix for ia64 packaging bits (Randolph Chung). + + -- Matthias Klose Tue, 31 Jul 2001 21:52:55 +0200 + +gcc-3.0 (1:3.0.1ds0-0pre010727) unstable; urgency=high + + * Update to CVS sources (010727). + * Add epoch to source version. Change '.dsx' to 'dsx', so that + 3.1.1ds0 gt 3.1ds7 (closes: #106538). + + -- Matthias Klose Sat, 28 Jul 2001 09:56:29 +0200 + +gcc-3.0 (3.0.1.ds0-0pre010723) unstable; urgency=high + + * ia64 packaging bits (Randolph Chung) (closes: #106252). + + -- Matthias Klose Mon, 23 Jul 2001 23:02:03 +0200 + +gcc-3.0 (3.0.1.ds0-0pre010721) unstable; urgency=high + + * Update to CVS sources (010721). + - Remove patches applied upstream: libstdc++-limits.dpatch, + objc-data-references + - Updated other patches. + * Fix gij alternative (closes: #103468, #103883). + * Patch to fix bootstrap on sparc (closes: #103568). + * Corrected (closes: #105371) and updated README.Debian. + * m68k patches for sucessful bootstrap (Roman Zippel). + * Add libstdc++v3 porting hints to README.Debian and README.C++. + * m68k md fix (#105622) (Roman Zippel). + * debian/rules2: Disable non-functional ulimit on Hurd (#105884). + * debian/control: Require binutils (>= 2.11.90.0.24) + * Java is enabled for alpha (closes: #87300). + + -- Matthias Klose Sun, 22 Jul 2001 08:24:04 +0200 + +gcc-3.0 (3.0.ds9-4) unstable; urgency=high + + * Move this version to testing ASAP. testing still has a prerelease + version with now incompatible ABI's. If sparc doesn't build, + then IMHO it's better to remove it from testing. + * debian/control.m4: Set uploaders field. Adjust description of + gcc-3.0 (binary) package (closes: #102271, #102620). + * Separate gij.1 in it's own pseudo man page (closes: #99523). + * debian/patches/java-manpages.dpatch: New patch. + * libgcj: Install unversioned gij. + + -- Matthias Klose Tue, 3 Jul 2001 07:38:08 +0200 + +gcc-3.0 (3.0.ds9-3) unstable; urgency=high + + * Reenable configuration with posix threads on i386 (lost in hurd-i386 + merge). + + -- Matthias Klose Sun, 24 Jun 2001 22:21:45 +0200 + +gcc-3.0 (3.0.ds9-2) unstable; urgency=medium + + * Move this version to testing ASAP. testing still has a prerelease + version with now incompatible ABI's. + * Add libgcc0 and libgcc300 to the build conflicts (#102041). + * debian/README.FIRST: Removed (#101534). + * Updated subreg-byte patch (doc files). + * Disable java for the Hurd, mips and mipsel (#101570). + * Patch for building on the Hurd (#101708) (Jeff Bailey ). + * Packaging fixes for the Hurd (#101711) (Jeff Bailey ). + * Include pregenerated doxygen (1.2.6) docs for libstdc++-v3 (#101557). + The current doxygen-1.2.8.1 segaults. + * C++: Enable -fuse-cxa-atexit by default (#101901). + * Correct mail address in gccbug (#101743). + * Make rules resumable after failure in binary-xxx targets (#101637). + + -- Matthias Klose Sun, 24 Jun 2001 16:04:53 +0200 + +gcc-3.0 (3.0.ds9-1) unstable; urgency=low + + * Final 3.0 release. + * Update libgcc version number (#100983, #100988, #101069, #101115, #101328). + * Updated hppa-build patch (Matt Taggart ). + * Disable java for hppa. + * Updated subreg-byte patch for sparc (Ben Collins). + + -- Matthias Klose Mon, 18 Jun 2001 18:26:04 +0200 + +gcc-3.0 (3.0.ds8-0pre010613) unstable; urgency=low + + * Update patches for recent (010613 23:13 +0200) CVS sources. + * Fix packaging bugs (#100459, #100447, #100483). + * Build-Depend on gawk, mawk doesn't work well with test_summary. + + -- Matthias Klose Wed, 13 Jun 2001 23:13:38 +0200 + +gcc-3.0 (3.0.ds7-0pre010609) unstable; urgency=low + + * Fix build dependency for the hurd (#99164). + * Update patches for recent (010609) CVS sources. + * Disable java on powerpc (link error in libjava). + * gcc-3.0-base.postinst: Don't prompt for non-interactive installs (#100110). + + -- Matthias Klose Sun, 10 Jun 2001 09:45:57 +0200 + +gcc-3.0 (3.0.ds6-0pre010526) unstable; urgency=high + + * Urgency "high" for replacing the gcc-3.0 snapshots in testing, which + now are incompatile due to the changed ABIs. + * Upstream begins tagging with "gcc-3_0_pre_2001mmdd". + * Tighten dependencies to install only binary packages derived from + one source (#98851). Tighten libc6-dev dependency to match libc6. + + -- Matthias Klose Sun, 27 May 2001 11:35:31 +0200 + +gcc-3.0 (3.0.ds6-0pre010525) unstable; urgency=low + + * ATTENTION: The ABI (exception handling) changed. No upgrade path from + earlier snapshots (you had been warned in the postinst ...) + Closing #93597, #94576, #96448, #96461. + You have to rebuild + * HELP is appreciated for scanning the Debian BTS and sending followups + to bug reports!!! + * Should we name debian gcc uploads? What about a "still seeking + g++ maintainer" upload? + * Fixed in gcc-3.0: #97030 + * Update patches for recent (010525) CVS sources. + * Make check depend on build target (fakeroot problmes). + * debian/rules.d/binary-libgcc.mk: new file, build first. + * Free memory detection on the hurd for running the testsuite. + * Update debhelper build dependency. + * libstdc++-doc: Include doxygen generated docs. + * Fix boring packaging bugs, too tired for appropriate changelogs ... + #93343, #96348, #96262, #97134, #97905, #96451, #95812, #93157 + * Fixed bugs: #87000. + + -- Matthias Klose Sat, 26 May 2001 23:10:42 +0200 + +gcc-3.0 (3.0.ds5-0pre010510) unstable; urgency=low + + * Update patches for recent (010506) CVS sources. + * New version of source, as of 2001-05-10 + * New version of gpc source, as of 2001-05-06 (disabled by default). + * Make gcc-3.0-sparc64 provide an alternative for sparc64-linux-gcc, + since it can build kernels just fine (it seems) + * Add hppa patch from Matt Taggart + * Fix objc info inclusion...now merged with gcc info + * Do not install the .la for libstdc++, since it confuses libtool linked + applications when libstdc++3-dev and libstdc++2.10-dev are both + installed (closes #97905). + * Fixed gcc-base and libgcc section/prio to match overrides + + -- Ben Collins Mon, 7 May 2001 00:08:52 +0200 + +gcc-3.0 (3.0.ds5-0pre010427) unstable; urgency=low + + * Fixed priority for fastjar from optional to extra + * New version of source, as of 2001-04-27 + * Fix description of libgcj-dev + * libffi-install: Make libffi installable + * Add libffi and libffi-dev packages. libffi is only enabled for java + targets right now. Perhaps more will be enabled later. + * Fixes to build cross compiler package (for avr) + (Hakan Ardo ). + * Better fixincludes description (#93157). + * Remove all remnants of libg++ + * Remove all hacks around libstdc++ version. Since we are strictly v3 now, + we can treat it like a normal shared lib, and not worry about all those + ABI changes. + * Remove all cruft control scripts. Note, debhelper will create scripts + that it needs to. It will do the doc link stuff and the ldconfig stuff + explicitly. + * Clean up the SONAME parsing stuff, make it a little more cleaner over + all the lib packages + * Make libffi install when built (IOW, whenever java is enabled). This + should obsolete the libffi package, which is old and broken + * Revert to normal sonames, except for ia64 (for now) + * Remove all references to dh_testversion, since they are deprecated for + Build-Depends + * Fix powerpc nof build + * Remove all references to the MULTILIB stuff, since the arches are + using specialized builds anyway (nof, softfloat). + * Added 64bit sparc64 package (gcc-3.0-sparc64, libgcc0-sparc64) + * Removed obsolete shlibs.local file + + -- Ben Collins Sun, 15 Apr 2001 21:33:15 -0400 + +gcc-3.0 (3.0.ds4-0pre010403) unstable; urgency=low + + * debian/README: Updated for gcc-3.0 + * debian/rules.patch: Added subreg-byte patch for sparc + * debian/rules.unpack: Update to current CVS for gcc tarball name + * debian/patches/subreg-byte.dpatch: sparc subreg-byte support + * debian/patches/gcc-rawhide.dpatch: Removed + debian/patches/gpc-2.95.dpatch: Removed + debian/patches/sparc32-rfi.dpatch: Removed + debian/patches/temporary.dpatch: Removed + * Moving to unstable now + * debian/patches/gcc-ppc-disable-shared-libgcc.dpatch: New patch, + disables shared libgcc for powerpc target, since it isn't compatible + with the EABI objects. + * Create $(with_shared_libgcc) var + * debian/rules.d/binary-gcc.mk: Use this new variable to determine if + the libgcc package actually has any files + + -- Ben Collins Tue, 3 Apr 2001 23:00:55 -0400 + +gcc-3.0 (3.0.ds2-0pre010223) experimental; urgency=low + + * New snapshot. Use distinct shared object names for shared libraries: + we don't know if binary API's still change until the final release. + * Versioned package names. + * debian/control.m4: New file. Add gcc-base, libgcc0, libobjc1, + libstdc++-doc, libgcj1, libgcj1-dev, fastjar, fixincludes packages. + Remove gcc-docs package. + * debian/gcov.1: Remove. + * debian/*: Remove 2.95.x support. Prepare for 3.0. + * debian/patches: Remove 2.95.x patches. + * Changed source package name. It's not allowed anymore to overwrite + source packages with different content. Introducing a 'debian source + element' (.ds), which is stripped again from the version number + for the binary packages. + * Fixed bugs and added functionality: + #26436, #27878, #33786, #34876, #35477, #42662, #46181, #42989, + #47981, #48530, #50529, #51227, #51456, #51651, #52382, #53698, + #55291, #55967, #56867, #58219, #59005, #59232, #59776, #64628, + #65687, #67631, #68632, #68963, #68987, #69530, #72933, #75120, + #75759, #76645, #76827, #83221, #87540 + * libgcj fixes: 42894, #51266, #68560, #71187, #79984 + + -- Matthias Klose Sat, 24 Feb 2001 13:41:11 +0100 + +gcc-2.95 (2.95.3-2.001222) experimental; urgency=low + + * New upstream version 2.95.3 experimental (CVS 20001222). + * debian/control.in: Versioned package names, removal of snapshot logic. + Remove fake gcc-docs package. + * Reserve -1 release numbers for woody. + * Updated to gpc-20001218. + + -- Matthias Klose Fri, 22 Dec 2000 19:53:03 +0100 + +gcc (2.95.2-20) unstable; urgency=low + + * Apply patch from gcc-2_95-branch; remove ulimit for make check. + + -- Matthias Klose Sun, 10 Dec 2000 17:01:13 +0100 + +gcc (2.95.2-19) unstable; urgency=low + + * Added testsuite-20001207 from current snapshots. We'll need results + for 2.95.2 to make sure there are no regressions against that release. + Dear build daemons and porters to other architectures, please send an + email to gcc-testresults@gcc.gnu.org. + You can do this by running "debian/rules mail-summary". + * Updated to gpc-20001206. + * Added S/390 patch prepared by Chu-yeon Park (#78983). + * debian/patches/libio.dpatch: Fix iostream doc (fixes #77647). + * debian/patches/gcc-doc.dpatch: Update URL (fixes #77542). + * debian/patches/gcc-reload1.dpatch Patch from the gcc-bug list which + fixes a problem in "long long" on i[345]86 (i686 was not affected). + + -- Matthias Klose Sat, 9 Dec 2000 12:30:32 +0100 + +gcc (2.95.2-18) unstable; urgency=low + + * debian/control.in: Fix syntax errors (fixes #76146, #76458). + Disable gpc on the hurd by request (#75686). + * debian/patches/arm-various.dpatch: Patches from Philip Blundell + for ARM arch (fixes #75801). + * debian/patches/gcc-alpha-mi-thunk.dpatch: Patches from Chris Chimelis + for alpha arch. + * debian/patches/g77-docs.dpatch: Adjust g77 docs (fixes #72594). + * Update gpc to gpc-20001118. + * Reenable gpc for alpha. + * debian/README.C++: Merge debian/README.libstdc++ and C++ FAQ information + provided by Matt Zimmermann. + * Build gcj only on architectures, where libgcj-2.95.1 can be built as well. + Probably needs some adjustments ... + * Conditionalize for chill, fortran, java, objc and chill. + + * NOT APPLIED: + debian/patches/libstdc++-bastring.dpatch: Apply fix (fixes #75759). + + -- Matthias Klose Sun, 19 Nov 2000 10:40:41 +0100 + +gcc (2.95.2-17) unstable; urgency=low + + * Disable gpc for alpha. + * Include gpc-cpp in gpc package (fixes #74492). + * Don't build gcc-docs compatibility package anymore. + + -- Matthias Klose Wed, 11 Oct 2000 06:16:53 +0200 + +gcc (2.95.2-16) unstable; urgency=low + + * Applied the emdebian/cross compiler patch and documentation + (Frank Smith ). + * Applied patch for avr target (Hakan Ardo ). + * debian/control.in: Add awk to Build-Depends. + Tighten libc6-dev dependency for libstdc++-dev (fixes #73031, + #72531, #72534). + * Disable libobjc_gc for m68k again (fixes #74380). + * debian/patches/arm-namespace.dpatch: Apply patch from Philip + Blundell to fix name space pollution on arm + (fixes #70937). + * Fix more warnings in STL headers (fixes #69352, #71943). + + -- Matthias Klose Mon, 9 Oct 2000 21:51:41 +0200 + +gcc (2.95.2-15) unstable; urgency=low + + * debian/control.in: Add libgc5-dev to build depends (fixes #67015). + * debian/rules.def: Build GC enabled ObjC runtime for sparc. + * Bug #58741 fixed (in some version since 2.95.2-5). + * debian/control.in: Recommend librx1g-dev, libgmp2-dev, libncurses5-dev + (unit dependencies). + * Patches from Marcus Brinkmann for the hurd (fixes #67763): + - debian/rules.defs: Disable objc_gc on hurd-i386. + Disable libg++ on GNU systems. + - debian/rules2: Set correct names of libstdc++/libg++ + libraries on GNU systems. + Write out correct shlibs and shlibs.local file content. + - Keep _G_config.h for the Hurd. + * Apply patch for ObjC linker warnings. + * Don't apply gcj backport patch for sparc. + * Apply libio compatability patch + * debian/glibcver.sh: generate appropriate version for glibc + * debian/rules.conf: for everything after glibc 2.1, we always append + "-glibc$(ver)" to the C++ libs for linux. + * Back down gpc to -13 version (-14 wont compile on anything but i386 + and m68k becuase of gpc). + * Remove extraneous and obsolete sparc64 patches/files from debian/* + + -- Ben Collins Thu, 21 Sep 2000 08:08:35 -0400 + +gcc-snapshot (20000901-2.2) experimental; urgency=low + + * New snapshot. + * debian/rules2: Move tradcpp0 to cpp package. + + -- Matthias Klose Sat, 2 Sep 2000 01:14:28 +0200 + +gcc-snapshot (20000802-2.1) experimental; urgency=low + + * New snapshot. + * debian/rules2: Fixes. tradcpp0 is in gcc package, not cpp. + + -- Matthias Klose Thu, 3 Aug 2000 07:40:05 +0200 + +gcc-snapshot (20000720-2) experimental; urgency=low + + * New snapshot. + * Enable libstdc++-v3. + * debian/rules2: Don't use -D for /usr/bin/install. + + -- Matthias Klose Thu, 20 Jul 2000 22:33:37 +0200 + +gcc (2.95.2-14) unstable; urgency=low + + * Update gpc patch. + + -- Matthias Klose Wed, 5 Jul 2000 20:51:16 +0200 + +gcc (2.95.2-13) frozen unstable; urgency=low + + * Update debian/README: document how to compile 2.0.xx kernels; don't + register gcc272 as an alternative for gcc (closes #62419). + Clarify compiler setup (closes #65548). + * debian/control.in: Make libstdc++-dev depend on current version of g++. + * Undo CVS update from release -8 (problems on alpha, #55263). + + -- Matthias Klose Mon, 19 Jun 2000 23:06:48 +0200 + +gcc (2.95.2-12) frozen unstable; urgency=low + + * debian/gpc.postinst: Correct typo introduced with -11 (fixes #64193). + * debian/patches/gcc-rs600.dpatch: ppc codegen fix (fixes #63933). + + -- Matthias Klose Sun, 21 May 2000 15:56:05 +0200 + +gcc (2.95.2-11) frozen unstable; urgency=medium + + * Upload to unstable again (fixes critical #63784). + * Fix doc-base files (fixes important #63810). + * gpc wasn't built in -10 (fixes #63977). + * Make /usr/bin/pc an alternative (fixes #63888). + * Add SYSCALLS.c.X to gcc package. + + -- Matthias Klose Sun, 14 May 2000 22:17:44 +0200 + +gcc (2.95.2-10) frozen; urgency=low + + * debian/control.in: make gcc conflict on any version of egcc + (slink to potato upgrade problem, fixes grave #62084). + * Build protoize programs, separate out in new package (fixes #59436, + #62911). + * Create dummy gcc-docs package for smooth update from slink (fixes #62537). + * Add doc-base support for all -doc packages (fixes #63380). + + -- Matthias Klose Mon, 1 May 2000 22:24:28 +0200 + +gcc (2.95.2-9) frozen unstable; urgency=low + + * Disable the sparc-bi-arch.dpatch (patch from Ben Collins, built + for sparc as NMU 8.1) (fixes critical #61529 and #61511). + "Seems that when you compile gcc 2.95.x for sparc64-linux and compile + sparc32 programs, the code is not the same as sparc-linux compile for + sparc32 (this is a bug, and is fixed in gcc 2.96 CVS)." + * debian/patches/gcj-vs-iconv.dpatch: Option '--encoding' for + encoding of input files. Patch from Tom Tromey + backported to 2.95.2 (fixes #42895). + Compile a Latin-1 encoded file with `gcj --encoding=Latin1 ...'. + * debian/control.in: gcc, g++ and gobjc suggest their corresponding + task packages (fixes #59623). + + -- Matthias Klose Sat, 8 Apr 2000 20:19:15 +0200 + +gcc (2.95.2-8) frozen unstable; urgency=low + + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000313. + * debian/rules2: configure with --enable-java-gc=no for sparc. Fixes + gcj side of #60535. + * debian/rules.patch: Disable gcc-emit-rtl patch for all archs but + alpha. Disable g++-is-tree patch ("just for 2.95.1"). + * debian/README: Update for gcc-2.95. + + -- Matthias Klose Mon, 27 Mar 2000 00:03:16 +0200 + +gcc (2.95.2-7) frozen unstable; urgency=low + + * debian/patches/gcc-empty-struct-init.dpatch; Apply patch from + http://gcc.gnu.org/ml/gcc-patches/2000-02/msg00637.html. Fixes + compilation of 2.3.4x kernels. + * debian/patches/gcc-emit-rtl.dpatch: Apply patch from David Huggins-Daines + (backport from 2.96 CVS to fix #55263). + * debian/patches/gcc-pointer-arith.dpatch: Apply patch from Jim Kingdon + (backport from 2.96 CVS to fix #54951). + + -- Matthias Klose Thu, 2 Mar 2000 23:16:43 +0100 + +gcc (2.95.2-6) frozen unstable; urgency=low + + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000220. + * Remove dangling symlink probably left over from libstdc++2.9 + package (fixes #53661). + * debian/patches/gcc-alpha-complex-float.dpatch: Fixed patch by + David Huggins-Daines (fixes #58486). + * debian/g++.{postinst,prerm}: Remove outdated g++FAQ registration + (fixes #58253). + * debian/control.in: gcc-doc replaces gcc-docs (fixes #58108). + * debian/rules2: Include some fixed headers (asm, bits, linux, ...). + * debian/patches/{gcc-alpha-ev5-fix,libstdc++-valarray}.dpatch: Remove. + Applied upstream. + * debian/patches/libstdc++-bastring.dpatch: Add patch from + sicard@bigruth.solsoft.fr (fixes #56715). + + -- Matthias Klose Sun, 20 Feb 2000 15:08:13 +0100 + +gcc (2.95.2-5) frozen unstable; urgency=low + + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000116. + * Add more build dependencies (fixes #53204). + * debian/patches/gcc-alpha-complex-float.dpatch: Patch from + Joel Klecker to compile glibc correctly on alpha. + "Should fix the g77 problems too." + * debian/patches/{libio,libstdc++-wall2}.dpatch. Remove patches + applied upstream. + + -- Matthias Klose Sun, 16 Jan 2000 19:16:54 +0100 + +gcc (2.95.2-4) unstable; urgency=low + + * debian/patches/libio.dpatch: Patch from Martin v. Loewis. + (fixes: #35628). + * debian/patches/libstdc++-deque.dpatch: Patch from Martin v. Loewis. + (fixes: #52689). + * debian/control.in: Updated Build-Depends, removed outdated README.build. + Fixes #51246. + * Tighten dependencies to cpp (>= 2.95.2-4) (closes: #50294). + * debian/rules.patch: Really do not apply patches/gcj-backport.dpatch. + Fixes #51636. + * Apply updated sparc-bi-arch.dpatch from Ben Collins. + * libstdc++: Define wstring type, if __ENABLE_WSTRING is defined. Request + from the author of the War FTP Daemon for Linux ("Jarle Aase" + ). + * debain/g++.preinst: Remove dangling sysmlinks (fixes #52359). + + -- Matthias Klose Sun, 19 Dec 1999 21:53:48 +0100 + +gcc (2.95.2-3) unstable; urgency=low + + * debian/rules2: Don't install $(gcc_lib_dir)/include/asm; these are + headers fixed for glibc-1.x (closes: #49434). + * debian/patches/cpp-dos-newlines.dpatch: Keep CR's without + following LF (closes: #49186). + * Bug #37358 (internal compiler errors when building vdk_0.6.0-5) + fixed in gcc-2.95.? (closes: #37358). + * Apply patch gcc-alpha-ev5-fix from Richard Henderson + (should fix #48527 and #46963). + * debian/README.Bugs: Documented non bug #44554. + * Applied patch from Alexandre Oliva to fix gpc boostrap on alpha. + Reenabled gpc on all architectures. + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 19991108. + * Explicitely generate postinst/prerm chunks for usr/doc transition. + debhelper currently doesn't handle generation for packages with + symlinked directories. + * debian/patches/libstdc++-wall3.dpatch: Fix warnings in stl_deque.h + and stl_rope.h (closes: #46444, #46720). + * debian/patches/gcj-backport.dpatch: Add file, don't apply (yet). + + -- Matthias Klose Wed, 10 Nov 1999 18:58:45 +0100 + +gcc (2.95.2-2) unstable; urgency=low + + * New gpc-19991030 snapshot. + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 19991103. + * Reintegrated sparc patches (bcollins@debian.org), which were lost + in 2.95.2-1. + * debian/rules2: Only install $(gcc_lib_dir)/include/asm, when existing. + * debian/patches/gpc-2.95.{dpatch,diff}: updated patch to drop + initialization in stor-layout.c. + * debian/NEWS.gcc: Updated for gcc-2.95.2. + * debian/bugs/bug-...: Removed testcases for fixed bugs. + * debian/patches/...dpatch: Removed patches applied upstream. + * debian/{rules2,g++.postinst,g++.prerm}: Handle c++ alternative. + * debian/changelog: Merged gcc272, egcs and snapshot changelogs. + + -- Matthias Klose Tue, 2 Nov 1999 23:09:23 +0200 + +gcc (2.95.2-1.1) unstable; urgency=low + + * Most of the powerpc patches have been applied upstream. Remove all + but ppc-ice, ppc-andrew-dwarf-eh, and ppc-descriptions. + * mulilib-install.dpatch was definitely a bad idea. Fix it properly + by using install -D. + * Also, don't make directories before installing any more. Simplifies + rules a (tiny) bit. + * Do not build with LDFLAGS=-s. Everything gets stripped out anyway by + dh_strip -a -X_debug; so leave the binaries in the build tree with + debugging symbols for simplified debugging of the packages. + + -- Daniel Jacobowitz Sat, 30 Oct 1999 12:40:12 -0400 + +gcc (2.95.2-1) unstable; urgency=low + + * gcc-2.95.2 release (taken from the CVS archive). -fstrict-aliasing + is disabled upstream. + + -- Matthias Klose Mon, 25 Oct 1999 10:26:19 +0200 + +gcc (2.95.2-0pre4) unstable; urgency=low + + * Updated to cvs updates of the gcc-2_95-branch until 19991021. + * Updated gpc to gpc-19991018 snapshot (closes: #33037, #47453). + Enable gpc for all architectures ... + * Document gcc exit codes (closes: #43863). + * According to the bug submitter (Sergey V Kovalyov ) + the original source of these CERN librarties is outdated now. The latest + version of cernlibs compiles and works fine with slink (closes #31546). + * According to the bug submitter (Gergely Madarasz ), + the problem triggered on i386 cannot be reproduced with the current + jade and php3 versions anymore (closes: #35215). + * Replace corrupted m68k-pic.dpatch (from Roman Hodek and Andreas Schwab + and apply to + all architectures (closes: #48011). + * According to the bug submitter (Herbert Xu ) + this bug "probably has been fixed". Setting it to severity "fixed" + (fixes: #39616), will close it later ... + * debian/README.Bugs: Document throwing C++ exceptions "through" C + libraries (closes: #22769). + + -- Matthias Klose Fri, 22 Oct 1999 20:33:00 +0200 + +gcc (2.95.2-0pre3) unstable; urgency=low + + * Updated to cvs updates of the gcc-2_95-branch until 19991019. + * Apply NMU patches (closes: #46217). + * debian/control.in: Fix egcs64 conflict-dependency for sparc + architecture (closes: #47088). + * debian/rules2: dbg-packages share doc dir with lib packages + (closes #45067). + * debian/patches/gcj-debian-policy.dpatch: Patch from Stephane + Bortzmeyer to conform to Debian policy (closes: #44463). + * debian/bugs/bug-*: Added test cases for new bug reports. + * debian/patches/libstdc++-bastring.dpatch: Patch by Richard Kettlewell + (closes #46550). + * debian/rules.patch: Apply libstdc++-wall2 patch (closes #46609). + * debian/README: Fix typo (closes: #45253). + * debian/control.in: Remove primary/secondary distinction; + dbg-packages don't provide their normal counterparts (closes #45206). + * debian/rules.patch: gcc-combine patch applied upstream. + * debian/rules2: Only use mail if with_check is set (off by default). + * debian/rules.conf: Tighten binutils dependency to 2.9.5.0.12. + + -- Matthias Klose Tue, 19 Oct 1999 20:33:00 +0200 + +gcc (2.95.2-0pre2.0.2) unstable; urgency=HIGH (for m68k) + + * Binary-only NMU for m68k as quick fix for another bug; the patch + is in CVS already, too. + * Applied another patch by Andreas Schwab to fix %a5 restauration in + some cases. + + -- Roman Hodek Thu, 30 Sep 1999 16:09:15 +0200 + +gcc (2.95.2-0pre2.0.1) unstable; urgency=HIGH (for m68k) + + * Binary-only NMU for m68k as quick fix for serious bugs; the patches + are already checked into gcc CVS and should be in the next official + version, too. + * Applied two patches by Andreas Schwab to fix -fpic and loop optimization. + + -- Roman Hodek Mon, 27 Sep 1999 15:32:49 +0200 + +gcc (2.95.2-0pre2) unstable; urgency=low + + * Fixed in 2.95.2 (closes: #43478). + * Previous version had Pascal examples missing in doc directory. + + -- Matthias Klose Wed, 8 Sep 1999 22:18:17 +0200 + +gcc (2.95.2-0pre1) unstable; urgency=low + + * Updated to cvs updates of the gcc-2_95-branch until 19990828. + * Apply work around memory corruption (just for 2.95.1) by + Daniel Jacobowitz . + * debian/patches/libstdc++-wall2.dpatch: Patch from Franck Sicard + to fix some warnings (closes: #44670). + * debian/patches/libstdc++-valarray.dpatch: Patch from Hideaki Fujitani + to fix a bug in valarray_array.h. + * Applied NMU from Jim Pick minus the jump.c and fold-const.c patches + already in the gcc-2_95-branch (closes: #44690). + * Conform to debian-java policy (closes: #44463). + * Move docs to /usr/share/doc (closes: #44782). + * Remove debian/patches/gcc-align.dpatch applied upstream. + * debian/*.postinst: Call install-info only, when configuring. + * debian/*.{postinst,prerm}: Add #DEBHELPER# comments to handle + /usr/doc -> /usr/share/doc transition. + + -- Matthias Klose Wed, 8 Sep 1999 22:18:17 +0200 + +gcc (2.95.1-2.1) unstable; urgency=low + + * Non-maintainer upload. + * ARM platform no longer needs library-prefix patch. + * Updated patches from Philip Blundell. + + -- Jim Pick Wed, 8 Sep 1999 20:14:07 -0700 + +gcc (2.95.1-2) unstable; urgency=low + + * debian/gcc.{postinst,prerm}: gcc provides an alternative for + sparc64-linux-gcc. + * Applied patch from Ben Collins to enable bi-architecture (32/64) + support for sparc. + * Rebuild debian/control and debian/rules.parameters after unpacking. + * debian/rules2: binary-indep. Conditionalize on with_pascal. + + -- Matthias Klose Sat, 4 Sep 1999 13:47:30 +0200 + +gcc (2.95.1-1) unstable; urgency=low + + * Updated to release gcc-2.95.1 and cvs updates of the gcc-2_95-branch + until 19990828. + * debian/README.gcc: Updated NEWS file to include 2.95 and 2.95.1 news. + * debian/README.java: New file. + * debian/rules.defs: Disabled gpc for alpha, arm. Disabled ObjC-GC + for alpha. + * debian/rules [clean]: Remove debian/rules.parameters. + * debian/rules2 [binary-arch]: Call dh_shlibdeps with LD_LIBRARY_PATH set + to installation dir of libstdc++. Why isn't this the default? + * debian/control.in: *-dev packages do not longer conflict with + libg++272-dev package. + * Apply http://egcs.cygnus.com/ml/gcc-patches/1999-08/msg00599.html. + * Only define BAD_THROW_ALLOC, when using exceptions (fixes #43462). + * For ObjC (when configured with GC) recommend libgc4-dev, not libgc4. + * New version of 68060 build patch. + * debian/rules.conf: For m68k, depend on binutils version 2.9.1. + + -- Matthias Klose Sat, 28 Aug 1999 18:16:31 +0200 + +gcc (2.95.1-0pre2) unstable; urgency=medium + + * gpc is back again (fixes grave #43022). + * debian/patches/gpc-updates.dpatch: Patches sent to upstream authors. + * Work around the fatal dependtry assertion failure bug in dpkg (hint + from "Antti-Juhani Kaijanaho" , fixes important #43072). + + -- Matthias Klose Mon, 16 Aug 1999 19:34:14 +0200 + +gcc (2.95.1-0pre1) unstable; urgency=low + + * Updated to cvs 19990815 gcc-2_95-branch; included install docs and + FAQ from 2.95 release; upload source package as well. + * Source package contains tarballs only (gcc, libg++, installdocs). + * debian/rules: Splitted into debian/rules{,.unpack,.patch,.conf,2}. + * debian/gcc.postinst: s/any key/RETURN; warn only when upgrading from + pre 2.95 version; reference /usr/doc, not /usr/share/doc. + * Checked syntax for attributes of functions; checked for #35068; + checked for bad gmon.out files (at least with libc6 2.1.2-0pre5 and + binutils 2.9.1.0.25-2 the problem doesn't show up anymore). + * debian/patches/cpp-macro-doc.dpatch: Document macro varargs in cpp.texi. + * gcc is primary compiler for all platforms but m68k. Setting + severity of #22513 to fixed. + * debian/patches/gcc-default-arch.dpatch: New patch to enable generation + of i386 instruction as default (fixes #42743). + * debian/rules: Removed outdated gcc NEWS file (fixes #42742). + * debian/patches/libstdc++-out-of-mem.dpatch: Throw exception instead + of aborting when out of memory (fixes #42622). + * debian/patches/cpp-dos-newlines.dpatch: Handle ibackslashes after + DOS newlines (fixes #29240). + * Fixed in gcc-2.95.1: #43001. + * Bugs closed in this version: + Closes: #11525, #12253, #22513, #29240, #35068, #36182, #42584, #42585, + #42602, #42622, #42742 #42743, #43001, #43002. + + -- Matthias Klose Sun, 15 Aug 1999 10:31:50 +0200 + +gcc (2.95-3) unstable; urgency=high + + * Provide /lib/cpp again (fixes important bug #42524). + * Updated to cvs 19990805 gcc-2_95-branch. + * Build with the default scheduler. + * Apply install-multilib patch from Dan Jacobowitz. + * Apply revised cpp-A- patch from Dan Jacobowitz. + + -- Matthias Klose Fri, 6 Aug 1999 07:25:19 +0200 + +gcc (2.95-2) unstable; urgency=low + + * Remove /lib/cpp. This driver uses files from /usr/lib/gcc-lib anyway. + * The following bugs are fixed (compared to egcs-1.1.2). + Closes: #4429, #20889, #21122, #26369, #28417, #28261, #31416, #35261, + #35900, #35906, #38246, #38872, #39098, #39526, #40659, #40991, #41117, + #41290, #41302, #41313. + * The following by Joel Klecker: + - Adopt dpkg-architecture variables. + - Go back to SHELL = bash -e or it breaks where /bin/sh is not bash. + - Disabled the testsuite, it is not included in the gcc 2.95 release. + + -- Matthias Klose Sat, 31 Jul 1999 18:00:42 +0200 + +gcc (2.95-1) unstable; urgency=low + + * Update for official gcc-2.95 release. + * Built without gpc. + * debian/rules: Remove g++FAQ from rules, which is outdated. + For ix86, build for i386, not i486. + * Apply patch from Jim Pick for building multilib package on arm. + + -- Matthias Klose Sat, 31 Jul 1999 16:38:21 +0200 + +gcc (2.95-0pre10) unstable; urgency=low + + * Use ../builddir-gcc-$(VER) by default instead of ./builddir; upstream + strongly advises configuring outside of the source tree, and it makes + some things much easier. + * Add patch to prevent @local branches to weak symbols on powerpc (fixes + apt compilation). + * Add patch to make cpp -A- work as expected. + * Renamed debian/patches/ppc-library-prefix.dpatch to library-prefix.dpatch; + apply on all architectures. + * debian/control.in: Remove snapshot dependencies. + * debian/*.postinst: Reflect use of /usr/share/{info,man}. + + -- Daniel Jacobowitz Thu, 22 Jul 1999 19:27:12 -0400 + +gcc (2.95-0pre9) unstable; urgency=low + + * The following bugs are fixed (compared to egcs-1.1.2): #4429, #20889, + #21122, #26369, #28417, #28261, #35261, #38246, #38872, #39526, #40659, + #40991, #41117, #41290. + * Updated to CVS gcc-19990718 snapshot. + * debian/control.in: Removed references to egcs in descriptions. + Changed gcj's Recommends libgcj-dev to Depends. + * debian/rules: Apply ppc-library-prefix for alpha as well. + * debian/patches/arm-config.dpatch: Updated patch sent by Jim Pick. + + -- Matthias Klose Sun, 18 Jul 1999 12:21:07 +0200 + +gcc (2.95-0pre8) unstable; urgency=low + + * Updated CVS. + * debian/copyright: s%doc/copyright%share/common-licenses% + * debian/README.Bugs: s/egcs.cygnus.com/gcc.gnu.org/ s/egcs-bugs/gcc-bugs/ + * debian/patches/reporting.dpatch: Remake diff for current sources. + * debian/libstdc++-dev.postinst: It's /usr/share/info/iostream.info. + * debian/rules: Current dejagnu snapshot reports a framework version + of 1.3.1. + + -- Joel Klecker Sun, 18 Jul 1999 02:09:57 -0700 + +gcc-snapshot (19990714-0pre6) experimental; urgency=low + + * Updated to CVS gcc-19990714 snapshot. + * Applied ARM patch (#40515). + * Converted DOS style linefeeds in debian/patches/ppc-* files. + * debian/rules: Reflect change in gcc/version.c; use sh -e as shell: + for some obscure reason, bash -e doesn't work. + * Reflect version change for libstdc++ (2.10). Remove libg++-name + patch; libg++ now has version 2.8.1.3. Removed libc version from + the package name. + + -- Matthias Klose Wed, 14 Jul 1999 18:43:57 +0200 + +gcc-snapshot (19990625-0pre5.1) experimental; urgency=low + + * Non-maintainer upload. + * Added ARM specific patch. + + -- Jim Pick Tue, 29 Jun 1999 22:36:08 -0700 + +gcc-snapshot (19990625-0pre5) experimental; urgency=low + + * Updated to CVS gcc-19990625 snapshot. + + -- Matthias Klose Fri, 25 Jun 1999 16:11:53 +0200 + +gcc-snapshot (19990609-0pre4.1) experimental; urgency=low + + * Added and re-added a few last PPC patches. + + -- Daniel Jacobowitz Sat, 12 Jun 1999 16:48:01 -0500 + +gcc-snapshot (19990609-0pre4) experimental; urgency=low + + * Updated to CVS egcs-19990611 snapshot. + + -- Matthias Klose Fri, 11 Jun 1999 10:20:09 +0200 + +gcc-snapshot (19990609-0pre3) experimental; urgency=low + + * CVS gcc-19990609 snapshot. + * New gpc-19990607 snapshot. + + -- Matthias Klose Wed, 9 Jun 1999 19:40:44 +0200 + +gcc-snapshot (19990524-0pre1) experimental; urgency=low + + * egcs-19990524 snapshot. + * First snapshot of the gcc-2_95-branch. egcs-1.2 is renamed to gcc-2.95, + which is now the "official" successor to gcc-2.8.1. The full version + name is: gcc-2.95 19990521 (prerelease). + * debian/control.in: Changed maintainers to `Debian GCC maintainers'. + * Moved all version numbers to epoch 1. + * debian/rules: Major changes. The support for secondary compilers + was already removed for the egcs-1.2 snapshots. Many fixes by + Joel Klecker . + - Send mail to Debian maintainers for successful builds. + - Fix VER and VERNO sed expressions. + - Replace remaining GNUARCH occurrences. + * New gpc snapshot (but don't build). + * debian/patches/valarray.dpatch: Backport from libstdc++-v3. + * debian/gcc-doc.*: Info is now gcc.info* (Joel Klecker ). + * Use cpp driver provided by the package. + * New script c89 (fixes #28261). + + -- Matthias Klose Sat, 22 May 1999 16:10:36 +0200 + +egcs (1.1.2-2) unstable; urgency=low + + * Integrate NMU's for arm and sparc (fixes #37582, #36857). + * Apply patch for the Hurd (fixes #37753). + * Describe open bugs in TODO.Debian. Please have a look if you can help. + * Update README / math functions section (fixes #35906). + * Done by J.H.M. Dassen (Ray) : + - At Richard Braakman's request, made -dbg packages for libstdc++ + and libg++. + - Provide egcc(1) (fixes lintian error). + + -- Matthias Klose Sun, 16 May 1999 14:30:56 +0200 + +egcs-snapshot (19990502-1) experimental; urgency=low + + * New snapshot. + + -- Matthias Klose Thu, 6 May 1999 11:51:02 +0200 + +egcs-snapshot (19990418-2) experimental; urgency=low + + * Merged Rays changes to build debug packages. + + -- Matthias Klose Wed, 21 Apr 1999 16:54:56 +0200 + +egcs-snapshot (19990418-1) experimental; urgency=low + + * New snapshot. + * Disable cpplib. + + -- Matthias Klose Mon, 19 Apr 1999 11:32:19 +0200 + +egcs (1.1.2-1.2) unstable; urgency=low + + * NMU for arm + * Added arm-optimizer.dpatch with optimizer workaround for ARM + + -- Jim Pick Mon, 19 Apr 1999 06:17:13 -0700 + +egcs (1.1.2-1.1) unstable; urgency=low + + * NMU for sparc + * Included dpatch to modify the references to gcc/crtstuff.c so that + __register_frame_info is not a weak reference. This allows potato to + remain binary compatible with slink, while still retaining compatibility + with other sparc/egcs1.1.2 distributions. Diff in .dpatch format has + been sent to the maintainer with a note it may not be needed for 1.1.3. + + -- Ben Collins Tue, 27 Apr 1999 10:15:03 -0600 + +egcs (1.1.2-1) unstable; urgency=low + + * Final egcs-1.1.2 release built for potato as primary compiler + for all architectures except m68k. + + -- J.H.M. Dassen (Ray) Thu, 8 Apr 1999 13:14:29 +0200 + +egcs-snapshot (19990321-1) experimental; urgency=low + + * New snapshot. + * Disable gpc. + * debian/rules: Simplified (no secondary compiler, bumped all versions + to same epoch, libapi patch is included upstream). + * Separated out cpp documentation to cpp-doc package. + * Fixed in this version: #28417. + + -- Matthias Klose Tue, 23 Mar 1999 02:11:18 +0100 + +egcs (1.1.2-0slink2) stable; urgency=low + + * Applied H.J.Lu's egcs-19990315.linux patch. + * Install faq.html and egcs-1.1.2 announcment. + + -- Matthias Klose Tue, 23 Mar 1999 01:14:54 +0100 + +egcs (1.1.2-0slink1) stable; urgency=low + + * Final egcs-1.1.2 release; compiled with glibc-2.0 for slink on i386. + * debian/control.in: gcc provides egcc, when FIRST_PRIMARY defined. + * Fixes #30767, #32278, #34252, #34352. + * Don't build the libstdc++.so.2.9 library on architectures, which have + switched to glibc-2.1. + + -- Matthias Klose Wed, 17 Mar 1999 12:55:59 +0100 + +egcs (1.1.1.63-2.2) unstable; urgency=low + + * Non-maintainer upload. + * Incorporate patch from Joel Klecker to fix snapshot packages + by moving/removing the application of libapi. + * Disable the new libstdc++-dev-config and the postinst message in + glibc 2.1 versions. + + -- Daniel Jacobowitz Mon, 12 Mar 1999 14:16:02 -0500 + +egcs (1.1.1.63-2.1) unstable; urgency=low + + * Non-maintainer upload. + * Compile with glibc 2.1 release version. + * New upstream version egcs-1.1.2 pre3. + * Miscellaneous rules updates (see changelog.snapshot). + * New set of powerpc-related patches from Franz Sirl, + . + * Disable libgcc.dpatch (new solution implemented upstream). Remove it. + * Also pass $target to config.if. + * Enable Dwarf2 EH for powerpc. Bump the C++ binary version. No + loss in -backwards- compatibility as far as I can tell, so add a + compatibility symlink, and add to shlibs file. + * Add --no-backup-if-mismatch to the debian/patches/*.dpatch files, + to prevent bogus .orig's in diffs. + * Merged with (unreleased) 1.1.1.62-1 and 1.1.1.63-{1,2} packages from + Matthias Klose . + * Stop adding a backwards compatibility link for egcs-nof on powerpc. + To my knowledge, nothing uses it. Do add the libstdc++ API change + link, though. + + -- Daniel Jacobowitz Mon, 8 Mar 1999 14:24:01 -0500 + +egcs (1.1.1.63-2) stable; urgency=low + + * Provide a libstdc++ with a shared object name, which is compatible + to other distributions. Documented the change in README.Debian, + the libstdc++-2.9.postinst and the libstdc++-dev-config script. + + -- Matthias Klose Fri, 12 Mar 1999 00:36:20 +0100 + +egcs (1.1.1.63-1.1) unstable; urgency=low + + * Non-Maintainer release. + * Build against glibc 2.1. + * Make egcs the primary compiler on i386. + * Also confilct with egcc (<< FIRST_PRIMARY) + if FIRST_PRIMARY is defined. + (this tells dpkg that gcc completely obsoletes egcc) + * Remove hjl-12 patch again, HJL says it should not be + necessary with egcs 1.1.2. + (as per forwarded reply from Christopher Chimelis) + * Apply libapi patch in clean target before regenerating debian/control + and remove the patch afterward. Otherwise, the libstdc++ and libg++ + package names are generated wrong on a glibc 2.1 system. + + -- Joel Klecker Tue, 9 Mar 1999 15:31:02 -0800 + +egcs (1.1.1.63-1) unstable; urgency=low + + * New upstream version egcs-1.1.1-pre3. + * Applied improved libstdc++ warning patch from Rob Browning. + + -- Matthias Klose Tue, 9 Mar 1999 16:14:07 +0100 + +egcs (1.1.1.62-1) unstable; urgency=low + + * New upstream version egcs-1.1.1-pre2. + * New upstream version libg++-2.8.1.3. + * Readded ARM support + * Readded hjl-12 per request from Christopher C Chimelis + + + -- Matthias Klose Fri, 26 Feb 1999 09:54:01 +0100 + +egcs-snapshot (19990224-0.1) experimental; urgency=low + + * New snapshot. + * Add the ability to disable CPPLIB by setting CPPLIB=no in + the environment. + * Disable gpc for powerpc; I spent a long time getting it to + make correctly, and then it goes and ICEs. + + -- Daniel Jacobowitz Tue, 24 Feb 1999 23:34:12 -0500 + +egcs (1.1.1.61-1) unstable; urgency=low + + * New upstream version egcs-1.1.1-pre1. + * debian/control.in: Applied patch from bug report #32987. + * Split up H.J.Lu's hjl-19990115-linux patch into several small + chunks: libapi, arm-mips, libgcc, hjl-other. The changelog.Linux + aren't included in the separate chunks. Please refer to the + unmodified hjl-19990115-linux patch file in the egcs source pkg. + * Apply warning patch to fix the annoying spew you get if you try to + use ropes or deques with -Wall (which makes -Wall mostly useless for + spotting errors in your own code). Fixes #32996. + * debian/rules: Unapply patches in the exact reverse order they were + applied. + + -- Matthias Klose Sat, 20 Feb 1999 22:06:21 +0100 + +egcs (1.1.1-5) frozen unstable; urgency=medium + + * Move libgcc.map file to g++ package, where gcc is the secondary + compiler (fixes #32329, #32605, #32631). + * Prepare to rename libstdc++2.9 package for glibc-2.1 (fixes #32148). + * Apply NMU patch for arm architecure (fixes #32367). + * Don't apply hjl-12 patch for alpha architectures (requested by the + alpha developers, Christopher C Chimelis ). + * Call makeinfo with --no-validate to fix obscure build failure on alpha. + * Build gpc info files in doc subdirectory. + * Remove c++filt diversion (C++ name demangling patch is now in binutils, + fixes #30820 and #32502). + + -- Matthias Klose Sun, 31 Jan 1999 23:19:35 +0100 + +egcs (1.1.1-4.1) unstable; urgency=low + + * Non-maintainer upload. + * Pascal doesn't build for ARM. + + -- Jim Pick Sun, 24 Jan 1999 16:13:34 -0800 + +egcs (1.1.1-4) frozen unstable; urgency=high + + * Don't strip compiler libraries libgcc.a libobjc.a libg2c.a libgpc.a + * Move Pascal examples to the right place (fixes #32149, part 1). + * Add dependencies for switching from secondary to primary compiler, + if FIRST_PRIMARY is defined (fixes #32149, part 2). + + -- Matthias Klose Wed, 20 Jan 1999 16:51:30 +0100 + +egcs (1.1.1-3) frozen unstable; urgency=low + + * Updated with the H.J.Lu's hjl-19990115-linux patch (fixes the + __register_frame_info problems, mips and arm port included). + * Update gpc to 19990118 (beta release candidate). + * Strip static libraries (fixes #31247 and #31248). + * Changed maintainer address. + + -- Matthias Klose Tue, 19 Jan 1999 16:34:28 +0100 + +egcs (1.1.1-2) frozen unstable; urgency=low + + * Moved egcs-docs, g77-doc and gpc-doc packages to doc section. + * Downgraded Recommends: egcs-docs to Suggests: egcs-docs dependencies + (for archs, where egcs is the primary compiler). + * Add 'Suggests: stl-manual' dependency to libstdc++2.9-dev. + * Applied one more alpha patch: + ftp://ftp.yggdrasil.com/private/hjl/egcs/1.1.1/egcs-1.1.1.diff.12.gz + * Applied PPro optimization patch. + * Apply emit-rtl-nan patch. + * Upgraded to libg++-2.8.1.2a-19981218.tar.gz. + * Upgraded to gpc-19981218. + * Make symlinks for gobjc, libstdc++2.9-dev and libg++2.8.2 doc directories. + + -- Matthias Klose Wed, 23 Dec 1998 18:04:53 +0200 + +egcs-snapshot (19981211-1) experimental; urgency=low + + * New snapshot. + * Adapted gpc to egcs-2.92.x (BOOT_CFLAGS must include -g). + * New libg++-2.8.1.2a-19981209.tar.gz. + * debian/rules: new target mail-summary. + + -- Matthias Klose Fri, 11 Dec 1998 18:14:53 +0200 + +egcs (1.1.1-1) frozen unstable; urgency=high + + * Final egcs-1.1.1 release. + * The last version depended on a versioned libc6 again. + * Add lost dependency for libg++ on libstdc++. + * Added debian-libstdc++.sh script to generate a libstdc++ on a Linux + system, which doesn't use the libapi patch. + + -- Matthias Klose Wed, 2 Dec 1998 12:06:15 +0200 + +egcs (1.1.0.91.59-2) frozen unstable; urgency=high + + * Fixes bugs from libc6 2.0.7u-6 upload without dependency line + Conflicts: libstdc++-2.9 (<< 2.91.59): #30019, #30066, #30078. + * debian/copyright: Updated URLs. + * gcc --help now mentions /usr/doc/debian/bug-reporting.txt. + * Install README.Debian and include information about patches applied. + * Depend on unversioned libc6 on i386, such that libstdc++2.9 can be used + on a hamm system. + + -- Matthias Klose Fri, 27 Nov 1998 18:32:02 +0200 + +egcs (1.1.0.91.59-1) frozen unstable; urgency=low + + * This is egcs-1.1.1 prerelease #3, compiled with libc6 2.0.7u-6. + * Added dependency for libstdc++2.9-dev on g++ (fixes #29631). + * Package g77 provides f77 (fixes #29817). + * Already fixed in earlier egcs-1.1 releases: #2493, #25271, #10620. + * Bugs reported for gcc-2.7.x and fixed in the egcs version of gcc: + #2493, #4430, #4954, #5367, #6047, #10612, #12375, #20606, #24788, #26100. + * Upgraded libg++ to libg++-2.8.1.2a-19981114. + * Upgraded gpc to gpc-19981124. + * Close #25869: egcs and splay maintainers are unable to reproduce this + bug with the current Debian packages. Bug submitter doesn't respond. + * Close #25407: egcs maintainer cannot reproduce this bug with the current + Debian compiler. Bug submitter doesn't respond. + * Use debhelper 1.2.7 for building. + * Replace the libstdc++ and libg++ compatibility links with fake libraries. + + -- Matthias Klose Wed, 25 Nov 1998 12:11:42 +0200 + +egcs (1.1.0.91.58-5) frozen unstable; urgency=low + + * Applied patch to build on the m68060. + * Added c++filt and c++filt.1 to the g++ package. + * Updated gpc to gpc-981105; fixes some regressions compared to egcs-1.1. + * Separated out g77 and gpc doumentation to new packages g77-doc and gpc-doc. + * Closed bugs (#22158). + * Close #20248; on platforms where gas and gld are the default versions, + it makes no difference to configure with or without enable-ld. + * Close #24349. The bugs are in the amulet source. + See http://www.cs.cmu.edu/afs/cs/project/amulet/www/FAQ.html#GCC28x + * Rename gcc.info* files to egcs.info* (fixes #24088). + * Documented known bugs (and workarounds) in BUGS.Debian. + * Fixed demangling of C++ names (fixes #28787). + * Applied patch form aspell to libstdc++/stl/stl_rope.h. + * Updated from cvs 16 Nov 1998. + + -- Matthias Klose Tue, 17 Nov 1998 09:41:24 +0200 + +egcs-snapshot (19981115-2) experimental; urgency=low + + * New snapshot. Disabled gpc. + * New packages g77-doc and gpc-doc. + + -- Matthias Klose Mon, 16 Nov 1998 12:48:09 +0200 + +egcs (1.1.0.91.58-3) frozen unstable; urgency=low + + * Previous version installed in potato, not slink. + * Updated from cvs 3 Nov 1998. + + -- Matthias Klose Tue, 3 Nov 1998 18:34:44 +0200 + +egcs (1.1.0.91.58-2) unstable; urgency=low + + * [debian/rules]: added targets to apply and unapply patches. + * [debian/README.patches]: New file. + * Moved patches dir to debian/patches. debian/rules has to select + the patches to apply. + * Manual pages for genclass and gcov (fixes #5995, #20950, #22196). + * Apply egcs-1.1-reload patch needed for powerpc architecture. + * Fixed bugs (#17768, #20252, #25508, #27788). + * Reapplied alpha patch (#20875). + * Fixes first part of #22513, extended README.Debian (combining C & C++). + * Already fixed in earlier egcs-1.1 releases: #17963, #20252, #20524, + #20640, #22450, #24244, #24288, #28520. + + -- Matthias Klose Fri, 30 Oct 1998 13:41:45 +0200 + +egcs (1.1.0.91.58-1) experimental; urgency=low + + * New upstream version. That's the egcs-1.1.1 prerelease plus patches from + the cvs archive upto 29 Oct 1998. + * Merged files from the egcs and snapshot packages. + * Updated libg++ to libg++-2.8.1.2 (although the Debian package name is still + 2.8.2). + * Moved patches dir to patches-1.1. + * Dan Jacobowitz: + * This is a snapshot from the egcs_1_1_branch, with + libapi, reload, builtin-apply, and egcs patches from + the debian/patches/ dir applied, along with the egcs-gpc-patches + and gcc/p/diffs/gcc-egcs-2.91.55.diff. + * Conditionalize gcj and chill (since they aren't in this branch). + * Fake snapshots drop the -snap-main. + + -- Matthias Klose Thu, 29 Oct 1998 15:15:19 +0200 + +egcs-snapshot (1.1-19981019-5.1) experimental; urgency=low + + * This is a snapshot from the egcs_1_1_branch, with + libapi, reload, builtin-apply, and egcs patches from + the debian/patches/ dir applied, along with the egcs-gpc-patches + and gcc/p/diffs/gcc-egcs-2.91.55.diff. + * Conditionalize gcj and chill (since they aren't in this + branch). + * Fake snapshots drop the -snap-main. + + -- Daniel Jacobowitz Mon, 19 Oct 1998 22:19:23 -0400 + +egcs (1.1b-5) unstable; urgency=low + + * [debian/control.in] Fixed typo in dependencies (#28076, #28087, #28092). + + -- J.H.M. Dassen (Ray) Sun, 18 Oct 1998 22:56:51 +0200 + +egcs (1.1b-4) unstable; urgency=low + + * Strengthened g++ dependency on libstdc++_LIB_SO_-dev from + `Recommends' to `Depends'. + * Updated README.Debian for egcs-1.1. + * Updated TODO. + + -- Matthias Klose Thu, 15 Oct 1998 12:38:47 +0200 + +egcs-snapshot (19981005-0.1) experimental; urgency=low + + * Make libstdc++2.9-snap-main and libg++-snap-main provide + their mainstream equivalents and put those equivalents into + their shlibs file. + * Package gcj, the GNU Compiler for Java(TM). + + * New upstream version of egcs (The -regcs_latest_snapshot branch). + * Build without libg++ entirely. + * Leave out gpc for now - the internals are sufficiently different + that it does not trivially compile. + * Include an experimental reload patch for powerpc - this is, + in the words of its author, not release quality, but it allows + powerpc linuxthreads to function. + * On architectures where we are the primary compiler, let snapshots + build with --prefix=/usr and conflict with the stable versions. + * Package chill, a front end for the language Chill. + * Other applied patches from debian/patches/: egcs-patches and + builtin-apply-patch. + * Use reload.c revision 1.43 to avoid a nasty bug. + + -- Daniel Jacobowitz Wed, 7 Oct 1998 00:27:42 -0400 + +egcs (1.1b-3.1) unstable; urgency=low + + * NMU to fix the egcc -> gcc link once and for all + + -- Christopher C. Chimelis Tue, 22 Sep 1998 16:11:19 -0500 + +egcs (1.1b-3) unstable; urgency=low + + * Oops. The egcc -> gcc link on archs where gcc is egcc was broken. + Thanks to Chris Chimelis for pointing this out. + + -- J.H.M. Dassen (Ray) Mon, 21 Sep 1998 20:51:35 +0200 + +egcs (1.1b-2) unstable; urgency=low + + * New upstream spellfix release (Debian revision is 2 as the internal + version numbers didn't change). + * Added egcc -> gcc symlink on architectures where egcc is the primary C + compiler. Thus, maintainers of packages that require egcc, can now + simply use "egcc" without conditionals. + * Porters: we hope/plan to make egcs's gcc the default C compiler on all + platforms once the 2.2.x kernels are available. Please test this version + thoroughly, and give us a GO / NO GO for your architecture. + * Some symbols cpp used to predefine were removed upstream in order to clean + up the cpp namespace, but imake requires them for determining the proper + settings for LinuxMachineDefines (see /usr/X11R6/lib/X11/{Imake,linux}.cf), + thus we put them back. Thanks to Paul Slootman for reporting his imake + problems on Alpha. + * [gcc/config/alpha/linux.h] Added -D__alpha to CPP_PREDEFINES . + Thanks to Chris Chimelis for the alpha-only 1.1a-1.1 NMU which fixed + this already. + * [gcc/config/i386/linux.h] Added -D__i386__ to CPP_PREDEFINES . + * [gcc/config/sparc/linux.h] Has -Dsparc in CPP_PREDEFINES . + * [gcc/config/sparc/linux64.h] Has -Dsparc in CPP_PREDEFINES . + * [gcc/config/m68k/linux.h] Has -Dmc68000 in CPP_PREDEFINES . + * [gcc/config/rs6000/linux.h] Has -Dpowerpc in CPP_PREDEFINES . + * [gcc/config/arm/linux.h] Has -Darm in CPP_PREDEFINES . + * [gcc/config/i386/gnu.h] Has -Di386 in CPP_PREDEFINES . + * Small fixes and updates in README. + * Changes affecting the source package only: + * [gcc/Makefile.in, gcc/cp/Make-lang.in, gcc/p/Make-lang.in] + Daniel Jacobowitz: Ugly hacks of various kinds to make cplib2.txt get + properly regenerated with multilib. + * [debian/TODO] Created. + * [INSTALL/index.html] Fixed broken link. + + -- J.H.M. Dassen (Ray) Sun, 20 Sep 1998 14:05:15 +0200 + +egcs (1.1a-1) unstable; urgency=low + + * New upstream release. + * Added README.libstdc++ . + * Updated Standards-Version. + * Matthias: + * Downgraded gobjc dependency on egcs-docs from Recommends: to Suggests: . + * [libg++/Makefile.in] Patched not to rely on a `-f' flag of `ln'. + + -- J.H.M. Dassen (Ray) Wed, 2 Sep 1998 19:57:43 +0200 + +egcs (1.1-1) unstable; urgency=low + + * egcs-1.1 prerelease (from the last Debian package only the version file + changed). + * "Final" gpc Beta 2.1 gpc-19980830. + * Included libg++ and gpc in the .orig tarball. so that diffs are getting + smaller. + * debian/control.in: Changed maintainer address to galenh-egcs@debian.org. + * debian/copyright: Updated URLs. + + -- Matthias Klose Mon, 31 Aug 1998 12:43:13 +0200 + +egcs (1.0.99.56-0.1) unstable; urgency=low + + * New upstream snapshot 19980830 from CVS (called egcs-1.1 19980830). + * New libg++ snapshot 980828. + * Put all patches patches subdirectory; see patches/README in the source. + * debian/control.in: readded for libg++2.8.2-dev: + Replaces: libstdc++2.8-dev (<= 2.90.29-0.5) + * Renamed libg++2.9 package to libg++2.8.2. + * gcc/p/gpc-decl.c: Fix from Peter@Gerwinski.de; fixes optimization errors. + * patches/gpc-patch2: Fix from Peter@Gerwinski.de; fixes alpha errors. + * debian/rules: New configuration flag for building with and without + libstdc++api patch; untested without ... + + -- Matthias Klose Sun, 30 Aug 1998 12:04:22 +0200 + +egcs (1.0.99-0.6) unstable; urgency=low + + * PowerPC fixes. + * On powerpc, generate the -msoft-float libs and package them + as egcs-nof. + * Fix signed char error in gpc. + * Create a libg++.so.2.9 compatibility symlink. + + -- Daniel Jacobowitz Tue, 25 Aug 1998 11:44:09 -0400 + +egcs (1.0.99-0.5) unstable; urgency=low + + * New upstream snapshot 19980824. + * New gpc snapshot gpc-980822; reenabled gpc for alpha. + + -- Matthias Klose Tue, 25 Aug 1998 01:21:08 +0200 + +egcs (1.0.99-0.4) unstable; urgency=low + + * New upstream snapshot 19980819. Should build glibc 2.0.9x on PPC. + + -- Matthias Klose Wed, 19 Aug 1998 14:18:07 +0200 + +egcs (1.0.99-0.3) unstable; urgency=low + + * New upstream snapshot 19980816. + * debian/rules: build correct debian/control and debian/*.shlibs + * Enabled Haifa scheduler for ix86. + + -- Matthias Klose Mon, 17 Aug 1998 16:29:35 +0200 + +egcs (1.0.99-0.2) unstable; urgency=low + + * New upstream snapshot: egcs-19980812, minor changes only. + * Fixes for building on `primary' targets. + * Disabled gpc on `alpha' architecture. + * Uses debhelper 1.1.6 + * debian/control.in: Replace older snapshot versions in favor of newer + normal versions. + * debian/rules: Fixes building of binary-arch target only. + + -- Matthias Klose Thu, 13 Aug 1998 11:59:41 +0200 + +egcs (1.0.99-0.1) unstable; urgency=low + + * New upstream version: pre egcs-1.1 version. + * Many changes ... for details see debian/changelog.snapshot in the + source package. + * New packages libstdc++2.9 and libstdc++2.9-dev. + * New libg++ snapshot 980731: new packages libg++2.9 and libg++2.9-dev. + * New gpc snapshot gpc-980729: new package gpc. + * Uses debhelper 1.1 + + -- Matthias Klose Mon, 10 Aug 1998 13:00:27 +0200 + +egcs-snapshot (19980803-4) experimental; urgency=low + + * rebuilt debian/control. + + -- Matthias Klose Wed, 5 Aug 1998 08:51:47 +0200 + +egcs-snapshot (19980803-3) experimental; urgency=low + + * debian/rules: fix installation locations of NEWS, header and + `undocumented' files. + * man pages aren't compressed for the snapshot package. + + -- Matthias Klose Tue, 4 Aug 1998 17:34:31 +0200 + +egcs-snapshot (19980803-2) experimental; urgency=low + + * debian/rules: Uses debhelper. Old in debian/rules.old. + renamed postinst, prerm files for use with debhelper. + * debian/{libg++2.9,libstdc++2.9}/postinst: call ldconfig only, + when called for configure. + * egcs-docs is architecture independent package. + * new libg++ snapshot 980731. + * installed libstdc++ api patch (still buggy). + + -- Matthias Klose Mon, 3 Aug 1998 13:20:59 +0200 + +egcs-snapshot (19980729-1) experimental; urgency=low + + * New snapshot version 19980729 from CVS archive. + * New gpc snapshot gpc-980729. + * Let gcc/configure decide about using the Haifa scheduler. + * Remove -DDEBIAN. That was needed for the security improvements with + regard to the /tmp problem. egcs-1.1 chooses another approach. + * Save test-protocol and extract gpc errors to gpc-test-summary. + * Tighten binutils dependency to 2.9.1. + * debian/rules: new build-info target + * debian/{control.in,rules}: _SO_ and BINUTILSV substitution. + * debian/rules: add dependency for debian/control. + * debian/rules: remove bin/c++filt + * TODO: next version will use debhelper; the unorganized moving of + files becomes unmanageable ... + * TODO: g++ headers in stdc++ package? check! + + -- Matthias Klose Thu, 30 Jul 1998 12:10:20 +0200 + +egcs-snapshot (19980721-1) experimental; urgency=low + + * Unreleased. Infinite loops in executables made by gpc. + + -- Matthias Klose Wed, 22 Jul 1998 18:07:20 +0200 + +egcs-snapshot (19980715-1) experimental; urgency=low + + * New snapshot version from CVS archive. + * New gpc snapshot gpc-980715. + * New libg++ version libg++-2.8.2-980708. Changed versioning + schema for library. The major versions of libc, libstdc++ and the + g++ interface are coded in the library name. Use this new schema, + but provide a symlink to our previous schema, since the library + seems to be binary compatible. + * [debian/rules]: Fixed bug in build target, when bootstrap returns + with an error + + -- Matthias Klose Wed, 15 Jul 1998 10:55:05 +0200 + +egcs-snapshot (19980701-1) experimental; urgency=low + + * New snapshot version from CVS archive. + Two check programs in libg++ had to be manually killed to finish the + testsuite (tBag and tSet). + * New gpc snapshot gpc-980629. + * Incorporated debian/rules changes from egcs-1.0.3a-0.5 (but don't remove + gcc/cp/parse.c gcc/c-parse.c gcc/c-parse.y gcc/objc/objc-parse.c + gcc/objc/objc-parse.y, since these files are part of the release). + * Disable the -DMKTEMP_EACH_FILE -DHAVE_MKSTEMP -DDEBIAN flags for the + snapshot. egcs-1.1 will have another solution. + * Don't bootstrap the snapshot with -fno-force-mem. Internal compiler + error :-( + * libf2c.a and f2c.h have changed names to libg2c.a and g2c.h and + have moved again into the gcc-lib dir. They are installed under + libg2c.a and g2c.h. Is it necessary to provide links f2c -> g2c ? + * debian/rules: reflect change of build dir of libraries. + + -- Matthias Klose Wed, 2 Jul 1998 13:15:28 +0200 + +egcs-snapshot (19980628-0.1) experimental; urgency=low + + * New upstream snapshot version. + * Non-maintainer upload; Matthias appears to be absent currently. + * Updated shlibs. + * Merged changes from regular egcs: + * [debian/control] Tightened dependency on binutils to 2.8.1.0.23 or + newer, as according to INSTALL/SPECIFIC PowerPC (and possibly Sparc) + need this. + * [debian/rules] Clean up some generated files outside builddir, + so the .diff.gz becomes smaller. + * [debian/rules] Partial sync/update with the one for the regular egcs + version. + * [debian/rules] Make gcc/p/configure executable. + + -- J.H.M. Dassen (Ray) Wed, 1 Jul 1998 07:12:15 +0200 + +egcs (1.0.3a-0.6) frozen unstable; urgency=low + + * Some libg++ development files were in libstdc++2.8-dev rather than + libg++2.8-dev. Fixed this and dealt with upgrading from the earlier + versions (fixes #23908; this bug is not marked release-critical, but + is annoying and can be quite confusing for users. Therefore, I think + this fix should go in 2.0). + + -- J.H.M. Dassen (Ray) Tue, 30 Jun 1998 11:10:14 +0200 + +egcs (1.0.3a-0.5) frozen unstable; urgency=low + + * Fixed location of .hP files (Fixes #23448). + * [debian/rules] simplified extraction of the files for libg++2.8-dev. + + -- J.H.M. Dassen (Ray) Wed, 17 Jun 1998 09:33:41 +0200 + +egcs (1.0.3a-0.4) frozen unstable; urgency=low + + * [gcc/gcc.c] There is one call to choose_temp_base for determining the + tempdir to be used only; #ifdef HAVE_MKSTEMP delete the tempfile created + as a side effect. (fixes #23123 for egcs). + * [gcc/collect2.c] There's still a vulnerability here; I don't see how + I can fix it without leaving behind tempfiles though. + * [debian/control] Tightened dependency on binutils to 2.8.1.0.23 or + newer, as according to INSTALL/SPECIFIC PowerPC (and possibly Sparc) + need this. + * [debian/rules] Clean up some generated files outside builddir, so the + .diff.gz becomes smaller. + + -- J.H.M. Dassen (Ray) Sat, 13 Jun 1998 09:06:52 +0200 + +egcs-snapshot (19980608-1) experimental; urgency=low + + * New snapshot version. + + -- Matthias Klose Tue, 9 Jun 1998 14:07:44 +0200 + +egcs (1.0.3a-0.3) frozen unstable; urgency=high (security fixes) + + * [gcc/toplev.c] set flag_force_mem to 1 at optimisation level 3 or higher. + This works around #17768 which is considered release-critical. + * Changes by Matthias: + * [debian/README] Documentation of the compiler situation for Objective C. + * [debian/rules, debian/control.*] Generate control file from a master + file. + * [debian/rules] Updates for Pascal and Fortran parts; brings it in sync + with the one for the egcs snapshots. + * Use the recommended settings LDFLAGS=-s CFLAGS= BOOT_CFLAGS='-O2'. + * Really compile -DMKTEMP_EACH_FILE -DHAVE_MKSTEMP (really fixes #19453 + for egcs). + * [gcc/gcc.c] A couple of temp files weren't marked for deletion. + + -- J.H.M. Dassen (Ray) Sun, 31 May 1998 22:56:22 +0200 + +egcs (1.0.3a-0.2) frozen unstable; urgency=high (security fixes) + + * Security improvements with regard to the /tmp problem + (gcc opens predictably named files in TMPDIR which can be abused via + symlinks) (Fixes #19453 for egcs). + * Compile -DMKTEMP_EACH_FILE to ensure the %u name is generated randomly + every time; affects gcc/gcc.c . + * [gcc/choose-temp.c, libiberty/choose-temp.c]: use mktemp(3) if compiled + -DUSE_MKSTEMP . + * Security improvements: don't use the result of choose_temp_base in a + predictable fashion. + [gcc/gcc.c]: + * @c, @objective-c: use random name rather then tempbasename.i for + intermediate preprocessor output (%g.i -> %d%u). + * @c, @objective-c: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @c, @objective-c, @cpp-output, @assembler-with-cpp: switched + "as [-o output file] " to + "as [-o output file]". + * @c, @objective-c, @assembler-with-cpp: use previous random name + (cc1|cpp output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U) + [gcc/f/lang-specs.h]: + * @f77-cpp-input: use random name rather then tempbasename.i for + intermediate cpp output (%g.i -> %d%u). + * @f77-cpp-input: use previous random name (cpp output) rather than + tempbasename.i for f771 input (%g.i -> %U). + * @f77-cpp-input: switched + "as [-o output file] " to + "as [-o output file]". + * @f77-cpp-input: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: use random name rather then tempbasename.i for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @f77: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %U). + * Run the testsuite (this requires the dejagnu package in experimental; + unfortunately, it is difficult to distinguish this version from the one + in frozen). + if possible, and log the results in warn_summary and bootstrap-summary. + * [gcc/choose-temp.c, libiberty/choose-temp.c]: s|returh|return| in + comment. + * Added notes on the Debian compiler setup [debian/README] to the + development packages. + * Matthias: + * [libg++/etc/lf/Makefile.in] Replaced "-ltermcap" by "-lncurses". + * [debian/rules] Updated so it can be used for both egcs releases and + snapshots easily; added support for the GNU Pascal Compiler gpc. + * [contrib/test_summary, contrib/warn_summary] Added from CVS. + * Run compiler checks and include results in /usr/doc/. + * Updates to the README. + * [debian/rules] Use assignments to speed up startup. + * [debian/rules] Show the important variables at the start of the build + process. + * [debian/control.secondary] Added a dependency of gobjc on egcc on + architectures where egcs provides the secondary compiler, as + /usr/bin/egcc is the compiler driver for gobjc. (Fixes #22829). + * [debian/control.*] Bumped Standards-Version; used shorter version + numbers in the dependency relationships (esthetic difference only); + fixed typo. + + -- J.H.M. Dassen (Ray) Tue, 26 May 1998 21:47:41 +0200 + +egcs-snapshot (19980525-1) experimental; urgency=low + + * New snapshot version. + + -- Matthias Klose Tue, 26 May 1998 18:04:06 +0200 + +egcs-snapshot (19980517-1) experimental; urgency=low + + * "Initial" release of the egcs-snapshot package; many debian/* files + derived from the egcs-1.0.3a-0.1 package (maintained by Galen Hazelwood + , NMU's by J.H.M. Dassen (Ray) ) + * The egcs-snapshot packages can coexist with the packages of the + egcs release. Package names have a '-ss' appended. + * All packages are installed in a separate tree (/usr/lib/egcs-ss following + the FHSS). + * Made all snapshot packages extra, all snapshot packages conflict + with correspondent egcs packages, which are newer than the snapshot. + * Included libg++-2.8.1-980505. + * Included GNU Pascal (gpc-980511). + * Haifa scheduler enabled for all snapshot packages. + * Run compiler checks and include results in /usr/doc/. + * Further information in /usr/doc//README.snapshot. + + -- Matthias Klose Wed, 20 May 1998 11:14:06 +0200 + +egcs (1.0.3a-0.1) frozen unstable; urgency=low + + * New upstream release egcs-2.90.29 980515 (egcs-1.0.3 release) + (we were using 1.0.3-prerelease). This includes the Haifa patches + we had since 1.0.3-0.2 and the gcc/objc/thr-posix.c patch we had + since 1.0.3-0.1; the differences with 1.0.3-prerelease + patches + we had is negligable. + * iostream info documentation was in the wrong package (libg++2.8-dev). + Now it's in libstdc++2.8-dev. (Thanks to Jens Rosenboom for bringing + this to my attention). As 1.0.3-0.3 didn't make it out of Incoming, + I'm not adding "Replaces:" for this; folks who had 1.0.3-0.3 installed + already know enough to use --force-overwrite. + * [gcc/objc/objc-act.c] Applied patch Matthias Klose supplied me with that + demangles Objective C method names in gcc error messages. + * Explicitly disable Haifa scheduling on Alpha, to make it easier to use + this package's diff with egcs snapshots, which may turn on Haifa + scheduling even though it is still unstable. (Requested by Chris Chimelis) + * Don't run "configure" again if builddir already exists (makes it faster + to restart builds in case one is hacking internals). Requested by + Johnnie Ingram. + * [gcc/gbl-ctors.h] Don't use extern declaration for atexit on glibc 2.1 + and higher (the prototype has probably changed; having the declaration + broke Sparc compiles). + * [debian/rules] Determine all version number automatically (from the + version string in gcc/version.c). + * [debian/copyright] Updated FTP locations; added text about libg++ (fixes + #22465). + + -- J.H.M. Dassen (Ray) Sat, 16 May 1998 17:41:44 +0200 + +egcs (1.0.3-0.3) frozen unstable; urgency=low + + * Made an "egcs-doc" package containing documentation for egcs (e)gcc, + g++, gobjc, so that administrators can choose whether to have this + documenation or the documentation that comes with the GNU gcc package. + Dependency on this is Recommends: on architectures where egcs provides + the primary C compiler; Suggests: on the others (where GNU gcc is still + the primary C compiler). + * Use the g++ FAQ from gcc/cp rather than libg++, as that version is more + up to date. + * Added iostream info documentation to libstdc++2.8-dev. + + -- J.H.M. Dassen (Ray) Wed, 13 May 1998 08:46:10 +0200 + +egcs (1.0.3-0.2) frozen unstable; urgency=low + + * Added libg++ that works with egcs, found at + ftp://ftp.yggdrasil.com/private/hjl/libg++-2.8.1-980505.tar.gz + (fixes #20587 (Severity: important)). + * The "libg++" and "libg++-dev" virtual packages now refer to the GNU + extensions. + * Added the g++ FAQ that comes with libg++ to the g++ package. + * libg++/Makefile.in: added $(srcdir) to rule for g++FAQ.info so that it + builds OK in builddir. + * Added -D__i386__ to the cpp predefines on intel. + * Patches Matthias supplied me with: + * Further 1.0.3 prerelease patches from CVS. + This includes patches to the Haifa scheduler. Alpha porters, please + check if this makes the Haifa scheduler OK again. + * Objective C patches from CVS. + + -- J.H.M. Dassen (Ray) Fri, 8 May 1998 14:43:20 +0200 + +egcs (1.0.3-0.1) frozen unstable; urgency=low (high for maintainers that use objc) + + * bug fixes only in new upstream version + * Applied patches from egcs CVS archive (egcs_1_03_prerelease) + (see gcc/ChangeLog in the egcs source package). + * libstdc++2.8-dev no longer Provides: libg++-dev (fixes #21153). + * libstdc++2.8-dev now Conflicts: libg++27-dev (bo), + libg++272-dev (hamm) [regular packages] rather than + Conflicts: libg++-dev [virtual package] to prepare the way for "libg++" + to be used as a virtual package for a new libg++ package (i.e. an up to + date one, which not longer contains libstdc++, but only the GNU + extensions) that is compatible with the egcs g++ packages. Such a package + isn't available yet. Joel Klecker tried building libg++2.8.1.1a within + egcs's libstdc++ setup, but it appears to need true gcc 2.8.1 . + * Filed Severity: important bugs against wxxt1-dev (#21707) because these + still depend on libg++-dev, which is removed in this version. + A fixed libsidplay1-dev has already been uploaded. + * libstdc++2.8 is now Section: base and Priority: required (as dselect is + linked against it). + * Disabled Haifa scheduling on Alpha again; Chris Chimelis reported + that this caused problems on some machines. + * [gcc/extend.texi] + ftp://maya.idiap.ch/pub/tmb/usenix88-lexic.ps.Z is no longer available; + use http://master.debian.org/~karlheg/Usenix88-lexic.pdf . + (fixes the egcs part of #20002). + * Updated Standards-Version. + * Changed chmod in debian/rules at Johnie Ingram's request. + * Rather than hardwire the Debian part of the packages' version number, + extract it from debian/changelog . + * Use gcc/objc/thr-posix.c from 980418 egcs snapshot to make objc work. + (Fixes #21192). + * Applied workaround for the GNUstep packages on sparc systems. + See README.sparc (on sparc packages only) in the doc directory. + This affects the other compilers as well. + * Already done in 1.0.2-0.7: the gobjc package now provides a virtual + package objc-compiler. + + -- J.H.M. Dassen (Ray) Tue, 28 Apr 1998 12:05:28 +0200 + +egcs (1.0.2-0.7) frozen unstable; urgency=low + + * Separated out Objective-C compiler. + * Applied patch from http://www.cygnus.com/ml/egcs/1998-Apr/0614.html + + -- Matthias Klose Fri, 17 Apr 1998 10:25:48 +0200 + +egcs (1.0.2-0.6) frozen unstable; urgency=low + + * Due to upstream changes (libg++ is now only the GNU specific C++ + classes, and is no longer maintained; libstdc++ contains the C++ + standard library, including STL), the virtual "libg++-dev" + package's meaning has become confusing. Therefore, new or updated + packages should no longer use the virtual "libg++-dev" package. + * Corrected g++'s Recommends to libstdc++2.8-dev (>=2.90.27-0.1). + The previous version had Recommends: libstdc++-dev (>=2.90.27-0.1) + which doesn't work, as libstc++-dev is a virtual package. + * Bumped Standards-Version. + + -- J.H.M. Dassen (Ray) Tue, 14 Apr 1998 11:52:08 +0200 + +egcs (1.0.2-0.5) frozen unstable; urgency=low (high for maintainers of packages that use libstdc++) + + * Modified shlibs file for libstdc++ to generate versioned dependencies, + as it is not link compatible with the 1.0.1-x versions in + project/experimental. (Fixes #20247, #20033) + Packages depending on libstd++ should be recompiled to fix their + dependencies. + * Strenghtened g++'s Recommends: libstdc++-dev to the 1.0.2 version or + newer. + * Fixed problems with the unknown(7) symlink for gcov. + * Reordering links now works. + + -- Adam Heath Sun, 12 Apr 1998 13:09:30 -0400 + +egcs (1.0.2-0.4) frozen unstable; urgency=low + + * Unreleased. This is the version Adam Heath received from me. + * Replaces: gcc (<= 2.7.2.3-3) so that the overlap with the older gcc + packages (including bo's gcc_2.7.2.1-8) is handled properly + (fixes #19931, #19672, #20217, #20593). + * Alpha architecture (fixes #20875): + * Patched gcc/config/alpha/linux.h for the gmon functions to operate + properly. + * Made egcs the primary C compiler. + * Enabled Hafia scheduling. + * Lintian-detected problems: + * E: libstdc++2.8: ldconfig-symlink-before-shlib-in-deb usr/lib/libstdc++.so.2.8 + * E: egcc: binary-without-manpage gcov + Reported as wishlist bug; added link to undocumented(7). + * W: libstdc++2.8: non-standard-executable-perm usr/lib/libstdc++.so.2.8.0 0555 + * E: libstdc++2.8: shlib-with-executable-bit usr/lib/libstdc++.so.2.8.0 0555 + + -- J.H.M. Dassen (Ray) Fri, 10 Apr 1998 14:46:46 +0200 + +egcs (1.0.2-0.3) frozen unstable; urgency=low + + * Really fixed dependencies. + + -- J.H.M. Dassen (Ray) Mon, 30 Mar 1998 11:30:26 +0200 + +egcs (1.0.2-0.2) frozen unstable; urgency=low + + * Fixed dependencies. + + -- J.H.M. Dassen (Ray) Sat, 28 Mar 1998 13:58:58 +0100 + +egcs (1.0.2-0.1) frozen unstable; urgency=low + + * New upstream version; it now has -Di386 in CPP_PREDEFINES. + * Only used the debian/* patches from 1.0.1-2; the rest of it appears + to be in 1.0.2 already. + + -- J.H.M. Dassen (Ray) Fri, 27 Mar 1998 11:47:14 +0100 + +egcs (1.0.1-2) unstable; urgency=low + + * Integrated pre-release 1.0.2 patches + * Split out g++ + * egcs may now provide either the primary or secondary C compiler + + -- Galen Hazelwood Sat, 14 Mar 1998 14:15:32 -0700 + +egcs (1.0.1-1) unstable; urgency=low + + * New upstream version + * egcs is now the standard Debian gcc! + * gcc now provides c-compiler (#15248 et al.) + * g77 now provides fortran77-compiler + * g77 dependencies now correct (#16991) + * /usr/doc/gcc/changelog.gz now has correct permissions (#16139) + + -- Galen Hazelwood Sat, 7 Feb 1998 19:22:30 -0700 + +egcs (1.0-1) experimental; urgency=low + + * First official release + + -- Galen Hazelwood Thu, 4 Dec 1997 16:30:11 -0700 + +egcs (970917-1) experimental; urgency=low + + * New upstream snapshot (There's a lot of stuff here as well, including + a new libstdc++, but it _still_ won't build...) + * eg77 driver now works properly + + -- Galen Hazelwood Wed, 17 Sep 1997 20:44:29 -0600 + +egcs (970904-1) experimental; urgency=low + + * New upstream snapshot + + -- Galen Hazelwood Sun, 7 Sep 1997 18:25:06 -0600 + +egcs (970814-1) experimental; urgency=low + + * Initial packaging (of initial snapshot!) + + -- Galen Hazelwood Wed, 20 Aug 1997 00:36:28 +0000 + +gcc272 (2.7.2.3-12) unstable; urgency=low + + * Compiled on a glibc-2.0 based system. + * Reflect move of manpage to /usr/share in gcc.postinst as well. + * Moved gcc272-docs to section doc, priority optional. + + -- Matthias Klose Sat, 28 Aug 1999 13:42:13 +0200 + +gcc272 (2.7.2.3-11) unstable; urgency=low + + * Follow Debian policy for GNU system type (fixes #42657). + * config/i386/linux.h: Remove %[cpp_cpu] from CPP_SPEC. Stops gcc-2.95 + complaining about obsolete spec operators (using gcc -V 2.7.2.3). + Patch suggested by Zack Weinberg . + + -- Matthias Klose Sun, 15 Aug 1999 20:12:21 +0200 + +gcc272 (2.7.2.3-10) unstable; urgency=low + + * Renamed source package to gcc272. The egcs source package is renamed + to gcc, because it's now the "official" GNU C compiler. + * Changed maintainer address to "Debian GCC maintainers". + * Install info and man stuff to /usr/share. + + -- Matthias Klose Thu, 27 May 1999 12:29:23 +0200 + +gcc (2.7.2.3-9) unstable; urgency=low + + * debian/{postinst,prerm}-doc: handle gcc272.info, not gcc.info. + Fixes #36306. + + -- Matthias Klose Tue, 20 Apr 1999 07:32:58 +0200 + +gcc (2.7.2.3-8) unstable; urgency=low + + * Make gcc-2.7 the secondary compiler. Rename gcc package to gcc272. + On i386, sparc and m68k, this package is compiled against glibc2.0. + * The cpp package is built from the egcs source package. + + -- Matthias Klose Mon, 29 Mar 1999 22:48:50 +0200 + +gcc (2.7.2.3-7) frozen unstable; urgency=low + + * Separated out ObjC compiler to gobjc27 package. + * Changed maintainer address. + * Synchronized README.Debian with egcs-1.1.1-3. + + -- Matthias Klose Tue, 29 Dec 1998 19:05:26 +0100 + +gcc (2.7.2.3-6) frozen unstable; urgency=low + + * Link with -lc on i386, m68k, sparc, when building shared libraries + (fixes #25122). + + -- Matthias Klose Thu, 3 Dec 1998 12:12:12 +0200 + +gcc (2.7.2.3-5) frozen unstable; urgency=low + + * Updated maintainer info. + * Updated Standards-Version; made lintian-clean. + * gcc-docs can coexist with the latest egcs-docs, so added (<= version) to + the Conflicts. + * Updated the README and renamed it to README.Debian . + * Put a reference to /usr/doc/gcc/README.Debian in the info docs. + * Updated description of g++272 . + * Clean up generated info files, to keep the diff small. + + -- J.H.M. Dassen (Ray) Tue, 17 Nov 1998 20:05:59 +0100 + +gcc (2.7.2.3-4.8) frozen unstable; urgency=high + + * Non-maintainer release + * Fix type in extended description + * Removed wrong test in postinst + * Add preinst to clean up some stuff from an older gcc package properly + and stop man complaining about dangling symlinks + + -- Wichert Akkerman Fri, 17 Jul 1998 18:48:32 +0200 + +gcc (2.7.2.3-4.7) frozen unstable; urgency=high + + * Really fixed gcc-docs postinst (Fixes #23470), so that `gcc-docs' + becomes installable. + + -- J.H.M. Dassen (Ray) Mon, 15 Jun 1998 07:53:40 +0200 + +gcc (2.7.2.3-4.6) frozen unstable; urgency=high + + * [gcc.c] There is one call to choose_temp_base for determining the + tempdir to be used only; + #ifdef HAVE_MKSTEMP delete the tempfile created as a side effect. + (fixes #23123 for gcc). + * gcc-docs postinst was broken (due to a broken line) (fixes #23391, #23401). + * [debian/control] description for gcc-docs said `egcs' where it should have + said `gcc' (fixes #23396). + + -- J.H.M. Dassen (Ray) Thu, 11 Jun 1998 12:48:50 +0200 + +gcc (2.7.2.3-4.5) frozen unstable; urgency=high + + * The previous version left temporary files behind, as they were not + marked for deletion afterwards. + + -- J.H.M. Dassen (Ray) Sun, 31 May 1998 22:49:14 +0200 + +gcc (2.7.2.3-4.4) frozen unstable; urgency=high (security fixes) + + * Security improvements with regard to the /tmp problem + (gcc opens predictably named files in TMPDIR which can be abused via + symlinks) (Fixes #19453 for gcc): + * Compile -DMKTEMP_EACH_FILE to ensure the %u name is generated randomly + every time; affects gcc/gcc.c . + * [cp/g++.c, collect2.c, gcc.c] If compiled -DHAVE_MKSTEMP use mkstemp(3) + rather than mktemp(3). + * Security improvements: don't use the result of choose_temp_base in a + predictable fashion. + [gcc.c]: + * @c, @objective-c: use random name rather then tempbasename.i for + intermediate preprocessor output (%g.i -> %d%u). + * @c, @objective-c: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @c, @objective-c, @cpp-output, @assembler-with-cpp: switched + "as [-o output file] " to + "as [-o output file]". + * @c, @objective-c, @assembler-with-cpp: use previous random name + (cc1|cpp output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U) + [f/lang-specs.h]: + * @f77-cpp-input: use random name rather then tempbasename.i for + intermediate cpp output (%g.i -> %d%u). + * @f77-cpp-input: use previous random name (cpp output) rather than + tempbasename.i for f771 input (%g.i -> %U). + * @f77-cpp-input: switched + "as [-o output file] " to + "as [-o output file]". + * @f77-cpp-input: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: use random name rather then tempbasename.i for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @f77: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %U). + + -- J.H.M. Dassen (Ray) Sat, 30 May 1998 17:27:03 +0200 + +gcc (2.7.2.3-4.3) frozen unstable; urgency=high + + * The "alpha" patches from -4 affected a lot more than alpha support, + and in all likeliness broke compilation of libc6 2.0.7pre3-1 + and 2.0.7pre1-4 . I removed them by selective application of the + diff between -4 and -4. (should fix #22292). + * Fixed reference to the trampolines paper (fixes #20002 for Debian; + this still needs to be forwarded). + * This is for frozen too. (obsoletes #22390 (request to move -4.2 to + frozen)). + * Split of gcc-docs package, so that the gcc can be succesfully installed + on systems that have egcs-docs installed. + * Added the README on the compiler situation that's already in the egcs + packages. + * Use the recommended settings LDFLAGS=-s CFLAGS= BOOT_CFLAGS='-O2'. + + -- J.H.M. Dassen (Ray) Thu, 28 May 1998 20:03:59 +0200 + +gcc (2.7.2.3-4.2) unstable; urgency=low + + * Still for unstable, as I have received no feedback about the g++272 + package yet. + * gcc now Provides: objc-compiler . + * Clean up /etc/alternatives/{g++,g++.1.gz} if they are dangling. + (fixes #19765, #20563) + + -- J.H.M. Dassen (Ray) Wed, 22 Apr 1998 12:40:45 +0200 + +gcc (2.7.2.3-4.1) unstable; urgency=low + + * Bumped Standards-Version. + * Forked off a g++272 package (e.g. for code that uses the GNU extensions + in libg++); for now this is in "unstable" only; feedback appreciated. + * Some cleanup (lintian): permissions, absolute link, gzip manpage. + + -- J.H.M. Dassen (Ray) Fri, 17 Apr 1998 13:05:25 +0200 + +gcc (2.7.2.3-4) unstable; urgency=low + + * Added alpha patches + * Only build C and objective-c compilers, split off g++ + + -- Galen Hazelwood Sun, 8 Mar 1998 21:16:39 -0700 + +gcc (2.7.2.3-3) unstable; urgency=low + + * Added patches for m68k + * Added patches for sparc (#13968) + + -- Galen Hazelwood Fri, 17 Oct 1997 18:25:21 -0600 + +gcc (2.7.2.3-2) unstable; urgency=low + + * Added g77 support (g77 0.5.21) + + -- Galen Hazelwood Wed, 10 Sep 1997 18:44:54 -0600 + +gcc (2.7.2.3-1) unstable; urgency=low + + * New upstream version + * Now using pristine source + * Removed misplaced paragraph in cpp.texi (#10877) + * Fix security bug for temporary files (#5298) + * Added Suggests: libg++-dev (#12335) + * Patched objc/thr-posix.c to support conditions (#12502) + + -- Galen Hazelwood Mon, 8 Sep 1997 12:20:07 -0600 + +gcc (2.7.2.2-7) unstable; urgency=low + + * Made cc and c++ managed through alternates mechanism (for egcs) + + -- Galen Hazelwood Tue, 19 Aug 1997 22:37:03 +0000 + +gcc (2.7.2.2-6) unstable; urgency=low + + * Tweaked Objective-C thread support (#11069) + + -- Galen Hazelwood Wed, 9 Jul 1997 11:56:57 -0600 + +gcc (2.7.2.2-5) unstable; urgency=low + + * More updated m68k patches + * Now conflicts with libc5-dev (#10006, #10112) + * More strict Depends: cpp, prevents version mismatch (#9954) + + -- Galen Hazelwood Thu, 19 Jun 1997 01:29:02 -0600 + +gcc (2.7.2.2-4) unstable; urgency=low + + * Moved to unstable + * Temporarily removed fortran support (waiting for new g77) + * Updated m68k patches + + -- Galen Hazelwood Fri, 9 May 1997 13:35:14 -0600 + +gcc (2.7.2.2-3) experimental; urgency=low + + * Built against libc6 (fixes bug #8511) + + -- Galen Hazelwood Fri, 4 Apr 1997 13:30:10 -0700 + +gcc (2.7.2.2-2) experimental; urgency=low + + * Fixed configure to build crt{begin,end}S.o on i386 + + -- Galen Hazelwood Tue, 11 Mar 1997 16:15:02 -0700 + +gcc (2.7.2.2-1) experimental; urgency=low + + * Built for use with libc6-dev (experimental purposes only!) + * Added m68k patches from Andreas Schwab + + -- Galen Hazelwood Fri, 7 Mar 1997 12:44:17 -0700 + +gcc (2.7.2.1-7) unstable; urgency=low + + * Patched to support g77 0.5.20 + + -- Galen Hazelwood Thu, 6 Mar 1997 22:20:23 -0700 + +gcc (2.7.2.1-6) unstable; urgency=low + + * Added (small) manpage for protoize/unprotoize (fixes bug #6904) + * Removed -lieee from specs file (fixes bug #7741) + * No longer builds aout-gcc + + -- Galen Hazelwood Mon, 3 Mar 1997 11:10:20 -0700 + +gcc (2.7.2.1-5) unstable; urgency=low + + * debian/control now lists cpp in section "interpreters" + * Re-added Objective-c patches for unstable + + -- Galen Hazelwood Wed, 22 Jan 1997 10:27:52 -0700 + +gcc (2.7.2.1-4) stable unstable; urgency=low + + * Changed original source file so dpkg-source -x works + * Removed Objective-c patches (unsafe for stable) + * Built against rex's libc, so fixes placed in -3 are available to + those still using rex + + -- Galen Hazelwood Tue, 21 Jan 1997 11:11:53 -0700 + +gcc (2.7.2.1-3) unstable; urgency=low + + * New (temporary) maintainer + * Updated to new standards and source format + * Integrated aout-gcc into gcc source package + * Demoted aout-gcc to Priority "extra" + * cpp package description more clear (fixes bug #5428) + * Removed cpp "Replaces: gcc" (fixes bug #5762) + * Minor fix to invoke.texi (fixes bug #2909) + * Added latest Objective-C patches for GNUstep people (fixes bug #4657) + + -- Galen Hazelwood Sun, 5 Jan 1997 09:57:36 -0700 --- gcc-4.9-4.9.2.orig/debian/compat +++ gcc-4.9-4.9.2/debian/compat @@ -0,0 +1 @@ +5 --- gcc-4.9-4.9.2.orig/debian/control +++ gcc-4.9-4.9.2/debian/control @@ -0,0 +1,1173 @@ +Source: gcc-4.9 +Section: devel +Priority: optional +Maintainer: Ubuntu Core developers +XSBC-Original-Maintainer: Debian GCC Maintainers +Uploaders: Matthias Klose +Standards-Version: 3.9.6 +Build-Depends: debhelper (>= 5.0.62), dpkg-dev (>= 1.17.11), + g++-multilib [amd64 armel armhf i386 kfreebsd-amd64 mips mips64 mips64el mipsel mipsn32 mipsn32el powerpc ppc64 s390 s390x sparc sparc64 x32], + libc6.1-dev (>= 2.13-0ubuntu6) [alpha ia64] | libc0.3-dev (>= 2.13-0ubuntu6) [hurd-i386] | libc0.1-dev (>= 2.13-0ubuntu6) [kfreebsd-i386 kfreebsd-amd64] | libc6-dev (>= 2.13-0ubuntu6), libc6-dev (>= 2.13-31) [armel armhf], libc6-dev-amd64 [i386 x32], libc6-dev-sparc64 [sparc], libc6-dev-sparc [sparc64], libc6-dev-s390 [s390x], libc6-dev-s390x [s390], libc6-dev-i386 [amd64 x32], libc6-dev-powerpc [ppc64], libc6-dev-ppc64 [powerpc], libc0.1-dev-i386 [kfreebsd-amd64], lib32gcc1 [amd64 ppc64 kfreebsd-amd64 mipsn32 mipsn32el mips64 mips64el s390x sparc64 x32], libn32gcc1 [mips mipsel mips64 mips64el], lib64gcc1 [i386 mips mipsel mipsn32 mipsn32el powerpc sparc s390 x32], libc6-dev-mips64 [mips mipsel mipsn32 mipsn32el], libc6-dev-mipsn32 [mips mipsel mips64 mips64el], libc6-dev-mips32 [mipsn32 mipsn32el mips64 mips64el], libc6-dev-x32 [amd64 i386], libx32gcc1 [amd64 i386], libc6-dev-armhf [armel], libhfgcc1 [armel], libc6-dev-armel [armhf], libsfgcc1 [armhf], libc6.1-dbg [alpha ia64] | libc0.3-dbg [hurd-i386] | libc0.1-dbg [kfreebsd-i386 kfreebsd-amd64] | libc6-dbg, + kfreebsd-kernel-headers (>= 0.84) [kfreebsd-any], + m4, libtool, autoconf2.64, gcc-5-base [!m68k !powerpcspe !sh4 !sparc64], + libunwind7-dev (>= 0.98.5-6) [ia64], libatomic-ops-dev [ia64], + autogen, gawk, lzma, xz-utils, patchutils, + zlib1g-dev, systemtap-sdt-dev [linux-any kfreebsd-any hurd-any], + binutils (>= 2.22) | binutils-multiarch (>= 2.22), binutils-hppa64 (>= 2.22) [hppa], + gperf (>= 3.0.1), bison (>= 1:2.3), flex, gettext, + gdb, + texinfo (>= 4.3), locales, sharutils, + procps, zlib1g-dev, libantlr-java, python, libffi-dev, fastjar, libmagic-dev, libecj-java (>= 3.3.0-2), zip, libasound2-dev [ !hurd-any !kfreebsd-any], libxtst-dev, libxt-dev, libgtk2.0-dev (>= 2.4.4-2), libart-2.0-dev, libcairo2-dev, netbase, + libcloog-isl-dev (>= 0.18), libmpc-dev (>= 1.0), libmpfr-dev (>= 3.0.0-9~), libgmp-dev (>= 2:5.0.1~), + dejagnu [!m68k], realpath (>= 1.9.12), chrpath, lsb-release, quilt +Build-Depends-Indep: doxygen (>= 1.7.2), graphviz (>= 2.2), ghostscript, texlive-latex-base, xsltproc, libxml2-utils, docbook-xsl-ns, +Homepage: http://gcc.gnu.org/ +Vcs-Browser: http://svn.debian.org/viewsvn/gcccvs/branches/sid/gcc-4.9/ +Vcs-Svn: svn://anonscm.debian.org/gcccvs/branches/sid/gcc-4.9 + +Package: gcc-4.9-base +Architecture: any +Multi-Arch: same +Section: libs +Priority: required +Depends: ${misc:Depends} +Replaces: ${base:Replaces} +Breaks: gcc-4.4-base (<< 4.4.7), gcc-4.7-base (<< 4.7.3), gcj-4.4-base (<< 4.4.6-9~), gnat-4.4-base (<< 4.4.6-3~), gcj-4.6-base (<< 4.6.1-4~), gnat-4.6-base (<< 4.6.4), dehydra (<= 0.9.hg20110609-2) +Description: GCC, the GNU Compiler Collection (base package) + This package contains files common to all languages and libraries + contained in the GNU Compiler Collection (GCC). + +Package: libgcc-4.9-dev +Architecture: any +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: gcc-4.9-base (= ${gcc:Version}), ${dep:libgcc}, ${dep:libssp}, ${dep:libgomp}, ${dep:libitm}, + ${dep:libatomic}, ${dep:libbtrace}, ${dep:libasan}, ${dep:liblsan}, + ${dep:libtsan}, ${dep:libubsan}, ${dep:libcilkrts}, ${dep:libvtv}, + ${dep:libqmath}, ${dep:libunwinddev}, ${shlibs:Depends}, ${misc:Depends} +Multi-Arch: same +Replaces: gccgo-4.9 (<< ${gcc:Version}) +Description: GCC support library (development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: lib64gcc-4.9-dev +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32 +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: gcc-4.9-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GCC support library (64bit development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: lib32gcc-4.9-dev +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: gcc-4.9-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GCC support library (32 bit development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: libhfgcc-4.9-dev +Architecture: armel +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: gcc-4.9-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GCC support library (hard float ABI development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: libsfgcc-4.9-dev +Architecture: armhf +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: gcc-4.9-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GCC support library (soft float ABI development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: libn32gcc-4.9-dev +Architecture: mips mipsel mips64 mips64el +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: gcc-4.9-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GCC support library (n32 development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: libx32gcc-4.9-dev +Architecture: amd64 i386 +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: gcc-4.9-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GCC support library (x32 development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: gcc-4.9 +Architecture: any +Section: devel +Priority: optional +Depends: cpp-4.9 (= ${gcc:Version}), gcc-4.9-base (= ${gcc:Version}), + binutils (>= ${binutils:Version}), ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Replaces: gccgo-4.9 (<< ${gcc:Version}) +Suggests: ${gcc:multilib}, gcc-4.9-doc (>= ${gcc:SoftVersion}), + gcc-4.9-locales (>= ${gcc:SoftVersion}), + libgcc1-dbg (>= ${libgcc:Version}), + libgomp1-dbg (>= ${gcc:Version}), + libitm1-dbg (>= ${gcc:Version}), + libatomic1-dbg (>= ${gcc:Version}), + libasan1-dbg (>= ${gcc:Version}), + liblsan0-dbg (>= ${gcc:Version}), + libtsan0-dbg (>= ${gcc:Version}), + libubsan0-dbg (>= ${gcc:Version}), + libcilkrts5-dbg (>= ${gcc:Version}), + libquadmath0-dbg (>= ${gcc:Version}), ${dep:libcloog} +Provides: c-compiler +Description: GNU C compiler + This is the GNU C compiler, a fairly portable optimizing compiler for C. + +Package: gcc-4.9-multilib +Architecture: amd64 armel armhf i386 kfreebsd-amd64 mips mips64 mips64el mipsel mipsn32 mipsn32el powerpc ppc64 s390 s390x sparc sparc64 x32 +Section: devel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), gcc-4.9 (= ${gcc:Version}), ${dep:libcbiarchdev}, ${dep:libgccbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU C compiler (multilib support) + This is the GNU C compiler, a fairly portable optimizing compiler for C. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: gcc-4.9-plugin-dev +Architecture: any +Section: devel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), gcc-4.9 (= ${gcc:Version}), libgmp-dev (>= 2:5.0.1~), ${shlibs:Depends}, ${misc:Depends} +Description: Files for GNU GCC plugin development. + This package contains (header) files for GNU GCC plugin development. It + is only used for the development of GCC plugins, but not needed to run + plugins. + +Package: gcc-4.9-hppa64 +Architecture: hppa +Section: devel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Conflicts: gcc-3.3-hppa64 (<= 1:3.3.4-5), gcc-3.4-hppa64 (<= 3.4.1-3), gcc-4.7-hppa64 (<< 4.7.3-13), gcc-4.8-hppa64 (<< 4.8.2-22) +Description: GNU C compiler (cross compiler for hppa64) + This is the GNU C compiler, a fairly portable optimizing compiler for C. + +Package: cpp-4.9 +Architecture: any +Section: interpreters +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-4.9-locales (>= ${gcc:SoftVersion}) +Replaces: gccgo-4.9 (<< ${gcc:Version}) +Description: GNU C preprocessor + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those who + require the preprocessor but not the compiler. + +Package: cpp-4.9-doc +Architecture: all +Section: doc +Priority: optional +Depends: gcc-4.9-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Description: Documentation for the GNU C preprocessor (cpp) + Documentation for the GNU C preprocessor in info format. + +Package: gcc-4.9-locales +Architecture: all +Section: devel +Priority: optional +Depends: gcc-4.9-base (>= ${gcc:SoftVersion}), cpp-4.9 (>= ${gcc:SoftVersion}), ${misc:Depends} +Recommends: gcc-4.9 (>= ${gcc:SoftVersion}) +Description: GCC, the GNU compiler collection (native language support files) + Native language support for GCC. Lets GCC speak your language, + if translations are available. + . + Please do NOT submit bug reports in other languages than "C". + Always reset your language settings to use the "C" locales. + +Package: g++-4.9 +Architecture: any +Section: devel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), gcc-4.9 (= ${gcc:Version}), libstdc++-4.9-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler, c++abi2-dev +Suggests: ${gxx:multilib}, gcc-4.9-doc (>= ${gcc:SoftVersion}), libstdc++6-4.9-dbg (>= ${gcc:Version}) +Description: GNU C++ compiler + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + +Package: g++-4.9-multilib +Architecture: amd64 armel armhf i386 kfreebsd-amd64 mips mips64 mips64el mipsel mipsn32 mipsn32el powerpc ppc64 s390 s390x sparc sparc64 x32 +Section: devel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), g++-4.9 (= ${gcc:Version}), gcc-4.9-multilib (= ${gcc:Version}), ${dep:libcxxbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: ${dep:libcxxbiarchdbg} +Description: GNU C++ compiler (multilib support) + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: libasan1 +Section: libs +Architecture: any +Provides: libasan1-armel [armel], libasan1-armhf [armhf] +Multi-Arch: same +Pre-Depends: multiarch-support +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: AddressSanitizer -- a fast memory error detector + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libasan1-dbg +Architecture: any +Section: debug +Priority: extra +Depends: gcc-4.9-base (= ${gcc:Version}), libasan1 (= ${gcc:Version}), ${misc:Depends} +Provides: libasan1-dbg-armel [armel], libasan1-dbg-armhf [armhf] +Multi-Arch: same +Description: AddressSanitizer -- a fast memory error detector (debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: lib32asan1 +Section: libs +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +Description: AddressSanitizer -- a fast memory error detector (32bit) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: lib32asan1-dbg +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el +Section: debug +Priority: extra +Depends: gcc-4.9-base (= ${gcc:Version}), lib32asan1 (= ${gcc:Version}), ${misc:Depends} +Description: AddressSanitizer -- a fast memory error detector (32 bit debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: lib64asan1 +Section: libs +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32 +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: AddressSanitizer -- a fast memory error detector (64bit) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: lib64asan1-dbg +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32 +Section: debug +Priority: extra +Depends: gcc-4.9-base (= ${gcc:Version}), lib64asan1 (= ${gcc:Version}), ${misc:Depends} +Description: AddressSanitizer -- a fast memory error detector (64bit debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +#Package: libn32asan`'ASAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: ifdef(`TARGET',`extra',`PRI(extra)') +#Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: AddressSanitizer -- a fast memory error detector (n32) +# AddressSanitizer (ASan) is a fast memory error detector. It finds +# use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +#Package: libn32asan`'ASAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: extra +#Depends: BASEDEP, libdep(asan`'ASAN_SO,n32,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: AddressSanitizer -- a fast memory error detector (n32 debug symbols) +# AddressSanitizer (ASan) is a fast memory error detector. It finds +# use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libx32asan1 +Section: libs +Architecture: amd64 i386 +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: AddressSanitizer -- a fast memory error detector (x32) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libx32asan1-dbg +Architecture: amd64 i386 +Section: debug +Priority: extra +Depends: gcc-4.9-base (= ${gcc:Version}), libx32asan1 (= ${gcc:Version}), ${misc:Depends} +Description: AddressSanitizer -- a fast memory error detector (x32 debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libhfasan1 +Section: libs +Architecture: armel +Priority: extra +Depends: gcc-4.9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: libasan1-armhf [armel] +Description: AddressSanitizer -- a fast memory error detector (hard float ABI) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libhfasan1-dbg +Architecture: armel +Section: debug +Priority: extra +Depends: gcc-4.9-base (= ${gcc:Version}), libhfasan1 (= ${gcc:Version}), ${misc:Depends} +Conflicts: libasan1-armel [armhf] +Description: AddressSanitizer -- a fast memory error detector (hard float ABI debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libsfasan1 +Section: libs +Architecture: armhf +Priority: extra +Depends: gcc-4.9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: AddressSanitizer -- a fast memory error detector (soft float ABI) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libsfasan1-dbg +Architecture: armhf +Section: debug +Priority: extra +Depends: gcc-4.9-base (= ${gcc:Version}), libsfasan1 (= ${gcc:Version}), ${misc:Depends} +Description: AddressSanitizer -- a fast memory error detector (soft float ABI debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: gobjc++-4.9 +Architecture: any +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), gobjc-4.9 (= ${gcc:Version}), g++-4.9 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-4.9-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-4.9-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler +Description: GNU Objective-C++ compiler + This is the GNU Objective-C++ compiler, which compiles + Objective-C++ on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. + +Package: gobjc++-4.9-multilib +Architecture: amd64 armel armhf i386 kfreebsd-amd64 mips mips64 mips64el mipsel mipsn32 mipsn32el powerpc ppc64 s390 s390x sparc sparc64 x32 +Section: devel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), gobjc++-4.9 (= ${gcc:Version}), g++-4.9-multilib (= ${gcc:Version}), gobjc-4.9-multilib (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Objective-C++ compiler (multilib support) + This is the GNU Objective-C++ compiler, which compiles Objective-C++ on + platforms supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: gobjc-4.9 +Architecture: any +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), gcc-4.9 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-4.9-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjc:multilib}, gcc-4.9-doc (>= ${gcc:SoftVersion}), libobjc4-dbg (>= ${gcc:Version}) +Provides: objc-compiler +Description: GNU Objective-C compiler + This is the GNU Objective-C compiler, which compiles + Objective-C on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. + +Package: gobjc-4.9-multilib +Architecture: amd64 armel armhf i386 kfreebsd-amd64 mips mips64 mips64el mipsel mipsn32 mipsn32el powerpc ppc64 s390 s390x sparc sparc64 x32 +Section: devel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), gobjc-4.9 (= ${gcc:Version}), gcc-4.9-multilib (= ${gcc:Version}), ${dep:libobjcbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Objective-C compiler (multilib support) + This is the GNU Objective-C compiler, which compiles Objective-C on platforms + supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: libobjc-4.9-dev +Architecture: any +Section: libdevel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), libgcc-4.9-dev (= ${gcc:Version}), libobjc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Multi-Arch: same +Description: Runtime library for GNU Objective-C applications (development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: lib64objc-4.9-dev +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32 +Section: libdevel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), lib64gcc-4.9-dev (= ${gcc:Version}), lib64objc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (64bit development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: lib32objc-4.9-dev +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el +Section: libdevel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), lib32gcc-4.9-dev (= ${gcc:Version}), lib32objc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (32bit development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: libn32objc-4.9-dev +Architecture: mips mipsel mips64 mips64el +Section: libdevel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), libn32gcc-4.9-dev (= ${gcc:Version}), libn32objc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (n32 development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: libx32objc-4.9-dev +Architecture: amd64 i386 +Section: libdevel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), libx32gcc-4.9-dev (= ${gcc:Version}), libx32objc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (x32 development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: libhfobjc-4.9-dev +Architecture: armel +Section: libdevel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), libhfgcc-4.9-dev (= ${gcc:Version}), libhfobjc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (hard float ABI development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: libsfobjc-4.9-dev +Architecture: armhf +Section: libdevel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), libsfgcc-4.9-dev (= ${gcc:Version}), libsfobjc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (soft float development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: gfortran-4.9 +Architecture: any +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), gcc-4.9 (= ${gcc:Version}), libgfortran-4.9-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Provides: fortran95-compiler, ${fortran:mod-version} +Suggests: ${gfortran:multilib}, gfortran-4.9-doc, libgfortran3-dbg (>= ${gcc:Version}) +Description: GNU Fortran compiler + This is the GNU Fortran compiler, which compiles + Fortran on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. + +Package: gfortran-4.9-multilib +Architecture: amd64 armel armhf i386 kfreebsd-amd64 mips mips64 mips64el mipsel mipsn32 mipsn32el powerpc ppc64 s390 s390x sparc sparc64 x32 +Section: devel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), gfortran-4.9 (= ${gcc:Version}), gcc-4.9-multilib (= ${gcc:Version}), ${dep:libgfortranbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Fortran compiler (multilib support) + This is the GNU Fortran compiler, which compiles Fortran on platforms + supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: gfortran-4.9-doc +Architecture: all +Section: doc +Priority: optional +Depends: gcc-4.9-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Description: Documentation for the GNU Fortran compiler (gfortran) + Documentation for the GNU Fortran compiler in info format. + +Package: libgfortran-4.9-dev +Architecture: any +Section: libdevel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), libgcc-4.9-dev (= ${gcc:Version}), libgfortran3 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Multi-Arch: same +Description: Runtime library for GNU Fortran applications (development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: lib64gfortran-4.9-dev +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32 +Section: libdevel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), lib64gcc-4.9-dev (= ${gcc:Version}), lib64gfortran3 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (64bit development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: lib32gfortran-4.9-dev +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el +Section: libdevel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), lib32gcc-4.9-dev (= ${gcc:Version}), lib32gfortran3 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (32bit development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: libn32gfortran-4.9-dev +Architecture: mips mipsel mips64 mips64el +Section: libdevel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), libn32gcc-4.9-dev (= ${gcc:Version}), libn32gfortran3 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (n32 development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: libx32gfortran-4.9-dev +Architecture: amd64 i386 +Section: libdevel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), libx32gcc-4.9-dev (= ${gcc:Version}), libx32gfortran3 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (x32 development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: libhfgfortran-4.9-dev +Architecture: armel +Section: libdevel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), libhfgcc-4.9-dev (= ${gcc:Version}), libhfgfortran3 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (hard float ABI development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: libsfgfortran-4.9-dev +Architecture: armhf +Section: libdevel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), libsfgcc-4.9-dev (= ${gcc:Version}), libsfgfortran3 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (soft float ABI development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: gccgo-4.9 +Architecture: any +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), gcc-4.9 (= ${gcc:Version}), libgo5 (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Provides: go-compiler +Suggests: ${go:multilib}, gccgo-4.9-doc, libgo5-dbg (>= ${gcc:Version}) +Description: GNU Go compiler + This is the GNU Go compiler, which compiles Go on platforms supported + by the gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gccgo-4.9-multilib +Architecture: amd64 armel armhf i386 kfreebsd-amd64 mips mips64 mips64el mipsel mipsn32 mipsn32el powerpc ppc64 s390 s390x sparc sparc64 x32 +Section: devel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), gccgo-4.9 (= ${gcc:Version}), gcc-4.9-multilib (= ${gcc:Version}), ${dep:libgobiarch}, ${shlibs:Depends}, ${misc:Depends} +Suggests: ${dep:libgobiarchdbg} +Description: GNU Go compiler (multilib support) + This is the GNU Go compiler, which compiles Go on platforms supported + by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: gccgo-4.9-doc +Architecture: all +Section: doc +Priority: optional +Depends: gcc-4.9-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Description: Documentation for the GNU Go compiler (gccgo) + Documentation for the GNU Go compiler in info format. + +Package: libgo5 +Section: libs +Architecture: any +Provides: libgo5-armel [armel], libgo5-armhf [armhf] +Multi-Arch: same +Pre-Depends: multiarch-support +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Replaces: libgo3 +Description: Runtime library for GNU Go applications + Library needed for GNU Go applications linked against the + shared library. + +Package: libgo5-dbg +Section: debug +Architecture: any +Provides: libgo5-dbg-armel [armel], libgo5-dbg-armhf [armhf] +Multi-Arch: same +Priority: extra +Depends: gcc-4.9-base (= ${gcc:Version}), libgo5 (= ${gcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Go applications (debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. + +Package: lib64go5 +Section: libs +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32 +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: lib64go3 +Description: Runtime library for GNU Go applications (64bit) + Library needed for GNU Go applications linked against the + shared library. + +Package: lib64go5-dbg +Section: debug +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32 +Priority: extra +Depends: gcc-4.9-base (= ${gcc:Version}), lib64go5 (= ${gcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Go applications (64bit debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. + +Package: lib32go5 +Section: libs +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +Replaces: lib32go3 +Description: Runtime library for GNU Go applications (32bit) + Library needed for GNU Go applications linked against the + shared library. + +Package: lib32go5-dbg +Section: debug +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el +Priority: extra +Depends: gcc-4.9-base (= ${gcc:Version}), lib32go5 (= ${gcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Go applications (32 bit debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. + +Package: libn32go5 +Section: libs +Architecture: mips mipsel mips64 mips64el +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libn32go3 +Description: Runtime library for GNU Go applications (n32) + Library needed for GNU Go applications linked against the + shared library. + +Package: libn32go5-dbg +Section: debug +Architecture: mips mipsel mips64 mips64el +Priority: extra +Depends: gcc-4.9-base (= ${gcc:Version}), libn32go5 (= ${gcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Go applications (n32 debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. + +Package: libx32go5 +Section: libs +Architecture: amd64 i386 +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libx32go3 +Description: Runtime library for GNU Go applications (x32) + Library needed for GNU Go applications linked against the + shared library. + +Package: libx32go5-dbg +Section: debug +Architecture: amd64 i386 +Priority: extra +Depends: gcc-4.9-base (= ${gcc:Version}), libx32go5 (= ${gcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Go applications (x32 debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. + +Package: gcj-4.9 +Section: java +Architecture: any +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), ${dep:gcj}, ${dep:gcjcross}, ${dep:libcdev}, ${dep:ecj}, ${shlibs:Depends}, dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Recommends: libecj-java-gcj +Description: GCJ byte code and native compiler for Java(TM) + GCJ is a front end to the GCC compiler which can natively compile both + Java(tm) source and bytecode files. The compiler can also generate class + files. + +Package: gcj-4.9-jdk +Section: java +Architecture: any +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), ${dep:gcj}, ${dep:libcdev}, gcj-4.9 (= ${gcj:Version}), gcj-4.9-jre (= ${gcj:Version}), libgcj15-dev (= ${gcj:Version}), fastjar, libgcj-bc, java-common, libantlr-java, ${shlibs:Depends}, dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Recommends: libecj-java-gcj +Suggests: gcj-4.9-source (>= ${gcj:SoftVersion}), libgcj15-dbg (>= ${gcc:Version}) +Provides: java-compiler, java-sdk, java2-sdk, java5-sdk +Conflicts: gcj-4.4, cpp-4.1 (<< 4.1.1), gcc-4.1 (<< 4.1.1) +Replaces: libgcj11 (<< 4.5-20100101-1) +Description: GCJ and Classpath development tools for Java(TM) + GCJ is a front end to the GCC compiler which can natively compile both + Java(tm) source and bytecode files. The compiler can also generate class + files. Other java development tools from classpath are included in this + package. + . + The package contains as well a collection of wrapper scripts and symlinks. + It is meant to provide a Java-SDK-like interface to the GCJ tool set. + +Package: gcj-4.9-jre-headless +Priority: optional +Section: java +Architecture: any +Depends: gcc-4.9-base (= ${gcc:Version}), gcj-4.9-jre-lib (>= ${gcj:SoftVersion}), libgcj15 (= ${gcj:Version}), ${dep:prctl}, ${shlibs:Depends}, ${misc:Depends} +Suggests: fastjar, gcj-4.9-jdk (= ${gcj:Version}), libgcj15-awt (= ${gcj:Version}) +Provides: java5-runtime-headless, java2-runtime-headless, java1-runtime-headless, java-runtime-headless +Description: Java runtime environment using GIJ/Classpath (headless version) + GIJ is a Java bytecode interpreter, not limited to interpreting bytecode. + It includes a class loader which can dynamically load shared objects, so + it is possible to give it the name of a class which has been compiled and + put into a shared library on the class path. + . + The package contains as well a collection of wrapper scripts and symlinks. + It is meant to provide a Java-RTE-like interface to the GIJ/GCJ tool set, + limited to the headless tools and libraries. + +Package: gcj-4.9-jre +Section: java +Architecture: any +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), gcj-4.9-jre-headless (= ${gcj:Version}), libgcj15-awt (= ${gcj:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: java5-runtime, java2-runtime, java1-runtime, java-runtime +Description: Java runtime environment using GIJ/Classpath + GIJ is a Java bytecode interpreter, not limited to interpreting bytecode. + It includes a class loader which can dynamically load shared objects, so + it is possible to give it the name of a class which has been compiled and + put into a shared library on the class path. + . + The package contains as well a collection of wrapper scripts and symlinks. + It is meant to provide a Java-RTE-like interface to the GIJ/GCJ tool set. + +Package: libgcj15 +Section: libs +Architecture: any +Priority: optional +Pre-Depends: multiarch-support +Multi-Arch: same +Depends: gcc-4.9-base (>= ${gcc:SoftVersion}), libgcj-common (>= 1:4.1.1-21), ${shlibs:Depends}, ${misc:Depends} +Recommends: gcj-4.9-jre-lib (>= ${gcj:SoftVersion}) +Suggests: libgcj15-dbg (>= ${gcc:Version}), libgcj15-awt (= ${gcj:Version}) +Description: Java runtime library for use with gcj + This is the runtime that goes along with the gcj front end to + gcc. libgcj includes parts of the Java Class Libraries, plus glue to + connect the libraries to the compiler and the underlying OS. + . + To show file names and line numbers in stack traces, the packages + libgcj15-dbg and binutils are required. + +Package: gcj-4.9-jre-lib +Section: java +Architecture: all +Priority: optional +Depends: gcc-4.9-base (>= ${gcc:SoftVersion}), libgcj15 (>= ${gcj:SoftVersion}), ${misc:Depends} +Description: Java runtime library for use with gcj (jar files) + This is the jar file that goes along with the gcj front end to gcc. + +Package: libgcj15-awt +Section: libs +Architecture: any +Priority: optional +Pre-Depends: multiarch-support +Multi-Arch: same +Depends: gcc-4.9-base (>= ${gcc:SoftVersion}), libgcj15 (= ${gcj:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: ${pkg:gcjqt} +Description: AWT peer runtime libraries for use with gcj + These are runtime libraries holding the AWT peer implementations + for libgcj (currently the GTK+ based peer library is required, the + QT bases library is not built). + +Package: libgcj15-dev +Section: libdevel +Architecture: any +Multi-Arch: same +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), libgcj15-awt (= ${gcj:Version}), libgcj-bc, ${pkg:gcjgtk}, ${pkg:gcjqt}, zlib1g-dev, ${shlibs:Depends}, ${misc:Depends} +Suggests: libgcj-doc +Description: Java development headers for use with gcj + These are the development headers that go along with the gcj front end + to gcc. libgcj includes parts of the Java Class Libraries, plus glue + to connect the libraries to the compiler and the underlying OS. + +Package: libgcj15-dbg +Section: debug +Architecture: any +Priority: extra +Pre-Depends: multiarch-support +Multi-Arch: same +Depends: gcc-4.9-base (= ${gcc:Version}), libgcj15 (= ${gcj:Version}), ${misc:Depends} +Recommends: binutils, libc6-dbg | libc-dbg +Description: Debugging symbols for libraries provided in libgcj15-dev + The package provides debugging symbols for the libraries provided + in libgcj15-dev. + . + binutils is required to show file names and line numbers in stack traces. + +Package: gcj-4.9-source +Section: java +Architecture: all +Priority: optional +Depends: gcc-4.9-base (>= ${gcc:SoftVersion}), gcj-4.9-jdk (>= ${gcj:SoftVersion}), ${misc:Depends} +Description: GCJ java sources for use in IDEs like eclipse and netbeans + These are the java source files packaged as a zip file for use in development + environments like eclipse and netbeans. + +Package: libgcj-doc +Section: doc +Architecture: all +Priority: optional +Depends: gcc-4.9-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Enhances: libgcj15-dev +Provides: classpath-doc +Description: libgcj API documentation and example programs + Autogenerated documentation describing the API of the libgcj library. + Sources and precompiled example programs from the Classpath library. + +Package: libstdc++-4.9-dev +Architecture: any +Multi-Arch: same +Section: libdevel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), libgcc-4.9-dev (= ${gcc:Version}), + libstdc++6 (>= ${gcc:Version}), ${dep:libcdev}, ${misc:Depends} +Conflicts: libg++27-dev, libg++272-dev (<< 2.7.2.8-1), libstdc++2.8-dev, + libg++2.8-dev, libstdc++2.9-dev, libstdc++2.9-glibc2.1-dev, + libstdc++2.10-dev (<< 1:2.95.3-2), libstdc++3.0-dev +Suggests: libstdc++-4.9-doc +Provides: libstdc++-dev +Description: GNU Standard C++ Library v3 (development files) + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: libstdc++-4.9-pic +Architecture: any +Multi-Arch: same +Section: libdevel +Priority: extra +Depends: gcc-4.9-base (= ${gcc:Version}), libstdc++6 (>= ${gcc:Version}), + libstdc++-4.9-dev (= ${gcc:Version}), ${misc:Depends} +Description: GNU Standard C++ Library v3 (shared library subset kit) + This is used to develop subsets of the libstdc++ shared libraries for + use on custom installation floppies and in embedded systems. + . + Unless you are making one of those, you will not need this package. + +Package: libstdc++6-4.9-dbg +Architecture: any +Section: debug +Priority: extra +Depends: gcc-4.9-base (= ${gcc:Version}), libstdc++6 (>= ${gcc:Version}), + libgcc1-dbg (>= ${libgcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: libstdc++6-4.9-dbg-armel [armel], libstdc++6-4.9-dbg-armhf [armhf] +Multi-Arch: same +Recommends: libstdc++-4.9-dev (= ${gcc:Version}) +Conflicts: libstdc++5-dbg, libstdc++5-3.3-dbg, libstdc++6-dbg, + libstdc++6-4.0-dbg, libstdc++6-4.1-dbg, libstdc++6-4.2-dbg, + libstdc++6-4.3-dbg, libstdc++6-4.4-dbg, libstdc++6-4.5-dbg, + libstdc++6-4.6-dbg, libstdc++6-4.7-dbg, libstdc++6-4.8-dbg +Description: GNU Standard C++ Library v3 (debugging files) + This package contains the shared library of libstdc++ compiled with + debugging symbols. + +Package: lib32stdc++-4.9-dev +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el +Section: libdevel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), lib32gcc-4.9-dev (= ${gcc:Version}), + lib32stdc++6 (>= ${gcc:Version}), libstdc++-4.9-dev (= ${gcc:Version}), ${misc:Depends} +Description: GNU Standard C++ Library v3 (development files) + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: lib32stdc++6-4.9-dbg +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el +Section: debug +Priority: extra +Depends: gcc-4.9-base (= ${gcc:Version}), lib32stdc++6 (>= ${gcc:Version}), + libstdc++-4.9-dev (= ${gcc:Version}), lib32gcc1-dbg (>= ${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +Conflicts: lib32stdc++6-dbg, lib32stdc++6-4.0-dbg, + lib32stdc++6-4.1-dbg, lib32stdc++6-4.2-dbg, lib32stdc++6-4.3-dbg, + lib32stdc++6-4.4-dbg, lib32stdc++6-4.5-dbg, lib32stdc++6-4.6-dbg, + lib32stdc++6-4.7-dbg, lib32stdc++6-4.8-dbg +Description: GNU Standard C++ Library v3 (debugging files) + This package contains the shared library of libstdc++ compiled with + debugging symbols. + +Package: lib64stdc++-4.9-dev +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32 +Section: libdevel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), lib64gcc-4.9-dev (= ${gcc:Version}), + lib64stdc++6 (>= ${gcc:Version}), libstdc++-4.9-dev (= ${gcc:Version}), ${misc:Depends} +Description: GNU Standard C++ Library v3 (development files) + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: lib64stdc++6-4.9-dbg +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32 +Section: debug +Priority: extra +Depends: gcc-4.9-base (= ${gcc:Version}), lib64stdc++6 (>= ${gcc:Version}), + libstdc++-4.9-dev (= ${gcc:Version}), lib64gcc1-dbg (>= ${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +Conflicts: lib64stdc++6-dbg, lib64stdc++6-4.0-dbg, + lib64stdc++6-4.1-dbg, lib64stdc++6-4.2-dbg, lib64stdc++6-4.3-dbg, + lib64stdc++6-4.4-dbg, lib64stdc++6-4.5-dbg, lib64stdc++6-4.6-dbg, + lib64stdc++6-4.7-dbg, lib64stdc++6-4.8-dbg +Description: GNU Standard C++ Library v3 (debugging files) + This package contains the shared library of libstdc++ compiled with + debugging symbols. + +Package: libn32stdc++-4.9-dev +Architecture: mips mipsel mips64 mips64el +Section: libdevel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), libn32gcc-4.9-dev (= ${gcc:Version}), + libn32stdc++6 (>= ${gcc:Version}), libstdc++-4.9-dev (= ${gcc:Version}), ${misc:Depends} +Description: GNU Standard C++ Library v3 (development files) + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: libn32stdc++6-4.9-dbg +Architecture: mips mipsel mips64 mips64el +Section: debug +Priority: extra +Depends: gcc-4.9-base (= ${gcc:Version}), libn32stdc++6 (>= ${gcc:Version}), + libstdc++-4.9-dev (= ${gcc:Version}), libn32gcc1-dbg (>= ${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +Conflicts: libn32stdc++6-dbg, libn32stdc++6-4.0-dbg, + libn32stdc++6-4.1-dbg, libn32stdc++6-4.2-dbg, libn32stdc++6-4.3-dbg, + libn32stdc++6-4.4-dbg, libn32stdc++6-4.5-dbg, libn32stdc++6-4.6-dbg, + libn32stdc++6-4.7-dbg, libn32stdc++6-4.8-dbg +Description: GNU Standard C++ Library v3 (debugging files) + This package contains the shared library of libstdc++ compiled with + debugging symbols. + +Package: libx32stdc++-4.9-dev +Architecture: amd64 i386 +Section: libdevel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), libx32gcc-4.9-dev (= ${gcc:Version}), libx32stdc++6 (>= ${gcc:Version}), + libstdc++-4.9-dev (= ${gcc:Version}), ${misc:Depends} +Description: GNU Standard C++ Library v3 (development files) + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: libx32stdc++6-4.9-dbg +Architecture: amd64 i386 +Section: debug +Priority: extra +Depends: gcc-4.9-base (= ${gcc:Version}), libx32stdc++6 (>= ${gcc:Version}), + libstdc++-4.9-dev (= ${gcc:Version}), libx32gcc1-dbg (>= ${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +Conflicts: libx32stdc++6-dbg, libx32stdc++6-4.6-dbg, + libx32stdc++6-4.7-dbg, libx32stdc++6-4.8-dbg +Description: GNU Standard C++ Library v3 (debugging files) + This package contains the shared library of libstdc++ compiled with + debugging symbols. + +Package: libhfstdc++-4.9-dev +Architecture: armel +Section: libdevel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), libhfgcc-4.9-dev (= ${gcc:Version}), + libhfstdc++6 (>= ${gcc:Version}), libstdc++-4.9-dev (= ${gcc:Version}), ${misc:Depends} +Description: GNU Standard C++ Library v3 (development files) + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: libhfstdc++6-4.9-dbg +Architecture: armel +Section: debug +Priority: extra +Depends: gcc-4.9-base (= ${gcc:Version}), libhfstdc++6 (>= ${gcc:Version}), + libstdc++-4.9-dev (= ${gcc:Version}), libhfgcc1-dbg (>= ${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +Conflicts: libhfstdc++6-dbg, libhfstdc++6-4.3-dbg, libhfstdc++6-4.4-dbg, libhfstdc++6-4.5-dbg, libhfstdc++6-4.6-dbg, libhfstdc++6-4.7-dbg, libhfstdc++6-4.8-dbg, libstdc++6-armhf [armel] +Description: GNU Standard C++ Library v3 (debugging files) + This package contains the shared library of libstdc++ compiled with + debugging symbols. + +Package: libsfstdc++-4.9-dev +Architecture: armhf +Section: libdevel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), libsfgcc-4.9-dev (= ${gcc:Version}), + libsfstdc++6 (>= ${gcc:Version}), libstdc++-4.9-dev (= ${gcc:Version}), ${misc:Depends} +Description: GNU Standard C++ Library v3 (development files) + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: libsfstdc++6-4.9-dbg +Architecture: armhf +Section: debug +Priority: extra +Depends: gcc-4.9-base (= ${gcc:Version}), libsfstdc++6 (>= ${gcc:Version}), + libstdc++-4.9-dev (= ${gcc:Version}), libsfgcc1-dbg (>= ${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +Conflicts: libsfstdc++6-dbg, libsfstdc++6-4.3-dbg, libsfstdc++6-4.4-dbg, libsfstdc++6-4.5-dbg, libsfstdc++6-4.6-dbg, libsfstdc++6-4.7-dbg, libsfstdc++6-4.8-dbg, libstdc++6-armel [armhf] +Description: GNU Standard C++ Library v3 (debugging files) + This package contains the shared library of libstdc++ compiled with + debugging symbols. + +Package: libstdc++-4.9-doc +Architecture: all +Section: doc +Priority: optional +Depends: gcc-4.9-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Conflicts: libstdc++5-doc, libstdc++5-3.3-doc, libstdc++6-doc, + libstdc++6-4.0-doc, libstdc++6-4.1-doc, libstdc++6-4.2-doc, libstdc++6-4.3-doc, + libstdc++6-4.4-doc, libstdc++6-4.5-doc, libstdc++6-4.6-doc, libstdc++6-4.7-doc, + libstdc++-4.8-doc +Description: GNU Standard C++ Library v3 (documentation files) + This package contains documentation files for the GNU stdc++ library. + . + One set is the distribution documentation, the other set is the + source documentation including a namespace list, class hierarchy, + alphabetical list, compound list, file list, namespace members, + compound members and file members. + +Package: gdc-4.9 +Architecture: any +Priority: optional +Depends: gcc-4.9-base (>= ${gcc:SoftVersion}), g++-4.9 (>= ${gcc:SoftVersion}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Provides: gdc, d-compiler, d-v2-compiler +Replaces: gdc (<< 4.4.6-5) +Description: GNU D compiler (version 2), based on the GCC backend + This is the GNU D compiler, which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: libphobos-4.9-dev +Architecture: amd64 armel armhf i386 x32 kfreebsd-amd64 kfreebsd-i386 +Section: libdevel +Priority: optional +Depends: gcc-4.9-base (= ${gcc:Version}), zlib1g-dev, ${shlibs:Depends}, ${misc:Depends} +Description: Phobos D standard library + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +#Package: libphobos`'PHOBOS_V`'PV`'TS-dbg +#Section: debug +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`libphobos_archs') +#Priority: extra +#Depends: BASEDEP, libphobos`'PHOBOS_V`'PV-dev (= ${gdc:Version}), ${misc:Depends} +#Provides: libphobos`'PHOBOS_V`'TS-dbg +#BUILT_USING`'dnl +#Description: The Phobos D standard library (debug symbols) +# This is the Phobos standard library that comes with the D2 compiler. +# . +# For more information check http://www.dlang.org/phobos/ + +#Package: gcc`'PV-soft-float +#Architecture: arm armel armhf +#Priority: PRI(optional) +#Depends: BASEDEP, depifenabled(`cdev',`gcc`'PV (= ${gcc:Version}),') ${shlibs:Depends}, ${misc:Depends} +#Conflicts: gcc-4.4-soft-float, gcc-4.5-soft-float, gcc-4.6-soft-float +#BUILT_USING`'dnl +#Description: GCC soft-floating-point gcc libraries (ARM) +# These are versions of basic static libraries such as libgcc.a compiled +# with the -msoft-float option, for CPUs without a floating-point unit. + +Package: gcc-4.9-doc +Architecture: all +Section: doc +Priority: optional +Depends: gcc-4.9-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Conflicts: gcc-docs (<< 2.95.2) +Replaces: gcc (<=2.7.2.3-4.3), gcc-docs (<< 2.95.2) +Description: Documentation for the GNU compilers (gcc, gobjc, g++) + Documentation for the GNU compilers in info format. + +Package: gcc-4.9-source +Architecture: all +Priority: optional +Depends: make, autoconf2.64, quilt, patchutils, gawk, ${misc:Depends} +Description: Source of the GNU Compiler Collection + This package contains the sources and patches which are needed to + build the GNU Compiler Collection (GCC). --- gcc-4.9-4.9.2.orig/debian/control.m4 +++ gcc-4.9-4.9.2/debian/control.m4 @@ -0,0 +1,4886 @@ +divert(-1) + +define(`checkdef',`ifdef($1, , `errprint(`error: undefined macro $1 +')m4exit(1)')') +define(`errexit',`errprint(`error: undefined macro `$1' +')m4exit(1)') + +dnl The following macros must be defined, when called: +dnl ifdef(`SRCNAME', , errexit(`SRCNAME')) +dnl ifdef(`PV', , errexit(`PV')) +dnl ifdef(`ARCH', , errexit(`ARCH')) + +dnl The architecture will also be defined (-D__i386__, -D__powerpc__, etc.) + +define(`PN', `$1') +ifdef(`PRI', `', ` + define(`PRI', `$1') +') +define(`MAINTAINER', `Debian GCC Maintainers ') + +define(`depifenabled', `ifelse(index(enabled_languages, `$1'), -1, `', `$2')') +define(`ifenabled', `ifelse(index(enabled_languages, `$1'), -1, `dnl', `$2')') + +ifdef(`TARGET',`ifdef(`CROSS_ARCH',`',`undefine(`MULTIARCH')')') +define(`CROSS_ARCH',`all') +define(`libdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`>=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))') +define(`libdevdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))') +define(`libdbgdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`>=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))') + +define(`BUILT_USING', ifelse(add_built_using,yes,`Built-Using: ${Built-Using} +')) + +divert`'dnl +dnl -------------------------------------------------------------------------- +Source: SRCNAME +Section: devel +Priority: PRI(optional) +ifelse(DIST,`Ubuntu',`dnl +ifelse(regexp(SRCNAME, `gnat\|gdc-'),0,`dnl +Maintainer: Ubuntu MOTU Developers +', `dnl +Maintainer: Ubuntu Core developers +')dnl SRCNAME +XSBC-Original-Maintainer: MAINTAINER +', `dnl +Maintainer: MAINTAINER +')dnl DIST +ifelse(regexp(SRCNAME, `gnat'),0,`dnl +Uploaders: Ludovic Brenta +', regexp(SRCNAME, `gdc'),0,`dnl +Uploaders: Iain Buclaw , Matthias Klose +', `dnl +Uploaders: Matthias Klose +')dnl SRCNAME +Standards-Version: 3.9.6 +ifdef(`TARGET',`dnl cross +Build-Depends: debhelper (>= 5.0.62), DPKG_BUILD_DEP + LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP + kfreebsd-kernel-headers (>= 0.84) [kfreebsd-any], + LIBUNWIND_BUILD_DEP LIBATOMIC_OPS_BUILD_DEP AUTO_BUILD_DEP + SOURCE_BUILD_DEP CROSS_BUILD_DEP + CLOOG_BUILD_DEP MPC_BUILD_DEP MPFR_BUILD_DEP GMP_BUILD_DEP, + autogen, zlib1g-dev, gawk, lzma, xz-utils, patchutils, + zlib1g-dev, SDT_BUILD_DEP + bison (>= 1:2.3), flex, realpath (>= 1.9.12), lsb-release, quilt +',`dnl native +Build-Depends: debhelper (>= 5.0.62), DPKG_BUILD_DEP + GCC_MULTILIB_BUILD_DEP + LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP LIBC_DBG_DEP + kfreebsd-kernel-headers (>= 0.84) [kfreebsd-any], + AUTO_BUILD_DEP BASE_BUILD_DEP + libunwind7-dev (>= 0.98.5-6) [ia64], libatomic-ops-dev [ia64], + autogen, gawk, lzma, xz-utils, patchutils, + zlib1g-dev, SDT_BUILD_DEP + BINUTILS_BUILD_DEP, binutils-hppa64 (>= BINUTILSBDV) [hppa], + gperf (>= 3.0.1), bison (>= 1:2.3), flex, gettext, + gdb, + texinfo (>= 4.3), locales, sharutils, + procps, FORTRAN_BUILD_DEP JAVA_BUILD_DEP GNAT_BUILD_DEP GO_BUILD_DEP GDC_BUILD_DEP + CLOOG_BUILD_DEP MPC_BUILD_DEP MPFR_BUILD_DEP GMP_BUILD_DEP + CHECK_BUILD_DEP realpath (>= 1.9.12), chrpath, lsb-release, quilt +Build-Depends-Indep: LIBSTDCXX_BUILD_INDEP JAVA_BUILD_INDEP +')dnl +ifelse(regexp(SRCNAME, `gnat'),0,`dnl +Homepage: http://gcc.gnu.org/ +', regexp(SRCNAME, `gdc'),0,`dnl +Homepage: http://gdcproject.org/ +', `dnl +Homepage: http://gcc.gnu.org/ +')dnl SRCNAME +Vcs-Browser: http://svn.debian.org/viewsvn/gcccvs/branches/sid/gcc`'PV/ +Vcs-Svn: svn://anonscm.debian.org/gcccvs/branches/sid/gcc`'PV + +ifelse(regexp(SRCNAME, `gcc-snapshot'),0,`dnl +Package: gcc-snapshot`'TS +Architecture: any +Section: devel +Priority: extra +Depends: binutils`'TS (>= ${binutils:Version}), ${dep:libcbiarchdev}, ${dep:libcdev}, ${dep:libunwinddev}, ${snap:depends}, ${shlibs:Depends}, ${dep:ecj}, python, ${misc:Depends} +Recommends: ${snap:recommends} +Suggests: ${dep:gold} +Provides: c++-compiler`'TS`'ifdef(`TARGET',`',`, c++abi2-dev') +BUILT_USING`'dnl +Description: A SNAPSHOT of the GNU Compiler Collection + This package contains a recent development SNAPSHOT of all files + contained in the GNU Compiler Collection (GCC). + . + The source code for this package has been exported from SVN trunk. + . + DO NOT USE THIS SNAPSHOT FOR BUILDING DEBIAN PACKAGES! + . + This package will NEVER hit the testing distribution. It is used for + tracking gcc bugs submitted to the Debian BTS in recent development + versions of gcc. +',`dnl gcc-X.Y + +dnl default base package dependencies +define(`BASETARGET', `') +define(`BASEDEP', `gcc`'PV-base (= ${gcc:Version})') +define(`SOFTBASEDEP', `gcc`'PV-base (>= ${gcc:SoftVersion})') + +dnl base, when building libgcc out of the gcj source; needed if new symbols +dnl in libgcc are used in libgcj. +ifelse(index(SRCNAME, `gcj'), 0, ` +define(`BASEDEP', `gcj`'PV-base (= ${gcj:Version})') +define(`SOFTBASEDEP', `gcj`'PV-base (>= ${gcj:SoftVersion})') +') + +ifelse(index(SRCNAME, `gnat'), 0, ` +define(`BASEDEP', `gnat`'PV-base (= ${gnat:Version})') +define(`SOFTBASEDEP', `gnat`'PV-base (>= ${gnat:SoftVersion})') +') + +ifenabled(`gccbase',` +Package: gcc`'PV-base +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Multi-Arch: same +Section: libs +Priority: PRI(required) +Depends: ${misc:Depends} +Replaces: ${base:Replaces} +Breaks: gcc-4.4-base (<< 4.4.7), gcc-4.7-base (<< 4.7.3), gcj-4.4-base (<< 4.4.6-9~), gnat-4.4-base (<< 4.4.6-3~), gcj-4.6-base (<< 4.6.1-4~), gnat-4.6-base (<< 4.6.4), dehydra (<= 0.9.hg20110609-2) +BUILT_USING`'dnl +Description: GCC, the GNU Compiler Collection (base package) + This package contains files common to all languages and libraries + contained in the GNU Compiler Collection (GCC). +ifdef(`BASE_ONLY', `dnl + . + This version of GCC is not yet available for this architecture. + Please use the compilers from the gcc-snapshot package for testing. +')`'dnl +')`'dnl gccbase + +ifenabled(`gccxbase',` +dnl override default base package dependencies to cross version +dnl This creates a toolchain that doesnt depend on the system -base packages +define(`BASETARGET', `PV`'TS') +define(`BASEDEP', `gcc`'BASETARGET-base (= ${gcc:Version})') +define(`SOFTBASEDEP', `gcc`'BASETARGET-base (>= ${gcc:SoftVersion})') + +Package: gcc`'BASETARGET-base +Architecture: any +Section: devel +Priority: PRI(extra) +Depends: ${misc:Depends} +BUILT_USING`'dnl +Description: GCC, the GNU Compiler Collection (base package) + This package contains files common to all languages and libraries + contained in the GNU Compiler Collection (GCC). +')`'dnl + +ifenabled(`java',` +ifdef(`TARGET', `', ` +ifenabled(`gcjbase',` +Package: gcj`'PV-base +Architecture: any +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Section: libs +Priority: PRI(optional) +Depends: ${misc:Depends} +BUILT_USING`'dnl +Description: GCC, the GNU Compiler Collection (gcj base package) + This package contains files common to all java related packages + built from the GNU Compiler Collection (GCC). +')`'dnl gccbase +')`'dnl native + +ifenabled(`gcjxbase',` +dnl override default base package dependencies to cross version +dnl This creates a toolchain that doesnt depend on the system -base packages +define(`BASETARGET', `PV`'TS') +define(`BASEDEP', `gcj`'BASETARGET-base (= ${gcc:Version})') +define(`SOFTBASEDEP', `gcj`'BASETARGET-base (>= ${gcc:SoftVersion})') + +Package: gcj`'BASETARGET-base +Architecture: any +Section: devel +Priority: PRI(extra) +Depends: ${misc:Depends} +BUILT_USING`'dnl +Description: GCC, the GNU Compiler Collection (gcj base package) + This package contains files common to all java related packages + built from the GNU Compiler Collection (GCC). +')`'dnl +')`'dnl java + +ifenabled(`ada',` +Package: gnat`'PV-base`'TS +Architecture: any +# "all" causes build instabilities for "any" dependencies (see #748388). +Section: libs +Priority: PRI(optional) +Depends: ${misc:Depends} +Breaks: gcc-4.6 (<< 4.6.1-8~) +BUILT_USING`'dnl +Description: GNU Ada compiler (common files) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package contains files common to all GNAT related packages. +')`'dnl ada + +ifenabled(`libgcc',` +Package: libgcc1`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',required) +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +Provides: ifdef(`TARGET',`libgcc1-TARGET-dcv1',`libgcc1-armel [armel], libgcc1-armhf [armhf]') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +Breaks: ${multiarch:breaks} +')`'dnl +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `') + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libgcc1-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(gcc1,,=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libgcc1-dbg-armel [armel], libgcc1-dbg-armhf [armhf] +')dnl +ifdef(`MULTIARCH',`Multi-Arch: same +')dnl +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libgcc2`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`m68k') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',required) +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libgcc2-TARGET-dcv1 +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +Breaks: ${multiarch:breaks} +')`'dnl +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `') + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libgcc2-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`m68k') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(gcc2,,=,${gcc:Version}), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libgcc + +ifenabled(`cdev',` +Package: libgcc`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: BASEDEP, ${dep:libgcc}, ${dep:libssp}, ${dep:libgomp}, ${dep:libitm}, + ${dep:libatomic}, ${dep:libbtrace}, ${dep:libasan}, ${dep:liblsan}, + ${dep:libtsan}, ${dep:libubsan}, ${dep:libcilkrts}, ${dep:libvtv}, + ${dep:libqmath}, ${dep:libunwinddev}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Replaces: gccgo-4.9 (<< ${gcc:Version}) +BUILT_USING`'dnl +Description: GCC support library (development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl libgcc + +ifenabled(`lib4gcc',` +Package: libgcc4`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`hppa') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +Breaks: ${multiarch:breaks} +')`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',required) +Depends: ifdef(`STANDALONEJAVA',`gcj`'PV-base (>= ${gcj:Version})',`BASEDEP'), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `') + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libgcc4-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`hppa') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Section: debug +Priority: extra +Depends: BASEDEP, libdep(gcc4,,=,${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl lib4gcc + +ifenabled(`lib64gcc',` +Package: lib64gcc1`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${dep:libcbiarch}, ${misc:Depends} +ifdef(`TARGET',`Provides: lib64gcc1-TARGET-dcv1 +',`')`'dnl +Conflicts: libdep(gcc`'GCC_SO,,<=,1:3.3-0pre9) +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `') (64bit) + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: lib64gcc1-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(gcc1,64,=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl lib64gcc + +ifenabled(`cdev',` +Package: lib64gcc`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: BASEDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (64bit development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl cdev + +ifenabled(`lib32gcc',` +Package: lib32gcc1`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: optional +Depends: BASEDEP, ${dep:libcbiarch}, ${misc:Depends} +Conflicts: ${confl:lib32} +ifdef(`TARGET',`Provides: lib32gcc1-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GCC support library (32 bit Version) + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: lib32gcc1-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(gcc1,32,=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl lib32gcc1 + +ifenabled(`cdev',` +Package: lib32gcc`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: BASEDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (32 bit development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl cdev + +ifenabled(`libneongcc',` +Package: libgcc1-neon`'LS +Architecture: NEON_ARCHS +Section: libs +Priority: extra +Depends: BASEDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library [neon optimized] + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneongcc1 + +ifenabled(`libhfgcc',` +Package: libhfgcc1`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${dep:libcbiarch}, ${misc:Depends} +ifdef(`TARGET',`Provides: libhfgcc1-TARGET-dcv1 +',`Conflicts: libgcc1-armhf [biarchhf_archs] +')`'dnl +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `') (hard float ABI) + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libhfgcc1-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(gcc1,hf,=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgcc1-dbg-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libhfgcc + +ifenabled(`cdev',` +ifenabled(`armml',` +Package: libhfgcc`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: BASEDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (hard float ABI development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl armml +')`'dnl cdev + +ifenabled(`libsfgcc',` +Package: libsfgcc1`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${dep:libcbiarch}, ${misc:Depends} +ifdef(`TARGET',`Provides: libsfgcc1-TARGET-dcv1 +',`Conflicts: libgcc1-armel [biarchsf_archs] +')`'dnl +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `') (soft float ABI) + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libsfgcc1-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(gcc1,sf,=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgcc1-dbg-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libsfgcc + +ifenabled(`cdev',` +ifenabled(`armml',` +Package: libsfgcc`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: BASEDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (soft float ABI development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl armml +')`'dnl cdev + +ifenabled(`libn32gcc',` +Package: libn32gcc1`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${dep:libcbiarch}, ${misc:Depends} +Conflicts: libdep(gcc`'GCC_SO,,<=,1:3.3-0pre9) +ifdef(`TARGET',`Provides: libn32gcc1-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `') (n32) + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libn32gcc1-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(gcc1,n32,=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libn32gcc + +ifenabled(`cdev',` +Package: libn32gcc`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: BASEDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (n32 development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl cdev + +ifenabled(`libx32gcc',` +Package: libx32gcc1`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${dep:libcbiarch}, ${misc:Depends} +ifdef(`TARGET',`Provides: libx32gcc1-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `') (x32) + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libx32gcc1-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(gcc1,x32,=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libx32gcc + +ifenabled(`cdev',` +ifenabled(`x32dev',` +Package: libx32gcc`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: BASEDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (x32 development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl x32dev +')`'dnl cdev + +ifdef(`TARGET', `', ` +ifenabled(`libgmath',` +Package: libgccmath`'GCCMATH_SO`'LS +Architecture: i386 +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +')`'dnl +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC math support library + Support library for GCC. + +Package: lib32gccmath`'GCCMATH_SO`'LS +Architecture: amd64 +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC math support library (32bit) + Support library for GCC. + +Package: lib64gccmath`'GCCMATH_SO`'LS +Architecture: i386 +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC math support library (64bit) + Support library for GCC. +')`'dnl +')`'dnl native + +ifenabled(`cdev',` +Package: gcc`'PV`'TS +Architecture: any +Section: devel +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: cpp`'PV`'TS (= ${gcc:Version}),ifenabled(`gccbase',` BASEDEP,') + binutils`'TS (>= ${binutils:Version}), ifenabled(`gccxbase',` BASEDEP,') + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Replaces: gccgo-4.9 (<< ${gcc:Version}) +Suggests: ${gcc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), + gcc`'PV-locales (>= ${gcc:SoftVersion}), + libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}), + libdbgdep(gomp`'GOMP_SO-dbg,), + libdbgdep(itm`'ITM_SO-dbg,), + libdbgdep(atomic`'ATOMIC_SO-dbg,), + libdbgdep(asan`'ASAN_SO-dbg,), + libdbgdep(lsan`'LSAN_SO-dbg,), + libdbgdep(tsan`'TSAN_SO-dbg,), + libdbgdep(ubsan`'UBSAN_SO-dbg,), +ifenabled(`libvtv',`',` + libdbgdep(vtv`'VTV_SO-dbg,), +')`'dnl + libdbgdep(cilkrts`'CILKRTS_SO-dbg,), + libdbgdep(quadmath`'QMATH_SO-dbg,), ${dep:libcloog} +Provides: c-compiler`'TS +ifdef(`TARGET',`Conflicts: gcc-multilib +')`'dnl +BUILT_USING`'dnl +Description: GNU C compiler`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `') + This is the GNU C compiler, a fairly portable optimizing compiler for C. +ifdef(`TARGET', `dnl + . + This package contains C cross-compiler for TARGET architecture. +')`'dnl + +ifenabled(`multilib',` +Package: gcc`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +Section: devel +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), ${dep:libcbiarchdev}, ${dep:libgccbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU C compiler (multilib support)`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `') + This is the GNU C compiler, a fairly portable optimizing compiler for C. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib + +ifenabled(`plugindev',` +Package: gcc`'PV-plugin-dev`'TS +Architecture: any +Section: devel +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), GMP_BUILD_DEP ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Files for GNU GCC plugin development. + This package contains (header) files for GNU GCC plugin development. It + is only used for the development of GCC plugins, but not needed to run + plugins. +')`'dnl plugindev +')`'dnl cdev + +ifenabled(`cdev',` +Package: gcc`'PV-hppa64 +Architecture: ifdef(`TARGET',`any',hppa) +Section: devel +Priority: PRI(optional) +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +Conflicts: gcc-3.3-hppa64 (<= 1:3.3.4-5), gcc-3.4-hppa64 (<= 3.4.1-3), gcc-4.7-hppa64 (<< 4.7.3-13), gcc-4.8-hppa64 (<< 4.8.2-22) +BUILT_USING`'dnl +Description: GNU C compiler (cross compiler for hppa64) + This is the GNU C compiler, a fairly portable optimizing compiler for C. +')`'dnl cdev + +ifenabled(`cdev',` +Package: cpp`'PV`'TS +Architecture: any +Section: ifdef(`TARGET',`devel',`interpreters') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc`'PV-locales (>= ${gcc:SoftVersion}) +Replaces: gccgo-4.9 (<< ${gcc:Version}) +BUILT_USING`'dnl +Description: GNU C preprocessor + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those who + require the preprocessor but not the compiler. +ifdef(`TARGET', `dnl + . + This package contains preprocessor configured for TARGET architecture. +')`'dnl + +ifdef(`TARGET', `', ` +ifenabled(`gfdldoc',` +Package: cpp`'PV-doc +Architecture: all +Section: doc +Priority: PRI(optional) +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Description: Documentation for the GNU C preprocessor (cpp) + Documentation for the GNU C preprocessor in info `format'. +')`'dnl gfdldoc +')`'dnl native + +ifdef(`TARGET', `', ` +Package: gcc`'PV-locales +Architecture: all +Section: devel +Priority: PRI(optional) +Depends: SOFTBASEDEP, cpp`'PV (>= ${gcc:SoftVersion}), ${misc:Depends} +Recommends: gcc`'PV (>= ${gcc:SoftVersion}) +Description: GCC, the GNU compiler collection (native language support files) + Native language support for GCC. Lets GCC speak your language, + if translations are available. + . + Please do NOT submit bug reports in other languages than "C". + Always reset your language settings to use the "C" locales. +')`'dnl native +')`'dnl cdev + +ifenabled(`c++',` +ifenabled(`c++dev',` +Package: g++`'PV`'TS +Architecture: any +Section: devel +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), libdevdep(stdc++`'PV-dev,,=), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler`'TS`'ifdef(`TARGET)',`',`, c++abi2-dev') +Suggests: ${gxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(stdc++CXX_SO`'PV-dbg,) +BUILT_USING`'dnl +Description: GNU C++ compiler`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `') + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. +ifdef(`TARGET', `dnl + . + This package contains C++ cross-compiler for TARGET architecture. +')`'dnl + +ifenabled(`multilib',` +Package: g++`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +Section: devel +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, g++`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libcxxbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: ${dep:libcxxbiarchdbg} +BUILT_USING`'dnl +Description: GNU C++ compiler (multilib support)`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `') + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib +')`'dnl c++dev +')`'dnl c++ + +ifdef(`TARGET', `', ` +ifenabled(`ssp',` +Package: libssp`'SSP_SO`'LS +Architecture: any +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +')`'dnl +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC stack smashing protection library + GCC can now emit code for protecting applications from stack-smashing attacks. + The protection is realized by buffer overflow detection and reordering of + stack variables to avoid pointer corruption. + +Package: lib32ssp`'SSP_SO`'LS +Architecture: biarch32_archs +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libssp0 (<< 4.1) +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: GCC stack smashing protection library (32bit) + GCC can now emit code for protecting applications from stack-smashing attacks. + The protection is realized by buffer overflow detection and reordering of + stack variables to avoid pointer corruption. + +Package: lib64ssp`'SSP_SO`'LS +Architecture: biarch64_archs +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libssp0 (<< 4.1) +BUILT_USING`'dnl +Description: GCC stack smashing protection library (64bit) + GCC can now emit code for protecting applications from stack-smashing attacks. + The protection is realized by buffer overflow detection and reordering of + stack variables to avoid pointer corruption. + +Package: libn32ssp`'SSP_SO`'LS +Architecture: biarchn32_archs +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libssp0 (<< 4.1) +BUILT_USING`'dnl +Description: GCC stack smashing protection library (n32) + GCC can now emit code for protecting applications from stack-smashing attacks. + The protection is realized by buffer overflow detection and reordering of + stack variables to avoid pointer corruption. + +Package: libx32ssp`'SSP_SO`'LS +Architecture: biarchx32_archs +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libssp0 (<< 4.1) +BUILT_USING`'dnl +Description: GCC stack smashing protection library (x32) + GCC can now emit code for protecting applications from stack-smashing attacks. + The protection is realized by buffer overflow detection and reordering of + stack variables to avoid pointer corruption. + +Package: libhfssp`'SSP_SO`'LS +Architecture: biarchhf_archs +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC stack smashing protection library (hard float ABI) + GCC can now emit code for protecting applications from stack-smashing attacks. + The protection is realized by buffer overflow detection and reordering of + stack variables to avoid pointer corruption. + +Package: libsfssp`'SSP_SO`'LS +Architecture: biarchsf_archs +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC stack smashing protection library (soft float ABI) + GCC can now emit code for protecting applications from stack-smashing attacks. + The protection is realized by buffer overflow detection and reordering of + stack variables to avoid pointer corruption. +')`'dnl +')`'dnl native + +ifenabled(`libgomp',` +Package: libgomp`'GOMP_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libgomp'GOMP_SO`-armel [armel], libgomp'GOMP_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +Breaks: ${multiarch:breaks} +')`'dnl +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: libgomp`'GOMP_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(gomp`'GOMP_SO,,=), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libgomp'GOMP_SO`-dbg-armel [armel], libgomp'GOMP_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: lib32gomp`'GOMP_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (32bit) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: lib32gomp`'GOMP_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(gomp`'GOMP_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (32 bit debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: lib64gomp`'GOMP_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (64bit) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: lib64gomp`'GOMP_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(gomp`'GOMP_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (64bit debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: libn32gomp`'GOMP_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (n32) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: libn32gomp`'GOMP_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(gomp`'GOMP_SO,n32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (n32 debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + +ifenabled(`libx32gomp',` +Package: libx32gomp`'GOMP_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (x32) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: libx32gomp`'GOMP_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(gomp`'GOMP_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (x32 debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers +')`'dnl libx32gomp + +ifenabled(`libhfgomp',` +Package: libhfgomp`'GOMP_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgomp'GOMP_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (hard float ABI) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: libhfgomp`'GOMP_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(gomp`'GOMP_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgomp'GOMP_SO`-dbg-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (hard float ABI debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers +')`'dnl libhfgomp + +ifenabled(`libsfgomp',` +Package: libsfgomp`'GOMP_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgomp'GOMP_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (soft float ABI) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: libsfgomp`'GOMP_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(gomp`'GOMP_SO,sf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgomp'GOMP_SO`-dbg-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (soft float ABI debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers +')`'dnl libsfgomp + +ifenabled(`libneongomp',` +Package: libgomp`'GOMP_SO-neon`'LS +Architecture: NEON_ARCHS +Section: libs +Priority: extra +Depends: BASEDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library [neon optimized] + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneongomp +')`'dnl libgomp + +ifenabled(`libitm',` +Package: libitm`'ITM_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libitm'ITM_SO`-armel [armel], libitm'ITM_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +')`'dnl +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: libitm`'ITM_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(itm`'ITM_SO,,=), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libitm'ITM_SO`-dbg-armel [armel], libitm'ITM_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (debug symbols) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: lib32itm`'ITM_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (32bit) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: lib32itm`'ITM_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(itm`'ITM_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (32 bit debug symbols) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: lib64itm`'ITM_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (64bit) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: lib64itm`'ITM_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(itm`'ITM_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (64bit debug symbols) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +#Package: libn32itm`'ITM_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: ifdef(`TARGET',`extra',`PRI(optional)') +#Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: GNU Transactional Memory Library (n32) +# GNU Transactional Memory Library (libitm) provides transaction support for +# accesses to the memory of a process, enabling easy-to-use synchronization of +# accesses to shared memory by several threads. + +#Package: libn32itm`'ITM_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: extra +#Depends: BASEDEP, libdep(itm`'ITM_SO,n32,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: GNU Transactional Memory Library (n32 debug symbols) +# GNU Transactional Memory Library (libitm) provides transaction support for +# accesses to the memory of a process, enabling easy-to-use synchronization of +# accesses to shared memory by several threads. + +ifenabled(`libx32itm',` +Package: libx32itm`'ITM_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (x32) + This manual documents the usage and internals of libitm. It provides + transaction support for accesses to the memory of a process, enabling + easy-to-use synchronization of accesses to shared memory by several threads. + +Package: libx32itm`'ITM_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(itm`'ITM_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (x32 debug symbols) + This manual documents the usage and internals of libitm. It provides + transaction support for accesses to the memory of a process, enabling + easy-to-use synchronization of accesses to shared memory by several threads. +')`'dnl libx32itm + +ifenabled(`libhfitm',` +Package: libhfitm`'ITM_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libitm'ITM_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (hard float ABI) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: libhfitm`'ITM_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(itm`'ITM_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libitm'ITM_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (hard float ABI debug symbols) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. +')`'dnl libhfitm + +ifenabled(`libsfitm',` +Package: libsfitm`'ITM_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (soft float ABI) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: libsfitm`'ITM_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(itm`'ITM_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (soft float ABI debug symbols) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. +')`'dnl libsfitm + +ifenabled(`libneonitm',` +Package: libitm`'ITM_SO-neon`'LS +Architecture: NEON_ARCHS +Section: libs +Priority: extra +Depends: BASEDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library [neon optimized] + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneonitm +')`'dnl libitm + +ifenabled(`libatomic',` +Package: libatomic`'ATOMIC_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libatomic'ATOMIC_SO`-armel [armel], libatomic'ATOMIC_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +')`'dnl +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: libatomic`'ATOMIC_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(atomic`'ATOMIC_SO,,=), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libatomic'ATOMIC_SO`-dbg-armel [armel], libatomic'ATOMIC_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: lib32atomic`'ATOMIC_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (32bit) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: lib32atomic`'ATOMIC_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(atomic`'ATOMIC_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (32 bit debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: lib64atomic`'ATOMIC_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (64bit) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: lib64atomic`'ATOMIC_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(atomic`'ATOMIC_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (64bit debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: libn32atomic`'ATOMIC_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (n32) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: libn32atomic`'ATOMIC_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(atomic`'ATOMIC_SO,n32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (n32 debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +ifenabled(`libx32atomic',` +Package: libx32atomic`'ATOMIC_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (x32) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: libx32atomic`'ATOMIC_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(atomic`'ATOMIC_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (x32 debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. +')`'dnl libx32atomic + +ifenabled(`libhfatomic',` +Package: libhfatomic`'ATOMIC_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libatomic'ATOMIC_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (hard float ABI) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: libhfatomic`'ATOMIC_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(atomic`'ATOMIC_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libatomic'ATOMIC_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (hard float ABI debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. +')`'dnl libhfatomic + +ifenabled(`libsfatomic',` +Package: libsfatomic`'ATOMIC_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (soft float ABI) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: libsfatomic`'ATOMIC_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(atomic`'ATOMIC_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (soft float ABI debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. +')`'dnl libsfatomic + +ifenabled(`libneonatomic',` +Package: libatomic`'ATOMIC_SO-neon`'LS +Architecture: NEON_ARCHS +Section: libs +Priority: extra +Depends: BASEDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions [neon optimized] + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneonatomic +')`'dnl libatomic + +ifenabled(`libasan',` +Package: libasan`'ASAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libasan'ASAN_SO`-armel [armel], libasan'ASAN_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +')`'dnl +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libasan`'ASAN_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(asan`'ASAN_SO,,=), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libasan'ASAN_SO`-dbg-armel [armel], libasan'ASAN_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: lib32asan`'ASAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (32bit) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: lib32asan`'ASAN_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(asan`'ASAN_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (32 bit debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: lib64asan`'ASAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (64bit) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: lib64asan`'ASAN_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(asan`'ASAN_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (64bit debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +#Package: libn32asan`'ASAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: ifdef(`TARGET',`extra',`PRI(extra)') +#Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: AddressSanitizer -- a fast memory error detector (n32) +# AddressSanitizer (ASan) is a fast memory error detector. It finds +# use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +#Package: libn32asan`'ASAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: extra +#Depends: BASEDEP, libdep(asan`'ASAN_SO,n32,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: AddressSanitizer -- a fast memory error detector (n32 debug symbols) +# AddressSanitizer (ASan) is a fast memory error detector. It finds +# use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +ifenabled(`libx32asan',` +Package: libx32asan`'ASAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (x32) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libx32asan`'ASAN_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(asan`'ASAN_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (x32 debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. +')`'dnl libx32asan + +ifenabled(`libhfasan',` +Package: libhfasan`'ASAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: ifdef(`TARGET',`extra',`PRI(extra)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libasan'ASAN_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (hard float ABI) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libhfasan`'ASAN_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(asan`'ASAN_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libasan'ASAN_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (hard float ABI debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. +')`'dnl libhfasan + +ifenabled(`libsfasan',` +Package: libsfasan`'ASAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: ifdef(`TARGET',`extra',`PRI(extra)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (soft float ABI) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libsfasan`'ASAN_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(asan`'ASAN_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (soft float ABI debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. +')`'dnl libsfasan + +ifenabled(`libneonasan',` +Package: libasan`'ASAN_SO-neon`'LS +Architecture: NEON_ARCHS +Section: libs +Priority: extra +Depends: BASEDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector [neon optimized] + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneonasan +')`'dnl libasan + +ifenabled(`liblsan',` +Package: liblsan`'LSAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +')`'dnl +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (runtime) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. + +Package: liblsan`'LSAN_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(lsan`'LSAN_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (debug symbols) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. + +ifenabled(`lib32lsan',` +Package: lib32lsan`'LSAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (32bit) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer (empty package). + +Package: lib32lsan`'LSAN_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(lsan`'LSAN_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (32 bit debug symbols) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer (empty package). +')`'dnl lib32lsan + +ifenabled(`lib64lsan',` +#Package: lib64lsan`'LSAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +#Priority: ifdef(`TARGET',`extra',`PRI(optional)') +#Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: LeakSanitizer -- a memory leak detector (64bit) +# LeakSanitizer (Lsan) is a memory leak detector which is integrated +# into AddressSanitizer. + +#Package: lib64lsan`'LSAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +#Section: debug +#Priority: extra +#Depends: BASEDEP, libdep(lsan`'LSAN_SO,64,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: LeakSanitizer -- a memory leak detector (64bit debug symbols) +# LeakSanitizer (Lsan) is a memory leak detector which is integrated +# into AddressSanitizer. +')`'dnl lib64lsan + +ifenabled(`libn32lsan',` +#Package: libn32lsan`'LSAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: ifdef(`TARGET',`extra',`PRI(optional)') +#Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: LeakSanitizer -- a memory leak detector (n32) +# LeakSanitizer (Lsan) is a memory leak detector which is integrated +# into AddressSanitizer. + +#Package: libn32lsan`'LSAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: extra +#Depends: BASEDEP, libdep(lsan`'LSAN_SO,n32,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: LeakSanitizer -- a memory leak detector (n32 debug symbols) +# LeakSanitizer (Lsan) is a memory leak detector which is integrated +# into AddressSanitizer. +')`'dnl libn32lsan + +ifenabled(`libx32lsan',` +Package: libx32lsan`'LSAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (x32) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer (empty package). + +Package: libx32lsan`'LSAN_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(lsan`'LSAN_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (x32 debug symbols) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer (empty package). +')`'dnl libx32lsan + +ifenabled(`libhflsan',` +Package: libhflsan`'LSAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: liblsan'LSAN_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (hard float ABI) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. + +Package: libhflsan`'LSAN_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(lsan`'LSAN_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: liblsan'LSAN_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (hard float ABI debug symbols) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. +')`'dnl libhflsan + +ifenabled(`libsflsan',` +Package: libsflsan`'LSAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (soft float ABI) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. + +Package: libsflsan`'LSAN_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(lsan`'LSAN_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (soft float ABI debug symbols) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. +')`'dnl libsflsan + +ifenabled(`libneonlsan',` +Package: liblsan`'LSAN_SO-neon`'LS +Architecture: NEON_ARCHS +Section: libs +Priority: extra +Depends: BASEDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector [neon optimized] + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneonlsan +')`'dnl liblsan + +ifenabled(`libtsan',` +Package: libtsan`'TSAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libtsan'TSAN_SO`-armel [armel], libtsan'TSAN_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +')`'dnl +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (runtime) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +Package: libtsan`'TSAN_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(tsan`'TSAN_SO,,=), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libtsan'TSAN_SO`-dbg-armel [armel], libtsan'TSAN_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +ifenabled(`lib32tsan',` +Package: lib32tsan`'TSAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (32bit) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +Package: lib32tsan`'TSAN_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(tsan`'TSAN_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (32 bit debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. +')`'dnl lib32tsan + +ifenabled(`lib64tsan',` +Package: lib64tsan`'TSAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (64bit) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +Package: lib64tsan`'TSAN_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(tsan`'TSAN_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (64bit debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. +')`'dnl lib64tsan + +ifenabled(`libn32tsan',` +Package: libn32tsan`'TSAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (n32) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +Package: libn32tsan`'TSAN_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(tsan`'TSAN_SO,n32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (n32 debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. +')`'dnl libn32tsan + +ifenabled(`libx32tsan',` +Package: libx32tsan`'TSAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (x32) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +Package: libx32tsan`'TSAN_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(tsan`'TSAN_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (x32 debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. +')`'dnl libx32tsan + +ifenabled(`libhftsan',` +Package: libhftsan`'TSAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libtsan'TSAN_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (hard float ABI) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +Package: libhftsan`'TSAN_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(tsan`'TSAN_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libtsan'TSAN_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (hard float ABI debug symbols) +')`'dnl libhftsan + +ifenabled(`libsftsan',` +Package: libsftsan`'TSAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (soft float ABI) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +Package: libsftsan`'TSAN_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(tsan`'TSAN_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (soft float ABI debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. +')`'dnl libsftsan + +ifenabled(`libneontsan',` +Package: libtsan`'TSAN_SO-neon`'LS +Architecture: NEON_ARCHS +Section: libs +Priority: extra +Depends: BASEDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races [neon optimized] + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneontsan +')`'dnl libtsan + +ifenabled(`libubsan',` +Package: libubsan`'UBSAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libubsan'UBSAN_SO`-armel [armel], libubsan'UBSAN_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +')`'dnl +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (runtime) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: libubsan`'UBSAN_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(ubsan`'UBSAN_SO,,=), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libubsan'UBSAN_SO`-dbg-armel [armel], libubsan'UBSAN_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +ifenabled(`lib32ubsan',` +Package: lib32ubsan`'UBSAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (32bit) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: lib32ubsan`'UBSAN_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(ubsan`'UBSAN_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (32 bit debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. +')`'dnl lib32ubsan + +ifenabled(`lib64ubsan',` +Package: lib64ubsan`'UBSAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (64bit) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: lib64ubsan`'UBSAN_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(ubsan`'UBSAN_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (64bit debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. +')`'dnl lib64ubsan + +ifenabled(`libn32ubsan',` +#Package: libn32ubsan`'UBSAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: ifdef(`TARGET',`extra',`PRI(optional)') +#Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: UBSan -- undefined behaviour sanitizer (n32) +# UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. +# Various computations will be instrumented to detect undefined behavior +# at runtime. Available for C and C++. + +#Package: libn32ubsan`'UBSAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: extra +#Depends: BASEDEP, libdep(ubsan`'UBSAN_SO,n32,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: UBSan -- undefined behaviour sanitizer (n32 debug symbols) +# UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. +# Various computations will be instrumented to detect undefined behavior +# at runtime. Available for C and C++. +')`'dnl libn32ubsan + +ifenabled(`libx32ubsan',` +Package: libx32ubsan`'UBSAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (x32) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: libx32ubsan`'UBSAN_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(ubsan`'UBSAN_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (x32 debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. +')`'dnl libx32ubsan + +ifenabled(`libhfubsan',` +Package: libhfubsan`'UBSAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libubsan'UBSAN_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (hard float ABI) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: libhfubsan`'UBSAN_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(ubsan`'UBSAN_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libubsan'UBSAN_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (hard float ABI debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. +')`'dnl libhfubsan + +ifenabled(`libsfubsan',` +Package: libsfubsan`'UBSAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (soft float ABI) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: libsfubsan`'UBSAN_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(ubsan`'UBSAN_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (soft float ABI debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. +')`'dnl libsfubsan + +ifenabled(`libneonubsan',` +Package: libubsan`'UBSAN_SO-neon`'LS +Architecture: NEON_ARCHS +Section: libs +Priority: extra +Depends: BASEDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer [neon optimized] + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneonubsan +')`'dnl libubsan + +ifenabled(`libvtv',` +Package: libvtv`'VTV_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +')`'dnl +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (runtime) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +Package: libvtv`'VTV_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(vtv`'VTV_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GNU vtable verification library (debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +ifenabled(`lib32vtv',` +Package: lib32vtv`'VTV_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: GNU vtable verification library (32bit) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +Package: lib32vtv`'VTV_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(vtv`'VTV_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (32 bit debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl lib32vtv + +ifenabled(`lib64vtv',` +Package: lib64vtv`'VTV_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (64bit) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +Package: lib64vtv`'VTV_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(vtv`'VTV_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (64bit debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl lib64vtv + +ifenabled(`libn32vtv',` +Package: libn32vtv`'VTV_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (n32) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +Package: libn32vtv`'VTV_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(vtv`'VTV_SO,n32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (n32 debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl libn32vtv + +ifenabled(`libx32vtv',` +Package: libx32vtv`'VTV_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (x32) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +Package: libx32vtv`'VTV_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(vtv`'VTV_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (x32 debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl libx32vtv + +ifenabled(`libhfvtv',` +Package: libhfvtv`'VTV_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libvtv'VTV_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: GNU vtable verification library (hard float ABI) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +Package: libhfvtv`'VTV_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(vtv`'VTV_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libvtv'VTV_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: GNU vtable verification library (hard float ABI debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl libhfvtv + +ifenabled(`libsfvtv',` +Package: libsfvtv`'VTV_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (soft float ABI) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +Package: libsfvtv`'VTV_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(vtv`'VTV_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (soft float ABI debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl libsfvtv + +ifenabled(`libneonvtv',` +Package: libvtv`'VTV_SO-neon`'LS +Architecture: NEON_ARCHS +Section: libs +Priority: extra +Depends: BASEDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library [neon optimized] + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneonvtv +')`'dnl libvtv + +ifenabled(`libcilkrts',` +Package: libcilkrts`'CILKRTS_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libcilkrts'CILKRTS_SO`-armel [armel], libcilkrts'CILKRTS_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +')`'dnl +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Intel Cilk Plus language extensions (runtime) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: libcilkrts`'CILKRTS_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(cilkrts`'CILKRTS_SO,,=), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libcilkrts'CILKRTS_SO`-dbg-armel [armel], libcilkrts'CILKRTS_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: Intel Cilk Plus language extensions (debug symbols) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +ifenabled(`lib32cilkrts',` +Package: lib32cilkrts`'CILKRTS_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: Intel Cilk Plus language extensions (32bit) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: lib32cilkrts`'CILKRTS_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(cilkrts`'CILKRTS_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Intel Cilk Plus language extensions (32 bit debug symbols) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. +')`'dnl lib32cilkrts + +ifenabled(`lib64cilkrts',` +Package: lib64cilkrts`'CILKRTS_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Intel Cilk Plus language extensions (64bit) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: lib64cilkrts`'CILKRTS_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(cilkrts`'CILKRTS_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Intel Cilk Plus language extensions (64bit debug symbols) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. +')`'dnl lib64cilkrts + +ifenabled(`libn32cilkrts',` +Package: libn32cilkrts`'CILKRTS_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Intel Cilk Plus language extensions (n32) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: libn32cilkrts`'CILKRTS_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(cilkrts`'CILKRTS_SO,n32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Intel Cilk Plus language extensions (n32 debug symbols) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. +')`'dnl libn32cilkrts + +ifenabled(`libx32cilkrts',` +Package: libx32cilkrts`'CILKRTS_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Intel Cilk Plus language extensions (x32) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: libx32cilkrts`'CILKRTS_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(cilkrts`'CILKRTS_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Intel Cilk Plus language extensions (x32 debug symbols) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. +')`'dnl libx32cilkrts + +ifenabled(`libhfcilkrts',` +Package: libhfcilkrts`'CILKRTS_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libcilkrts'CILKRTS_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: Intel Cilk Plus language extensions (hard float ABI) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: libhfcilkrts`'CILKRTS_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(cilkrts`'CILKRTS_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libcilkrts'CILKRTS_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: Intel Cilk Plus language extensions (hard float ABI debug symbols) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. +')`'dnl libhfcilkrts + +ifenabled(`libsfcilkrts',` +Package: libsfcilkrts`'CILKRTS_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Intel Cilk Plus language extensions (soft float ABI) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: libsfcilkrts`'CILKRTS_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(cilkrts`'CILKRTS_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Intel Cilk Plus language extensions (soft float ABI debug symbols) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. +')`'dnl libsfcilkrts + +ifenabled(`libneoncilkrts',` +Package: libcilkrts`'CILKRTS_SO-neon`'LS +Architecture: NEON_ARCHS +Section: libs +Priority: extra +Depends: BASEDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Intel Cilk Plus language extensions [neon optimized] + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneoncilkrts +')`'dnl libcilkrts + +ifenabled(`libbacktrace',` +Package: libbacktrace`'BTRACE_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libbacktrace'BTRACE_SO`-armel [armel], libbacktrace'BTRACE_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +')`'dnl +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: libbacktrace`'BTRACE_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(backtrace`'BTRACE_SO,,=), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libbacktrace'BTRACE_SO`-dbg-armel [armel], libbacktrace'BTRACE_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: stack backtrace library (debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: lib32backtrace`'BTRACE_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: stack backtrace library (32bit) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: lib32backtrace`'BTRACE_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(backtrace`'BTRACE_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (32 bit debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: lib64backtrace`'BTRACE_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (64bit) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: lib64backtrace`'BTRACE_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(backtrace`'BTRACE_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (64bit debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: libn32backtrace`'BTRACE_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (n32) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: libn32backtrace`'BTRACE_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(backtrace`'BTRACE_SO,n32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (n32 debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +ifenabled(`libx32backtrace',` +Package: libx32backtrace`'BTRACE_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (x32) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: libx32backtrace`'BTRACE_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(backtrace`'BTRACE_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (x32 debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. +')`'dnl libx32backtrace + +ifenabled(`libhfbacktrace',` +Package: libhfbacktrace`'BTRACE_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libbacktrace'BTRACE_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: stack backtrace library (hard float ABI) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: libhfbacktrace`'BTRACE_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(backtrace`'BTRACE_SO,hf,=), ${misc:Depends} +wifdef(`TARGET',`dnl',`Conflicts: libbacktrace'BTRACE_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: stack backtrace library (hard float ABI debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. +')`'dnl libhfbacktrace + +ifenabled(`libsfbacktrace',` +Package: libsfbacktrace`'BTRACE_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (soft float ABI) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: libsfbacktrace`'BTRACE_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(backtrace`'BTRACE_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (soft float ABI debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. +')`'dnl libsfbacktrace + +ifenabled(`libneonbacktrace',` +Package: libbacktrace`'BTRACE_SO-neon`'LS +Architecture: NEON_ARCHS +Section: libs +Priority: extra +Depends: BASEDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library [neon optimized] + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneonbacktrace +')`'dnl libbacktrace + + +ifenabled(`libqmath',` +Package: libquadmath`'QMATH_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +')`'dnl +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +Package: libquadmath`'QMATH_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(quadmath`'QMATH_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. + +Package: lib32quadmath`'QMATH_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (32bit) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +Package: lib32quadmath`'QMATH_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(quadmath`'QMATH_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (32 bit debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. + +Package: lib64quadmath`'QMATH_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (64bit) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +Package: lib64quadmath`'QMATH_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(quadmath`'QMATH_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (64bit debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. + +#Package: libn32quadmath`'QMATH_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: ifdef(`TARGET',`extra',`PRI(optional)') +#Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: GCC Quad-Precision Math Library (n32) +# A library, which provides quad-precision mathematical functions on targets +# supporting the __float128 datatype. The library is used to provide on such +# targets the REAL(16) type in the GNU Fortran compiler. + +#Package: libn32quadmath`'QMATH_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: extra +#Depends: BASEDEP, libdep(quadmath`'QMATH_SO,n32,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: GCC Quad-Precision Math Library (n32 debug symbols) +# A library, which provides quad-precision mathematical functions on targets +# supporting the __float128 datatype. + +ifenabled(`libx32qmath',` +Package: libx32quadmath`'QMATH_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (x32) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +Package: libx32quadmath`'QMATH_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(quadmath`'QMATH_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (x32 debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. +')`'dnl libx32qmath + +ifenabled(`libhfqmath',` +Package: libhfquadmath`'QMATH_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (hard float ABI) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +Package: libhfquadmath`'QMATH_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(quadmath`'QMATH_SO,hf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (hard float ABI debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. +')`'dnl libhfqmath + +ifenabled(`libsfqmath',` +Package: libsfquadmath`'QMATH_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (soft float ABI) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +Package: libsfquadmath`'QMATH_SO-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(quadmath`'QMATH_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (hard float ABI debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. +')`'dnl libsfqmath +')`'dnl libqmath + +ifenabled(`objpp',` +ifenabled(`objppdev',` +Package: gobjc++`'PV`'TS +Architecture: any +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, gobjc`'PV`'TS (= ${gcc:Version}), g++`'PV`'TS (= ${gcc:Version}), ${shlibs:Depends}, libdevdep(objc`'PV-dev,,=), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler`'TS +BUILT_USING`'dnl +Description: GNU Objective-C++ compiler + This is the GNU Objective-C++ compiler, which compiles + Objective-C++ on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. +')`'dnl obcppdev + +ifenabled(`multilib',` +Package: gobjc++`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +Section: devel +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, gobjc++`'PV`'TS (= ${gcc:Version}), g++`'PV-multilib`'TS (= ${gcc:Version}), gobjc`'PV-multilib`'TS (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Objective-C++ compiler (multilib support) + This is the GNU Objective-C++ compiler, which compiles Objective-C++ on + platforms supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib +')`'dnl obcpp + +ifenabled(`objc',` +ifenabled(`objcdev',` +Package: gobjc`'PV`'TS +Architecture: any +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libdevdep(objc`'PV-dev,,=), ${misc:Depends} +Suggests: ${gobjc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(objc`'OBJC_SO-dbg,) +Provides: objc-compiler`'TS +ifdef(`__sparc__',`Conflicts: gcc`'PV-sparc64', `dnl') +BUILT_USING`'dnl +Description: GNU Objective-C compiler + This is the GNU Objective-C compiler, which compiles + Objective-C on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. + +ifenabled(`multilib',` +Package: gobjc`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +Section: devel +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, gobjc`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libobjcbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Objective-C compiler (multilib support)`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `') + This is the GNU Objective-C compiler, which compiles Objective-C on platforms + supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib + +Package: libobjc`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: libdevel +Priority: optional +Depends: BASEDEP, libdevdep(gcc`'PV-dev,), libdep(objc`'OBJC_SO,), ${shlibs:Depends}, ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: lib64objc`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Priority: optional +Depends: BASEDEP, libdevdep(gcc`'PV-dev,64), libdep(objc`'OBJC_SO,64), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (64bit development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: lib32objc`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Priority: optional +Depends: BASEDEP, libdevdep(gcc`'PV-dev,32), libdep(objc`'OBJC_SO,32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (32bit development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: libn32objc`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Priority: optional +Depends: BASEDEP, libdevdep(gcc`'PV-dev,n32), libdep(objc`'OBJC_SO,n32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (n32 development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +ifenabled(`x32dev',` +Package: libx32objc`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Priority: optional +Depends: BASEDEP, libdevdep(gcc`'PV-dev,x32), libdep(objc`'OBJC_SO,x32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (x32 development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. +')`'dnl libx32objc + +ifenabled(`armml',` +Package: libhfobjc`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: libdevel +Priority: optional +Depends: BASEDEP, libdevdep(gcc`'PV-dev,hf), libdep(objc`'OBJC_SO,hf), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (hard float ABI development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. +')`'dnl armml + +ifenabled(`armml',` +Package: libsfobjc`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: libdevel +Priority: optional +Depends: BASEDEP, libdevdep(gcc`'PV-dev,sf), libdep(objc`'OBJC_SO,sf), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (soft float development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. +')`'dnl armml +')`'dnl objcdev + +ifenabled(`libobjc',` +Package: libobjc`'OBJC_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libobjc'OBJC_SO`-armel [armel], libobjc'OBJC_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +ifelse(OBJC_SO,`2',`Breaks: ${multiarch:breaks} +',`')')`'dnl +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications + Library needed for GNU ObjC applications linked against the shared library. + +Package: libobjc`'OBJC_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libobjc'OBJC_SO`-dbg-armel [armel], libobjc'OBJC_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Priority: extra +Depends: BASEDEP, libdep(objc`'OBJC_SO,,=), libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libobjc + +ifenabled(`lib64objc',` +Package: lib64objc`'OBJC_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (64bit) + Library needed for GNU ObjC applications linked against the shared library. + +Package: lib64objc`'OBJC_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: extra +Depends: BASEDEP, libdep(objc`'OBJC_SO,64,=), libdbgdep(gcc`'GCC_SO-dbg,64,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (64 bit debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl lib64objc + +ifenabled(`lib32objc',` +Package: lib32objc`'OBJC_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (32bit) + Library needed for GNU ObjC applications linked against the shared library. + +Package: lib32objc`'OBJC_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: extra +Depends: BASEDEP, libdep(objc`'OBJC_SO,32,=), libdbgdep(gcc`'GCC_SO-dbg,32,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (32 bit debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl lib32objc + +ifenabled(`libn32objc',` +Package: libn32objc`'OBJC_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (n32) + Library needed for GNU ObjC applications linked against the shared library. + +Package: libn32objc`'OBJC_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: extra +Depends: BASEDEP, libdep(objc`'OBJC_SO,n32,=), libdbgdep(gcc`'GCC_SO-dbg,n32,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (n32 debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libn32objc + +ifenabled(`libx32objc',` +Package: libx32objc`'OBJC_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (x32) + Library needed for GNU ObjC applications linked against the shared library. + +Package: libx32objc`'OBJC_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: extra +Depends: BASEDEP, libdep(objc`'OBJC_SO,x32,=), libdbgdep(gcc`'GCC_SO-dbg,x32,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (x32 debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libx32objc + +ifenabled(`libhfobjc',` +Package: libhfobjc`'OBJC_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libobjc'OBJC_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (hard float ABI) + Library needed for GNU ObjC applications linked against the shared library. + +Package: libhfobjc`'OBJC_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: extra +Depends: BASEDEP, libdep(objc`'OBJC_SO,hf,=), libdbgdep(gcc`'GCC_SO-dbg,hf,>=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libobjc'OBJC_SO`-dbg-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (hard float ABI debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libhfobjc + +ifenabled(`libsfobjc',` +Package: libsfobjc`'OBJC_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libobjc'OBJC_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (soft float ABI) + Library needed for GNU ObjC applications linked against the shared library. + +Package: libsfobjc`'OBJC_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: extra +Depends: BASEDEP, libdep(objc`'OBJC_SO,sf,=), libdbgdep(gcc`'GCC_SO-dbg,sf,>=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libobjc'OBJC_SO`-dbg-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (soft float ABI debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libsfobjc + +ifenabled(`libneonobjc',` +Package: libobjc`'OBJC_SO-neon`'LS +Section: libs +Architecture: NEON_ARCHS +Priority: PRI(optional) +Depends: BASEDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications [NEON version] + Library needed for GNU ObjC applications linked against the shared library. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneonobjc +')`'dnl objc + +ifenabled(`fortran',` +ifenabled(`fdev',` +Package: gfortran`'PV`'TS +Architecture: any +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), libdevdep(gfortran`'PV-dev,,=), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Provides: fortran95-compiler, ${fortran:mod-version} +Suggests: ${gfortran:multilib}, gfortran`'PV-doc, libdbgdep(gfortran`'FORTRAN_SO-dbg,) +BUILT_USING`'dnl +Description: GNU Fortran compiler + This is the GNU Fortran compiler, which compiles + Fortran on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. + +ifenabled(`multilib',` +Package: gfortran`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +Section: devel +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, gfortran`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libgfortranbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Fortran compiler (multilib support)`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `') + This is the GNU Fortran compiler, which compiles Fortran on platforms + supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib + +ifenabled(`gfdldoc',` +Package: gfortran`'PV-doc +Architecture: all +Section: doc +Priority: PRI(optional) +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Description: Documentation for the GNU Fortran compiler (gfortran) + Documentation for the GNU Fortran compiler in info `format'. +')`'dnl gfdldoc + +Package: libgfortran`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: optional +Depends: BASEDEP, libdevdep(gcc`'PV-dev`',), libdep(gfortran`'FORTRAN_SO,), ${shlibs:Depends}, ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: lib64gfortran`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Priority: optional +Depends: BASEDEP, libdevdep(gcc`'PV-dev`',64), libdep(gfortran`'FORTRAN_SO,64), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (64bit development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: lib32gfortran`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Priority: optional +Depends: BASEDEP, libdevdep(gcc`'PV-dev`',32), libdep(gfortran`'FORTRAN_SO,32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (32bit development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: libn32gfortran`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Priority: optional +Depends: BASEDEP, libdevdep(gcc`'PV-dev`',n32), libdep(gfortran`'FORTRAN_SO,n32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (n32 development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +ifenabled(`x32dev',` +Package: libx32gfortran`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Priority: optional +Depends: BASEDEP, libdevdep(gcc`'PV-dev`',x32), libdep(gfortran`'FORTRAN_SO,x32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (x32 development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. +')`'dnl libx32gfortran + +ifenabled(`armml',` +Package: libhfgfortran`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: libdevel +Priority: optional +Depends: BASEDEP, libdevdep(gcc`'PV-dev`',hf), libdep(gfortran`'FORTRAN_SO,hf), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (hard float ABI development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. +')`'dnl armml + +ifenabled(`armml',` +Package: libsfgfortran`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: libdevel +Priority: optional +Depends: BASEDEP, libdevdep(gcc`'PV-dev`',sf), libdep(gfortran`'FORTRAN_SO,sf), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (soft float ABI development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. +')`'dnl armml +')`'dnl fdev + +ifenabled(`libgfortran',` +Package: libgfortran`'FORTRAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libgfortran'FORTRAN_SO`-armel [armel], libgfortran'FORTRAN_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +Breaks: ${multiarch:breaks} +')`'dnl +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libgfortran`'FORTRAN_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libgfortran'FORTRAN_SO`-dbg-armel [armel], libgfortran'FORTRAN_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Priority: extra +Depends: BASEDEP, libdep(gfortran`'FORTRAN_SO,,=), libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libgfortran + +ifenabled(`lib64gfortran',` +Package: lib64gfortran`'FORTRAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (64bit) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: lib64gfortran`'FORTRAN_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: extra +Depends: BASEDEP, libdep(gfortran`'FORTRAN_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (64bit debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl lib64gfortran + +ifenabled(`lib32gfortran',` +Package: lib32gfortran`'FORTRAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (32bit) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: lib32gfortran`'FORTRAN_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: extra +Depends: BASEDEP, libdep(gfortran`'FORTRAN_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (32 bit debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl lib32gfortran + +ifenabled(`libn32gfortran',` +Package: libn32gfortran`'FORTRAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (n32) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libn32gfortran`'FORTRAN_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: extra +Depends: BASEDEP, libdep(gfortran`'FORTRAN_SO,n32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (n32 debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libn32gfortran + +ifenabled(`libx32gfortran',` +Package: libx32gfortran`'FORTRAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (x32) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libx32gfortran`'FORTRAN_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: extra +Depends: BASEDEP, libdep(gfortran`'FORTRAN_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (x32 debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libx32gfortran + +ifenabled(`libhfgfortran',` +Package: libhfgfortran`'FORTRAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgfortran'FORTRAN_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (hard float ABI) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libhfgfortran`'FORTRAN_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: extra +Depends: BASEDEP, libdep(gfortran`'FORTRAN_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgfortran'FORTRAN_SO`-dbg-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (hard float ABI debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libhfgfortran + +ifenabled(`libsfgfortran',` +Package: libsfgfortran`'FORTRAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgfortran'FORTRAN_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (soft float ABI) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libsfgfortran`'FORTRAN_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: extra +Depends: BASEDEP, libdep(gfortran`'FORTRAN_SO,sf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgfortran'FORTRAN_SO`-dbg-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (hard float ABI debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libsfgfortran + +ifenabled(`libneongfortran',` +Package: libgfortran`'FORTRAN_SO-neon`'LS +Section: libs +Architecture: NEON_ARCHS +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +Breaks: ${multiarch:breaks} +')`'dnl +Priority: extra +Depends: BASEDEP, libgcc1-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications [NEON version] + Library needed for GNU Fortran applications linked against the + shared library. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneongfortran +')`'dnl fortran + +ifenabled(`ggo',` +ifenabled(`godev',` +Package: gccgo`'PV`'TS +Architecture: any +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ifdef(`STANDALONEGO',,`gcc`'PV`'TS (= ${gcc:Version}), ')libdep(go`'GO_SO,), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Provides: go-compiler +Suggests: ${go:multilib}, gccgo`'PV-doc, libdbgdep(go`'GO_SO-dbg,) +BUILT_USING`'dnl +Description: GNU Go compiler + This is the GNU Go compiler, which compiles Go on platforms supported + by the gcc compiler. It uses the gcc backend to generate optimized code. + +ifenabled(`multilib',` +Package: gccgo`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +Section: devel +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, gccgo`'PV`'TS (= ${gcc:Version}), ifdef(`STANDALONEGO',,`gcc`'PV-multilib`'TS (= ${gcc:Version}), ')${dep:libgobiarch}, ${shlibs:Depends}, ${misc:Depends} +Suggests: ${dep:libgobiarchdbg} +BUILT_USING`'dnl +Description: GNU Go compiler (multilib support)`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `') + This is the GNU Go compiler, which compiles Go on platforms supported + by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib + +ifenabled(`gfdldoc',` +Package: gccgo`'PV-doc +Architecture: all +Section: doc +Priority: PRI(optional) +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends} +BUILT_USING`'dnl +Description: Documentation for the GNU Go compiler (gccgo) + Documentation for the GNU Go compiler in info `format'. +')`'dnl gfdldoc +')`'dnl fdev + +ifenabled(`libggo',` +Package: libgo`'GO_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libgo'GO_SO`-armel [armel], libgo'GO_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +')`'dnl +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: libgo3`'LS +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications + Library needed for GNU Go applications linked against the + shared library. + +Package: libgo`'GO_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libgo'GO_SO`-dbg-armel [armel], libgo'GO_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Priority: extra +Depends: BASEDEP, libdep(go`'GO_SO,,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. +')`'dnl libgo + +ifenabled(`lib64ggo',` +Package: lib64go`'GO_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: lib64go3`'LS +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (64bit) + Library needed for GNU Go applications linked against the + shared library. + +Package: lib64go`'GO_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: extra +Depends: BASEDEP, libdep(go`'GO_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (64bit debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. +')`'dnl lib64go + +ifenabled(`lib32ggo',` +Package: lib32go`'GO_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +Replaces: lib32go3`'LS +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (32bit) + Library needed for GNU Go applications linked against the + shared library. + +Package: lib32go`'GO_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: extra +Depends: BASEDEP, libdep(go`'GO_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (32 bit debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. +')`'dnl lib32go + +ifenabled(`libn32ggo',` +Package: libn32go`'GO_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libn32go3`'LS +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (n32) + Library needed for GNU Go applications linked against the + shared library. + +Package: libn32go`'GO_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: extra +Depends: BASEDEP, libdep(go`'GO_SO,n32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (n32 debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. +')`'dnl libn32go + +ifenabled(`libx32ggo',` +Package: libx32go`'GO_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libx32go3`'LS +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (x32) + Library needed for GNU Go applications linked against the + shared library. + +Package: libx32go`'GO_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: extra +Depends: BASEDEP, libdep(go`'GO_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (x32 debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. +')`'dnl libx32go +')`'dnl ggo + +ifenabled(`java',` +ifenabled(`gcj',` +Package: gcj`'PV`'TS +Section: java +Architecture: any +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:gcj}, ${dep:gcjcross}, ${dep:libcdev}, ${dep:ecj}, ${shlibs:Depends}, dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Recommends: libecj-java-gcj +BUILT_USING`'dnl +Description: GCJ byte code and native compiler for Java(TM) + GCJ is a front end to the GCC compiler which can natively compile both + Java(tm) source and bytecode files. The compiler can also generate class + files. +')`'dnl gcj + +ifenabled(`libgcj',` +ifenabled(`libgcjcommon',` +Package: libgcj-common +Section: java +Architecture: all +Priority: PRI(optional) +Depends: BASEDEP, ${misc:Depends} +Conflicts: classpath (<= 0.04-4) +Replaces: java-gcj-compat (<< 1.0.65-3), java-gcj-compat-dev (<< 1.0.65-3) +BUILT_USING`'dnl +Description: Java runtime library (common files) + This package contains files shared by Classpath and libgcj libraries. +')`'dnl libgcjcommon + + +Package: gcj`'PV-jdk`'TS +Section: java +Architecture: any +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:gcj}, ${dep:libcdev}, gcj`'PV`'TS (= ${gcj:Version}), gcj`'PV-jre`'TS (= ${gcj:Version}), libdevdep(gcj`'GCJ_SO-dev,,=,${gcj:Version}), fastjar, libgcj-bc`'LS, java-common, libantlr-java, ${shlibs:Depends}, dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Recommends: libecj-java-gcj +Suggests: gcj`'PV-source (>= ${gcj:SoftVersion}), libdbgdep(gcj`'GCJ_SO-dbg,) +Provides: java-compiler, java-sdk, java2-sdk, java5-sdk +Conflicts: gcj-4.4, cpp-4.1 (<< 4.1.1), gcc-4.1 (<< 4.1.1) +Replaces: libgcj11 (<< 4.5-20100101-1) +BUILT_USING`'dnl +Description: GCJ and Classpath development tools for Java(TM) + GCJ is a front end to the GCC compiler which can natively compile both + Java(tm) source and bytecode files. The compiler can also generate class + files. Other java development tools from classpath are included in this + package. + . + The package contains as well a collection of wrapper scripts and symlinks. + It is meant to provide a Java-SDK-like interface to the GCJ tool set. + +Package: gcj`'PV-jre-headless`'TS +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Section: java +Architecture: any +Depends: BASEDEP, gcj`'PV-jre-lib`'TS (>= ${gcj:SoftVersion}), libdep(gcj`'LIBGCJ_EXT,,=,${gcj:Version}), ${dep:prctl}, ${shlibs:Depends}, ${misc:Depends} +Suggests: fastjar, gcj`'PV-jdk`'TS (= ${gcj:Version}), libdep(gcj`'LIBGCJ_EXT-awt,,=,${gcj:Version}) +Provides: java5-runtime-headless, java2-runtime-headless, java1-runtime-headless, java-runtime-headless +BUILT_USING`'dnl +Description: Java runtime environment using GIJ/Classpath (headless version) + GIJ is a Java bytecode interpreter, not limited to interpreting bytecode. + It includes a class loader which can dynamically load shared objects, so + it is possible to give it the name of a class which has been compiled and + put into a shared library on the class path. + . + The package contains as well a collection of wrapper scripts and symlinks. + It is meant to provide a Java-RTE-like interface to the GIJ/GCJ tool set, + limited to the headless tools and libraries. + +Package: gcj`'PV-jre`'TS +Section: java +Architecture: any +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, gcj`'PV-jre-headless`'TS (= ${gcj:Version}), libdep(gcj`'LIBGCJ_EXT-awt,,=,${gcj:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: java5-runtime, java2-runtime, java1-runtime, java-runtime +BUILT_USING`'dnl +Description: Java runtime environment using GIJ/Classpath + GIJ is a Java bytecode interpreter, not limited to interpreting bytecode. + It includes a class loader which can dynamically load shared objects, so + it is possible to give it the name of a class which has been compiled and + put into a shared library on the class path. + . + The package contains as well a collection of wrapper scripts and symlinks. + It is meant to provide a Java-RTE-like interface to the GIJ/GCJ tool set. + +Package: libgcj`'LIBGCJ_EXT`'LS +Section: libs +Architecture: any +Priority: PRI(optional) +ifdef(`MULTIARCH', `Pre-Depends: multiarch-support +Multi-Arch: same +')`'dnl +Depends: SOFTBASEDEP, libgcj-common (>= 1:4.1.1-21), ${shlibs:Depends}, ${misc:Depends} +Recommends: gcj`'PV-jre-lib`'TS (>= ${gcj:SoftVersion}) +Suggests: libdbgdep(gcj`'GCJ_SO-dbg,), libdep(gcj`'LIBGCJ_EXT-awt,,=,${gcj:Version}) +BUILT_USING`'dnl +Description: Java runtime library for use with gcj + This is the runtime that goes along with the gcj front end to + gcc. libgcj includes parts of the Java Class Libraries, plus glue to + connect the libraries to the compiler and the underlying OS. + . + To show file names and line numbers in stack traces, the packages + libgcj`'GCJ_SO-dbg and binutils are required. + +Package: gcj`'PV-jre-lib`'TS +Section: java +Architecture: all +Priority: PRI(optional) +Depends: SOFTBASEDEP, libdep(gcj`'LIBGCJ_EXT,,>=,${gcj:SoftVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: Java runtime library for use with gcj (jar files) + This is the jar file that goes along with the gcj front end to gcc. + +ifenabled(`gcjbc',` +Package: libgcj-bc +Section: java +Architecture: any +Priority: PRI(optional) +ifdef(`MULTIARCH', `Pre-Depends: multiarch-support +Multi-Arch: same +')`'dnl +Depends: BASEDEP, libdep(gcj`'LIBGCJ_EXT,,>=,${gcj:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: Link time only library for use with gcj + A fake library that is used at link time only. It ensures that + binaries built with the BC-ABI link against a constant SONAME. + This way, BC-ABI binaries continue to work if the SONAME underlying + libgcj.so changes. +')`'dnl gcjbc + +Package: libgcj`'LIBGCJ_EXT-awt`'LS +Section: libs +Architecture: any +Priority: PRI(optional) +ifdef(`MULTIARCH', `Pre-Depends: multiarch-support +Multi-Arch: same +')`'dnl +Depends: SOFTBASEDEP, libdep(gcj`'LIBGCJ_EXT,,=,${gcj:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: ${pkg:gcjqt} +BUILT_USING`'dnl +Description: AWT peer runtime libraries for use with gcj + These are runtime libraries holding the AWT peer implementations + for libgcj (currently the GTK+ based peer library is required, the + QT bases library is not built). + +ifenabled(`gtkpeer',` +Package: libgcj`'GCJ_SO-awt-gtk`'LS +Section: libs +Architecture: any +Priority: PRI(optional) +ifdef(`MULTIARCH', `Pre-Depends: multiarch-support +Multi-Arch: same +')`'dnl +Depends: SOFTBASEDEP, libgcj`'LIBGCJ_EXT-awt`'LS (= ${gcj:Version}), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: AWT GTK+ peer runtime library for use with libgcj + This is the runtime library holding the GTK+ based AWT peer + implementation for libgcj. +')`'dnl gtkpeer + +ifenabled(`qtpeer',` +Package: libgcj`'GCJ_SO-awt-qt`'LS +Section: libs +Architecture: any +Priority: PRI(optional) +ifdef(`MULTIARCH', `Pre-Depends: multiarch-support +Multi-Arch: same +')`'dnl +Depends: SOFTBASEDEP, libdep(gcj`'LIBGCJ_EXT-awt,,=,${gcj:Version}), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: AWT QT peer runtime library for use with libgcj + This is the runtime library holding the QT based AWT peer + implementation for libgcj. +')`'dnl qtpeer +')`'dnl libgcj + +ifenabled(`libgcjdev',` +Package: libgcj`'GCJ_SO-dev`'LS +Section: libdevel +Architecture: any +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Priority: PRI(optional) +Depends: BASEDEP, libdep(gcj`'LIBGCJ_EXT-awt,,=,${gcj:Version}), libgcj-bc`'LS, ${pkg:gcjgtk}, ${pkg:gcjqt}, zlib1g-dev, ${shlibs:Depends}, ${misc:Depends} +Suggests: libgcj-doc +BUILT_USING`'dnl +Description: Java development headers for use with gcj + These are the development headers that go along with the gcj front end + to gcc. libgcj includes parts of the Java Class Libraries, plus glue + to connect the libraries to the compiler and the underlying OS. + +Package: libgcj`'GCJ_SO-dbg`'LS +Section: debug +Architecture: any +Priority: extra +ifdef(`MULTIARCH', `Pre-Depends: multiarch-support +Multi-Arch: same +')`'dnl +Depends: BASEDEP, libdep(gcj`'LIBGCJ_EXT,,=,${gcj:Version}), ${misc:Depends} +Recommends: binutils, libc6-dbg | libc-dbg +BUILT_USING`'dnl +Description: Debugging symbols for libraries provided in libgcj`'GCJ_SO-dev + The package provides debugging symbols for the libraries provided + in libgcj`'GCJ_SO-dev. + . + binutils is required to show file names and line numbers in stack traces. + +ifenabled(`gcjsrc',` +Package: gcj`'PV-source +Section: java +Architecture: all +Priority: PRI(optional) +Depends: SOFTBASEDEP, gcj`'PV-jdk (>= ${gcj:SoftVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: GCJ java sources for use in IDEs like eclipse and netbeans + These are the java source files packaged as a zip file for use in development + environments like eclipse and netbeans. +')`'dnl + +ifenabled(`gcjdoc',` +Package: libgcj-doc +Section: doc +Architecture: all +Priority: PRI(optional) +Depends: SOFTBASEDEP, ${misc:Depends} +Enhances: libgcj`'GCJ_SO-dev +Provides: classpath-doc +BUILT_USING`'dnl +Description: libgcj API documentation and example programs + Autogenerated documentation describing the API of the libgcj library. + Sources and precompiled example programs from the Classpath library. +')`'dnl gcjdoc +')`'dnl libgcjdev +')`'dnl java + +ifenabled(`c++',` +ifenabled(`libcxx',` +Package: libstdc++CXX_SO`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',PRI(important)) +Depends: BASEDEP, ${dep:libc}, ${shlibs:Depends}, ${misc:Depends} +Provides: ifdef(`TARGET',`libstdc++CXX_SO-TARGET-dcv1',`libstdc++'CXX_SO`-armel [armel], libstdc++'CXX_SO`-armhf [armhf]') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +Breaks: ${multiarch:breaks} +')`'dnl +Conflicts: scim (<< 1.4.2-1) +Replaces: libstdc++CXX_SO`'PV-dbg`'LS (<< 4.9.0-3) +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3`'ifdef(`TARGET)',` (TARGET)', `') + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libcxx + +ifenabled(`lib32cxx',` +Package: lib32stdc++CXX_SO`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: extra +Depends: BASEDEP, libdep(gcc1,32), ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +ifdef(`TARGET',`Provides: lib32stdc++CXX_SO-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (32 bit Version) + This package contains an additional runtime library for C++ programs + built with the GNU compiler. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl lib32cxx + +ifenabled(`lib64cxx',` +Package: lib64stdc++CXX_SO`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, libdep(gcc1,64), ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: lib64stdc++CXX_SO-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3`'ifdef(`TARGET)',` (TARGET)', `') (64bit) + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl lib64cxx + +ifenabled(`libn32cxx',` +Package: libn32stdc++CXX_SO`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, libdep(gcc1,n32), ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libn32stdc++CXX_SO-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3`'ifdef(`TARGET)',` (TARGET)', `') (n32) + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libn32cxx + +ifenabled(`libx32cxx',` +Package: libx32stdc++CXX_SO`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, libdep(gcc1,x32), ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libx32stdc++CXX_SO-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3`'ifdef(`TARGET)',` (TARGET)', `') (x32) + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libx32cxx + +ifenabled(`libhfcxx',` +Package: libhfstdc++CXX_SO`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, libdep(gcc1,hf), ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libhfstdc++CXX_SO-TARGET-dcv1 +',`')`'dnl +ifdef(`TARGET',`dnl',`Conflicts: libstdc++'CXX_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3`'ifdef(`TARGET)',` (TARGET)', `') (hard float ABI) + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libhfcxx + +ifenabled(`libsfcxx',` +Package: libsfstdc++CXX_SO`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, libdep(gcc1,sf), ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libsfstdc++CXX_SO-TARGET-dcv1 +',`')`'dnl +ifdef(`TARGET',`dnl',`Conflicts: libstdc++'CXX_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3`'ifdef(`TARGET)',` (TARGET)', `') (soft float ABI) + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libsfcxx + +ifenabled(`libneoncxx',` +Package: libstdc++CXX_SO-neon`'LS +Architecture: NEON_ARCHS +Section: libs +Priority: extra +Depends: BASEDEP, libc6-neon`'LS, libgcc1-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 [NEON version] + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl + +ifenabled(`c++dev',` +Package: libstdc++`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, libdevdep(gcc`'PV-dev,,=), + libdep(stdc++CXX_SO,,>=), ${dep:libcdev}, ${misc:Depends} +ifdef(`TARGET',`',`dnl native +Conflicts: libg++27-dev, libg++272-dev (<< 2.7.2.8-1), libstdc++2.8-dev, + libg++2.8-dev, libstdc++2.9-dev, libstdc++2.9-glibc2.1-dev, + libstdc++2.10-dev (<< 1:2.95.3-2), libstdc++3.0-dev +Suggests: libstdc++`'PV-doc +')`'dnl native +Provides: libstdc++-dev`'LS`'ifdef(`TARGET',`, libstdc++-dev-TARGET-dcv1') +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET)',` (TARGET)', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libstdc++`'PV-pic`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: extra +Depends: BASEDEP, libdep(stdc++CXX_SO,), + libdevdep(stdc++`'PV-dev,), ${misc:Depends} +ifdef(`TARGET',`Provides: libstdc++-pic-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (shared library subset kit)`'ifdef(`TARGET)',` (TARGET)', `') + This is used to develop subsets of the libstdc++ shared libraries for + use on custom installation floppies and in embedded systems. + . + Unless you are making one of those, you will not need this package. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libstdc++CXX_SO`'PV-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(stdc++CXX_SO,), + libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: ifdef(`TARGET',`libstdc++CXX_SO-dbg-TARGET-dcv1',`libstdc++'CXX_SO`'PV`-dbg-armel [armel], libstdc++'CXX_SO`'PV`-dbg-armhf [armhf]') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Recommends: libdevdep(stdc++`'PV-dev,) +Conflicts: libstdc++5-dbg`'LS, libstdc++5-3.3-dbg`'LS, libstdc++6-dbg`'LS, + libstdc++6-4.0-dbg`'LS, libstdc++6-4.1-dbg`'LS, libstdc++6-4.2-dbg`'LS, + libstdc++6-4.3-dbg`'LS, libstdc++6-4.4-dbg`'LS, libstdc++6-4.5-dbg`'LS, + libstdc++6-4.6-dbg`'LS, libstdc++6-4.7-dbg`'LS, libstdc++6-4.8-dbg`'LS +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: lib32stdc++`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, libdevdep(gcc`'PV-dev,32), + libdep(stdc++CXX_SO,32), libdevdep(stdc++`'PV-dev,), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: lib32stdc++CXX_SO`'PV-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(stdc++CXX_SO,32), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc`'GCC_SO-dbg,32,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: lib32stdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +Conflicts: lib32stdc++6-dbg`'LS, lib32stdc++6-4.0-dbg`'LS, + lib32stdc++6-4.1-dbg`'LS, lib32stdc++6-4.2-dbg`'LS, lib32stdc++6-4.3-dbg`'LS, + lib32stdc++6-4.4-dbg`'LS, lib32stdc++6-4.5-dbg`'LS, lib32stdc++6-4.6-dbg`'LS, + lib32stdc++6-4.7-dbg`'LS, lib32stdc++6-4.8-dbg`'LS +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: lib64stdc++`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, libdevdep(gcc`'PV-dev,64), + libdep(stdc++CXX_SO,64), libdevdep(stdc++`'PV-dev,), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: lib64stdc++CXX_SO`'PV-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(stdc++CXX_SO,64), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc`'GCC_SO-dbg,64,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: lib64stdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +Conflicts: lib64stdc++6-dbg`'LS, lib64stdc++6-4.0-dbg`'LS, + lib64stdc++6-4.1-dbg`'LS, lib64stdc++6-4.2-dbg`'LS, lib64stdc++6-4.3-dbg`'LS, + lib64stdc++6-4.4-dbg`'LS, lib64stdc++6-4.5-dbg`'LS, lib64stdc++6-4.6-dbg`'LS, + lib64stdc++6-4.7-dbg`'LS, lib64stdc++6-4.8-dbg`'LS +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libn32stdc++`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, libdevdep(gcc`'PV-dev,n32), + libdep(stdc++CXX_SO,n32), libdevdep(stdc++`'PV-dev,), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libn32stdc++CXX_SO`'PV-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(stdc++CXX_SO,n32), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc`'GCC_SO-dbg,n32,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libn32stdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +Conflicts: libn32stdc++6-dbg`'LS, libn32stdc++6-4.0-dbg`'LS, + libn32stdc++6-4.1-dbg`'LS, libn32stdc++6-4.2-dbg`'LS, libn32stdc++6-4.3-dbg`'LS, + libn32stdc++6-4.4-dbg`'LS, libn32stdc++6-4.5-dbg`'LS, libn32stdc++6-4.6-dbg`'LS, + libn32stdc++6-4.7-dbg`'LS, libn32stdc++6-4.8-dbg`'LS +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`x32dev',` +Package: libx32stdc++`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, libdevdep(gcc`'PV-dev,x32), libdep(stdc++CXX_SO,x32), + libdevdep(stdc++`'PV-dev,), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl x32dev + +ifenabled(`libx32dbgcxx',` +Package: libx32stdc++CXX_SO`'PV-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(stdc++CXX_SO,x32), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc`'GCC_SO-dbg,x32,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libx32stdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +Conflicts: libx32stdc++6-dbg`'LS, libx32stdc++6-4.6-dbg`'LS, + libx32stdc++6-4.7-dbg`'LS, libx32stdc++6-4.8-dbg`'LS +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libx32dbgcxx + +ifenabled(`libhfdbgcxx',` +Package: libhfstdc++`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, libdevdep(gcc`'PV-dev,hf), + libdep(stdc++CXX_SO,hf), libdevdep(stdc++`'PV-dev,), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libhfstdc++CXX_SO`'PV-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(stdc++CXX_SO,hf), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc`'GCC_SO-dbg,hf,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libhfstdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +ifdef(`TARGET',`dnl',`Conflicts: libhfstdc++6-dbg`'LS, libhfstdc++6-4.3-dbg`'LS, libhfstdc++6-4.4-dbg`'LS, libhfstdc++6-4.5-dbg`'LS, libhfstdc++6-4.6-dbg`'LS, libhfstdc++6-4.7-dbg`'LS, libhfstdc++6-4.8-dbg`'LS, libstdc++'CXX_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libhfdbgcxx + +ifenabled(`libsfdbgcxx',` +Package: libsfstdc++`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, libdevdep(gcc`'PV-dev,sf), + libdep(stdc++CXX_SO,sf), libdevdep(stdc++`'PV-dev,), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libsfstdc++CXX_SO`'PV-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libdep(stdc++CXX_SO,sf), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc`'GCC_SO-dbg,sf,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libsfstdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +ifdef(`TARGET',`dnl',`Conflicts: libsfstdc++6-dbg`'LS, libsfstdc++6-4.3-dbg`'LS, libsfstdc++6-4.4-dbg`'LS, libsfstdc++6-4.5-dbg`'LS, libsfstdc++6-4.6-dbg`'LS, libsfstdc++6-4.7-dbg`'LS, libsfstdc++6-4.8-dbg`'LS, libstdc++'CXX_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libsfdbgcxx + +ifdef(`TARGET', `', ` +Package: libstdc++`'PV-doc +Architecture: all +Section: doc +Priority: PRI(optional) +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Conflicts: libstdc++5-doc, libstdc++5-3.3-doc, libstdc++6-doc, + libstdc++6-4.0-doc, libstdc++6-4.1-doc, libstdc++6-4.2-doc, libstdc++6-4.3-doc, + libstdc++6-4.4-doc, libstdc++6-4.5-doc, libstdc++6-4.6-doc, libstdc++6-4.7-doc, + libstdc++-4.8-doc +Description: GNU Standard C++ Library v3 (documentation files) + This package contains documentation files for the GNU stdc++ library. + . + One set is the distribution documentation, the other set is the + source documentation including a namespace list, class hierarchy, + alphabetical list, compound list, file list, namespace members, + compound members and file members. +')`'dnl native +')`'dnl c++dev +')`'dnl c++ + +ifenabled(`ada',` +Package: gnat`'-GNAT_V`'TS +Architecture: any +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +ifdef(`MULTIARCH', `Pre-Depends: multiarch-support +')`'dnl +Depends: BASEDEP, gcc`'PV`'TS (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat`'PV-doc, ada-reference-manual-2012, gnat`'-GNAT_V-sjlj +Breaks: gnat (<< 4.6.1), dh-ada-library (<< 6.0), gnat-4.6-base (= 4.6.4-2), + gnat-4.9-base (= 4.9-20140330-1) +Replaces: gnat (<< 4.6.1), dh-ada-library (<< 6.0), gnat-4.6-base (= 4.6.4-2), + gnat-4.9-base (= 4.9-20140330-1) +# Takes over symlink from gnat (<< 4.6.1): /usr/bin/gnatgcc. +# Takes over file from dh-ada-library (<< 6.0): debian_packaging.mk. +# g-base 4.6.4-2, 4.9-20140330-1 contain debian_packaging.mk by mistake. +# Newer versions of gnat and dh-ada-library will not provide these files. +Conflicts: gnat (<< 4.1), gnat-3.1, gnat-3.2, gnat-3.3, gnat-3.4, gnat-3.5, + gnat-4.0, gnat-4.1, gnat-4.2, gnat-4.3, gnat-4.4, gnat-4.6, gnat-4.7, gnat-4.8 +# These other packages will continue to provide /usr/bin/gnatmake and +# other files. +BUILT_USING`'dnl +Description: GNU Ada compiler + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat`'-GNAT_V-sjlj`'TS +Architecture: any +Priority: extra +ifdef(`MULTIARCH', `Pre-Depends: multiarch-support +')`'dnl +Depends: BASEDEP, gnat`'-GNAT_V`'TS (= ${gnat:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Ada compiler (setjump/longjump runtime library) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides an alternative runtime library that handles + exceptions using the setjump/longjump mechanism (as a static library + only). You can install it to supplement the normal compiler. + +ifenabled(`libgnat',` +Package: libgnat`'-GNAT_V`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +')`'dnl +Priority: PRI(optional) +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: runtime for applications compiled with GNAT (shared library) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the runtime shared library. + +Package: libgnat`'-GNAT_V-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +')`'dnl +Priority: extra +Depends: BASEDEP, libgnat`'-GNAT_V`'LS (= ${gnat:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: runtime for applications compiled with GNAT (debugging symbols) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the debugging symbols. + +Package: libgnatvsn`'GNAT_V-dev`'LS +Section: libdevel +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Priority: extra +Depends: BASEDEP, gnat`'PV`'LS (= ${gnat:Version}), + libgnatvsn`'GNAT_V`'LS (= ${gnat:Version}), ${misc:Depends} +Conflicts: libgnatvsn-dev (<< `'GNAT_V), libgnatvsn4.1-dev, libgnatvsn4.3-dev, libgnatvsn4.4-dev, libgnatvsn4.5-dev, libgnatvsn4.6-dev +BUILT_USING`'dnl +Description: GNU Ada compiler selected components (development files) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnatvsn library exports selected GNAT components for use in other + packages, most notably ASIS tools. It is licensed under the GNAT-Modified + GPL, allowing to link proprietary programs with it. + . + This package contains the development files and static library. + +Package: libgnatvsn`'GNAT_V`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +')`'dnl +Priority: PRI(optional) +Section: ifdef(`TARGET',`devel',`libs') +Depends: BASEDEP, libgnat`'-GNAT_V`'LS (= ${gnat:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Ada compiler selected components (shared library) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnatvsn library exports selected GNAT components for use in other + packages, most notably ASIS tools. It is licensed under the GNAT-Modified + GPL, allowing to link proprietary programs with it. + . + This package contains the runtime shared library. + +Package: libgnatvsn`'GNAT_V-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +')`'dnl +Priority: extra +Section: debug +Depends: BASEDEP, libgnatvsn`'GNAT_V`'LS (= ${gnat:Version}), ${misc:Depends} +Suggests: gnat +BUILT_USING`'dnl +Description: GNU Ada compiler selected components (debugging symbols) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnatvsn library exports selected GNAT components for use in other + packages, most notably ASIS tools. It is licensed under the GNAT-Modified + GPL, allowing to link proprietary programs with it. + . + This package contains the debugging symbols. + +Package: libgnatprj`'GNAT_V-dev`'LS +Section: libdevel +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Priority: extra +Depends: BASEDEP, gnat`'PV`'TS (= ${gnat:Version}), + libgnatprj`'GNAT_V`'LS (= ${gnat:Version}), + libgnatvsn`'GNAT_V-dev`'LS (= ${gnat:Version}), ${misc:Depends} +Conflicts: libgnatprj-dev (<< `'GNAT_V), libgnatprj4.1-dev, libgnatprj4.3-dev, libgnatprj4.4-dev, libgnatprj4.5-dev, libgnatprj4.6-dev +BUILT_USING`'dnl +Description: GNU Ada compiler Project Manager (development files) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + GNAT uses project files to organise source and object files in large-scale + development efforts. The libgnatprj library exports GNAT project files + management for use in other packages, most notably ASIS tools (package + asis-programs) and GNAT Programming Studio (package gnat-gps). It is + licensed under the pure GPL; all programs that use it must also be + distributed under the GPL, or not distributed at all. + . + This package contains the development files and static library. + +Package: libgnatprj`'GNAT_V`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +')`'dnl +Priority: PRI(optional) +Section: ifdef(`TARGET',`devel',`libs') +Depends: BASEDEP, libgnat`'-GNAT_V`'LS (= ${gnat:Version}), libgnatvsn`'GNAT_V`'LS (= ${gnat:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Ada compiler Project Manager (shared library) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + GNAT uses project files to organise source and object files in large-scale + development efforts. The libgnatprj library exports GNAT project files + management for use in other packages, most notably ASIS tools (package + asis-programs) and GNAT Programming Studio (package gnat-gps). It is + licensed under the pure GPL; all programs that use it must also be + distributed under the GPL, or not distributed at all. + . + This package contains the runtime shared library. + +Package: libgnatprj`'GNAT_V-dbg`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +')`'dnl +Priority: extra +Section: debug +Depends: BASEDEP, libgnatprj`'GNAT_V`'LS (= ${gnat:Version}), ${misc:Depends} +Suggests: gnat +BUILT_USING`'dnl +Description: GNU Ada compiler Project Manager (debugging symbols) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + GNAT uses project files to organise source and object files in large-scale + development efforts. The libgnatprj library exports GNAT project files + management for use in other packages, most notably ASIS tools (package + asis-programs) and GNAT Programming Studio (package gnat-gps). It is + licensed under the pure GPL; all programs that use it must also be + distributed under the GPL, or not distributed at all. + . + This package contains the debugging symbols. +')`'dnl libgnat + +ifenabled(`lib64gnat',` +Package: lib64gnat`'-GNAT_V +Section: libs +Architecture: biarch64_archs +Priority: PRI(optional) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: runtime for applications compiled with GNAT (64 bits shared library) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the runtime shared library for 64 bits architectures. +')`'dnl libgnat + +ifenabled(`gfdldoc',` +Package: gnat`'PV-doc +Architecture: all +Section: doc +Priority: PRI(optional) +Depends: dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Suggests: gnat`'PV +Conflicts: gnat-4.1-doc, gnat-4.2-doc, gnat-4.3-doc, gnat-4.4-doc, gnat-4.6-doc +BUILT_USING`'dnl +Description: GNU Ada compiler (documentation) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the documentation in info `format'. +')`'dnl gfdldoc +')`'dnl ada + +ifenabled(`d ',` +Package: gdc`'PV`'TS +Architecture: any +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: SOFTBASEDEP, g++`'PV`'TS (>= ${gcc:SoftVersion}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Provides: gdc, d-compiler, d-v2-compiler +Replaces: gdc (<< 4.4.6-5) +BUILT_USING`'dnl +Description: GNU D compiler (version 2), based on the GCC backend + This is the GNU D compiler, which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +ifenabled(`libphobos',` +Package: libphobos`'PV-dev`'LS +Architecture: ifdef(`TARGET',`CROSS_ARCH',`libphobos_archs') +Section: libdevel +Priority: PRI(optional) +Depends: BASEDEP, zlib1g-dev, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Phobos D standard library + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +#Package: libphobos`'PHOBOS_V`'PV`'TS-dbg +#Section: debug +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`libphobos_archs') +#Priority: extra +#Depends: BASEDEP, libphobos`'PHOBOS_V`'PV-dev (= ${gdc:Version}), ${misc:Depends} +#Provides: libphobos`'PHOBOS_V`'TS-dbg +#BUILT_USING`'dnl +#Description: The Phobos D standard library (debug symbols) +# This is the Phobos standard library that comes with the D2 compiler. +# . +# For more information check http://www.dlang.org/phobos/ +')`'dnl libphobos +')`'dnl d + +ifdef(`TARGET',`',`dnl +ifenabled(`libs',` +#Package: gcc`'PV-soft-float +#Architecture: arm armel armhf +#Priority: PRI(optional) +#Depends: BASEDEP, depifenabled(`cdev',`gcc`'PV (= ${gcc:Version}),') ${shlibs:Depends}, ${misc:Depends} +#Conflicts: gcc-4.4-soft-float, gcc-4.5-soft-float, gcc-4.6-soft-float +#BUILT_USING`'dnl +#Description: GCC soft-floating-point gcc libraries (ARM) +# These are versions of basic static libraries such as libgcc.a compiled +# with the -msoft-float option, for CPUs without a floating-point unit. +')`'dnl commonlibs +')`'dnl + +ifenabled(`fixincl',` +Package: fixincludes +Architecture: any +Priority: PRI(optional) +Depends: BASEDEP, gcc`'PV (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Fix non-ANSI header files + FixIncludes was created to fix non-ANSI system header files. Many + system manufacturers supply proprietary headers that are not ANSI compliant. + The GNU compilers cannot compile non-ANSI headers. Consequently, the + FixIncludes shell script was written to fix the header files. + . + Not all packages with header files are installed on the system, when the + package is built, so we make fixincludes available at build time of other + packages, such that checking tools like lintian can make use of it. +')`'dnl fixincl + +ifenabled(`cdev',` +ifdef(`TARGET', `', ` +ifenabled(`gfdldoc',` +Package: gcc`'PV-doc +Architecture: all +Section: doc +Priority: PRI(optional) +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Conflicts: gcc-docs (<< 2.95.2) +Replaces: gcc (<=2.7.2.3-4.3), gcc-docs (<< 2.95.2) +Description: Documentation for the GNU compilers (gcc, gobjc, g++) + Documentation for the GNU compilers in info `format'. +')`'dnl gfdldoc +')`'dnl native +')`'dnl cdev + +ifdef(`TARGET',`',`dnl +ifenabled(`libnof',` +#Package: gcc`'PV-nof +#Architecture: powerpc +#Priority: PRI(optional) +#Depends: BASEDEP, ${shlibs:Depends}ifenabled(`cdev',`, gcc`'PV (= ${gcc:Version})'), ${misc:Depends} +#Conflicts: gcc-3.2-nof +#BUILT_USING`'dnl +#Description: GCC no-floating-point gcc libraries (powerpc) +# These are versions of basic static libraries such as libgcc.a compiled +# with the -msoft-float option, for CPUs without a floating-point unit. +')`'dnl libnof +')`'dnl + +ifenabled(`source',` +Package: gcc`'PV-source +Architecture: all +Priority: PRI(optional) +Depends: make, autoconf2.64, quilt, patchutils, gawk, ${misc:Depends} +Description: Source of the GNU Compiler Collection + This package contains the sources and patches which are needed to + build the GNU Compiler Collection (GCC). +')`'dnl source +dnl +')`'dnl gcc-X.Y +dnl last line in file --- gcc-4.9-4.9.2.orig/debian/copyright +++ gcc-4.9-4.9.2/debian/copyright @@ -0,0 +1,693 @@ +This is the Debian GNU/Linux prepackaged version of the GNU compiler +collection, containing Ada, C, C++, Fortran 95, Java, Objective-C, +Objective-C++, and Treelang compilers, documentation, and support +libraries. In addition, Debian provides the gdc compiler, either in +the same source package, or built from a separate same source package. +Packaging is done by the Debian GCC Maintainers +, with sources obtained from: + + ftp://gcc.gnu.org/pub/gcc/releases/ (for full releases) + svn://gcc.gnu.org/svn/gcc/ (for prereleases) + http://bitbucket.org/goshawk/gdc (for D) + +The current gcc-4.9 source package is taken from the SVN gcc-4_9-branch. + +Changes: See changelog.Debian.gz + +Debian splits the GNU Compiler Collection into packages for each language, +library, and documentation as follows: + +Language Compiler package Library package Documentation +--------------------------------------------------------------------------- +Ada gnat-4.9 libgnat-4.9 gnat-4.9-doc +C gcc-4.9 gcc-4.9-doc +C++ g++-4.9 libstdc++6 libstdc++6-4.9-doc +D gdc-4.9 +Fortran 95 gfortran-4.9 libgfortran3 gfortran-4.9-doc +Go gccgo-4.9 libgo0 +Java gcj-4.9 libgcj10 libgcj-doc +Objective C gobjc-4.9 libobjc2 +Objective C++ gobjc++-4.9 + +For some language run-time libraries, Debian provides source files, +development files, debugging symbols and libraries containing position- +independent code in separate packages: + +Language Sources Development Debugging Position-Independent +------------------------------------------------------------------------------ +C++ libstdc++6-4.9-dbg libstdc++6-4.9-pic +D libphobos-4.9-dev +Java libgcj10-src libgcj10-dev libgcj10-dbg + +Additional packages include: + +All languages: +libgcc1, libgcc2, libgcc4 GCC intrinsics (platform-dependent) +gcc-4.9-base Base files common to all compilers +gcc-4.9-soft-float Software floating point (ARM only) +gcc-4.9-source The sources with patches + +Ada: +libgnatvsn-dev, libgnatvsn4.9 GNAT version library +libgnatprj-dev, libgnatprj4.9 GNAT Project Manager library + +C: +cpp-4.9, cpp-4.9-doc GNU C Preprocessor +libssp0-dev, libssp0 GCC stack smashing protection library +libquadmath0 Math routines for the __float128 type +fixincludes Fix non-ANSI header files +protoize Create/remove ANSI prototypes from C code + +Java: +gij The Java bytecode interpreter and VM +libgcj-common Common files for the Java run-time +libgcj10-awt The Abstract Windowing Toolkit +libgcj10-jar Java ARchive for the Java run-time + +C, C++ and Fortran 95: +libgomp1-dev, libgomp1 GCC OpenMP (GOMP) support library +libitm1-dev, libitm1 GNU Transactional Memory Library + +Biarch support: On some 64-bit platforms which can also run 32-bit code, +Debian provides additional packages containing 32-bit versions of some +libraries. These packages have names beginning with 'lib32' instead of +'lib', for example lib32stdc++6. Similarly, on some 32-bit platforms which +can also run 64-bit code, Debian provides additional packages with names +beginning with 'lib64' instead of 'lib'. These packages contain 64-bit +versions of the libraries. (At this time, not all platforms and not all +libraries support biarch.) The license terms for these lib32 or lib64 +packages are identical to the ones for the lib packages. + + +COPYRIGHT STATEMENTS AND LICENSING TERMS + + +GCC is Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, +1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, +2008, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Files that have exception clauses are licensed under the terms of the +GNU General Public License; either version 3, or (at your option) any +later version. + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', version 3 of this +license in `/usr/share/common-licenses/GPL-3'. + +The following runtime libraries are licensed under the terms of the +GNU General Public License (v3 or later) with version 3.1 of the GCC +Runtime Library Exception (included in this file): + + - libgcc (libgcc/, gcc/libgcc2.[ch], gcc/unwind*, gcc/gthr*, + gcc/coretypes.h, gcc/crtstuff.c, gcc/defaults.h, gcc/dwarf2.h, + gcc/emults.c, gcc/gbl-ctors.h, gcc/gcov-io.h, gcc/libgcov.c, + gcc/tsystem.h, gcc/typeclass.h). + - libatomic + - libdecnumber + - libgomp + - libitm + - libssp + - libstdc++-v3 + - libobjc + - libgfortran + - The libgnat-4.9 Ada support library and libgnatvsn library. + - Various config files in gcc/config/ used in runtime libraries. + - libvtv + +In contrast, libgnatprj is licensed under the terms of the pure GNU +General Public License. + +The libbacktrace library is licensed under the following terms: + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + (1) Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + (2) Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + (3) The name of the author may not be used to + endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + + +The libsanitizer libraries (libasan, liblsan, libtsan, libubsan) are +licensed under the following terms: + +Copyright (c) 2009-2014 by the LLVM contributors. + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +The libgcj library is licensed under the terms of the GNU General +Public License, with a special exception: + + Linking this library statically or dynamically with other modules + is making a combined work based on this library. Thus, the terms + and conditions of the GNU General Public License cover the whole + combination. + + As a special exception, the copyright holders of this library give + you permission to link this library with independent modules to + produce an executable, regardless of the license terms of these + independent modules, and to copy and distribute the resulting + executable under terms of your choice, provided that you also + meet, for each linked independent module, the terms and conditions + of the license of that module. An independent module is a module + which is not derived from or based on this library. If you modify + this library, you may extend this exception to your version of the + library, but you are not obligated to do so. If you do not wish + to do so, delete this exception statement from your version. + +The libffi library is licensed under the following terms: + + libffi - Copyright (c) 1996-2003 Red Hat, Inc. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + + +The documentation is licensed under the GNU Free Documentation License (v1.2). +On Debian GNU/Linux systems, the complete text of this license is in +`/usr/share/common-licenses/GFDL-1.2'. + + +GCC RUNTIME LIBRARY EXCEPTION + +Version 3.1, 31 March 2009 + +Copyright (C) 2009 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + +This GCC Runtime Library Exception ("Exception") is an additional +permission under section 7 of the GNU General Public License, version +3 ("GPLv3"). It applies to a given file (the "Runtime Library") that +bears a notice placed by the copyright holder of the file stating that +the file is governed by GPLv3 along with this Exception. + +When you use GCC to compile a program, GCC may combine portions of +certain GCC header files and runtime libraries with the compiled +program. The purpose of this Exception is to allow compilation of +non-GPL (including proprietary) programs to use, in this way, the +header files and runtime libraries covered by this Exception. + +0. Definitions. + +A file is an "Independent Module" if it either requires the Runtime +Library for execution after a Compilation Process, or makes use of an +interface provided by the Runtime Library, but is not otherwise based +on the Runtime Library. + +"GCC" means a version of the GNU Compiler Collection, with or without +modifications, governed by version 3 (or a specified later version) of +the GNU General Public License (GPL) with the option of using any +subsequent versions published by the FSF. + +"GPL-compatible Software" is software whose conditions of propagation, +modification and use would permit combination with GCC in accord with +the license of GCC. + +"Target Code" refers to output from any compiler for a real or virtual +target processor architecture, in executable form or suitable for +input to an assembler, loader, linker and/or execution +phase. Notwithstanding that, Target Code does not include data in any +format that is used as a compiler intermediate representation, or used +for producing a compiler intermediate representation. + +The "Compilation Process" transforms code entirely represented in +non-intermediate languages designed for human-written code, and/or in +Java Virtual Machine byte code, into Target Code. Thus, for example, +use of source code generators and preprocessors need not be considered +part of the Compilation Process, since the Compilation Process can be +understood as starting with the output of the generators or +preprocessors. + +A Compilation Process is "Eligible" if it is done using GCC, alone or +with other GPL-compatible software, or if it is done without using any +work based on GCC. For example, using non-GPL-compatible Software to +optimize any GCC intermediate representations would not qualify as an +Eligible Compilation Process. + +1. Grant of Additional Permission. + +You have permission to propagate a work of Target Code formed by +combining the Runtime Library with Independent Modules, even if such +propagation would otherwise violate the terms of GPLv3, provided that +all Target Code was generated by Eligible Compilation Processes. You +may then convey such a combination under terms of your choice, +consistent with the licensing of the Independent Modules. + +2. No Weakening of GCC Copyleft. + +The availability of this Exception does not imply any general +presumption that third-party software is unaffected by the copyleft +requirements of the license of GCC. + + +libquadmath/*.[hc]: + + Copyright (C) 2010 Free Software Foundation, Inc. + Written by Francois-Xavier Coudert + Written by Tobias Burnus + +This file is part of the libiberty library. +Libiberty is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +Libiberty is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +libquadmath/gdtoa: + +The author of this software is David M. Gay. + +Copyright (C) 1998, 1999, 2000, 2001 by Lucent Technologies +All Rights Reserved + +Permission to use, copy, modify, and distribute this software and +its documentation for any purpose and without fee is hereby +granted, provided that the above copyright notice appear in all +copies and that both that the copyright notice and this +permission notice and warranty disclaimer appear in supporting +documentation, and that the name of Lucent or any of its entities +not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. + +LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. +IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER +IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. + +libquadmath/math: + +atanq.c, expm1q.c, j0q.c, j1q.c, log1pq.c, logq.c: + Copyright 2001 by Stephen L. Moshier + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +coshq.c, erfq.c, jnq.c, lgammaq.c, powq.c, roundq.c: + Changes for 128-bit __float128 are + Copyright (C) 2001 Stephen L. Moshier + and are incorporated herein by permission of the author. The author + reserves the right to distribute this material elsewhere under different + copying permissions. These modifications are distributed here under + the following terms: + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +ldexpq.c: + * Conversion to long double by Ulrich Drepper, + * Cygnus Support, drepper@cygnus.com. + +cosq_kernel.c, expq.c, sincos_table.c, sincosq.c, sincosq_kernel.c, +sinq_kernel.c, truncq.c: + Copyright (C) 1997, 1999 Free Software Foundation, Inc. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +isinfq.c: + * Written by J.T. Conklin . + * Change for long double by Jakub Jelinek + * Public domain. + +llroundq.c, lroundq.c, tgammaq.c: + Copyright (C) 1997, 1999, 2002, 2004 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1997 and + Jakub Jelinek , 1999. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +log10q.c: + Cephes Math Library Release 2.2: January, 1991 + Copyright 1984, 1991 by Stephen L. Moshier + Adapted for glibc November, 2001 + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +remaining files: + + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + + +libjava/classpath/resource/gnu/java/locale/* + +They are copyrighted and covered by the terms of use: +http://www.unicode.org/copyright.html + +EXHIBIT 1 +UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE + + Unicode Data Files include all data files under the directories +http://www.unicode.org/Public/ and http://www.unicode.org/reports/. +Unicode Software includes any source code published in the Unicode Standard or +under the directories http://www.unicode.org/Public/ and +http://www.unicode.org/reports/. + +NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, +INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"), +AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, +ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, +DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE. + + COPYRIGHT AND PERMISSION NOTICE + +Copyrigh (c) 1991-2011 Unicode, Inc. All rights reserved. +Distributed under the Terms of Use in http://www.unicode.org/copyright.html. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of the Unicode data files and any associated documentation (the "Data Files") +or Unicode software and any associated documentation (the "Software") to deal +in the Data Files or Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, and/or sell copies + of the Data Files or Software, and to permit persons to whom the Data Files +or Software are furnished to do so, provided that (a) the above copyright notice(s) +and this permission notice appear with all copies of the Data Files or Software, +(b) both the above copyright notice(s) and this permission notice appear +in associated documentation, and (c) there is clear notice in each modified +Data File or in the Software as well as in the documentation associated with +the Data File(s) or Software that the data or software has been modified. + +THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE + FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF +CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. + +Except as contained in this notice, the name of a copyright holder shall not be used + in advertising or otherwise to promote the sale, use or other dealings in these +Data Files or Software without prior written authorization of the copyright holder. + +Unicode and the Unicode logo are trademarks of Unicode, Inc., and may be registered + in some jurisdictions. All other trademarks and registered trademarks mentioned +herein are the property of their respective owners. + + +gcc/go/gofrontend, libgo: + +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +libcilkrts: + Copyright (C) 2009-2013, Intel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of Intel Corporation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY + WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + + +D: +gdc-4.9 GNU D Compiler +libphobos-4.9-dev D standard runtime library + +The D source package is made up of the following components. + +The D front-end for GCC: + - d/* + +Copyright (C) 2004-2007 David Friedman +Modified by Vincenzo Ampolo, Michael Parrot, Iain Buclaw, (C) 2009, 2010 + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', version 2 of this +license in `/usr/share/common-licenses/GPL-2'. + + +The DMD Compiler implementation of the D programming language: + - d/dmd/* + +Copyright (c) 1999-2010 by Digital Mars +All Rights Reserved +written by Walter Bright +http://www.digitalmars.com +License for redistribution is by either the Artistic License or +the GNU General Public License (v1). + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', the Artistic +license in `/usr/share/common-licenses/Artistic'. + + +The Zlib data compression library: + - d/phobos/etc/c/zlib/* + + (C) 1995-2004 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + +The Phobos standard runtime library: + - d/phobos/* + +Unless otherwise marked within the file, each file in the source +is under the following licenses: + +Copyright (C) 2004-2005 by Digital Mars, www.digitalmars.com +Written by Walter Bright + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, in both source and binary form, subject to the following +restrictions: + + o The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + o Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + o This notice may not be removed or altered from any source + distribution. + +By plainly marking modifications, something along the lines of adding to each +file that has been changed a "Modified by Foo Bar" line +underneath the "Written by" line would be adequate. + --- gcc-4.9-4.9.2.orig/debian/copyright.in +++ gcc-4.9-4.9.2/debian/copyright.in @@ -0,0 +1,693 @@ +This is the Debian GNU/Linux prepackaged version of the GNU compiler +collection, containing Ada, C, C++, Fortran 95, Java, Objective-C, +Objective-C++, and Treelang compilers, documentation, and support +libraries. In addition, Debian provides the gdc compiler, either in +the same source package, or built from a separate same source package. +Packaging is done by the Debian GCC Maintainers +, with sources obtained from: + + ftp://gcc.gnu.org/pub/gcc/releases/ (for full releases) + svn://gcc.gnu.org/svn/gcc/ (for prereleases) + http://bitbucket.org/goshawk/gdc (for D) + +The current gcc-@BV@ source package is taken from the SVN @SVN_BRANCH@. + +Changes: See changelog.Debian.gz + +Debian splits the GNU Compiler Collection into packages for each language, +library, and documentation as follows: + +Language Compiler package Library package Documentation +--------------------------------------------------------------------------- +Ada gnat-@BV@ libgnat-@BV@ gnat-@BV@-doc +C gcc-@BV@ gcc-@BV@-doc +C++ g++-@BV@ libstdc++6 libstdc++6-@BV@-doc +D gdc-@BV@ +Fortran 95 gfortran-@BV@ libgfortran3 gfortran-@BV@-doc +Go gccgo-@BV@ libgo0 +Java gcj-@BV@ libgcj10 libgcj-doc +Objective C gobjc-@BV@ libobjc2 +Objective C++ gobjc++-@BV@ + +For some language run-time libraries, Debian provides source files, +development files, debugging symbols and libraries containing position- +independent code in separate packages: + +Language Sources Development Debugging Position-Independent +------------------------------------------------------------------------------ +C++ libstdc++6-@BV@-dbg libstdc++6-@BV@-pic +D libphobos-@BV@-dev +Java libgcj10-src libgcj10-dev libgcj10-dbg + +Additional packages include: + +All languages: +libgcc1, libgcc2, libgcc4 GCC intrinsics (platform-dependent) +gcc-@BV@-base Base files common to all compilers +gcc-@BV@-soft-float Software floating point (ARM only) +gcc-@BV@-source The sources with patches + +Ada: +libgnatvsn-dev, libgnatvsn@BV@ GNAT version library +libgnatprj-dev, libgnatprj@BV@ GNAT Project Manager library + +C: +cpp-@BV@, cpp-@BV@-doc GNU C Preprocessor +libssp0-dev, libssp0 GCC stack smashing protection library +libquadmath0 Math routines for the __float128 type +fixincludes Fix non-ANSI header files +protoize Create/remove ANSI prototypes from C code + +Java: +gij The Java bytecode interpreter and VM +libgcj-common Common files for the Java run-time +libgcj10-awt The Abstract Windowing Toolkit +libgcj10-jar Java ARchive for the Java run-time + +C, C++ and Fortran 95: +libgomp1-dev, libgomp1 GCC OpenMP (GOMP) support library +libitm1-dev, libitm1 GNU Transactional Memory Library + +Biarch support: On some 64-bit platforms which can also run 32-bit code, +Debian provides additional packages containing 32-bit versions of some +libraries. These packages have names beginning with 'lib32' instead of +'lib', for example lib32stdc++6. Similarly, on some 32-bit platforms which +can also run 64-bit code, Debian provides additional packages with names +beginning with 'lib64' instead of 'lib'. These packages contain 64-bit +versions of the libraries. (At this time, not all platforms and not all +libraries support biarch.) The license terms for these lib32 or lib64 +packages are identical to the ones for the lib packages. + + +COPYRIGHT STATEMENTS AND LICENSING TERMS + + +GCC is Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, +1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, +2008, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Files that have exception clauses are licensed under the terms of the +GNU General Public License; either version 3, or (at your option) any +later version. + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', version 3 of this +license in `/usr/share/common-licenses/GPL-3'. + +The following runtime libraries are licensed under the terms of the +GNU General Public License (v3 or later) with version 3.1 of the GCC +Runtime Library Exception (included in this file): + + - libgcc (libgcc/, gcc/libgcc2.[ch], gcc/unwind*, gcc/gthr*, + gcc/coretypes.h, gcc/crtstuff.c, gcc/defaults.h, gcc/dwarf2.h, + gcc/emults.c, gcc/gbl-ctors.h, gcc/gcov-io.h, gcc/libgcov.c, + gcc/tsystem.h, gcc/typeclass.h). + - libatomic + - libdecnumber + - libgomp + - libitm + - libssp + - libstdc++-v3 + - libobjc + - libgfortran + - The libgnat-@BV@ Ada support library and libgnatvsn library. + - Various config files in gcc/config/ used in runtime libraries. + - libvtv + +In contrast, libgnatprj is licensed under the terms of the pure GNU +General Public License. + +The libbacktrace library is licensed under the following terms: + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + (1) Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + (2) Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + (3) The name of the author may not be used to + endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + + +The libsanitizer libraries (libasan, liblsan, libtsan, libubsan) are +licensed under the following terms: + +Copyright (c) 2009-2014 by the LLVM contributors. + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +The libgcj library is licensed under the terms of the GNU General +Public License, with a special exception: + + Linking this library statically or dynamically with other modules + is making a combined work based on this library. Thus, the terms + and conditions of the GNU General Public License cover the whole + combination. + + As a special exception, the copyright holders of this library give + you permission to link this library with independent modules to + produce an executable, regardless of the license terms of these + independent modules, and to copy and distribute the resulting + executable under terms of your choice, provided that you also + meet, for each linked independent module, the terms and conditions + of the license of that module. An independent module is a module + which is not derived from or based on this library. If you modify + this library, you may extend this exception to your version of the + library, but you are not obligated to do so. If you do not wish + to do so, delete this exception statement from your version. + +The libffi library is licensed under the following terms: + + libffi - Copyright (c) 1996-2003 Red Hat, Inc. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + + +The documentation is licensed under the GNU Free Documentation License (v1.2). +On Debian GNU/Linux systems, the complete text of this license is in +`/usr/share/common-licenses/GFDL-1.2'. + + +GCC RUNTIME LIBRARY EXCEPTION + +Version 3.1, 31 March 2009 + +Copyright (C) 2009 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + +This GCC Runtime Library Exception ("Exception") is an additional +permission under section 7 of the GNU General Public License, version +3 ("GPLv3"). It applies to a given file (the "Runtime Library") that +bears a notice placed by the copyright holder of the file stating that +the file is governed by GPLv3 along with this Exception. + +When you use GCC to compile a program, GCC may combine portions of +certain GCC header files and runtime libraries with the compiled +program. The purpose of this Exception is to allow compilation of +non-GPL (including proprietary) programs to use, in this way, the +header files and runtime libraries covered by this Exception. + +0. Definitions. + +A file is an "Independent Module" if it either requires the Runtime +Library for execution after a Compilation Process, or makes use of an +interface provided by the Runtime Library, but is not otherwise based +on the Runtime Library. + +"GCC" means a version of the GNU Compiler Collection, with or without +modifications, governed by version 3 (or a specified later version) of +the GNU General Public License (GPL) with the option of using any +subsequent versions published by the FSF. + +"GPL-compatible Software" is software whose conditions of propagation, +modification and use would permit combination with GCC in accord with +the license of GCC. + +"Target Code" refers to output from any compiler for a real or virtual +target processor architecture, in executable form or suitable for +input to an assembler, loader, linker and/or execution +phase. Notwithstanding that, Target Code does not include data in any +format that is used as a compiler intermediate representation, or used +for producing a compiler intermediate representation. + +The "Compilation Process" transforms code entirely represented in +non-intermediate languages designed for human-written code, and/or in +Java Virtual Machine byte code, into Target Code. Thus, for example, +use of source code generators and preprocessors need not be considered +part of the Compilation Process, since the Compilation Process can be +understood as starting with the output of the generators or +preprocessors. + +A Compilation Process is "Eligible" if it is done using GCC, alone or +with other GPL-compatible software, or if it is done without using any +work based on GCC. For example, using non-GPL-compatible Software to +optimize any GCC intermediate representations would not qualify as an +Eligible Compilation Process. + +1. Grant of Additional Permission. + +You have permission to propagate a work of Target Code formed by +combining the Runtime Library with Independent Modules, even if such +propagation would otherwise violate the terms of GPLv3, provided that +all Target Code was generated by Eligible Compilation Processes. You +may then convey such a combination under terms of your choice, +consistent with the licensing of the Independent Modules. + +2. No Weakening of GCC Copyleft. + +The availability of this Exception does not imply any general +presumption that third-party software is unaffected by the copyleft +requirements of the license of GCC. + + +libquadmath/*.[hc]: + + Copyright (C) 2010 Free Software Foundation, Inc. + Written by Francois-Xavier Coudert + Written by Tobias Burnus + +This file is part of the libiberty library. +Libiberty is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +Libiberty is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +libquadmath/gdtoa: + +The author of this software is David M. Gay. + +Copyright (C) 1998, 1999, 2000, 2001 by Lucent Technologies +All Rights Reserved + +Permission to use, copy, modify, and distribute this software and +its documentation for any purpose and without fee is hereby +granted, provided that the above copyright notice appear in all +copies and that both that the copyright notice and this +permission notice and warranty disclaimer appear in supporting +documentation, and that the name of Lucent or any of its entities +not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. + +LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. +IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER +IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. + +libquadmath/math: + +atanq.c, expm1q.c, j0q.c, j1q.c, log1pq.c, logq.c: + Copyright 2001 by Stephen L. Moshier + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +coshq.c, erfq.c, jnq.c, lgammaq.c, powq.c, roundq.c: + Changes for 128-bit __float128 are + Copyright (C) 2001 Stephen L. Moshier + and are incorporated herein by permission of the author. The author + reserves the right to distribute this material elsewhere under different + copying permissions. These modifications are distributed here under + the following terms: + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +ldexpq.c: + * Conversion to long double by Ulrich Drepper, + * Cygnus Support, drepper@cygnus.com. + +cosq_kernel.c, expq.c, sincos_table.c, sincosq.c, sincosq_kernel.c, +sinq_kernel.c, truncq.c: + Copyright (C) 1997, 1999 Free Software Foundation, Inc. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +isinfq.c: + * Written by J.T. Conklin . + * Change for long double by Jakub Jelinek + * Public domain. + +llroundq.c, lroundq.c, tgammaq.c: + Copyright (C) 1997, 1999, 2002, 2004 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1997 and + Jakub Jelinek , 1999. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +log10q.c: + Cephes Math Library Release 2.2: January, 1991 + Copyright 1984, 1991 by Stephen L. Moshier + Adapted for glibc November, 2001 + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +remaining files: + + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + + +libjava/classpath/resource/gnu/java/locale/* + +They are copyrighted and covered by the terms of use: +http://www.unicode.org/copyright.html + +EXHIBIT 1 +UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE + + Unicode Data Files include all data files under the directories +http://www.unicode.org/Public/ and http://www.unicode.org/reports/. +Unicode Software includes any source code published in the Unicode Standard or +under the directories http://www.unicode.org/Public/ and +http://www.unicode.org/reports/. + +NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, +INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"), +AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, +ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, +DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE. + + COPYRIGHT AND PERMISSION NOTICE + +Copyrigh (c) 1991-2011 Unicode, Inc. All rights reserved. +Distributed under the Terms of Use in http://www.unicode.org/copyright.html. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of the Unicode data files and any associated documentation (the "Data Files") +or Unicode software and any associated documentation (the "Software") to deal +in the Data Files or Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, and/or sell copies + of the Data Files or Software, and to permit persons to whom the Data Files +or Software are furnished to do so, provided that (a) the above copyright notice(s) +and this permission notice appear with all copies of the Data Files or Software, +(b) both the above copyright notice(s) and this permission notice appear +in associated documentation, and (c) there is clear notice in each modified +Data File or in the Software as well as in the documentation associated with +the Data File(s) or Software that the data or software has been modified. + +THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE + FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF +CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. + +Except as contained in this notice, the name of a copyright holder shall not be used + in advertising or otherwise to promote the sale, use or other dealings in these +Data Files or Software without prior written authorization of the copyright holder. + +Unicode and the Unicode logo are trademarks of Unicode, Inc., and may be registered + in some jurisdictions. All other trademarks and registered trademarks mentioned +herein are the property of their respective owners. + + +gcc/go/gofrontend, libgo: + +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +libcilkrts: + Copyright (C) 2009-2013, Intel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of Intel Corporation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY + WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + + +D: +gdc-@BV@ GNU D Compiler +libphobos-@BV@-dev D standard runtime library + +The D source package is made up of the following components. + +The D front-end for GCC: + - d/* + +Copyright (C) 2004-2007 David Friedman +Modified by Vincenzo Ampolo, Michael Parrot, Iain Buclaw, (C) 2009, 2010 + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', version 2 of this +license in `/usr/share/common-licenses/GPL-2'. + + +The DMD Compiler implementation of the D programming language: + - d/dmd/* + +Copyright (c) 1999-2010 by Digital Mars +All Rights Reserved +written by Walter Bright +http://www.digitalmars.com +License for redistribution is by either the Artistic License or +the GNU General Public License (v1). + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', the Artistic +license in `/usr/share/common-licenses/Artistic'. + + +The Zlib data compression library: + - d/phobos/etc/c/zlib/* + + (C) 1995-2004 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + +The Phobos standard runtime library: + - d/phobos/* + +Unless otherwise marked within the file, each file in the source +is under the following licenses: + +Copyright (C) 2004-2005 by Digital Mars, www.digitalmars.com +Written by Walter Bright + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, in both source and binary form, subject to the following +restrictions: + + o The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + o Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + o This notice may not be removed or altered from any source + distribution. + +By plainly marking modifications, something along the lines of adding to each +file that has been changed a "Modified by Foo Bar" line +underneath the "Written by" line would be adequate. + --- gcc-4.9-4.9.2.orig/debian/cpp-BV-CRB.preinst.in +++ gcc-4.9-4.9.2/debian/cpp-BV-CRB.preinst.in @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then + update-alternatives --quiet --remove @TARGET@-cpp /usr/bin/@TARGET@-cpp-@BV@ +fi + +#DEBHELPER# + +exit 0 --- gcc-4.9-4.9.2.orig/debian/cpp-BV-doc.doc-base.cpp +++ gcc-4.9-4.9.2/debian/cpp-BV-doc.doc-base.cpp @@ -0,0 +1,16 @@ +Document: cpp-@BV@ +Title: The GNU C preprocessor +Author: Various +Abstract: The C preprocessor is a "macro processor" that is used automatically + by the C compiler to transform your program before actual compilation. + It is called a macro processor because it allows you to define "macros", + which are brief abbreviations for longer constructs. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/cpp.html +Files: /usr/share/doc/gcc-@BV@-base/cpp.html + +Format: info +Index: /usr/share/info/cpp-@BV@.info.gz +Files: /usr/share/info/cpp-@BV@* --- gcc-4.9-4.9.2.orig/debian/cpp-BV-doc.doc-base.cppint +++ gcc-4.9-4.9.2/debian/cpp-BV-doc.doc-base.cppint @@ -0,0 +1,17 @@ +Document: cppinternals-@BV@ +Title: The GNU C preprocessor (internals) +Author: Various +Abstract: This brief manual documents the internals of cpplib, and + explains some of the tricky issues. It is intended that, along with + the comments in the source code, a reasonably competent C programmer + should be able to figure out what the code is doing, and why things + have been implemented the way they have. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/cppinternals.html +Files: /usr/share/doc/gcc-@BV@-base/cppinternals.html + +Format: info +Index: /usr/share/info/cppinternals-@BV@.info.gz +Files: /usr/share/info/cppinternals-@BV@* --- gcc-4.9-4.9.2.orig/debian/dh_doclink +++ gcc-4.9-4.9.2/debian/dh_doclink @@ -0,0 +1,12 @@ +#! /bin/sh + +pkg=`echo $1 | sed 's/^-p//'` +target=$2 + +[ -d debian/$pkg/usr/share/doc ] || mkdir -p debian/$pkg/usr/share/doc +if [ -d debian/$pkg/usr/share/doc/$p -a ! -h debian/$pkg/usr/share/doc/$p ] +then + echo "WARNING: removing doc directory $pkg" + rm -rf debian/$pkg/usr/share/doc/$pkg +fi +ln -sf $target debian/$pkg/usr/share/doc/$pkg --- gcc-4.9-4.9.2.orig/debian/dh_rmemptydirs +++ gcc-4.9-4.9.2/debian/dh_rmemptydirs @@ -0,0 +1,10 @@ +#! /bin/sh -e + +pkg=`echo $1 | sed 's/^-p//'` + +: # remove empty directories, when all components are in place +for d in `find debian/$pkg -depth -type d -empty 2> /dev/null`; do \ + while rmdir $d 2> /dev/null; do d=`dirname $d`; done; \ +done + +exit 0 --- gcc-4.9-4.9.2.orig/debian/dummy-man.1 +++ gcc-4.9-4.9.2/debian/dummy-man.1 @@ -0,0 +1,29 @@ +.TH @NAME@ 1 "May 24, 2003" @name@ "Debian Free Documentation" +.SH NAME +@name@ \- A program with a man page covered by the GFDL with invariant sections +.SH SYNOPSIS +@name@ [\fB\s-1OPTION\s0\fR] ... [\fI\s-1ARGS\s0\fR...] + +.SH DESCRIPTION + +\fB@name@\fR is documented by a man page, which is covered by the "GNU +Free Documentation License" (GFDL) containing invariant sections. +.P +In November 2002, version 1.2 of the GNU Free Documentation License (GNU +FDL) was released by the Free Software Foundation after a long period +of consultation. Unfortunately, some concerns raised by members of the +Debian Project were not addressed, and as such the GNU FDL can apply +to works that do not pass the Debian Free Software Guidelines (DFSG), +and may thus only be included in the non-free component of the Debian +archive, not the Debian distribution itself. + +.SH "SEE ALSO" +.BR http://gcc.gnu.org/onlinedocs/ +for the complete documentation, +.BR http://lists.debian.org/debian-legal/2003/debian-legal-200304/msg00307.html +for a proposed statement of Debian with respect to the GFDL, +.BR gfdl(7) + +.SH AUTHOR +This manual page was written by the Debian GCC maintainers, +for the Debian GNU/Linux system. --- gcc-4.9-4.9.2.orig/debian/dummy.texi +++ gcc-4.9-4.9.2/debian/dummy.texi @@ -0,0 +1 @@ +@c This file is empty because the original one has a non DFSG free license (GFDL) --- gcc-4.9-4.9.2.orig/debian/fixincludes.in +++ gcc-4.9-4.9.2/debian/fixincludes.in @@ -0,0 +1,8 @@ +#! /bin/sh + +PATH="/@LIBEXECDIR@/install-tools:$PATH" + +TARGET_MACHINE=`dpkg-architecture -qDEB_HOST_GNU_TYPE` +export TARGET_MACHINE + +exec fixinc.sh "$@" --- gcc-4.9-4.9.2.orig/debian/g++-BV-CRB.preinst.in +++ gcc-4.9-4.9.2/debian/g++-BV-CRB.preinst.in @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then + update-alternatives --quiet --remove @TARGET@-g++ /usr/bin/@TARGET@-g++-@BV@ +fi + +#DEBHELPER# + +exit 0 --- gcc-4.9-4.9.2.orig/debian/gcc-BV-CRB.preinst.in +++ gcc-4.9-4.9.2/debian/gcc-BV-CRB.preinst.in @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then + update-alternatives --quiet --remove @TARGET@-gcc /usr/bin/@TARGET@-gcc-@BV@ + update-alternatives --quiet --remove @TARGET@-gcov /usr/bin/@TARGET@-gcov-@BV@ +fi + +#DEBHELPER# + +exit 0 --- gcc-4.9-4.9.2.orig/debian/gcc-BV-doc.doc-base.gcc +++ gcc-4.9-4.9.2/debian/gcc-BV-doc.doc-base.gcc @@ -0,0 +1,14 @@ +Document: gcc-@BV@ +Title: The GNU C and C++ compiler +Author: Various +Abstract: This manual documents how to run, install and port the GNU compiler, + as well as its new features and incompatibilities, and how to report bugs. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/gcc.html +Files: /usr/share/doc/gcc-@BV@-base/gcc.html + +Format: info +Index: /usr/share/info/gcc-@BV@.info.gz +Files: /usr/share/info/gcc-@BV@* --- gcc-4.9-4.9.2.orig/debian/gcc-BV-doc.doc-base.gccint +++ gcc-4.9-4.9.2/debian/gcc-BV-doc.doc-base.gccint @@ -0,0 +1,17 @@ +Document: gccint-@BV@ +Title: Internals of the GNU C and C++ compiler +Author: Various +Abstract: This manual documents the internals of the GNU compilers, + including how to port them to new targets and some information about + how to write front ends for new languages. It corresponds to GCC + version @BV@.x. The use of the GNU compilers is documented in a + separate manual. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/gccint.html +Files: /usr/share/doc/gcc-@BV@-base/gccint.html + +Format: info +Index: /usr/share/info/gccint-@BV@.info.gz +Files: /usr/share/info/gccint-@BV@* --- gcc-4.9-4.9.2.orig/debian/gcc-BV-doc.doc-base.gomp +++ gcc-4.9-4.9.2/debian/gcc-BV-doc.doc-base.gomp @@ -0,0 +1,15 @@ +Document: gcc-@BV@-gomp +Title: The GNU OpenMP Implementation (for GCC @BV@) +Author: Various +Abstract: This manual documents the usage of libgomp, the GNU implementation + of the OpenMP Application Programming Interface (API) for multi-platform + shared-memory parallel programming in C/C++ and Fortran. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/libgomp.html +Files: /usr/share/doc/gcc-@BV@-base/libgomp.html + +Format: info +Index: /usr/share/info/libgomp-@BV@.info.gz +Files: /usr/share/info/libgomp-@BV@* --- gcc-4.9-4.9.2.orig/debian/gcc-BV-doc.doc-base.itm +++ gcc-4.9-4.9.2/debian/gcc-BV-doc.doc-base.itm @@ -0,0 +1,16 @@ +Document: gcc-@BV@-itm +Title: The GNU Transactional Memory Library (for GCC @BV@) +Author: Various +Abstract: This manual documents the usage and internals of libitm, + the GNU Transactional Memory Library. It provides transaction support + for accesses to a process' memory, enabling easy-to-use synchronization + of accesses to shared memory by several threads. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/libitm.html +Files: /usr/share/doc/gcc-@BV@-base/libitm.html + +Format: info +Index: /usr/share/info/libitm-@BV@.info.gz +Files: /usr/share/info/libitm-@BV@* --- gcc-4.9-4.9.2.orig/debian/gcc-BV-doc.doc-base.qmath +++ gcc-4.9-4.9.2/debian/gcc-BV-doc.doc-base.qmath @@ -0,0 +1,14 @@ +Document: gcc-@BV@-qmath +Title: The GCC Quad-Precision Math Library (for GCC @BV@) +Author: Various +Abstract: This manual documents the usage of libquadmath, the GCC + Quad-Precision Math Library Application Programming Interface (API). +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/libquadmath.html +Files: /usr/share/doc/gcc-@BV@-base/libquadmath.html + +Format: info +Index: /usr/share/info/libquadmath-@BV@.info.gz +Files: /usr/share/info/libquadmath-@BV@* --- gcc-4.9-4.9.2.orig/debian/gcc-BV-hppa64.postinst +++ gcc-4.9-4.9.2/debian/gcc-BV-hppa64.postinst @@ -0,0 +1,15 @@ +#! /bin/sh -e + +prio=$(echo @BV@ | sed 's/\.//g') + +for i in cpp gcc gcc-ar gcc-nm gcc-ranlib; do + update-alternatives --quiet \ + --install /usr/bin/hppa64-linux-gnu-$i \ + hppa64-linux-gnu-$i \ + /usr/bin/hppa64-linux-gnu-$i-@BV@ \ + $prio +done + +#DEBHELPER# + +exit 0 --- gcc-4.9-4.9.2.orig/debian/gcc-BV-hppa64.prerm +++ gcc-4.9-4.9.2/debian/gcc-BV-hppa64.prerm @@ -0,0 +1,12 @@ +#! /bin/sh -e + +if [ "$1" != "upgrade" ]; then + for i in cpp gcc gcc-ar gcc-nm gcc-ranlib; do + update-alternatives --quiet \ + --remove hppa64-linux-gcc /usr/bin/hppa64-linux-gnu-gcc-@BV@ + done +fi + +#DEBHELPER# + +exit 0 --- gcc-4.9-4.9.2.orig/debian/gcc-BV-multilib.overrides +++ gcc-4.9-4.9.2/debian/gcc-BV-multilib.overrides @@ -0,0 +1 @@ +gcc-@BV@-multilib binary: binary-from-other-architecture --- gcc-4.9-4.9.2.orig/debian/gcc-BV-source.overrides +++ gcc-4.9-4.9.2/debian/gcc-BV-source.overrides @@ -0,0 +1,5 @@ +gcc-@BV@-source: changelog-file-not-compressed + +# these are patches taken over unmodified from 4.3 +gcc-@BV@-source: script-not-executable +gcc-@BV@-source: shell-script-fails-syntax-check --- gcc-4.9-4.9.2.orig/debian/gcc-XX-BV.1 +++ gcc-4.9-4.9.2/debian/gcc-XX-BV.1 @@ -0,0 +1,17 @@ +.TH GCC-@TOOL@-@BV@ 1 "May 8, 2012" gcc-@TOOL@-@BV@ "" +.SH NAME +gcc-@TOOL@ \- a wrapper around @TOOL@ adding the --plugin option + +.SH SYNOPSIS +gcc-@TOOL@ [\fB\s-1OPTION\s0\fR] ... [\fI\s-1ARGS\s0\fR...] + +.SH DESCRIPTION + +\fBgcc-@TOOL@\fR is a wrapper around @TOOL@(1) adding the appropriate +\fB\-\-plugin\fR option for the GCC @BV@ compiler. + +.SH OPTIONS +See @TOOL@(1) for a list of options that @TOOL@ understands. + +.SH "SEE ALSO" +.BR @TOOL@(1) --- gcc-4.9-4.9.2.orig/debian/gcc-dummy.texi +++ gcc-4.9-4.9.2/debian/gcc-dummy.texi @@ -0,0 +1,41 @@ +\input texinfo @c -*-texinfo-*- +@c %**start of header + +@settitle The GNU Compiler Collection (GCC) + +@c Create a separate index for command line options. +@defcodeindex op +@c Merge the standard indexes into a single one. +@syncodeindex fn cp +@syncodeindex vr cp +@syncodeindex ky cp +@syncodeindex pg cp +@syncodeindex tp cp + +@paragraphindent 1 + +@c %**end of header + +@copying +The current documentation is licensed under the same terms as the Debian packaging. +@end copying +@ifnottex +@dircategory Programming +@direntry +* @name@: (@name@). The GNU Compiler Collection (@name@). +@end direntry +@sp 1 +@end ifnottex + +@summarycontents +@contents +@page + +@node Top +@top Introduction +@cindex introduction +The official GNU compilers' documentation is released under the terms +of the GNU Free Documentation License with cover texts. This has been +considered non free by the Debian Project. Thus you will find it in the +non-free section of the Debian archive. +@bye --- gcc-4.9-4.9.2.orig/debian/gcc-snapshot.overrides +++ gcc-4.9-4.9.2/debian/gcc-snapshot.overrides @@ -0,0 +1,4 @@ +gcc-snapshot binary: bad-permissions-for-ali-file + +# keep patched ltdl copy +gcc-snapshot binary: embedded-library --- gcc-4.9-4.9.2.orig/debian/gcc-snapshot.prerm +++ gcc-4.9-4.9.2/debian/gcc-snapshot.prerm @@ -0,0 +1,5 @@ +#! /bin/sh -e + +rm -f /usr/lib/gcc-snapshot/share/python/*.py[co] + +#DEBHELPER# --- gcc-4.9-4.9.2.orig/debian/gccgo-BV-doc.doc-base +++ gcc-4.9-4.9.2/debian/gccgo-BV-doc.doc-base @@ -0,0 +1,17 @@ +Document: gccgo-@BV@ +Title: The GNU Go compiler (version @BV@) +Author: Various +Abstract: This manual describes how to use gccgo, the GNU compiler for + the Go programming language. This manual is specifically about + gccgo. For more information about the Go programming + language in general, including language specifications and standard + package documentation, see http://golang.org/. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/gccgo.html +Files: /usr/share/doc/gcc-@BV@-base/gccgo.html + +Format: info +Index: /usr/share/info/gccgo-@BV@.info.gz +Files: /usr/share/info/gccgo-@BV@* --- gcc-4.9-4.9.2.orig/debian/gcj-BV-jdk.doc-base +++ gcc-4.9-4.9.2/debian/gcj-BV-jdk.doc-base @@ -0,0 +1,15 @@ +Document: gcj-@BV@ +Title: The GNU Ahead-of-time Compiler for the Java Language +Author: Various +Abstract: This manual describes how to use gcj, the GNU compiler for + the Java programming language. gcj can generate both .class files and + object files, and it can read both Java source code and .class files. +Section: Programming/Java + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/java/gcj.html +Files: /usr/share/doc/gcc-@BV@-base/java/gcj.html + +Format: info +Index: /usr/share/info/gcj-@BV@.info.gz +Files: /usr/share/info/gcj-@BV@* --- gcc-4.9-4.9.2.orig/debian/gcj-BV-jdk.overrides +++ gcc-4.9-4.9.2/debian/gcj-BV-jdk.overrides @@ -0,0 +1 @@ +gcj-@BV@-jdk binary: wrong-name-for-upstream-changelog --- gcc-4.9-4.9.2.orig/debian/gcj-BV-jdk.postinst +++ gcc-4.9-4.9.2/debian/gcj-BV-jdk.postinst @@ -0,0 +1,45 @@ +#! /bin/sh -e + +if [ -d /usr/share/doc/gcc-@BV@-base/java ] && [ ! -h /usr/share/doc/gcc-@BV@-base/java ]; then + rm -rf /usr/share/doc/gcc-@BV@-base/java + ln -s ../gcj-@BV@-base /usr/share/doc/gcc-@BV@-base/java +fi + +prio=@java_priority@ +update-alternatives --quiet \ + --install /usr/bin/javac javac /usr/bin/gcj-wrapper-@BV@ $prio \ + @GFDL@--slave /usr/share/man/man1/javac.1.gz javac.1.gz /usr/share/man/man1/gcj-wrapper-@BV@.1.gz + +update-alternatives --quiet \ + --install /usr/bin/jar jar /usr/bin/gjar-@BV@ $prio \ + --slave /usr/share/man/man1/jar.1.gz jar.1.gz /usr/share/man/man1/gjar-@BV@.1.gz + +update-alternatives --quiet \ + --install /usr/bin/jarsigner jarsigner /usr/bin/gjarsigner-@BV@ $prio \ + --slave /usr/share/man/man1/jarsigner.1.gz jarsigner.1.gz /usr/share/man/man1/gjarsigner-@BV@.1.gz + +update-alternatives --quiet \ + --install /usr/bin/javah javah /usr/bin/gjavah-@BV@ $prio \ + --slave /usr/share/man/man1/javah.1.gz javah.1.gz /usr/share/man/man1/gjavah-@BV@.1.gz + +update-alternatives --quiet \ + --install /usr/bin/javadoc javadoc /usr/bin/gjdoc-@BV@ $prio \ + --slave /usr/share/man/man1/javadoc.1.gz javadoc.1.gz /usr/share/man/man1/gjdoc-@BV@.1.gz + +update-alternatives --quiet \ + --install /usr/bin/native2ascii native2ascii /usr/bin/gnative2ascii-@BV@ $prio \ + --slave /usr/share/man/man1/native2ascii.1.gz native2ascii.1.gz /usr/share/man/man1/gnative2ascii-@BV@.1.gz + +update-alternatives --quiet \ + --install /usr/bin/rmic rmic /usr/bin/grmic-@BV@ $prio \ + @GFDL@--slave /usr/share/man/man1/rmic.1.gz rmic.1.gz /usr/share/man/man1/grmic-@BV@.1.gz + +update-alternatives --quiet \ + --install /usr/bin/serialver serialver /usr/bin/gserialver-@BV@ $prio \ + --slave /usr/share/man/man1/serialver.1.gz serialver.1.gz /usr/share/man/man1/gserialver-@BV@.1.gz + +update-alternatives --quiet \ + --install /usr/bin/tnameserv tnameserv /usr/bin/gtnameserv-@BV@ $prio \ + --slave /usr/share/man/man1/tnameserv.1.gz tnameserv.1.gz /usr/share/man/man1/gtnameserv-@BV@.1.gz + +#DEBHELPER# --- gcc-4.9-4.9.2.orig/debian/gcj-BV-jdk.prerm +++ gcc-4.9-4.9.2/debian/gcj-BV-jdk.prerm @@ -0,0 +1,15 @@ +#! /bin/sh -e + +if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; then + update-alternatives --quiet --remove javac /usr/bin/gcj-wrapper-@BV@ + update-alternatives --quiet --remove jar /usr/bin/gjar-@BV@ + update-alternatives --quiet --remove jarsigner /usr/bin/gjarsigner-@BV@ + update-alternatives --quiet --remove javah /usr/bin/gjavah-@BV@ + update-alternatives --quiet --remove javadoc /usr/bin/gjdoc-@BV@ + update-alternatives --quiet --remove native2ascii /usr/bin/gnative2ascii-@BV@ + update-alternatives --quiet --remove rmic /usr/bin/grmic-@BV@ + update-alternatives --quiet --remove serialver /usr/bin/gserialver-@BV@ + update-alternatives --quiet --remove tnameserv /usr/bin/gtnameserv-@BV@ +fi + +#DEBHELPER# --- gcc-4.9-4.9.2.orig/debian/gcj-BV-jre-headless.overrides +++ gcc-4.9-4.9.2/debian/gcj-BV-jre-headless.overrides @@ -0,0 +1,5 @@ +# pick up the exact version, in case another gcj version is installed +gcj-@BV@-jre-headless binary: binary-or-shlib-defines-rpath + +# don't strip the binaries, keep the libgcj13-dbg package Multi-Arch: same +gcj-@BV@-jre-headless binary: unstripped-binary-or-object --- gcc-4.9-4.9.2.orig/debian/gcj-BV-jre-headless.postinst +++ gcc-4.9-4.9.2/debian/gcj-BV-jre-headless.postinst @@ -0,0 +1,48 @@ +#! /bin/sh -e + +prio=@java_priority@ + +update-alternatives --quiet \ + --install /usr/bin/java java /usr/bin/gij-@BV@ $prio \ + @GFDL@--slave /usr/share/man/man1/java.1.gz java.1.gz /usr/share/man/man1/gij-@BV@.1.gz + +update-alternatives --quiet \ + --install /usr/bin/rmiregistry rmiregistry /usr/bin/grmiregistry-@BV@ $prio \ + --slave /usr/share/man/man1/rmiregistry.1.gz rmiregistry.1.gz /usr/share/man/man1/grmiregistry-@BV@.1.gz + +update-alternatives --quiet \ + --install /usr/bin/keytool keytool /usr/bin/gkeytool-@BV@ $prio \ + --slave /usr/share/man/man1/keytool.1.gz keytool.1.gz /usr/share/man/man1/gkeytool-@BV@.1.gz + +update-alternatives --quiet \ + --install /usr/bin/orbd orbd /usr/bin/gorbd-@BV@ $prio \ + --slave /usr/share/man/man1/orbd.1.gz orbd.1.gz /usr/share/man/man1/gorbd-@BV@.1.gz + +update-alternatives --quiet \ + --install /usr/bin/rmid rmid /usr/bin/grmid-@BV@ $prio \ + --slave /usr/share/man/man1/rmid.1.gz rmid.1.gz /usr/share/man/man1/grmid-@BV@.1.gz + +case "$1" in +configure) + if [ ! -f /var/lib/gcj-@BV@/classmap.db ]; then + uname=$(uname -m) + mkdir -p /var/lib/gcj-@BV@ + if gcj-dbtool-@BV@ -n /var/lib/gcj-@BV@/classmap.db; then + case "$uname" in arm*|m68k|parisc*) + echo >&2 "gcj-dbtool succeeded unexpectedly" + esac + else + case "$uname" in + arm*|m68k|parisc*) + echo >&2 "ERROR: gcj-dbtool did fail; known problem on $uname";; + *) + exit 2 + esac + touch /var/lib/gcj-@BV@/classmap.db + fi + fi +esac + +#DEBHELPER# + +exit 0 --- gcc-4.9-4.9.2.orig/debian/gcj-BV-jre-headless.postrm +++ gcc-4.9-4.9.2/debian/gcj-BV-jre-headless.postrm @@ -0,0 +1,10 @@ +#! /bin/sh -e + +case "$1" in + purge) + rm -f /var/lib/gcj-@BV@/classmap.db +esac + +#DEBHELPER# + +exit 0 --- gcc-4.9-4.9.2.orig/debian/gcj-BV-jre-headless.prerm +++ gcc-4.9-4.9.2/debian/gcj-BV-jre-headless.prerm @@ -0,0 +1,13 @@ +#! /bin/sh -e + +if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; then + update-alternatives --quiet --remove java /usr/bin/gij-@BV@ + update-alternatives --quiet --remove rmiregistry /usr/bin/grmiregistry-@BV@ + update-alternatives --quiet --remove keytool /usr/bin/gkeytool-@BV@ + update-alternatives --quiet --remove orbd /usr/bin/gorbd-@BV@ + update-alternatives --quiet --remove rmid /usr/bin/grmid-@BV@ +fi + +#DEBHELPER# + +exit 0 --- gcc-4.9-4.9.2.orig/debian/gcj-wrapper-BV +++ gcc-4.9-4.9.2/debian/gcj-wrapper-BV @@ -0,0 +1,91 @@ +#!/usr/bin/perl -w +# +# Starts the GNU Java compiler. +# +# Command-line arguments should be in the style of Sun's Java compiler; +# these will be converted to gcj arguments before being passed to the +# gcj itself. +# +# Copyright (C) 2002-2003 by Ben Burton +# Based on the original gcj-wrapper-3.2 shell script. + +use strict; + +# The real Java compiler: +my $javaCompiler = '/usr/bin/gcj-@BV@'; + +# The command-line arguments to pass to the real Java compiler: +my @commandLine; + +# The warning flags to pass to the GNU Java compiler: +my $warnings = '-Wall'; + +# Build the command-line from the arguments given. +my $parsingOptions = 1; +my $copyNextArg = 0; +my $ignoreNextArg = 0; +my $appendNextArg = ''; +foreach my $arg (@ARGV) { + # See if we already know what to do with this argument. + if ($ignoreNextArg) { + # Throw it away. + $ignoreNextArg = 0; + next; + } elsif ($copyNextArg or not $parsingOptions) { + # Copy it directly. + push @commandLine, $arg; + $copyNextArg = 0; + next; + } elsif ($appendNextArg) { + # Append it to $appendNextArg and then copy directly. + push @commandLine, ($appendNextArg . $arg); + $appendNextArg = ''; + next; + } + + # Try to interpret Sun-style options. + if ($arg eq '-version') { + push @commandLine, '--version'; + } elsif ($arg eq '-h' or $arg eq '-help') { + push @commandLine, '--help'; + } elsif ($arg eq '-classpath' or $arg eq '--classpath' or $arg eq '--cp') { + $appendNextArg = '--classpath='; + } elsif ($arg eq '-encoding' or $arg eq '-bootclasspath' or + $arg eq '-extdirs') { + $appendNextArg = '-' . $arg . '='; + } elsif ($arg eq '-d') { + push @commandLine, '-d'; + $copyNextArg = 1; + } elsif ($arg eq '-nowarn') { + $warnings = ''; + } elsif ($arg =~ /^-g/) { + # Some kind of debugging option - just switch debugging on. + push @commandLine, '-g' if ($arg ne '-g:none'); + } elsif ($arg eq '-O') { + push @commandLine, '-O2'; + } elsif ($arg eq '-Xss') { + push @commandLine, $arg; + } elsif ($arg =~ /^-X/) { + # An extended Sun option (which we don't support). + push @commandLine, '--help' if ($arg eq '-X'); + } elsif ($arg eq '-source' or $arg eq '-sourcepath' or $arg eq '-target') { + # An unsupported option with a following argument. + $ignoreNextArg = 1; + } elsif ($arg =~ /^-/) { + # An unsupported standalone option. + } else { + # Some non-option argument has been given. + # Stop parsing options at this point. + push @commandLine, $arg; + $parsingOptions = 0; + } +} + +# Was there a partial argument that was never completed? +push @commandLine, $appendNextArg if ($appendNextArg); + +# Call the real Java compiler. +my @fullCommandLine = ( $javaCompiler, '-C' ); +push @fullCommandLine, $warnings if ($warnings); +push @fullCommandLine, @commandLine; +exec @fullCommandLine or exit(1); --- gcc-4.9-4.9.2.orig/debian/gcj-wrapper-BV.1 +++ gcc-4.9-4.9.2/debian/gcj-wrapper-BV.1 @@ -0,0 +1,20 @@ +.TH GCJ-WRAPPER 1 "June 6, 2002" gcj-wrapper "Java User's Manual" +.SH NAME +gcj-wrapper \- a wrapper around gcj + +.SH SYNOPSIS +gcj-wrapper [\fB\s-1OPTION\s0\fR] ... [\fI\s-1ARGS\s0\fR...] + +.SH DESCRIPTION + +\fBgcj-wrapper\fR is a wrapper around gcj(1) to be called as the java +compiler. Options different for javac(1) and gcj(1) are translated, +options unknown to gcj(1) are silently ignored. + +.SH OPTIONS +See gcj-@BV@(1) for a list of options that gcj understands. + +.SH "SEE ALSO" +.BR gcj-@BV@(1) +, +.BR javac(1) --- gcc-4.9-4.9.2.orig/debian/gcjh-wrapper-BV +++ gcc-4.9-4.9.2/debian/gcjh-wrapper-BV @@ -0,0 +1,86 @@ +#!/usr/bin/perl -w +# +# Starts the GNU Java header generator. +# +# Command-line arguments should be in the style of Sun's javah command; +# these will be converted to gcjh arguments before being passed to the +# gcjh itself. +# +# Copyright (C) 2003 by Peter Hawkins +# Haphazardly hacked up based on the gcj-wrapper perl script. +# Copyright (C) 2002-2003 by Ben Burton +# Based on the original gcj-wrapper-3.2 shell script. + +use strict; + +# The real Java header generator: +my $javaHeaderGen = '/usr/bin/gcjh-@BV@'; + +# The command-line arguments to pass to the real Java compiler: +my @commandLine; + +# Build the command-line from the arguments given. +my $parsingOptions = 1; +my $copyNextArg = 0; +my $ignoreNextArg = 0; +my $appendNextArg = ''; +foreach my $arg (@ARGV) { + # See if we already know what to do with this argument. + if ($ignoreNextArg) { + # Throw it away. + $ignoreNextArg = 0; + next; + } elsif ($copyNextArg or not $parsingOptions) { + # Copy it directly. + push @commandLine, $arg; + $copyNextArg = 0; + next; + } elsif ($appendNextArg) { + # Append it to $appendNextArg and then copy directly. + push @commandLine, ($appendNextArg . $arg); + $appendNextArg = ''; + next; + } + + # Try to interpret Sun-style options. + if ($arg eq '-version') { + push @commandLine, '--version'; + } elsif ($arg eq '-h' or $arg eq '-help') { + push @commandLine, '--help'; + } elsif ($arg eq '-verbose') { + push @commandLine, '--verbose'; + } elsif ($arg eq '-classpath' or $arg eq '--classpath' or $arg eq '--cp') { + $appendNextArg = '--classpath='; + } elsif ($arg eq '-encoding' or $arg eq '-bootclasspath' or + $arg eq '-extdirs') { + $appendNextArg = "-".$arg . '='; + } elsif ($arg eq '-d') { + push @commandLine, '-d'; + $copyNextArg = 1; + } elsif ($arg eq '-o') { + push @commandLine, '-o'; + $copyNextArg = 1; + } elsif ($arg eq '-stubs') { + push @commandLine, '-stubs'; + } elsif ($arg eq '-jni') { + push @commandLine, '-jni'; + } elsif ($arg =~ /^-old/) { + # An extended Sun option (which we don't support). + push @commandLine, '--help' if ($arg eq '-old'); + } elsif ($arg =~ /^-/) { + # An unsupported standalone option. + } else { + # Some non-option argument has been given. + # Stop parsing options at this point. + push @commandLine, $arg; + $parsingOptions = 0; + } +} + +# Was there a partial argument that was never completed? +push @commandLine, $appendNextArg if ($appendNextArg); + +# Call the real Java header generator. +my @fullCommandLine = ( $javaHeaderGen ); +push @fullCommandLine, @commandLine; +exec @fullCommandLine or exit(1); --- gcc-4.9-4.9.2.orig/debian/gcjh-wrapper-BV.1 +++ gcc-4.9-4.9.2/debian/gcjh-wrapper-BV.1 @@ -0,0 +1,20 @@ +.TH GCJH-WRAPPER 1 "June 6, 2002" gcjh-wrapper "Java User's Manual" +.SH NAME +gcjh-wrapper \- a wrapper around gcjh + +.SH SYNOPSIS +gcjh-wrapper [\fB\s-1OPTION\s0\fR] ... [\fI\s-1ARGS\s0\fR...] + +.SH DESCRIPTION + +\fBgcjh-wrapper\fR is a wrapper around gcjh(1) to be called as the java header +compiler. Options different for javah(1) and gcjh(1) are translated, +options unknown to gcjh(1) are silently ignored. + +.SH OPTIONS +See gcjh-@BV@(1) for a list of options that gcj understands. + +.SH "SEE ALSO" +.BR gcjh-@BV@(1) +, +.BR javah(1) --- gcc-4.9-4.9.2.orig/debian/gfortran-BV-CRB.preinst.in +++ gcc-4.9-4.9.2/debian/gfortran-BV-CRB.preinst.in @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then + update-alternatives --quiet --remove @TARGET@-gfortran /usr/bin/@TARGET@-gfortran-@BV@ +fi + +#DEBHELPER# + +exit 0 --- gcc-4.9-4.9.2.orig/debian/gfortran-BV-doc.doc-base +++ gcc-4.9-4.9.2/debian/gfortran-BV-doc.doc-base @@ -0,0 +1,14 @@ +Document: gfortran-@BV@ +Title: The GNU Fortran Compiler +Author: Various +Abstract: This manual documents how to run, install and port `gfortran', + as well as its new features and incompatibilities, and how to report bugs. +Section: Programming/Fortran + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/fortran/gfortran.html +Files: /usr/share/doc/gcc-@BV@-base/fortran/gfortran.html + +Format: info +Index: /usr/share/info/gfortran-@BV@.info.gz +Files: /usr/share/info/gfortran-@BV@* --- gcc-4.9-4.9.2.orig/debian/gij-hppa +++ gcc-4.9-4.9.2/debian/gij-hppa @@ -0,0 +1,10 @@ +#! /bin/sh + +prctl= + +case "$(prctl --unaligned=)" in *signal) + echo >&2 "$(basename $0): ignore unaligned memory accesses" + prctl="prctl --unaligned=default" +esac + +exec $prctl /usr/bin/gij-4.9.bin "$@" --- gcc-4.9-4.9.2.orig/debian/gij-wrapper-BV +++ gcc-4.9-4.9.2/debian/gij-wrapper-BV @@ -0,0 +1,98 @@ +#!/usr/bin/perl -w +# +# Starts the GNU Java interpreter. +# +# Command-line arguments should be in the style of Sun's Java runtime; +# these will be converted to gij arguments before being passed to the +# gij itself. +# +# The Debian JNI module directory and any other specified JNI +# directories will be included on the JNI search path. +# +# Copyright (C) 2002-2003 by Ben Burton +# Based on the original gij-wrapper-3.2 shell script. + +use strict; + +# The real Java runtime: +my $javaRuntime = '/usr/bin/gij-@BV@'; + +# The debian JNI module directory: +my $debianJNIDir = '/usr/lib/jni'; + +# The command-line arguments to pass to the real Java runtime: +my @commandLine; + +# The full JNI search path to use: +my $JNIPath = ''; + +# Build the command-line from the arguments given. +my $parsingOptions = 1; + +# Flag used to copy argument to -classpath or -cp. +my $copyNext = 0; +foreach my $arg (@ARGV) { + if (not $parsingOptions) { + # We're done parsing options; just copy all remaining arguments directly. + push @commandLine, $arg; + next; + } + if ($copyNext) { + push @commandLine, $arg; + $copyNext = 0; + next; + } + + # Try to interpret Sun-style options. + if ($arg eq '-version') { + push @commandLine, '--version'; + } elsif ($arg eq '-h' or $arg eq '-help') { + push @commandLine, '--help'; + } elsif ($arg eq '-cp' or $arg eq '--cp') { + push @commandLine, '-cp'; + $copyNext = 1; + } elsif ($arg eq '-classpath' or $arg eq '--classpath') { + push @commandLine, '-classpath'; + $copyNext = 1; + } elsif ($arg =~ /^-Djava.library.path=(.+)$/) { + # A component of the JNI search path has been given. + if ($JNIPath) { + $JNIPath = $JNIPath . ':' . $1; + } else { + $JNIPath = $1; + } + } elsif ($arg eq '-jar' or $arg =~ /^-D/) { + # Copy the argument directly. + push @commandLine, $arg; + } elsif ($arg =~ /^-/) { + # An unrecognised option has been passed - just drop it. + } else { + # Some non-option argument has been given. + # Stop parsing options at this point. + push @commandLine, $arg; + $parsingOptions = 0; + } +} + +# Add the debian JNI module directory to the JNI search path if it's not +# already there. +if ($JNIPath !~ /(^|:)$debianJNIDir($|:)/) { + if ($JNIPath) { + $JNIPath = $JNIPath . ':' . $debianJNIDir; + } else { + $JNIPath = $debianJNIDir; + } +} + +# Use environment variable $LTDL_LIBRARY_PATH to store the JNI path, +# since gij uses libltdl to dlopen JNI modules. +if ($ENV{LTDL_LIBRARY_PATH}) { + $ENV{LTDL_LIBRARY_PATH} = $ENV{LTDL_LIBRARY_PATH} . ':' . $JNIPath; +} else { + $ENV{LTDL_LIBRARY_PATH} = $JNIPath; +} + +# Call the real Java runtime. +my @fullCommandLine = ( $javaRuntime ); +push @fullCommandLine, @commandLine; +exec @fullCommandLine or exit(1); --- gcc-4.9-4.9.2.orig/debian/gij-wrapper-BV.1 +++ gcc-4.9-4.9.2/debian/gij-wrapper-BV.1 @@ -0,0 +1,22 @@ +.TH GIJ-WRAPPER 1 "August 11, 2001" gij-wrapper "Java User's Manual" +.SH NAME +gij-wrapper \- a wrapper around gij + +.SH SYNOPSIS +gij-wrapper [\fB\s-1OPTION\s0\fR] ... \fI\s-1JARFILE\s0\fR [\fI\s-1ARGS\s0\fR...] +.PP +gij-wrapper [\fB\-jar\fR] [\fB\s-1OPTION\s0\fR] ... \fI\s-1CLASS\s0\fR [\fI\s-1ARGS\s0\fR...] + +.SH DESCRIPTION + +\fBgij-wrapper\fR is a wrapper around gij(1) to be called as the java +interpreter. Options different for java(1) and gij(1) are translated, +options unknown to gij(1) are silently ignored. + +.SH OPTIONS +See gij-@BV@(1) for a list of options that gij understands. + +.SH "SEE ALSO" +.BR gij-@BV@(1) +, +.BR java(1) --- gcc-4.9-4.9.2.orig/debian/gnat-BV-doc.doc-base.rm +++ gcc-4.9-4.9.2/debian/gnat-BV-doc.doc-base.rm @@ -0,0 +1,16 @@ +Document: gnat-rm-@BV@ +Title: GNAT (GNU Ada) Reference Manual +Author: Various +Abstract: This manual contains useful information in writing programs + using the GNAT compiler. It includes information on implementation + dependent characteristics of GNAT, including all the information + required by Annex M of the standard. +Section: Programming/Ada + +Format: html +Index: /usr/share/doc/gnat-@BV@-doc/gnat_rm.html +Files: /usr/share/doc/gnat-@BV@-doc/gnat_rm.html + +Format: info +Index: /usr/share/info/gnat_rm-@BV@.info.gz +Files: /usr/share/info/gnat_rm-@BV@* --- gcc-4.9-4.9.2.orig/debian/gnat-BV-doc.doc-base.style +++ gcc-4.9-4.9.2/debian/gnat-BV-doc.doc-base.style @@ -0,0 +1,16 @@ +Document: gnat-style-@BV@ +Title: GNAT Coding Style +Author: Various +Abstract: Most of GNAT is written in Ada using a consistent style to + ensure readability of the code. This document has been written to + help maintain this consistent style, while having a large group of + developers work on the compiler. +Section: Programming/Ada + +Format: html +Index: /usr/share/doc/gnat-@BV@-doc/gnat-style.html +Files: /usr/share/doc/gnat-@BV@-doc/gnat-style.html + +Format: info +Index: /usr/share/info/gnat-style-@BV@.info.gz +Files: /usr/share/info/gnat-style-@BV@* --- gcc-4.9-4.9.2.orig/debian/gnat-BV-doc.doc-base.ug +++ gcc-4.9-4.9.2/debian/gnat-BV-doc.doc-base.ug @@ -0,0 +1,16 @@ +Document: gnat-ugn-@BV@ +Title: GNAT User's Guide for Unix Platforms +Author: Various +Abstract: This guide describes the use of GNAT, a compiler and + software development toolset for the full Ada 95 programming language. + It describes the features of the compiler and tools, and details how + to use them to build Ada 95 applications. +Section: Programming/Ada + +Format: html +Index: /usr/share/doc/gnat-@BV@-doc/gnat_ugn.html +Files: /usr/share/doc/gnat-@BV@-doc/gnat_ugn.html + +Format: info +Index: /usr/share/info/gnat_ugn-@BV@.info.gz +Files: /usr/share/info/gnat_ugn-@BV@* --- gcc-4.9-4.9.2.orig/debian/gnat-BV.overrides +++ gcc-4.9-4.9.2/debian/gnat-BV.overrides @@ -0,0 +1 @@ +gnat-@BV@ binary: quilt-build-dep-but-no-series-file --- gcc-4.9-4.9.2.orig/debian/gnat.1 +++ gcc-4.9-4.9.2/debian/gnat.1 @@ -0,0 +1,43 @@ +.\" Hey, Emacs! This is an -*- nroff -*- source file. +.\" +.\" Copyright (C) 1996 Erick Branderhorst +.\" Copyright (C) 2011 Nicolas Boulenguez +.\" +.\" This is free software; you can redistribute it and/or modify it under +.\" the terms of the GNU General Public License as published by the Free +.\" Software Foundation; either version 2, or (at your option) any later +.\" version. +.\" +.\" This is distributed in the hope that it will be useful, but WITHOUT +.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +.\" for more details. +.\" +.\" You should have received a copy of the GNU General Public License with +.\" your Debian GNU/Linux system, in /usr/doc/copyright/GPL, or with the +.\" dpkg source package as the file COPYING. If not, write to the Free +.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +.\" +.\" +.TH "GNAT TOOLBOX" 1 "Jun 2002" "Debian Project" "Debian Linux" +.SH NAME +gnat, gnatbind, gnatbl, gnatchop, gnatfind, gnathtml, gnatkr, gnatlink, +gnatls, gnatmake, gnatprep, gnatpsta, gnatpsys, gnatxref \- +GNAT toolbox +.SH DESCRIPTION +Those programs are part of GNU GNAT, a freely available Ada 95 compiler. +.PP +For accessing the full GNAT manuals, use +.B info gnat-ug-4.8 +and +.B info gnat-rm-4.8 +for the sections related to the reference manual. +If those sections cannot be found, you will have to install the +gnat-4.4-doc package as well (since these manuals contain invariant parts, +the package is located in the non-free part of the Debian archive). +You may also browse +.B http://gcc.gnu.org/onlinedocs +which provides the GCC online documentation. +.SH AUTHOR +This manpage has been written by Samuel Tardieu , for the +Debian GNU/Linux project. --- gcc-4.9-4.9.2.orig/debian/gnatprj.gpr +++ gcc-4.9-4.9.2/debian/gnatprj.gpr @@ -0,0 +1,32 @@ +-- Project file for use with GNAT +-- Copyright (c) 2005, 2008 Ludovic Brenta +-- +-- This program is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation; either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- This project file is designed to help build applications that use +-- GNAT project files. Here is an example of how to use this project file: +-- +-- with "gnatprj"; +-- project Example is +-- for Object_Dir use "obj"; +-- for Exec_Dir use "."; +-- for Main use ("example"); +-- end Example; + +with "gnatvsn.gpr"; +project Gnatprj is + for Library_Name use "gnatprj"; + for Library_Dir use "/usr/lib"; + for Library_Kind use "dynamic"; + for Source_Dirs use ("/usr/share/ada/adainclude/gnatprj"); + for Library_ALI_Dir use "/usr/lib/ada/adalib/gnatprj"; + for Externally_Built use "true"; +end Gnatprj; --- gcc-4.9-4.9.2.orig/debian/gnatvsn.gpr +++ gcc-4.9-4.9.2/debian/gnatvsn.gpr @@ -0,0 +1,31 @@ +-- Project file for use with GNAT +-- Copyright (c) 2005, 2008 Ludovic Brenta +-- +-- This program is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation; either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- This project file is designed to help build applications that use +-- GNAT project files. Here is an example of how to use this project file: +-- +-- with "gnatvsn"; +-- project Example is +-- for Object_Dir use "obj"; +-- for Exec_Dir use "."; +-- for Main use ("example"); +-- end Example; + +project Gnatvsn is + for Library_Name use "gnatvsn"; + for Library_Dir use "/usr/lib"; + for Library_Kind use "dynamic"; + for Source_Dirs use ("/usr/share/ada/adainclude/gnatvsn"); + for Library_ALI_Dir use "/usr/lib/ada/adalib/gnatvsn"; + for Externally_Built use "true"; +end Gnatvsn; --- gcc-4.9-4.9.2.orig/debian/jdb.sh +++ gcc-4.9-4.9.2/debian/jdb.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +# Placeholder script to fake a +# JDK compatible JAVA_HOME directory. + +echo >&2 "This script is only a placeholder." +echo >&2 "Some programs need a JDK rather than only a JRE to work." +echo >&2 "They test for this tool to detect a JDK installation, but" +echo >&2 "don't really need its functionality to work correctly." --- gcc-4.9-4.9.2.orig/debian/lib32asan0.overrides +++ gcc-4.9-4.9.2/debian/lib32asan0.overrides @@ -0,0 +1,2 @@ +# automake gets it wrong for the multilib build +lib32asan0 binary: binary-or-shlib-defines-rpath --- gcc-4.9-4.9.2.orig/debian/lib32asan0.symbols +++ gcc-4.9-4.9.2/debian/lib32asan0.symbols @@ -0,0 +1,3 @@ +libasan.so.0 lib32asan0 #MINVER# +#include "libasan0.symbols.common" +#include "libasan0.symbols.32" --- gcc-4.9-4.9.2.orig/debian/lib32atomic1.symbols +++ gcc-4.9-4.9.2/debian/lib32atomic1.symbols @@ -0,0 +1,2 @@ +libatomic.so.1 lib32atomic1 #MINVER# +#include "libatomic1.symbols.common" --- gcc-4.9-4.9.2.orig/debian/lib32gcc1.symbols.amd64 +++ gcc-4.9-4.9.2/debian/lib32gcc1.symbols.amd64 @@ -0,0 +1,140 @@ +libgcc_s.so.1 lib32gcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.4.0@GCC_4.4.0 1:4.4.0 + GCC_4.5.0@GCC_4.5.0 1:4.5.0 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GCC_4.8.0@GCC_4.8.0 1:4.8 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __addtf3@GCC_4.4.0 1:4.4.0 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __ashldi3@GCC_3.0 1:4.1.1 + __ashrdi3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbsi2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzsi2@GCC_3.4 1:4.1.1 + __cmpdi2@GCC_3.0 1:4.1.1 + __copysigntf3@GCC_4.4.0 1:4.4.0 + __cpu_indicator_init@GCC_4.8.0 1:4.8 + __cpu_model@GCC_4.8.0 1:4.8 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzsi2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdi3@GLIBC_2.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.4.0 1:4.4.0 + __divtf3@GCC_4.4.0 1:4.4.0 + __divxc3@GCC_4.0.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqtf2@GCC_4.4.0 1:4.4.0 + __extenddftf2@GCC_4.4.0 1:4.4.0 + __extendsftf2@GCC_4.4.0 1:4.4.0 + __extendxftf2@GCC_4.5.0 1:4.5.0 + __fabstf2@GCC_4.4.0 1:4.4.0 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_4.4.0 1:4.4.0 + __fixtfsi@GCC_4.4.0 1:4.4.0 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_4.4.0 1:4.4.0 + __fixunstfsi@GCC_4.4.0 1:4.4.0 + __fixunsxfdi@GCC_3.0 1:4.1.1 + __fixunsxfsi@GCC_3.0 1:4.1.1 + __fixxfdi@GCC_3.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_4.4.0 1:4.4.0 + __floatdixf@GCC_3.0 1:4.1.1 + __floatsitf@GCC_4.4.0 1:4.4.0 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.4.0 1:4.4.0 + __floatundixf@GCC_4.2.0 1:4.2.1 + __floatunsitf@GCC_4.4.0 1:4.4.0 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __getf2@GCC_4.4.0 1:4.4.0 + __gttf2@GCC_4.4.0 1:4.4.0 + __letf2@GCC_4.4.0 1:4.4.0 + __lshrdi3@GCC_3.0 1:4.1.1 + __lttf2@GCC_4.4.0 1:4.4.0 + __moddi3@GLIBC_2.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldi3@GCC_3.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.4.0 1:4.4.0 + __multf3@GCC_4.4.0 1:4.4.0 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulxc3@GCC_4.0.0 1:4.1.1 + __negdi2@GCC_3.0 1:4.1.1 + __negtf2@GCC_4.4.0 1:4.4.0 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __netf2@GCC_4.4.0 1:4.4.0 + __paritydi2@GCC_3.4 1:4.1.1 + __paritysi2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountsi2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.4.0 1:4.4.0 + __powixf2@GCC_4.0.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __subtf3@GCC_4.4.0 1:4.4.0 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __trunctfdf2@GCC_4.4.0 1:4.4.0 + __trunctfsf2@GCC_4.4.0 1:4.4.0 + __trunctfxf2@GCC_4.4.0 1:4.4.0 + __ucmpdi2@GCC_3.0 1:4.1.1 + __udivdi3@GLIBC_2.0 1:4.1.1 + __udivmoddi4@GCC_3.0 1:4.1.1 + __umoddi3@GLIBC_2.0 1:4.1.1 + __unordtf2@GCC_4.4.0 1:4.4.0 --- gcc-4.9-4.9.2.orig/debian/lib32gcc1.symbols.kfreebsd-amd64 +++ gcc-4.9-4.9.2/debian/lib32gcc1.symbols.kfreebsd-amd64 @@ -0,0 +1,140 @@ +libgcc_s.so.1 lib32gcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.4.0@GCC_4.4.0 1:4.4.0 + GCC_4.5.0@GCC_4.5.0 1:4.5.0 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GCC_4.8.0@GCC_4.8.0 1:4.8 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __addtf3@GCC_4.4.0 1:4.4.0 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __ashldi3@GCC_3.0 1:4.1.1 + __ashrdi3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbsi2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzsi2@GCC_3.4 1:4.1.1 + __cmpdi2@GCC_3.0 1:4.1.1 + __copysigntf3@GCC_4.4.0 1:4.4.0 + __cpu_indicator_init@GCC_4.8.0 1:4.8 + __cpu_model@GCC_4.8.0 1:4.8 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzsi2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdi3@GLIBC_2.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.4.0 1:4.4.0 + __divtf3@GCC_4.4.0 1:4.4.0 + __divxc3@GCC_4.0.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqtf2@GCC_4.4.0 1:4.4.0 + __extenddftf2@GCC_4.4.0 1:4.4.0 + __extendsftf2@GCC_4.4.0 1:4.4.0 + __extendxftf2@GCC_4.5.0 1:4.5.0 + __fabstf2@GCC_4.4.0 1:4.4.0 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_4.4.0 1:4.4.0 + __fixtfsi@GCC_4.4.0 1:4.4.0 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_4.4.0 1:4.4.0 + __fixunstfsi@GCC_4.4.0 1:4.4.0 + __fixunsxfdi@GCC_3.0 1:4.1.1 + __fixunsxfsi@GCC_3.0 1:4.1.1 + __fixxfdi@GCC_3.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_4.4.0 1:4.4.0 + __floatdixf@GCC_3.0 1:4.1.1 + __floatsitf@GCC_4.4.0 1:4.4.0 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.4.0 1:4.4.0 + __floatundixf@GCC_4.2.0 1:4.2.1 + __floatunsitf@GCC_4.4.0 1:4.4.0 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __getf2@GCC_4.4.0 1:4.4.0 + __gttf2@GCC_4.4.0 1:4.4.0 + __letf2@GCC_4.4.0 1:4.4.0 + __lshrdi3@GCC_3.0 1:4.1.1 + __lttf2@GCC_4.4.0 1:4.4.0 + __moddi3@GLIBC_2.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldi3@GCC_3.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.4.0 1:4.4.0 + __multf3@GCC_4.4.0 1:4.4.0 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulxc3@GCC_4.0.0 1:4.1.1 + __negdi2@GCC_3.0 1:4.1.1 + __negtf2@GCC_4.4.0 1:4.4.0 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __netf2@GCC_4.4.0 1:4.4.0 + __paritydi2@GCC_3.4 1:4.1.1 + __paritysi2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountsi2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.4.0 1:4.4.0 + __powixf2@GCC_4.0.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __subtf3@GCC_4.4.0 1:4.4.0 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __trunctfdf2@GCC_4.4.0 1:4.4.0 + __trunctfsf2@GCC_4.4.0 1:4.4.0 + __trunctfxf2@GCC_4.4.0 1:4.4.0 + __ucmpdi2@GCC_3.0 1:4.1.1 + __udivdi3@GLIBC_2.0 1:4.1.1 + __udivmoddi4@GCC_3.0 1:4.1.1 + __umoddi3@GLIBC_2.0 1:4.1.1 + __unordtf2@GCC_4.4.0 1:4.4.0 --- gcc-4.9-4.9.2.orig/debian/lib32gcc1.symbols.ppc64 +++ gcc-4.9-4.9.2/debian/lib32gcc1.symbols.ppc64 @@ -0,0 +1,142 @@ +libgcc_s.so.1 lib32gcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3.4@GCC_3.3.4 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.1.0@GCC_4.1.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __adddf3@GCC_3.0 1:4.1.1 + __addsf3@GCC_3.0 1:4.1.1 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __ashldi3@GCC_3.0 1:4.1.1 + __ashrdi3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbsi2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzsi2@GCC_3.4 1:4.1.1 + __cmpdi2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzsi2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdf3@GCC_3.0 1:4.1.1 + __divdi3@GLIBC_2.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divsf3@GCC_3.0 1:4.1.1 + __divtc3@GCC_4.1.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqdf2@GCC_3.0 1:4.1.1 + __eqsf2@GCC_3.0 1:4.1.1 + __extendsfdf2@GCC_3.0 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixdfsi@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixsfsi@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_4.1.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_4.1.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_4.1.0 1:4.1.1 + __floatsidf@GCC_3.0 1:4.1.1 + __floatsisf@GCC_3.0 1:4.1.1 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.2.0 1:4.2.1 + __floatunsidf@GCC_4.2.0 1:4.2.1 + __floatunsisf@GCC_4.2.0 1:4.2.1 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __gcc_qadd@GCC_4.1.0 1:4.1.1 + __gcc_qdiv@GCC_4.1.0 1:4.1.1 + __gcc_qmul@GCC_4.1.0 1:4.1.1 + __gcc_qsub@GCC_4.1.0 1:4.1.1 + __gedf2@GCC_3.0 1:4.1.1 + __gesf2@GCC_3.0 1:4.1.1 + __gtdf2@GCC_3.0 1:4.1.1 + __gtsf2@GCC_3.0 1:4.1.1 + __ledf2@GCC_3.0 1:4.1.1 + __lesf2@GCC_3.0 1:4.1.1 + __lshrdi3@GCC_3.0 1:4.1.1 + __ltdf2@GCC_3.0 1:4.1.1 + __ltsf2@GCC_3.0 1:4.1.1 + __moddi3@GLIBC_2.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldf3@GCC_3.0 1:4.1.1 + __muldi3@GCC_3.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __mulsf3@GCC_3.0 1:4.1.1 + __multc3@GCC_4.1.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __nedf2@GCC_3.0 1:4.1.1 + __negdf2@GCC_3.0 1:4.1.1 + __negdi2@GCC_3.0 1:4.1.1 + __negsf2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __nesf2@GCC_3.0 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __paritysi2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountsi2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.1.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __subdf3@GCC_3.0 1:4.1.1 + __subsf3@GCC_3.0 1:4.1.1 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __trampoline_setup@GCC_3.4.2 1:4.1.1 + __truncdfsf2@GCC_3.0 1:4.1.1 + __ucmpdi2@GCC_3.0 1:4.1.1 + __udivdi3@GLIBC_2.0 1:4.1.1 + __udivmoddi4@GCC_3.0 1:4.1.1 + __umoddi3@GLIBC_2.0 1:4.1.1 + __unorddf2@GCC_3.3.4 1:4.1.1 + __unordsf2@GCC_3.3.4 1:4.1.1 --- gcc-4.9-4.9.2.orig/debian/lib32gcc1.symbols.s390x +++ gcc-4.9-4.9.2/debian/lib32gcc1.symbols.s390x @@ -0,0 +1,104 @@ +libgcc_s.so.1 lib32gcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.1.0@GCC_4.1.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __ashldi3@GCC_3.0 1:4.1.1 + __ashrdi3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbsi2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzsi2@GCC_3.4 1:4.1.1 + __cmpdi2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzsi2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdi3@GLIBC_2.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.1.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_4.1.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_4.1.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_4.1.0 1:4.1.1 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.2.0 1:4.2.1 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __lshrdi3@GCC_3.0 1:4.1.1 + __moddi3@GLIBC_2.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldi3@GCC_3.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.1.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __negdi2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __paritysi2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountsi2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.1.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __ucmpdi2@GCC_3.0 1:4.1.1 + __udivdi3@GLIBC_2.0 1:4.1.1 + __udivmoddi4@GCC_3.0 1:4.1.1 + __umoddi3@GLIBC_2.0 1:4.1.1 --- gcc-4.9-4.9.2.orig/debian/lib32gcc1.symbols.sparc64 +++ gcc-4.9-4.9.2/debian/lib32gcc1.symbols.sparc64 @@ -0,0 +1,96 @@ +libgcc_s.so.1 lib32gcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __ashldi3@GCC_3.0 1:4.1.1 + __ashrdi3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbsi2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzsi2@GCC_3.4 1:4.1.1 + __cmpdi2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzsi2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdi3@GLIBC_2.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __lshrdi3@GCC_3.0 1:4.1.1 + __moddi3@GLIBC_2.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldi3@GCC_3.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __negdi2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __paritysi2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountsi2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __ucmpdi2@GCC_3.0 1:4.1.1 + __udivdi3@GLIBC_2.0 1:4.1.1 + __udivmoddi4@GCC_3.0 1:4.1.1 + __umoddi3@GLIBC_2.0 1:4.1.1 --- gcc-4.9-4.9.2.orig/debian/lib32gccLC.postinst +++ gcc-4.9-4.9.2/debian/lib32gccLC.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/lib32gcc@LC@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi +esac + +#DEBHELPER# --- gcc-4.9-4.9.2.orig/debian/lib32gfortran3.overrides +++ gcc-4.9-4.9.2/debian/lib32gfortran3.overrides @@ -0,0 +1,2 @@ +# automake gets it wrong for the multilib build +lib32gfortran3 binary: binary-or-shlib-defines-rpath --- gcc-4.9-4.9.2.orig/debian/lib32gfortran3.symbols +++ gcc-4.9-4.9.2/debian/lib32gfortran3.symbols @@ -0,0 +1,3 @@ +libgfortran.so.3 lib32gfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.10" --- gcc-4.9-4.9.2.orig/debian/lib32gfortran3.symbols.amd64 +++ gcc-4.9-4.9.2/debian/lib32gfortran3.symbols.amd64 @@ -0,0 +1,9 @@ +libgfortran.so.3 lib32gfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.10" +#include "libgfortran3.symbols.16.powerpc" + _gfortran_norm2_r10@GFORTRAN_1.4 4.6 + _gfortran_transfer_complex128@GFORTRAN_1.4 4.6 + _gfortran_transfer_complex128_write@GFORTRAN_1.4 4.6 + _gfortran_transfer_real128@GFORTRAN_1.4 4.6 + _gfortran_transfer_real128_write@GFORTRAN_1.4 4.6 --- gcc-4.9-4.9.2.orig/debian/lib32gfortran3.symbols.mips64 +++ gcc-4.9-4.9.2/debian/lib32gfortran3.symbols.mips64 @@ -0,0 +1,2 @@ +libgfortran.so.3 lib32gfortran3 #MINVER# +#include "libgfortran3.symbols.common" --- gcc-4.9-4.9.2.orig/debian/lib32gfortran3.symbols.mips64el +++ gcc-4.9-4.9.2/debian/lib32gfortran3.symbols.mips64el @@ -0,0 +1,2 @@ +libgfortran.so.3 lib32gfortran3 #MINVER# +#include "libgfortran3.symbols.common" --- gcc-4.9-4.9.2.orig/debian/lib32gfortran3.symbols.mipsn32 +++ gcc-4.9-4.9.2/debian/lib32gfortran3.symbols.mipsn32 @@ -0,0 +1,2 @@ +libgfortran.so.3 lib32gfortran3 #MINVER# +#include "libgfortran3.symbols.common" --- gcc-4.9-4.9.2.orig/debian/lib32gfortran3.symbols.mipsn32el +++ gcc-4.9-4.9.2/debian/lib32gfortran3.symbols.mipsn32el @@ -0,0 +1,2 @@ +libgfortran.so.3 lib32gfortran3 #MINVER# +#include "libgfortran3.symbols.common" --- gcc-4.9-4.9.2.orig/debian/lib32gfortran3.symbols.ppc64 +++ gcc-4.9-4.9.2/debian/lib32gfortran3.symbols.ppc64 @@ -0,0 +1,3 @@ +libgfortran.so.3 lib32gfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.16.powerpc" --- gcc-4.9-4.9.2.orig/debian/lib32gfortran3.symbols.s390x +++ gcc-4.9-4.9.2/debian/lib32gfortran3.symbols.s390x @@ -0,0 +1,3 @@ +libgfortran.so.3 lib32gfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.16.powerpc" --- gcc-4.9-4.9.2.orig/debian/lib32gfortran3.symbols.sparc64 +++ gcc-4.9-4.9.2/debian/lib32gfortran3.symbols.sparc64 @@ -0,0 +1,2 @@ +libgfortran.so.3 lib32gfortran3 #MINVER# +#include "libgfortran3.symbols.common" --- gcc-4.9-4.9.2.orig/debian/lib32gfortran3.symbols.x32 +++ gcc-4.9-4.9.2/debian/lib32gfortran3.symbols.x32 @@ -0,0 +1,4 @@ +libgfortran.so.3 lib32gfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.10" +#include "libgfortran3.symbols.16.powerpc" --- gcc-4.9-4.9.2.orig/debian/lib32gomp1.symbols +++ gcc-4.9-4.9.2/debian/lib32gomp1.symbols @@ -0,0 +1,4 @@ +libgomp.so.1 lib32gomp1 #MINVER# +#include "libgomp1.symbols.common" + GOMP_atomic_end@GOMP_1.0 4.2.1 + GOMP_atomic_start@GOMP_1.0 4.2.1 --- gcc-4.9-4.9.2.orig/debian/lib32itm1.symbols +++ gcc-4.9-4.9.2/debian/lib32itm1.symbols @@ -0,0 +1,4 @@ +libitm.so.1 lib32itm1 #MINVER# +#include "libitm1.symbols.common" +#include "libitm1.symbols.32bit" +(arch=amd64 i386 x32)#include "libitm1.symbols.x86" --- gcc-4.9-4.9.2.orig/debian/lib32objc4.symbols +++ gcc-4.9-4.9.2/debian/lib32objc4.symbols @@ -0,0 +1,3 @@ +libobjc.so.4 lib32objc4 #MINVER# +#include "libobjc4.symbols.common" + __gnu_objc_personality_v0@Base 4.2.1 --- gcc-4.9-4.9.2.orig/debian/lib32quadmath0.symbols +++ gcc-4.9-4.9.2/debian/lib32quadmath0.symbols @@ -0,0 +1,2 @@ +libquadmath.so.0 lib32quadmath0 #MINVER# +#include "libquadmath0.symbols.common" --- gcc-4.9-4.9.2.orig/debian/lib32stdc++6.symbols.amd64 +++ gcc-4.9-4.9.2/debian/lib32stdc++6.symbols.amd64 @@ -0,0 +1,13 @@ +libstdc++.so.6 lib32stdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 + (optional)_Z16__VLTRegisterSetPPvPKvjjS0_@CXXABI_1.3.8 4.9.0 + (optional)_Z17__VLTRegisterPairPPvPKvjS2_@CXXABI_1.3.8 4.9.0 + (optional)_Z21__VLTRegisterSetDebugPPvPKvjjS0_@CXXABI_1.3.8 4.9.0 + (optional)_Z22__VLTRegisterPairDebugPPvPKvjS2_PKcS4_@CXXABI_1.3.8 4.9.0 + (optional)_Z24__VLTVerifyVtablePointerPPvPKv@CXXABI_1.3.8 4.9.0 + (optional)_Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_@CXXABI_1.3.8 4.9.0 + (optional)__VLTChangePermission@CXXABI_1.3.8 4.9.0 --- gcc-4.9-4.9.2.orig/debian/lib32stdc++6.symbols.kfreebsd-amd64 +++ gcc-4.9-4.9.2/debian/lib32stdc++6.symbols.kfreebsd-amd64 @@ -0,0 +1,6 @@ +libstdc++.so.6 lib32stdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 --- gcc-4.9-4.9.2.orig/debian/lib32stdc++6.symbols.ppc64 +++ gcc-4.9-4.9.2/debian/lib32stdc++6.symbols.ppc64 @@ -0,0 +1,8 @@ +libstdc++.so.6 lib32stdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.32bit" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 --- gcc-4.9-4.9.2.orig/debian/lib32stdc++6.symbols.s390x +++ gcc-4.9-4.9.2/debian/lib32stdc++6.symbols.s390x @@ -0,0 +1,557 @@ +libstdc++.so.6 lib32stdc++6 #MINVER# +#include "libstdc++6.symbols.common" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx9free_list6_M_getEm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSs16find_last_not_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs2atEm@GLIBCXX_3.4 4.1.1 + _ZNKSs4copyEPcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs6substrEmm@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_checkEmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_limitEmm@GLIBCXX_3.4 4.1.1 + _ZNKSsixEm@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE12_M_transformEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE12_M_transformEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5.0 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5.0 + _ZNSbIwSt11char_traitsIwESaIwEE10_S_compareEmm@GLIBCXX_3.4.16 4.7 + _ZNKSt8valarrayImE4sizeEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_@GLIBCXX_3.4.14 4.5.0 + _ZNSbIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7reserveEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPci@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPcic@GLIBCXX_3.4 4.1.1 + _ZNSi4readEPci@GLIBCXX_3.4 4.1.1 + _ZNSi5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEi@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEi@GLIBCXX_3.4.5 4.1.1 + _ZNSi6ignoreEii@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPci@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPcic@GLIBCXX_3.4 4.1.1 + _ZNSi8readsomeEPci@GLIBCXX_3.4 4.1.1 + _ZNSo5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSo5writeEPKci@GLIBCXX_3.4 4.1.1 + _ZNSo8_M_writeEPKci@GLIBCXX_3.4 4.1.1 + _ZNSs10_S_compareEmm@GLIBCXX_3.4.16 4.7 + _ZNSs12_S_constructEmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs14_M_replace_auxEmmmc@GLIBCXX_3.4 4.1.1 + _ZNSs15_M_replace_safeEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs18_S_construct_aux_2EmcRKSaIcE@GLIBCXX_3.4.14 4.5.0 + _ZNSs2atEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4.5 4.1.1 + _ZNSs4_Rep8_M_cloneERKSaIcEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep9_S_createEmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs5eraseEmm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6assignERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmPKc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmmc@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEm@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEmc@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4.5 4.1.1 + _ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4.5 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmmc@GLIBCXX_3.4 4.1.1 + _ZNSs7reserveEm@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcmc@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcmc@GLIBCXX_3.4.5 4.1.1 + _ZNSs9_M_mutateEmmm@GLIBCXX_3.4 4.1.1 + _ZNSsC1EPKcmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1EmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EPKcmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsixEm@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPci@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_allocEm@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_setupEPcS0_i@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPFPvmEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKai@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKhi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPaiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPciS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPhiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1Ei@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPFPvmEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKai@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKhi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPaiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPciS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPhiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2Ei@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4.5 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_gbumpEi@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_pbumpEi@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_gbumpEi@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_pbumpEi@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS4_x@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS4_x@GLIBCXX_3.4.16 4.7 + _ZNSt15messages_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EP15__locale_structPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EP15__locale_structPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm@GLIBCXX_3.4.7 4.1.1 + _ZNSt6locale5_ImplC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1ERKS0_m@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2ERKS0_m@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC1ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC2ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEixEm@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZSt11_Hash_bytesPKvmm@CXXABI_1.3.5 4.6 + _ZSt15_Fnv_hash_bytesPKvmm@CXXABI_1.3.5 4.6 + _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1 + _ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1 + _ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1 + _ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1 + _ZSt17__verify_groupingPKcmRKSs@GLIBCXX_3.4.10 4.3 + _ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZThn8_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSiD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSiD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSoD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSoD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10istrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10istrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10ostrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10ostrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _Znam@GLIBCXX_3.4 4.1.1 + _ZnamRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _Znwm@GLIBCXX_3.4 4.1.1 + _ZnwmRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.32bit.s390" + _ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 --- gcc-4.9-4.9.2.orig/debian/lib32stdc++6.symbols.sparc64 +++ gcc-4.9-4.9.2/debian/lib32stdc++6.symbols.sparc64 @@ -0,0 +1,8 @@ +libstdc++.so.6 lib32stdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.32bit" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 --- gcc-4.9-4.9.2.orig/debian/lib32stdc++CXX.postinst +++ gcc-4.9-4.9.2/debian/lib32stdc++CXX.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/lib32stdc++@CXX@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi +esac + +#DEBHELPER# --- gcc-4.9-4.9.2.orig/debian/lib64asan0.overrides +++ gcc-4.9-4.9.2/debian/lib64asan0.overrides @@ -0,0 +1,2 @@ +# automake gets it wrong for the multilib build +lib64asan0 binary: binary-or-shlib-defines-rpath --- gcc-4.9-4.9.2.orig/debian/lib64asan0.symbols +++ gcc-4.9-4.9.2/debian/lib64asan0.symbols @@ -0,0 +1,3 @@ +libasan.so.0 lib64asan0 #MINVER# +#include "libasan0.symbols.common" +#include "libasan0.symbols.64" --- gcc-4.9-4.9.2.orig/debian/lib64atomic1.symbols +++ gcc-4.9-4.9.2/debian/lib64atomic1.symbols @@ -0,0 +1,3 @@ +libatomic.so.1 lib64atomic1 #MINVER# +#include "libatomic1.symbols.common" +#include "libatomic1.symbols.64" --- gcc-4.9-4.9.2.orig/debian/lib64gcc1.symbols.i386 +++ gcc-4.9-4.9.2/debian/lib64gcc1.symbols.i386 @@ -0,0 +1,150 @@ +libgcc_s.so.1 lib64gcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4.4@GCC_3.4.4 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GCC_4.8.0@GCC_4.8.0 1:4.8 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __absvti2@GCC_3.4.4 1:4.1.1 + __addtf3@GCC_4.3.0 1:4.3 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __addvti3@GCC_3.4.4 1:4.1.1 + __ashlti3@GCC_3.0 1:4.1.1 + __ashrti3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbti2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzti2@GCC_3.4 1:4.1.1 + __cmpti2@GCC_3.0 1:4.1.1 + __cpu_indicator_init@GCC_4.8.0 1:4.8 + __cpu_model@GCC_4.8.0 1:4.8 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzti2@GCC_3.4 1:4.1.1 + __deregister_frame@GCC_3.0 1:4.1.1 + __deregister_frame_info@GCC_3.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.0.0 1:4.3 + __divtc3@GCC_4.3.0 1:4.4.0 + __divtf3@GCC_4.3.0 1:4.3 + __divti3@GCC_3.0 1:4.1.1 + __divxc3@GCC_4.0.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqtf2@GCC_4.3.0 1:4.3 + __extenddftf2@GCC_4.3.0 1:4.3 + __extendsftf2@GCC_4.3.0 1:4.3 + __extendxftf2@GCC_4.3.0 1:4.3 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffsti2@GCC_3.0 1:4.1.1 + __fixdfti@GCC_3.0 1:4.1.1 + __fixsfti@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_4.3.0 1:4.3 + __fixtfsi@GCC_4.3.0 1:4.3 + __fixtfti@GCC_4.3.0 1:4.3 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfti@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfti@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_4.3.0 1:4.3 + __fixunstfsi@GCC_4.3.0 1:4.3 + __fixunstfti@GCC_4.3.0 1:4.3 + __fixunsxfdi@GCC_3.0 1:4.1.1 + __fixunsxfti@GCC_3.0 1:4.1.1 + __fixxfti@GCC_3.0 1:4.1.1 + __floatditf@GCC_4.3.0 1:4.3 + __floatsitf@GCC_4.3.0 1:4.3 + __floattidf@GCC_3.0 1:4.1.1 + __floattisf@GCC_3.0 1:4.1.1 + __floattitf@GCC_4.3.0 1:4.3 + __floattixf@GCC_3.0 1:4.1.1 + __floatunditf@GCC_4.3.0 1:4.3 + __floatunsitf@GCC_4.3.0 1:4.3 + __floatuntidf@GCC_4.2.0 1:4.2.1 + __floatuntisf@GCC_4.2.0 1:4.2.1 + __floatuntitf@GCC_4.3.0 1:4.3 + __floatuntixf@GCC_4.2.0 1:4.2.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __getf2@GCC_4.3.0 1:4.3 + __gttf2@GCC_3.0 1:4.3 + __gttf2@GCC_4.3.0 1:4.4.0 + __letf2@GCC_4.3.0 1:4.3 + __lshrti3@GCC_3.0 1:4.1.1 + __lttf2@GCC_3.0 1:4.3 + __lttf2@GCC_4.3.0 1:4.4.0 + __modti3@GCC_3.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.0.0 1:4.3 + __multc3@GCC_4.3.0 1:4.4.0 + __multf3@GCC_4.3.0 1:4.3 + __multi3@GCC_3.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulvti3@GCC_3.4.4 1:4.1.1 + __mulxc3@GCC_4.0.0 1:4.1.1 + __negtf2@GCC_4.3.0 1:4.3 + __negti2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __negvti2@GCC_3.4.4 1:4.1.1 + __netf2@GCC_3.0 1:4.3 + __netf2@GCC_4.3.0 1:4.4.0 + __paritydi2@GCC_3.4 1:4.1.1 + __parityti2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountti2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.0.0 1:4.3 + __powitf2@GCC_4.3.0 1:4.4.0 + __powixf2@GCC_4.0.0 1:4.1.1 + __register_frame@GCC_3.0 1:4.1.1 + __register_frame_info@GCC_3.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GCC_3.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GCC_3.0 1:4.1.1 + __subtf3@GCC_4.3.0 1:4.3 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __subvti3@GCC_3.4.4 1:4.1.1 + __trunctfdf2@GCC_4.3.0 1:4.3 + __trunctfsf2@GCC_4.3.0 1:4.3 + __trunctfxf2@GCC_4.3.0 1:4.3 + __ucmpti2@GCC_3.0 1:4.1.1 + __udivmodti4@GCC_3.0 1:4.1.1 + __udivti3@GCC_3.0 1:4.1.1 + __umodti3@GCC_3.0 1:4.1.1 + __unordtf2@GCC_4.3.0 1:4.3 --- gcc-4.9-4.9.2.orig/debian/lib64gcc1.symbols.mips +++ gcc-4.9-4.9.2/debian/lib64gcc1.symbols.mips @@ -0,0 +1,1749 @@ +libgcc_s.so.1 lib64gcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3.4@GCC_3.3.4 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4.4@GCC_3.4.4 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.2.0 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.4.0@GCC_4.4.0 1:4.4 + GCC_4.5.0@GCC_4.5.0 1:4.5 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __absvti2@GCC_3.4.4 1:4.1.1 + __addda3@GCC_4.3.0 1:4.3 + __adddf3@GCC_3.0 1:4.1.1 + __adddq3@GCC_4.3.0 1:4.3 + __addha3@GCC_4.3.0 1:4.3 + __addhq3@GCC_4.3.0 1:4.3 + __addqq3@GCC_4.3.0 1:4.3 + __addsa3@GCC_4.3.0 1:4.3 + __addsf3@GCC_3.0 1:4.1.1 + __addsq3@GCC_4.3.0 1:4.3 + __addta3@GCC_4.3.0 1:4.3 + __addtf3@GCC_3.0 1:4.1.1 + __addtq3@GCC_4.3.0 1:4.3 + __adduda3@GCC_4.3.0 1:4.3 + __addudq3@GCC_4.3.0 1:4.3 + __adduha3@GCC_4.3.0 1:4.3 + __adduhq3@GCC_4.3.0 1:4.3 + __adduqq3@GCC_4.3.0 1:4.3 + __addusa3@GCC_4.3.0 1:4.3 + __addusq3@GCC_4.3.0 1:4.3 + __adduta3@GCC_4.3.0 1:4.3 + __addutq3@GCC_4.3.0 1:4.3 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __addvti3@GCC_3.4.4 1:4.1.1 + __ashlda3@GCC_4.3.0 1:4.3 + __ashldq3@GCC_4.3.0 1:4.3 + __ashlha3@GCC_4.3.0 1:4.3 + __ashlhq3@GCC_4.3.0 1:4.3 + __ashlqq3@GCC_4.3.0 1:4.3 + __ashlsa3@GCC_4.3.0 1:4.3 + __ashlsq3@GCC_4.3.0 1:4.3 + __ashlta3@GCC_4.3.0 1:4.3 + __ashlti3@GCC_3.0 1:4.1.1 + __ashltq3@GCC_4.3.0 1:4.3 + __ashluda3@GCC_4.3.0 1:4.3 + __ashludq3@GCC_4.3.0 1:4.3 + __ashluha3@GCC_4.3.0 1:4.3 + __ashluhq3@GCC_4.3.0 1:4.3 + __ashluqq3@GCC_4.3.0 1:4.3 + __ashlusa3@GCC_4.3.0 1:4.3 + __ashlusq3@GCC_4.3.0 1:4.3 + __ashluta3@GCC_4.3.0 1:4.3 + __ashlutq3@GCC_4.3.0 1:4.3 + __ashrda3@GCC_4.3.0 1:4.3 + __ashrdq3@GCC_4.3.0 1:4.3 + __ashrha3@GCC_4.3.0 1:4.3 + __ashrhq3@GCC_4.3.0 1:4.3 + __ashrqq3@GCC_4.3.0 1:4.3 + __ashrsa3@GCC_4.3.0 1:4.3 + __ashrsq3@GCC_4.3.0 1:4.3 + __ashrta3@GCC_4.3.0 1:4.3 + __ashrti3@GCC_3.0 1:4.1.1 + __ashrtq3@GCC_4.3.0 1:4.3 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbti2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzti2@GCC_3.4 1:4.1.1 + __cmpda2@GCC_4.3.0 1:4.3 + __cmpdq2@GCC_4.3.0 1:4.3 + __cmpha2@GCC_4.3.0 1:4.3 + __cmphq2@GCC_4.3.0 1:4.3 + __cmpqq2@GCC_4.3.0 1:4.3 + __cmpsa2@GCC_4.3.0 1:4.3 + __cmpsq2@GCC_4.3.0 1:4.3 + __cmpta2@GCC_4.3.0 1:4.3 + __cmpti2@GCC_3.0 1:4.1.1 + __cmptq2@GCC_4.3.0 1:4.3 + __cmpuda2@GCC_4.3.0 1:4.3 + __cmpudq2@GCC_4.3.0 1:4.3 + __cmpuha2@GCC_4.3.0 1:4.3 + __cmpuhq2@GCC_4.3.0 1:4.3 + __cmpuqq2@GCC_4.3.0 1:4.3 + __cmpusa2@GCC_4.3.0 1:4.3 + __cmpusq2@GCC_4.3.0 1:4.3 + __cmputa2@GCC_4.3.0 1:4.3 + __cmputq2@GCC_4.3.0 1:4.3 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzti2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divda3@GCC_4.3.0 1:4.3 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdf3@GCC_3.0 1:4.1.1 + __divdq3@GCC_4.3.0 1:4.3 + __divha3@GCC_4.3.0 1:4.3 + __divhq3@GCC_4.3.0 1:4.3 + __divqq3@GCC_4.3.0 1:4.3 + __divsa3@GCC_4.3.0 1:4.3 + __divsc3@GCC_4.0.0 1:4.1.1 + __divsf3@GCC_3.0 1:4.1.1 + __divsq3@GCC_4.3.0 1:4.3 + __divta3@GCC_4.3.0 1:4.3 + __divtc3@GCC_4.0.0 1:4.1.1 + __divtf3@GCC_3.0 1:4.1.1 + __divti3@GCC_3.0 1:4.1.1 + __divtq3@GCC_4.3.0 1:4.3 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqdf2@GCC_3.0 1:4.1.1 + __eqsf2@GCC_3.0 1:4.1.1 + __eqtf2@GCC_3.0 1:4.1.1 + __extenddftf2@GCC_3.0 1:4.1.1 + __extendsfdf2@GCC_3.0 1:4.1.1 + __extendsftf2@GCC_3.0 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffsti2@GCC_3.0 1:4.1.1 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixdfsi@GCC_3.0 1:4.1.1 + __fixdfti@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixsfsi@GCC_3.0 1:4.1.1 + __fixsfti@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_3.0 1:4.1.1 + __fixtfsi@GCC_3.0 1:4.1.1 + __fixtfti@GCC_3.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunsdfti@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunssfti@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_3.0 1:4.1.1 + __fixunstfsi@GCC_3.0 1:4.1.1 + __fixunstfti@GCC_3.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_3.0 1:4.1.1 + __floatsidf@GCC_3.0 1:4.1.1 + __floatsisf@GCC_3.0 1:4.1.1 + __floatsitf@GCC_3.0 1:4.1.1 + __floattidf@GCC_3.0 1:4.1.1 + __floattisf@GCC_3.0 1:4.1.1 + __floattitf@GCC_3.0 1:4.1.1 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.2.0 1:4.2.1 + __floatunsidf@GCC_4.2.0 1:4.2.1 + __floatunsisf@GCC_4.2.0 1:4.2.1 + __floatunsitf@GCC_4.2.0 1:4.2.1 + __floatuntidf@GCC_4.2.0 1:4.2.1 + __floatuntisf@GCC_4.2.0 1:4.2.1 + __floatuntitf@GCC_4.2.0 1:4.2.1 + __fractdadf@GCC_4.3.0 1:4.3 + __fractdadi@GCC_4.3.0 1:4.3 + __fractdadq@GCC_4.3.0 1:4.3 + __fractdaha2@GCC_4.3.0 1:4.3 + __fractdahi@GCC_4.3.0 1:4.3 + __fractdahq@GCC_4.3.0 1:4.3 + __fractdaqi@GCC_4.3.0 1:4.3 + __fractdaqq@GCC_4.3.0 1:4.3 + __fractdasa2@GCC_4.3.0 1:4.3 + __fractdasf@GCC_4.3.0 1:4.3 + __fractdasi@GCC_4.3.0 1:4.3 + __fractdasq@GCC_4.3.0 1:4.3 + __fractdata2@GCC_4.3.0 1:4.3 + __fractdati@GCC_4.3.0 1:4.3 + __fractdatq@GCC_4.3.0 1:4.3 + __fractdauda@GCC_4.3.0 1:4.3 + __fractdaudq@GCC_4.3.0 1:4.3 + __fractdauha@GCC_4.3.0 1:4.3 + __fractdauhq@GCC_4.3.0 1:4.3 + __fractdauqq@GCC_4.3.0 1:4.3 + __fractdausa@GCC_4.3.0 1:4.3 + __fractdausq@GCC_4.3.0 1:4.3 + __fractdauta@GCC_4.3.0 1:4.3 + __fractdautq@GCC_4.3.0 1:4.3 + __fractdfda@GCC_4.3.0 1:4.3 + __fractdfdq@GCC_4.3.0 1:4.3 + __fractdfha@GCC_4.3.0 1:4.3 + __fractdfhq@GCC_4.3.0 1:4.3 + __fractdfqq@GCC_4.3.0 1:4.3 + __fractdfsa@GCC_4.3.0 1:4.3 + __fractdfsq@GCC_4.3.0 1:4.3 + __fractdfta@GCC_4.3.0 1:4.3 + __fractdftq@GCC_4.3.0 1:4.3 + __fractdfuda@GCC_4.3.0 1:4.3 + __fractdfudq@GCC_4.3.0 1:4.3 + __fractdfuha@GCC_4.3.0 1:4.3 + __fractdfuhq@GCC_4.3.0 1:4.3 + __fractdfuqq@GCC_4.3.0 1:4.3 + __fractdfusa@GCC_4.3.0 1:4.3 + __fractdfusq@GCC_4.3.0 1:4.3 + __fractdfuta@GCC_4.3.0 1:4.3 + __fractdfutq@GCC_4.3.0 1:4.3 + __fractdida@GCC_4.3.0 1:4.3 + __fractdidq@GCC_4.3.0 1:4.3 + __fractdiha@GCC_4.3.0 1:4.3 + __fractdihq@GCC_4.3.0 1:4.3 + __fractdiqq@GCC_4.3.0 1:4.3 + __fractdisa@GCC_4.3.0 1:4.3 + __fractdisq@GCC_4.3.0 1:4.3 + __fractdita@GCC_4.3.0 1:4.3 + __fractditq@GCC_4.3.0 1:4.3 + __fractdiuda@GCC_4.3.0 1:4.3 + __fractdiudq@GCC_4.3.0 1:4.3 + __fractdiuha@GCC_4.3.0 1:4.3 + __fractdiuhq@GCC_4.3.0 1:4.3 + __fractdiuqq@GCC_4.3.0 1:4.3 + __fractdiusa@GCC_4.3.0 1:4.3 + __fractdiusq@GCC_4.3.0 1:4.3 + __fractdiuta@GCC_4.3.0 1:4.3 + __fractdiutq@GCC_4.3.0 1:4.3 + __fractdqda@GCC_4.3.0 1:4.3 + __fractdqdf@GCC_4.3.0 1:4.3 + __fractdqdi@GCC_4.3.0 1:4.3 + __fractdqha@GCC_4.3.0 1:4.3 + __fractdqhi@GCC_4.3.0 1:4.3 + __fractdqhq2@GCC_4.3.0 1:4.3 + __fractdqqi@GCC_4.3.0 1:4.3 + __fractdqqq2@GCC_4.3.0 1:4.3 + __fractdqsa@GCC_4.3.0 1:4.3 + __fractdqsf@GCC_4.3.0 1:4.3 + __fractdqsi@GCC_4.3.0 1:4.3 + __fractdqsq2@GCC_4.3.0 1:4.3 + __fractdqta@GCC_4.3.0 1:4.3 + __fractdqti@GCC_4.3.0 1:4.3 + __fractdqtq2@GCC_4.3.0 1:4.3 + __fractdquda@GCC_4.3.0 1:4.3 + __fractdqudq@GCC_4.3.0 1:4.3 + __fractdquha@GCC_4.3.0 1:4.3 + __fractdquhq@GCC_4.3.0 1:4.3 + __fractdquqq@GCC_4.3.0 1:4.3 + __fractdqusa@GCC_4.3.0 1:4.3 + __fractdqusq@GCC_4.3.0 1:4.3 + __fractdquta@GCC_4.3.0 1:4.3 + __fractdqutq@GCC_4.3.0 1:4.3 + __fracthada2@GCC_4.3.0 1:4.3 + __fracthadf@GCC_4.3.0 1:4.3 + __fracthadi@GCC_4.3.0 1:4.3 + __fracthadq@GCC_4.3.0 1:4.3 + __fracthahi@GCC_4.3.0 1:4.3 + __fracthahq@GCC_4.3.0 1:4.3 + __fracthaqi@GCC_4.3.0 1:4.3 + __fracthaqq@GCC_4.3.0 1:4.3 + __fracthasa2@GCC_4.3.0 1:4.3 + __fracthasf@GCC_4.3.0 1:4.3 + __fracthasi@GCC_4.3.0 1:4.3 + __fracthasq@GCC_4.3.0 1:4.3 + __fracthata2@GCC_4.3.0 1:4.3 + __fracthati@GCC_4.3.0 1:4.3 + __fracthatq@GCC_4.3.0 1:4.3 + __fracthauda@GCC_4.3.0 1:4.3 + __fracthaudq@GCC_4.3.0 1:4.3 + __fracthauha@GCC_4.3.0 1:4.3 + __fracthauhq@GCC_4.3.0 1:4.3 + __fracthauqq@GCC_4.3.0 1:4.3 + __fracthausa@GCC_4.3.0 1:4.3 + __fracthausq@GCC_4.3.0 1:4.3 + __fracthauta@GCC_4.3.0 1:4.3 + __fracthautq@GCC_4.3.0 1:4.3 + __fracthida@GCC_4.3.0 1:4.3 + __fracthidq@GCC_4.3.0 1:4.3 + __fracthiha@GCC_4.3.0 1:4.3 + __fracthihq@GCC_4.3.0 1:4.3 + __fracthiqq@GCC_4.3.0 1:4.3 + __fracthisa@GCC_4.3.0 1:4.3 + __fracthisq@GCC_4.3.0 1:4.3 + __fracthita@GCC_4.3.0 1:4.3 + __fracthitq@GCC_4.3.0 1:4.3 + __fracthiuda@GCC_4.3.0 1:4.3 + __fracthiudq@GCC_4.3.0 1:4.3 + __fracthiuha@GCC_4.3.0 1:4.3 + __fracthiuhq@GCC_4.3.0 1:4.3 + __fracthiuqq@GCC_4.3.0 1:4.3 + __fracthiusa@GCC_4.3.0 1:4.3 + __fracthiusq@GCC_4.3.0 1:4.3 + __fracthiuta@GCC_4.3.0 1:4.3 + __fracthiutq@GCC_4.3.0 1:4.3 + __fracthqda@GCC_4.3.0 1:4.3 + __fracthqdf@GCC_4.3.0 1:4.3 + __fracthqdi@GCC_4.3.0 1:4.3 + __fracthqdq2@GCC_4.3.0 1:4.3 + __fracthqha@GCC_4.3.0 1:4.3 + __fracthqhi@GCC_4.3.0 1:4.3 + __fracthqqi@GCC_4.3.0 1:4.3 + __fracthqqq2@GCC_4.3.0 1:4.3 + __fracthqsa@GCC_4.3.0 1:4.3 + __fracthqsf@GCC_4.3.0 1:4.3 + __fracthqsi@GCC_4.3.0 1:4.3 + __fracthqsq2@GCC_4.3.0 1:4.3 + __fracthqta@GCC_4.3.0 1:4.3 + __fracthqti@GCC_4.3.0 1:4.3 + __fracthqtq2@GCC_4.3.0 1:4.3 + __fracthquda@GCC_4.3.0 1:4.3 + __fracthqudq@GCC_4.3.0 1:4.3 + __fracthquha@GCC_4.3.0 1:4.3 + __fracthquhq@GCC_4.3.0 1:4.3 + __fracthquqq@GCC_4.3.0 1:4.3 + __fracthqusa@GCC_4.3.0 1:4.3 + __fracthqusq@GCC_4.3.0 1:4.3 + __fracthquta@GCC_4.3.0 1:4.3 + __fracthqutq@GCC_4.3.0 1:4.3 + __fractqida@GCC_4.3.0 1:4.3 + __fractqidq@GCC_4.3.0 1:4.3 + __fractqiha@GCC_4.3.0 1:4.3 + __fractqihq@GCC_4.3.0 1:4.3 + __fractqiqq@GCC_4.3.0 1:4.3 + __fractqisa@GCC_4.3.0 1:4.3 + __fractqisq@GCC_4.3.0 1:4.3 + __fractqita@GCC_4.3.0 1:4.3 + __fractqitq@GCC_4.3.0 1:4.3 + __fractqiuda@GCC_4.3.0 1:4.3 + __fractqiudq@GCC_4.3.0 1:4.3 + __fractqiuha@GCC_4.3.0 1:4.3 + __fractqiuhq@GCC_4.3.0 1:4.3 + __fractqiuqq@GCC_4.3.0 1:4.3 + __fractqiusa@GCC_4.3.0 1:4.3 + __fractqiusq@GCC_4.3.0 1:4.3 + __fractqiuta@GCC_4.3.0 1:4.3 + __fractqiutq@GCC_4.3.0 1:4.3 + __fractqqda@GCC_4.3.0 1:4.3 + __fractqqdf@GCC_4.3.0 1:4.3 + __fractqqdi@GCC_4.3.0 1:4.3 + __fractqqdq2@GCC_4.3.0 1:4.3 + __fractqqha@GCC_4.3.0 1:4.3 + __fractqqhi@GCC_4.3.0 1:4.3 + __fractqqhq2@GCC_4.3.0 1:4.3 + __fractqqqi@GCC_4.3.0 1:4.3 + __fractqqsa@GCC_4.3.0 1:4.3 + __fractqqsf@GCC_4.3.0 1:4.3 + __fractqqsi@GCC_4.3.0 1:4.3 + __fractqqsq2@GCC_4.3.0 1:4.3 + __fractqqta@GCC_4.3.0 1:4.3 + __fractqqti@GCC_4.3.0 1:4.3 + __fractqqtq2@GCC_4.3.0 1:4.3 + __fractqquda@GCC_4.3.0 1:4.3 + __fractqqudq@GCC_4.3.0 1:4.3 + __fractqquha@GCC_4.3.0 1:4.3 + __fractqquhq@GCC_4.3.0 1:4.3 + __fractqquqq@GCC_4.3.0 1:4.3 + __fractqqusa@GCC_4.3.0 1:4.3 + __fractqqusq@GCC_4.3.0 1:4.3 + __fractqquta@GCC_4.3.0 1:4.3 + __fractqqutq@GCC_4.3.0 1:4.3 + __fractsada2@GCC_4.3.0 1:4.3 + __fractsadf@GCC_4.3.0 1:4.3 + __fractsadi@GCC_4.3.0 1:4.3 + __fractsadq@GCC_4.3.0 1:4.3 + __fractsaha2@GCC_4.3.0 1:4.3 + __fractsahi@GCC_4.3.0 1:4.3 + __fractsahq@GCC_4.3.0 1:4.3 + __fractsaqi@GCC_4.3.0 1:4.3 + __fractsaqq@GCC_4.3.0 1:4.3 + __fractsasf@GCC_4.3.0 1:4.3 + __fractsasi@GCC_4.3.0 1:4.3 + __fractsasq@GCC_4.3.0 1:4.3 + __fractsata2@GCC_4.3.0 1:4.3 + __fractsati@GCC_4.3.0 1:4.3 + __fractsatq@GCC_4.3.0 1:4.3 + __fractsauda@GCC_4.3.0 1:4.3 + __fractsaudq@GCC_4.3.0 1:4.3 + __fractsauha@GCC_4.3.0 1:4.3 + __fractsauhq@GCC_4.3.0 1:4.3 + __fractsauqq@GCC_4.3.0 1:4.3 + __fractsausa@GCC_4.3.0 1:4.3 + __fractsausq@GCC_4.3.0 1:4.3 + __fractsauta@GCC_4.3.0 1:4.3 + __fractsautq@GCC_4.3.0 1:4.3 + __fractsfda@GCC_4.3.0 1:4.3 + __fractsfdq@GCC_4.3.0 1:4.3 + __fractsfha@GCC_4.3.0 1:4.3 + __fractsfhq@GCC_4.3.0 1:4.3 + __fractsfqq@GCC_4.3.0 1:4.3 + __fractsfsa@GCC_4.3.0 1:4.3 + __fractsfsq@GCC_4.3.0 1:4.3 + __fractsfta@GCC_4.3.0 1:4.3 + __fractsftq@GCC_4.3.0 1:4.3 + __fractsfuda@GCC_4.3.0 1:4.3 + __fractsfudq@GCC_4.3.0 1:4.3 + __fractsfuha@GCC_4.3.0 1:4.3 + __fractsfuhq@GCC_4.3.0 1:4.3 + __fractsfuqq@GCC_4.3.0 1:4.3 + __fractsfusa@GCC_4.3.0 1:4.3 + __fractsfusq@GCC_4.3.0 1:4.3 + __fractsfuta@GCC_4.3.0 1:4.3 + __fractsfutq@GCC_4.3.0 1:4.3 + __fractsida@GCC_4.3.0 1:4.3 + __fractsidq@GCC_4.3.0 1:4.3 + __fractsiha@GCC_4.3.0 1:4.3 + __fractsihq@GCC_4.3.0 1:4.3 + __fractsiqq@GCC_4.3.0 1:4.3 + __fractsisa@GCC_4.3.0 1:4.3 + __fractsisq@GCC_4.3.0 1:4.3 + __fractsita@GCC_4.3.0 1:4.3 + __fractsitq@GCC_4.3.0 1:4.3 + __fractsiuda@GCC_4.3.0 1:4.3 + __fractsiudq@GCC_4.3.0 1:4.3 + __fractsiuha@GCC_4.3.0 1:4.3 + __fractsiuhq@GCC_4.3.0 1:4.3 + __fractsiuqq@GCC_4.3.0 1:4.3 + __fractsiusa@GCC_4.3.0 1:4.3 + __fractsiusq@GCC_4.3.0 1:4.3 + __fractsiuta@GCC_4.3.0 1:4.3 + __fractsiutq@GCC_4.3.0 1:4.3 + __fractsqda@GCC_4.3.0 1:4.3 + __fractsqdf@GCC_4.3.0 1:4.3 + __fractsqdi@GCC_4.3.0 1:4.3 + __fractsqdq2@GCC_4.3.0 1:4.3 + __fractsqha@GCC_4.3.0 1:4.3 + __fractsqhi@GCC_4.3.0 1:4.3 + __fractsqhq2@GCC_4.3.0 1:4.3 + __fractsqqi@GCC_4.3.0 1:4.3 + __fractsqqq2@GCC_4.3.0 1:4.3 + __fractsqsa@GCC_4.3.0 1:4.3 + __fractsqsf@GCC_4.3.0 1:4.3 + __fractsqsi@GCC_4.3.0 1:4.3 + __fractsqta@GCC_4.3.0 1:4.3 + __fractsqti@GCC_4.3.0 1:4.3 + __fractsqtq2@GCC_4.3.0 1:4.3 + __fractsquda@GCC_4.3.0 1:4.3 + __fractsqudq@GCC_4.3.0 1:4.3 + __fractsquha@GCC_4.3.0 1:4.3 + __fractsquhq@GCC_4.3.0 1:4.3 + __fractsquqq@GCC_4.3.0 1:4.3 + __fractsqusa@GCC_4.3.0 1:4.3 + __fractsqusq@GCC_4.3.0 1:4.3 + __fractsquta@GCC_4.3.0 1:4.3 + __fractsqutq@GCC_4.3.0 1:4.3 + __fracttada2@GCC_4.3.0 1:4.3 + __fracttadf@GCC_4.3.0 1:4.3 + __fracttadi@GCC_4.3.0 1:4.3 + __fracttadq@GCC_4.3.0 1:4.3 + __fracttaha2@GCC_4.3.0 1:4.3 + __fracttahi@GCC_4.3.0 1:4.3 + __fracttahq@GCC_4.3.0 1:4.3 + __fracttaqi@GCC_4.3.0 1:4.3 + __fracttaqq@GCC_4.3.0 1:4.3 + __fracttasa2@GCC_4.3.0 1:4.3 + __fracttasf@GCC_4.3.0 1:4.3 + __fracttasi@GCC_4.3.0 1:4.3 + __fracttasq@GCC_4.3.0 1:4.3 + __fracttati@GCC_4.3.0 1:4.3 + __fracttatq@GCC_4.3.0 1:4.3 + __fracttauda@GCC_4.3.0 1:4.3 + __fracttaudq@GCC_4.3.0 1:4.3 + __fracttauha@GCC_4.3.0 1:4.3 + __fracttauhq@GCC_4.3.0 1:4.3 + __fracttauqq@GCC_4.3.0 1:4.3 + __fracttausa@GCC_4.3.0 1:4.3 + __fracttausq@GCC_4.3.0 1:4.3 + __fracttauta@GCC_4.3.0 1:4.3 + __fracttautq@GCC_4.3.0 1:4.3 + __fracttida@GCC_4.3.0 1:4.3 + __fracttidq@GCC_4.3.0 1:4.3 + __fracttiha@GCC_4.3.0 1:4.3 + __fracttihq@GCC_4.3.0 1:4.3 + __fracttiqq@GCC_4.3.0 1:4.3 + __fracttisa@GCC_4.3.0 1:4.3 + __fracttisq@GCC_4.3.0 1:4.3 + __fracttita@GCC_4.3.0 1:4.3 + __fracttitq@GCC_4.3.0 1:4.3 + __fracttiuda@GCC_4.3.0 1:4.3 + __fracttiudq@GCC_4.3.0 1:4.3 + __fracttiuha@GCC_4.3.0 1:4.3 + __fracttiuhq@GCC_4.3.0 1:4.3 + __fracttiuqq@GCC_4.3.0 1:4.3 + __fracttiusa@GCC_4.3.0 1:4.3 + __fracttiusq@GCC_4.3.0 1:4.3 + __fracttiuta@GCC_4.3.0 1:4.3 + __fracttiutq@GCC_4.3.0 1:4.3 + __fracttqda@GCC_4.3.0 1:4.3 + __fracttqdf@GCC_4.3.0 1:4.3 + __fracttqdi@GCC_4.3.0 1:4.3 + __fracttqdq2@GCC_4.3.0 1:4.3 + __fracttqha@GCC_4.3.0 1:4.3 + __fracttqhi@GCC_4.3.0 1:4.3 + __fracttqhq2@GCC_4.3.0 1:4.3 + __fracttqqi@GCC_4.3.0 1:4.3 + __fracttqqq2@GCC_4.3.0 1:4.3 + __fracttqsa@GCC_4.3.0 1:4.3 + __fracttqsf@GCC_4.3.0 1:4.3 + __fracttqsi@GCC_4.3.0 1:4.3 + __fracttqsq2@GCC_4.3.0 1:4.3 + __fracttqta@GCC_4.3.0 1:4.3 + __fracttqti@GCC_4.3.0 1:4.3 + __fracttquda@GCC_4.3.0 1:4.3 + __fracttqudq@GCC_4.3.0 1:4.3 + __fracttquha@GCC_4.3.0 1:4.3 + __fracttquhq@GCC_4.3.0 1:4.3 + __fracttquqq@GCC_4.3.0 1:4.3 + __fracttqusa@GCC_4.3.0 1:4.3 + __fracttqusq@GCC_4.3.0 1:4.3 + __fracttquta@GCC_4.3.0 1:4.3 + __fracttqutq@GCC_4.3.0 1:4.3 + __fractudada@GCC_4.3.0 1:4.3 + __fractudadf@GCC_4.3.0 1:4.3 + __fractudadi@GCC_4.3.0 1:4.3 + __fractudadq@GCC_4.3.0 1:4.3 + __fractudaha@GCC_4.3.0 1:4.3 + __fractudahi@GCC_4.3.0 1:4.3 + __fractudahq@GCC_4.3.0 1:4.3 + __fractudaqi@GCC_4.3.0 1:4.3 + __fractudaqq@GCC_4.3.0 1:4.3 + __fractudasa@GCC_4.3.0 1:4.3 + __fractudasf@GCC_4.3.0 1:4.3 + __fractudasi@GCC_4.3.0 1:4.3 + __fractudasq@GCC_4.3.0 1:4.3 + __fractudata@GCC_4.3.0 1:4.3 + __fractudati@GCC_4.3.0 1:4.3 + __fractudatq@GCC_4.3.0 1:4.3 + __fractudaudq@GCC_4.3.0 1:4.3 + __fractudauha2@GCC_4.3.0 1:4.3 + __fractudauhq@GCC_4.3.0 1:4.3 + __fractudauqq@GCC_4.3.0 1:4.3 + __fractudausa2@GCC_4.3.0 1:4.3 + __fractudausq@GCC_4.3.0 1:4.3 + __fractudauta2@GCC_4.3.0 1:4.3 + __fractudautq@GCC_4.3.0 1:4.3 + __fractudqda@GCC_4.3.0 1:4.3 + __fractudqdf@GCC_4.3.0 1:4.3 + __fractudqdi@GCC_4.3.0 1:4.3 + __fractudqdq@GCC_4.3.0 1:4.3 + __fractudqha@GCC_4.3.0 1:4.3 + __fractudqhi@GCC_4.3.0 1:4.3 + __fractudqhq@GCC_4.3.0 1:4.3 + __fractudqqi@GCC_4.3.0 1:4.3 + __fractudqqq@GCC_4.3.0 1:4.3 + __fractudqsa@GCC_4.3.0 1:4.3 + __fractudqsf@GCC_4.3.0 1:4.3 + __fractudqsi@GCC_4.3.0 1:4.3 + __fractudqsq@GCC_4.3.0 1:4.3 + __fractudqta@GCC_4.3.0 1:4.3 + __fractudqti@GCC_4.3.0 1:4.3 + __fractudqtq@GCC_4.3.0 1:4.3 + __fractudquda@GCC_4.3.0 1:4.3 + __fractudquha@GCC_4.3.0 1:4.3 + __fractudquhq2@GCC_4.3.0 1:4.3 + __fractudquqq2@GCC_4.3.0 1:4.3 + __fractudqusa@GCC_4.3.0 1:4.3 + __fractudqusq2@GCC_4.3.0 1:4.3 + __fractudquta@GCC_4.3.0 1:4.3 + __fractudqutq2@GCC_4.3.0 1:4.3 + __fractuhada@GCC_4.3.0 1:4.3 + __fractuhadf@GCC_4.3.0 1:4.3 + __fractuhadi@GCC_4.3.0 1:4.3 + __fractuhadq@GCC_4.3.0 1:4.3 + __fractuhaha@GCC_4.3.0 1:4.3 + __fractuhahi@GCC_4.3.0 1:4.3 + __fractuhahq@GCC_4.3.0 1:4.3 + __fractuhaqi@GCC_4.3.0 1:4.3 + __fractuhaqq@GCC_4.3.0 1:4.3 + __fractuhasa@GCC_4.3.0 1:4.3 + __fractuhasf@GCC_4.3.0 1:4.3 + __fractuhasi@GCC_4.3.0 1:4.3 + __fractuhasq@GCC_4.3.0 1:4.3 + __fractuhata@GCC_4.3.0 1:4.3 + __fractuhati@GCC_4.3.0 1:4.3 + __fractuhatq@GCC_4.3.0 1:4.3 + __fractuhauda2@GCC_4.3.0 1:4.3 + __fractuhaudq@GCC_4.3.0 1:4.3 + __fractuhauhq@GCC_4.3.0 1:4.3 + __fractuhauqq@GCC_4.3.0 1:4.3 + __fractuhausa2@GCC_4.3.0 1:4.3 + __fractuhausq@GCC_4.3.0 1:4.3 + __fractuhauta2@GCC_4.3.0 1:4.3 + __fractuhautq@GCC_4.3.0 1:4.3 + __fractuhqda@GCC_4.3.0 1:4.3 + __fractuhqdf@GCC_4.3.0 1:4.3 + __fractuhqdi@GCC_4.3.0 1:4.3 + __fractuhqdq@GCC_4.3.0 1:4.3 + __fractuhqha@GCC_4.3.0 1:4.3 + __fractuhqhi@GCC_4.3.0 1:4.3 + __fractuhqhq@GCC_4.3.0 1:4.3 + __fractuhqqi@GCC_4.3.0 1:4.3 + __fractuhqqq@GCC_4.3.0 1:4.3 + __fractuhqsa@GCC_4.3.0 1:4.3 + __fractuhqsf@GCC_4.3.0 1:4.3 + __fractuhqsi@GCC_4.3.0 1:4.3 + __fractuhqsq@GCC_4.3.0 1:4.3 + __fractuhqta@GCC_4.3.0 1:4.3 + __fractuhqti@GCC_4.3.0 1:4.3 + __fractuhqtq@GCC_4.3.0 1:4.3 + __fractuhquda@GCC_4.3.0 1:4.3 + __fractuhqudq2@GCC_4.3.0 1:4.3 + __fractuhquha@GCC_4.3.0 1:4.3 + __fractuhquqq2@GCC_4.3.0 1:4.3 + __fractuhqusa@GCC_4.3.0 1:4.3 + __fractuhqusq2@GCC_4.3.0 1:4.3 + __fractuhquta@GCC_4.3.0 1:4.3 + __fractuhqutq2@GCC_4.3.0 1:4.3 + __fractunsdadi@GCC_4.3.0 1:4.3 + __fractunsdahi@GCC_4.3.0 1:4.3 + __fractunsdaqi@GCC_4.3.0 1:4.3 + __fractunsdasi@GCC_4.3.0 1:4.3 + __fractunsdati@GCC_4.3.0 1:4.3 + __fractunsdida@GCC_4.3.0 1:4.3 + __fractunsdidq@GCC_4.3.0 1:4.3 + __fractunsdiha@GCC_4.3.0 1:4.3 + __fractunsdihq@GCC_4.3.0 1:4.3 + __fractunsdiqq@GCC_4.3.0 1:4.3 + __fractunsdisa@GCC_4.3.0 1:4.3 + __fractunsdisq@GCC_4.3.0 1:4.3 + __fractunsdita@GCC_4.3.0 1:4.3 + __fractunsditq@GCC_4.3.0 1:4.3 + __fractunsdiuda@GCC_4.3.0 1:4.3 + __fractunsdiudq@GCC_4.3.0 1:4.3 + __fractunsdiuha@GCC_4.3.0 1:4.3 + __fractunsdiuhq@GCC_4.3.0 1:4.3 + __fractunsdiuqq@GCC_4.3.0 1:4.3 + __fractunsdiusa@GCC_4.3.0 1:4.3 + __fractunsdiusq@GCC_4.3.0 1:4.3 + __fractunsdiuta@GCC_4.3.0 1:4.3 + __fractunsdiutq@GCC_4.3.0 1:4.3 + __fractunsdqdi@GCC_4.3.0 1:4.3 + __fractunsdqhi@GCC_4.3.0 1:4.3 + __fractunsdqqi@GCC_4.3.0 1:4.3 + __fractunsdqsi@GCC_4.3.0 1:4.3 + __fractunsdqti@GCC_4.3.0 1:4.3 + __fractunshadi@GCC_4.3.0 1:4.3 + __fractunshahi@GCC_4.3.0 1:4.3 + __fractunshaqi@GCC_4.3.0 1:4.3 + __fractunshasi@GCC_4.3.0 1:4.3 + __fractunshati@GCC_4.3.0 1:4.3 + __fractunshida@GCC_4.3.0 1:4.3 + __fractunshidq@GCC_4.3.0 1:4.3 + __fractunshiha@GCC_4.3.0 1:4.3 + __fractunshihq@GCC_4.3.0 1:4.3 + __fractunshiqq@GCC_4.3.0 1:4.3 + __fractunshisa@GCC_4.3.0 1:4.3 + __fractunshisq@GCC_4.3.0 1:4.3 + __fractunshita@GCC_4.3.0 1:4.3 + __fractunshitq@GCC_4.3.0 1:4.3 + __fractunshiuda@GCC_4.3.0 1:4.3 + __fractunshiudq@GCC_4.3.0 1:4.3 + __fractunshiuha@GCC_4.3.0 1:4.3 + __fractunshiuhq@GCC_4.3.0 1:4.3 + __fractunshiuqq@GCC_4.3.0 1:4.3 + __fractunshiusa@GCC_4.3.0 1:4.3 + __fractunshiusq@GCC_4.3.0 1:4.3 + __fractunshiuta@GCC_4.3.0 1:4.3 + __fractunshiutq@GCC_4.3.0 1:4.3 + __fractunshqdi@GCC_4.3.0 1:4.3 + __fractunshqhi@GCC_4.3.0 1:4.3 + __fractunshqqi@GCC_4.3.0 1:4.3 + __fractunshqsi@GCC_4.3.0 1:4.3 + __fractunshqti@GCC_4.3.0 1:4.3 + __fractunsqida@GCC_4.3.0 1:4.3 + __fractunsqidq@GCC_4.3.0 1:4.3 + __fractunsqiha@GCC_4.3.0 1:4.3 + __fractunsqihq@GCC_4.3.0 1:4.3 + __fractunsqiqq@GCC_4.3.0 1:4.3 + __fractunsqisa@GCC_4.3.0 1:4.3 + __fractunsqisq@GCC_4.3.0 1:4.3 + __fractunsqita@GCC_4.3.0 1:4.3 + __fractunsqitq@GCC_4.3.0 1:4.3 + __fractunsqiuda@GCC_4.3.0 1:4.3 + __fractunsqiudq@GCC_4.3.0 1:4.3 + __fractunsqiuha@GCC_4.3.0 1:4.3 + __fractunsqiuhq@GCC_4.3.0 1:4.3 + __fractunsqiuqq@GCC_4.3.0 1:4.3 + __fractunsqiusa@GCC_4.3.0 1:4.3 + __fractunsqiusq@GCC_4.3.0 1:4.3 + __fractunsqiuta@GCC_4.3.0 1:4.3 + __fractunsqiutq@GCC_4.3.0 1:4.3 + __fractunsqqdi@GCC_4.3.0 1:4.3 + __fractunsqqhi@GCC_4.3.0 1:4.3 + __fractunsqqqi@GCC_4.3.0 1:4.3 + __fractunsqqsi@GCC_4.3.0 1:4.3 + __fractunsqqti@GCC_4.3.0 1:4.3 + __fractunssadi@GCC_4.3.0 1:4.3 + __fractunssahi@GCC_4.3.0 1:4.3 + __fractunssaqi@GCC_4.3.0 1:4.3 + __fractunssasi@GCC_4.3.0 1:4.3 + __fractunssati@GCC_4.3.0 1:4.3 + __fractunssida@GCC_4.3.0 1:4.3 + __fractunssidq@GCC_4.3.0 1:4.3 + __fractunssiha@GCC_4.3.0 1:4.3 + __fractunssihq@GCC_4.3.0 1:4.3 + __fractunssiqq@GCC_4.3.0 1:4.3 + __fractunssisa@GCC_4.3.0 1:4.3 + __fractunssisq@GCC_4.3.0 1:4.3 + __fractunssita@GCC_4.3.0 1:4.3 + __fractunssitq@GCC_4.3.0 1:4.3 + __fractunssiuda@GCC_4.3.0 1:4.3 + __fractunssiudq@GCC_4.3.0 1:4.3 + __fractunssiuha@GCC_4.3.0 1:4.3 + __fractunssiuhq@GCC_4.3.0 1:4.3 + __fractunssiuqq@GCC_4.3.0 1:4.3 + __fractunssiusa@GCC_4.3.0 1:4.3 + __fractunssiusq@GCC_4.3.0 1:4.3 + __fractunssiuta@GCC_4.3.0 1:4.3 + __fractunssiutq@GCC_4.3.0 1:4.3 + __fractunssqdi@GCC_4.3.0 1:4.3 + __fractunssqhi@GCC_4.3.0 1:4.3 + __fractunssqqi@GCC_4.3.0 1:4.3 + __fractunssqsi@GCC_4.3.0 1:4.3 + __fractunssqti@GCC_4.3.0 1:4.3 + __fractunstadi@GCC_4.3.0 1:4.3 + __fractunstahi@GCC_4.3.0 1:4.3 + __fractunstaqi@GCC_4.3.0 1:4.3 + __fractunstasi@GCC_4.3.0 1:4.3 + __fractunstati@GCC_4.3.0 1:4.3 + __fractunstida@GCC_4.3.0 1:4.3 + __fractunstidq@GCC_4.3.0 1:4.3 + __fractunstiha@GCC_4.3.0 1:4.3 + __fractunstihq@GCC_4.3.0 1:4.3 + __fractunstiqq@GCC_4.3.0 1:4.3 + __fractunstisa@GCC_4.3.0 1:4.3 + __fractunstisq@GCC_4.3.0 1:4.3 + __fractunstita@GCC_4.3.0 1:4.3 + __fractunstitq@GCC_4.3.0 1:4.3 + __fractunstiuda@GCC_4.3.0 1:4.3 + __fractunstiudq@GCC_4.3.0 1:4.3 + __fractunstiuha@GCC_4.3.0 1:4.3 + __fractunstiuhq@GCC_4.3.0 1:4.3 + __fractunstiuqq@GCC_4.3.0 1:4.3 + __fractunstiusa@GCC_4.3.0 1:4.3 + __fractunstiusq@GCC_4.3.0 1:4.3 + __fractunstiuta@GCC_4.3.0 1:4.3 + __fractunstiutq@GCC_4.3.0 1:4.3 + __fractunstqdi@GCC_4.3.0 1:4.3 + __fractunstqhi@GCC_4.3.0 1:4.3 + __fractunstqqi@GCC_4.3.0 1:4.3 + __fractunstqsi@GCC_4.3.0 1:4.3 + __fractunstqti@GCC_4.3.0 1:4.3 + __fractunsudadi@GCC_4.3.0 1:4.3 + __fractunsudahi@GCC_4.3.0 1:4.3 + __fractunsudaqi@GCC_4.3.0 1:4.3 + __fractunsudasi@GCC_4.3.0 1:4.3 + __fractunsudati@GCC_4.3.0 1:4.3 + __fractunsudqdi@GCC_4.3.0 1:4.3 + __fractunsudqhi@GCC_4.3.0 1:4.3 + __fractunsudqqi@GCC_4.3.0 1:4.3 + __fractunsudqsi@GCC_4.3.0 1:4.3 + __fractunsudqti@GCC_4.3.0 1:4.3 + __fractunsuhadi@GCC_4.3.0 1:4.3 + __fractunsuhahi@GCC_4.3.0 1:4.3 + __fractunsuhaqi@GCC_4.3.0 1:4.3 + __fractunsuhasi@GCC_4.3.0 1:4.3 + __fractunsuhati@GCC_4.3.0 1:4.3 + __fractunsuhqdi@GCC_4.3.0 1:4.3 + __fractunsuhqhi@GCC_4.3.0 1:4.3 + __fractunsuhqqi@GCC_4.3.0 1:4.3 + __fractunsuhqsi@GCC_4.3.0 1:4.3 + __fractunsuhqti@GCC_4.3.0 1:4.3 + __fractunsuqqdi@GCC_4.3.0 1:4.3 + __fractunsuqqhi@GCC_4.3.0 1:4.3 + __fractunsuqqqi@GCC_4.3.0 1:4.3 + __fractunsuqqsi@GCC_4.3.0 1:4.3 + __fractunsuqqti@GCC_4.3.0 1:4.3 + __fractunsusadi@GCC_4.3.0 1:4.3 + __fractunsusahi@GCC_4.3.0 1:4.3 + __fractunsusaqi@GCC_4.3.0 1:4.3 + __fractunsusasi@GCC_4.3.0 1:4.3 + __fractunsusati@GCC_4.3.0 1:4.3 + __fractunsusqdi@GCC_4.3.0 1:4.3 + __fractunsusqhi@GCC_4.3.0 1:4.3 + __fractunsusqqi@GCC_4.3.0 1:4.3 + __fractunsusqsi@GCC_4.3.0 1:4.3 + __fractunsusqti@GCC_4.3.0 1:4.3 + __fractunsutadi@GCC_4.3.0 1:4.3 + __fractunsutahi@GCC_4.3.0 1:4.3 + __fractunsutaqi@GCC_4.3.0 1:4.3 + __fractunsutasi@GCC_4.3.0 1:4.3 + __fractunsutati@GCC_4.3.0 1:4.3 + __fractunsutqdi@GCC_4.3.0 1:4.3 + __fractunsutqhi@GCC_4.3.0 1:4.3 + __fractunsutqqi@GCC_4.3.0 1:4.3 + __fractunsutqsi@GCC_4.3.0 1:4.3 + __fractunsutqti@GCC_4.3.0 1:4.3 + __fractuqqda@GCC_4.3.0 1:4.3 + __fractuqqdf@GCC_4.3.0 1:4.3 + __fractuqqdi@GCC_4.3.0 1:4.3 + __fractuqqdq@GCC_4.3.0 1:4.3 + __fractuqqha@GCC_4.3.0 1:4.3 + __fractuqqhi@GCC_4.3.0 1:4.3 + __fractuqqhq@GCC_4.3.0 1:4.3 + __fractuqqqi@GCC_4.3.0 1:4.3 + __fractuqqqq@GCC_4.3.0 1:4.3 + __fractuqqsa@GCC_4.3.0 1:4.3 + __fractuqqsf@GCC_4.3.0 1:4.3 + __fractuqqsi@GCC_4.3.0 1:4.3 + __fractuqqsq@GCC_4.3.0 1:4.3 + __fractuqqta@GCC_4.3.0 1:4.3 + __fractuqqti@GCC_4.3.0 1:4.3 + __fractuqqtq@GCC_4.3.0 1:4.3 + __fractuqquda@GCC_4.3.0 1:4.3 + __fractuqqudq2@GCC_4.3.0 1:4.3 + __fractuqquha@GCC_4.3.0 1:4.3 + __fractuqquhq2@GCC_4.3.0 1:4.3 + __fractuqqusa@GCC_4.3.0 1:4.3 + __fractuqqusq2@GCC_4.3.0 1:4.3 + __fractuqquta@GCC_4.3.0 1:4.3 + __fractuqqutq2@GCC_4.3.0 1:4.3 + __fractusada@GCC_4.3.0 1:4.3 + __fractusadf@GCC_4.3.0 1:4.3 + __fractusadi@GCC_4.3.0 1:4.3 + __fractusadq@GCC_4.3.0 1:4.3 + __fractusaha@GCC_4.3.0 1:4.3 + __fractusahi@GCC_4.3.0 1:4.3 + __fractusahq@GCC_4.3.0 1:4.3 + __fractusaqi@GCC_4.3.0 1:4.3 + __fractusaqq@GCC_4.3.0 1:4.3 + __fractusasa@GCC_4.3.0 1:4.3 + __fractusasf@GCC_4.3.0 1:4.3 + __fractusasi@GCC_4.3.0 1:4.3 + __fractusasq@GCC_4.3.0 1:4.3 + __fractusata@GCC_4.3.0 1:4.3 + __fractusati@GCC_4.3.0 1:4.3 + __fractusatq@GCC_4.3.0 1:4.3 + __fractusauda2@GCC_4.3.0 1:4.3 + __fractusaudq@GCC_4.3.0 1:4.3 + __fractusauha2@GCC_4.3.0 1:4.3 + __fractusauhq@GCC_4.3.0 1:4.3 + __fractusauqq@GCC_4.3.0 1:4.3 + __fractusausq@GCC_4.3.0 1:4.3 + __fractusauta2@GCC_4.3.0 1:4.3 + __fractusautq@GCC_4.3.0 1:4.3 + __fractusqda@GCC_4.3.0 1:4.3 + __fractusqdf@GCC_4.3.0 1:4.3 + __fractusqdi@GCC_4.3.0 1:4.3 + __fractusqdq@GCC_4.3.0 1:4.3 + __fractusqha@GCC_4.3.0 1:4.3 + __fractusqhi@GCC_4.3.0 1:4.3 + __fractusqhq@GCC_4.3.0 1:4.3 + __fractusqqi@GCC_4.3.0 1:4.3 + __fractusqqq@GCC_4.3.0 1:4.3 + __fractusqsa@GCC_4.3.0 1:4.3 + __fractusqsf@GCC_4.3.0 1:4.3 + __fractusqsi@GCC_4.3.0 1:4.3 + __fractusqsq@GCC_4.3.0 1:4.3 + __fractusqta@GCC_4.3.0 1:4.3 + __fractusqti@GCC_4.3.0 1:4.3 + __fractusqtq@GCC_4.3.0 1:4.3 + __fractusquda@GCC_4.3.0 1:4.3 + __fractusqudq2@GCC_4.3.0 1:4.3 + __fractusquha@GCC_4.3.0 1:4.3 + __fractusquhq2@GCC_4.3.0 1:4.3 + __fractusquqq2@GCC_4.3.0 1:4.3 + __fractusqusa@GCC_4.3.0 1:4.3 + __fractusquta@GCC_4.3.0 1:4.3 + __fractusqutq2@GCC_4.3.0 1:4.3 + __fractutada@GCC_4.3.0 1:4.3 + __fractutadf@GCC_4.3.0 1:4.3 + __fractutadi@GCC_4.3.0 1:4.3 + __fractutadq@GCC_4.3.0 1:4.3 + __fractutaha@GCC_4.3.0 1:4.3 + __fractutahi@GCC_4.3.0 1:4.3 + __fractutahq@GCC_4.3.0 1:4.3 + __fractutaqi@GCC_4.3.0 1:4.3 + __fractutaqq@GCC_4.3.0 1:4.3 + __fractutasa@GCC_4.3.0 1:4.3 + __fractutasf@GCC_4.3.0 1:4.3 + __fractutasi@GCC_4.3.0 1:4.3 + __fractutasq@GCC_4.3.0 1:4.3 + __fractutata@GCC_4.3.0 1:4.3 + __fractutati@GCC_4.3.0 1:4.3 + __fractutatq@GCC_4.3.0 1:4.3 + __fractutauda2@GCC_4.3.0 1:4.3 + __fractutaudq@GCC_4.3.0 1:4.3 + __fractutauha2@GCC_4.3.0 1:4.3 + __fractutauhq@GCC_4.3.0 1:4.3 + __fractutauqq@GCC_4.3.0 1:4.3 + __fractutausa2@GCC_4.3.0 1:4.3 + __fractutausq@GCC_4.3.0 1:4.3 + __fractutautq@GCC_4.3.0 1:4.3 + __fractutqda@GCC_4.3.0 1:4.3 + __fractutqdf@GCC_4.3.0 1:4.3 + __fractutqdi@GCC_4.3.0 1:4.3 + __fractutqdq@GCC_4.3.0 1:4.3 + __fractutqha@GCC_4.3.0 1:4.3 + __fractutqhi@GCC_4.3.0 1:4.3 + __fractutqhq@GCC_4.3.0 1:4.3 + __fractutqqi@GCC_4.3.0 1:4.3 + __fractutqqq@GCC_4.3.0 1:4.3 + __fractutqsa@GCC_4.3.0 1:4.3 + __fractutqsf@GCC_4.3.0 1:4.3 + __fractutqsi@GCC_4.3.0 1:4.3 + __fractutqsq@GCC_4.3.0 1:4.3 + __fractutqta@GCC_4.3.0 1:4.3 + __fractutqti@GCC_4.3.0 1:4.3 + __fractutqtq@GCC_4.3.0 1:4.3 + __fractutquda@GCC_4.3.0 1:4.3 + __fractutqudq2@GCC_4.3.0 1:4.3 + __fractutquha@GCC_4.3.0 1:4.3 + __fractutquhq2@GCC_4.3.0 1:4.3 + __fractutquqq2@GCC_4.3.0 1:4.3 + __fractutqusa@GCC_4.3.0 1:4.3 + __fractutqusq2@GCC_4.3.0 1:4.3 + __fractutquta@GCC_4.3.0 1:4.3 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __gedf2@GCC_3.0 1:4.1.1 + __gesf2@GCC_3.0 1:4.1.1 + __getf2@GCC_3.0 1:4.1.1 + __gtdf2@GCC_3.0 1:4.1.1 + __gtsf2@GCC_3.0 1:4.1.1 + __gttf2@GCC_3.0 1:4.1.1 + __ledf2@GCC_3.0 1:4.1.1 + __lesf2@GCC_3.0 1:4.1.1 + __letf2@GCC_3.0 1:4.1.1 + __lshrti3@GCC_3.0 1:4.1.1 + __lshruda3@GCC_4.3.0 1:4.3 + __lshrudq3@GCC_4.3.0 1:4.3 + __lshruha3@GCC_4.3.0 1:4.3 + __lshruhq3@GCC_4.3.0 1:4.3 + __lshruqq3@GCC_4.3.0 1:4.3 + __lshrusa3@GCC_4.3.0 1:4.3 + __lshrusq3@GCC_4.3.0 1:4.3 + __lshruta3@GCC_4.3.0 1:4.3 + __lshrutq3@GCC_4.3.0 1:4.3 + __ltdf2@GCC_3.0 1:4.1.1 + __ltsf2@GCC_3.0 1:4.1.1 + __lttf2@GCC_3.0 1:4.1.1 + __modti3@GCC_3.0 1:4.1.1 + __mulda3@GCC_4.3.0 1:4.3 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldf3@GCC_3.0 1:4.1.1 + __muldq3@GCC_4.3.0 1:4.3 + __mulha3@GCC_4.3.0 1:4.3 + __mulhq3@GCC_4.3.0 1:4.3 + __mulqq3@GCC_4.3.0 1:4.3 + __mulsa3@GCC_4.3.0 1:4.3 + __mulsc3@GCC_4.0.0 1:4.1.1 + __mulsf3@GCC_3.0 1:4.1.1 + __mulsq3@GCC_4.3.0 1:4.3 + __multa3@GCC_4.3.0 1:4.3 + __multc3@GCC_4.0.0 1:4.1.1 + __multf3@GCC_3.0 1:4.1.1 + __multi3@GCC_3.0 1:4.1.1 + __multq3@GCC_4.3.0 1:4.3 + __muluda3@GCC_4.3.0 1:4.3 + __muludq3@GCC_4.3.0 1:4.3 + __muluha3@GCC_4.3.0 1:4.3 + __muluhq3@GCC_4.3.0 1:4.3 + __muluqq3@GCC_4.3.0 1:4.3 + __mulusa3@GCC_4.3.0 1:4.3 + __mulusq3@GCC_4.3.0 1:4.3 + __muluta3@GCC_4.3.0 1:4.3 + __mulutq3@GCC_4.3.0 1:4.3 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulvti3@GCC_3.4.4 1:4.1.1 + __nedf2@GCC_3.0 1:4.1.1 + __negda2@GCC_4.3.0 1:4.3 + __negdf2@GCC_3.0 1:4.1.1 + __negdq2@GCC_4.3.0 1:4.3 + __negha2@GCC_4.3.0 1:4.3 + __neghq2@GCC_4.3.0 1:4.3 + __negqq2@GCC_4.3.0 1:4.3 + __negsa2@GCC_4.3.0 1:4.3 + __negsf2@GCC_3.0 1:4.1.1 + __negsq2@GCC_4.3.0 1:4.3 + __negta2@GCC_4.3.0 1:4.3 + __negtf2@GCC_3.0 1:4.1.1 + __negti2@GCC_3.0 1:4.1.1 + __negtq2@GCC_4.3.0 1:4.3 + __neguda2@GCC_4.3.0 1:4.3 + __negudq2@GCC_4.3.0 1:4.3 + __neguha2@GCC_4.3.0 1:4.3 + __neguhq2@GCC_4.3.0 1:4.3 + __neguqq2@GCC_4.3.0 1:4.3 + __negusa2@GCC_4.3.0 1:4.3 + __negusq2@GCC_4.3.0 1:4.3 + __neguta2@GCC_4.3.0 1:4.3 + __negutq2@GCC_4.3.0 1:4.3 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __negvti2@GCC_3.4.4 1:4.1.1 + __nesf2@GCC_3.0 1:4.1.1 + __netf2@GCC_3.0 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __parityti2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountti2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.0.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __satfractdadq@GCC_4.3.0 1:4.3 + __satfractdaha2@GCC_4.3.0 1:4.3 + __satfractdahq@GCC_4.3.0 1:4.3 + __satfractdaqq@GCC_4.3.0 1:4.3 + __satfractdasa2@GCC_4.3.0 1:4.3 + __satfractdasq@GCC_4.3.0 1:4.3 + __satfractdata2@GCC_4.3.0 1:4.3 + __satfractdatq@GCC_4.3.0 1:4.3 + __satfractdauda@GCC_4.3.0 1:4.3 + __satfractdaudq@GCC_4.3.0 1:4.3 + __satfractdauha@GCC_4.3.0 1:4.3 + __satfractdauhq@GCC_4.3.0 1:4.3 + __satfractdauqq@GCC_4.3.0 1:4.3 + __satfractdausa@GCC_4.3.0 1:4.3 + __satfractdausq@GCC_4.3.0 1:4.3 + __satfractdauta@GCC_4.3.0 1:4.3 + __satfractdautq@GCC_4.3.0 1:4.3 + __satfractdfda@GCC_4.3.0 1:4.3 + __satfractdfdq@GCC_4.3.0 1:4.3 + __satfractdfha@GCC_4.3.0 1:4.3 + __satfractdfhq@GCC_4.3.0 1:4.3 + __satfractdfqq@GCC_4.3.0 1:4.3 + __satfractdfsa@GCC_4.3.0 1:4.3 + __satfractdfsq@GCC_4.3.0 1:4.3 + __satfractdfta@GCC_4.3.0 1:4.3 + __satfractdftq@GCC_4.3.0 1:4.3 + __satfractdfuda@GCC_4.3.0 1:4.3 + __satfractdfudq@GCC_4.3.0 1:4.3 + __satfractdfuha@GCC_4.3.0 1:4.3 + __satfractdfuhq@GCC_4.3.0 1:4.3 + __satfractdfuqq@GCC_4.3.0 1:4.3 + __satfractdfusa@GCC_4.3.0 1:4.3 + __satfractdfusq@GCC_4.3.0 1:4.3 + __satfractdfuta@GCC_4.3.0 1:4.3 + __satfractdfutq@GCC_4.3.0 1:4.3 + __satfractdida@GCC_4.3.0 1:4.3 + __satfractdidq@GCC_4.3.0 1:4.3 + __satfractdiha@GCC_4.3.0 1:4.3 + __satfractdihq@GCC_4.3.0 1:4.3 + __satfractdiqq@GCC_4.3.0 1:4.3 + __satfractdisa@GCC_4.3.0 1:4.3 + __satfractdisq@GCC_4.3.0 1:4.3 + __satfractdita@GCC_4.3.0 1:4.3 + __satfractditq@GCC_4.3.0 1:4.3 + __satfractdiuda@GCC_4.3.0 1:4.3 + __satfractdiudq@GCC_4.3.0 1:4.3 + __satfractdiuha@GCC_4.3.0 1:4.3 + __satfractdiuhq@GCC_4.3.0 1:4.3 + __satfractdiuqq@GCC_4.3.0 1:4.3 + __satfractdiusa@GCC_4.3.0 1:4.3 + __satfractdiusq@GCC_4.3.0 1:4.3 + __satfractdiuta@GCC_4.3.0 1:4.3 + __satfractdiutq@GCC_4.3.0 1:4.3 + __satfractdqda@GCC_4.3.0 1:4.3 + __satfractdqha@GCC_4.3.0 1:4.3 + __satfractdqhq2@GCC_4.3.0 1:4.3 + __satfractdqqq2@GCC_4.3.0 1:4.3 + __satfractdqsa@GCC_4.3.0 1:4.3 + __satfractdqsq2@GCC_4.3.0 1:4.3 + __satfractdqta@GCC_4.3.0 1:4.3 + __satfractdqtq2@GCC_4.3.0 1:4.3 + __satfractdquda@GCC_4.3.0 1:4.3 + __satfractdqudq@GCC_4.3.0 1:4.3 + __satfractdquha@GCC_4.3.0 1:4.3 + __satfractdquhq@GCC_4.3.0 1:4.3 + __satfractdquqq@GCC_4.3.0 1:4.3 + __satfractdqusa@GCC_4.3.0 1:4.3 + __satfractdqusq@GCC_4.3.0 1:4.3 + __satfractdquta@GCC_4.3.0 1:4.3 + __satfractdqutq@GCC_4.3.0 1:4.3 + __satfracthada2@GCC_4.3.0 1:4.3 + __satfracthadq@GCC_4.3.0 1:4.3 + __satfracthahq@GCC_4.3.0 1:4.3 + __satfracthaqq@GCC_4.3.0 1:4.3 + __satfracthasa2@GCC_4.3.0 1:4.3 + __satfracthasq@GCC_4.3.0 1:4.3 + __satfracthata2@GCC_4.3.0 1:4.3 + __satfracthatq@GCC_4.3.0 1:4.3 + __satfracthauda@GCC_4.3.0 1:4.3 + __satfracthaudq@GCC_4.3.0 1:4.3 + __satfracthauha@GCC_4.3.0 1:4.3 + __satfracthauhq@GCC_4.3.0 1:4.3 + __satfracthauqq@GCC_4.3.0 1:4.3 + __satfracthausa@GCC_4.3.0 1:4.3 + __satfracthausq@GCC_4.3.0 1:4.3 + __satfracthauta@GCC_4.3.0 1:4.3 + __satfracthautq@GCC_4.3.0 1:4.3 + __satfracthida@GCC_4.3.0 1:4.3 + __satfracthidq@GCC_4.3.0 1:4.3 + __satfracthiha@GCC_4.3.0 1:4.3 + __satfracthihq@GCC_4.3.0 1:4.3 + __satfracthiqq@GCC_4.3.0 1:4.3 + __satfracthisa@GCC_4.3.0 1:4.3 + __satfracthisq@GCC_4.3.0 1:4.3 + __satfracthita@GCC_4.3.0 1:4.3 + __satfracthitq@GCC_4.3.0 1:4.3 + __satfracthiuda@GCC_4.3.0 1:4.3 + __satfracthiudq@GCC_4.3.0 1:4.3 + __satfracthiuha@GCC_4.3.0 1:4.3 + __satfracthiuhq@GCC_4.3.0 1:4.3 + __satfracthiuqq@GCC_4.3.0 1:4.3 + __satfracthiusa@GCC_4.3.0 1:4.3 + __satfracthiusq@GCC_4.3.0 1:4.3 + __satfracthiuta@GCC_4.3.0 1:4.3 + __satfracthiutq@GCC_4.3.0 1:4.3 + __satfracthqda@GCC_4.3.0 1:4.3 + __satfracthqdq2@GCC_4.3.0 1:4.3 + __satfracthqha@GCC_4.3.0 1:4.3 + __satfracthqqq2@GCC_4.3.0 1:4.3 + __satfracthqsa@GCC_4.3.0 1:4.3 + __satfracthqsq2@GCC_4.3.0 1:4.3 + __satfracthqta@GCC_4.3.0 1:4.3 + __satfracthqtq2@GCC_4.3.0 1:4.3 + __satfracthquda@GCC_4.3.0 1:4.3 + __satfracthqudq@GCC_4.3.0 1:4.3 + __satfracthquha@GCC_4.3.0 1:4.3 + __satfracthquhq@GCC_4.3.0 1:4.3 + __satfracthquqq@GCC_4.3.0 1:4.3 + __satfracthqusa@GCC_4.3.0 1:4.3 + __satfracthqusq@GCC_4.3.0 1:4.3 + __satfracthquta@GCC_4.3.0 1:4.3 + __satfracthqutq@GCC_4.3.0 1:4.3 + __satfractqida@GCC_4.3.0 1:4.3 + __satfractqidq@GCC_4.3.0 1:4.3 + __satfractqiha@GCC_4.3.0 1:4.3 + __satfractqihq@GCC_4.3.0 1:4.3 + __satfractqiqq@GCC_4.3.0 1:4.3 + __satfractqisa@GCC_4.3.0 1:4.3 + __satfractqisq@GCC_4.3.0 1:4.3 + __satfractqita@GCC_4.3.0 1:4.3 + __satfractqitq@GCC_4.3.0 1:4.3 + __satfractqiuda@GCC_4.3.0 1:4.3 + __satfractqiudq@GCC_4.3.0 1:4.3 + __satfractqiuha@GCC_4.3.0 1:4.3 + __satfractqiuhq@GCC_4.3.0 1:4.3 + __satfractqiuqq@GCC_4.3.0 1:4.3 + __satfractqiusa@GCC_4.3.0 1:4.3 + __satfractqiusq@GCC_4.3.0 1:4.3 + __satfractqiuta@GCC_4.3.0 1:4.3 + __satfractqiutq@GCC_4.3.0 1:4.3 + __satfractqqda@GCC_4.3.0 1:4.3 + __satfractqqdq2@GCC_4.3.0 1:4.3 + __satfractqqha@GCC_4.3.0 1:4.3 + __satfractqqhq2@GCC_4.3.0 1:4.3 + __satfractqqsa@GCC_4.3.0 1:4.3 + __satfractqqsq2@GCC_4.3.0 1:4.3 + __satfractqqta@GCC_4.3.0 1:4.3 + __satfractqqtq2@GCC_4.3.0 1:4.3 + __satfractqquda@GCC_4.3.0 1:4.3 + __satfractqqudq@GCC_4.3.0 1:4.3 + __satfractqquha@GCC_4.3.0 1:4.3 + __satfractqquhq@GCC_4.3.0 1:4.3 + __satfractqquqq@GCC_4.3.0 1:4.3 + __satfractqqusa@GCC_4.3.0 1:4.3 + __satfractqqusq@GCC_4.3.0 1:4.3 + __satfractqquta@GCC_4.3.0 1:4.3 + __satfractqqutq@GCC_4.3.0 1:4.3 + __satfractsada2@GCC_4.3.0 1:4.3 + __satfractsadq@GCC_4.3.0 1:4.3 + __satfractsaha2@GCC_4.3.0 1:4.3 + __satfractsahq@GCC_4.3.0 1:4.3 + __satfractsaqq@GCC_4.3.0 1:4.3 + __satfractsasq@GCC_4.3.0 1:4.3 + __satfractsata2@GCC_4.3.0 1:4.3 + __satfractsatq@GCC_4.3.0 1:4.3 + __satfractsauda@GCC_4.3.0 1:4.3 + __satfractsaudq@GCC_4.3.0 1:4.3 + __satfractsauha@GCC_4.3.0 1:4.3 + __satfractsauhq@GCC_4.3.0 1:4.3 + __satfractsauqq@GCC_4.3.0 1:4.3 + __satfractsausa@GCC_4.3.0 1:4.3 + __satfractsausq@GCC_4.3.0 1:4.3 + __satfractsauta@GCC_4.3.0 1:4.3 + __satfractsautq@GCC_4.3.0 1:4.3 + __satfractsfda@GCC_4.3.0 1:4.3 + __satfractsfdq@GCC_4.3.0 1:4.3 + __satfractsfha@GCC_4.3.0 1:4.3 + __satfractsfhq@GCC_4.3.0 1:4.3 + __satfractsfqq@GCC_4.3.0 1:4.3 + __satfractsfsa@GCC_4.3.0 1:4.3 + __satfractsfsq@GCC_4.3.0 1:4.3 + __satfractsfta@GCC_4.3.0 1:4.3 + __satfractsftq@GCC_4.3.0 1:4.3 + __satfractsfuda@GCC_4.3.0 1:4.3 + __satfractsfudq@GCC_4.3.0 1:4.3 + __satfractsfuha@GCC_4.3.0 1:4.3 + __satfractsfuhq@GCC_4.3.0 1:4.3 + __satfractsfuqq@GCC_4.3.0 1:4.3 + __satfractsfusa@GCC_4.3.0 1:4.3 + __satfractsfusq@GCC_4.3.0 1:4.3 + __satfractsfuta@GCC_4.3.0 1:4.3 + __satfractsfutq@GCC_4.3.0 1:4.3 + __satfractsida@GCC_4.3.0 1:4.3 + __satfractsidq@GCC_4.3.0 1:4.3 + __satfractsiha@GCC_4.3.0 1:4.3 + __satfractsihq@GCC_4.3.0 1:4.3 + __satfractsiqq@GCC_4.3.0 1:4.3 + __satfractsisa@GCC_4.3.0 1:4.3 + __satfractsisq@GCC_4.3.0 1:4.3 + __satfractsita@GCC_4.3.0 1:4.3 + __satfractsitq@GCC_4.3.0 1:4.3 + __satfractsiuda@GCC_4.3.0 1:4.3 + __satfractsiudq@GCC_4.3.0 1:4.3 + __satfractsiuha@GCC_4.3.0 1:4.3 + __satfractsiuhq@GCC_4.3.0 1:4.3 + __satfractsiuqq@GCC_4.3.0 1:4.3 + __satfractsiusa@GCC_4.3.0 1:4.3 + __satfractsiusq@GCC_4.3.0 1:4.3 + __satfractsiuta@GCC_4.3.0 1:4.3 + __satfractsiutq@GCC_4.3.0 1:4.3 + __satfractsqda@GCC_4.3.0 1:4.3 + __satfractsqdq2@GCC_4.3.0 1:4.3 + __satfractsqha@GCC_4.3.0 1:4.3 + __satfractsqhq2@GCC_4.3.0 1:4.3 + __satfractsqqq2@GCC_4.3.0 1:4.3 + __satfractsqsa@GCC_4.3.0 1:4.3 + __satfractsqta@GCC_4.3.0 1:4.3 + __satfractsqtq2@GCC_4.3.0 1:4.3 + __satfractsquda@GCC_4.3.0 1:4.3 + __satfractsqudq@GCC_4.3.0 1:4.3 + __satfractsquha@GCC_4.3.0 1:4.3 + __satfractsquhq@GCC_4.3.0 1:4.3 + __satfractsquqq@GCC_4.3.0 1:4.3 + __satfractsqusa@GCC_4.3.0 1:4.3 + __satfractsqusq@GCC_4.3.0 1:4.3 + __satfractsquta@GCC_4.3.0 1:4.3 + __satfractsqutq@GCC_4.3.0 1:4.3 + __satfracttada2@GCC_4.3.0 1:4.3 + __satfracttadq@GCC_4.3.0 1:4.3 + __satfracttaha2@GCC_4.3.0 1:4.3 + __satfracttahq@GCC_4.3.0 1:4.3 + __satfracttaqq@GCC_4.3.0 1:4.3 + __satfracttasa2@GCC_4.3.0 1:4.3 + __satfracttasq@GCC_4.3.0 1:4.3 + __satfracttatq@GCC_4.3.0 1:4.3 + __satfracttauda@GCC_4.3.0 1:4.3 + __satfracttaudq@GCC_4.3.0 1:4.3 + __satfracttauha@GCC_4.3.0 1:4.3 + __satfracttauhq@GCC_4.3.0 1:4.3 + __satfracttauqq@GCC_4.3.0 1:4.3 + __satfracttausa@GCC_4.3.0 1:4.3 + __satfracttausq@GCC_4.3.0 1:4.3 + __satfracttauta@GCC_4.3.0 1:4.3 + __satfracttautq@GCC_4.3.0 1:4.3 + __satfracttida@GCC_4.3.0 1:4.3 + __satfracttidq@GCC_4.3.0 1:4.3 + __satfracttiha@GCC_4.3.0 1:4.3 + __satfracttihq@GCC_4.3.0 1:4.3 + __satfracttiqq@GCC_4.3.0 1:4.3 + __satfracttisa@GCC_4.3.0 1:4.3 + __satfracttisq@GCC_4.3.0 1:4.3 + __satfracttita@GCC_4.3.0 1:4.3 + __satfracttitq@GCC_4.3.0 1:4.3 + __satfracttiuda@GCC_4.3.0 1:4.3 + __satfracttiudq@GCC_4.3.0 1:4.3 + __satfracttiuha@GCC_4.3.0 1:4.3 + __satfracttiuhq@GCC_4.3.0 1:4.3 + __satfracttiuqq@GCC_4.3.0 1:4.3 + __satfracttiusa@GCC_4.3.0 1:4.3 + __satfracttiusq@GCC_4.3.0 1:4.3 + __satfracttiuta@GCC_4.3.0 1:4.3 + __satfracttiutq@GCC_4.3.0 1:4.3 + __satfracttqda@GCC_4.3.0 1:4.3 + __satfracttqdq2@GCC_4.3.0 1:4.3 + __satfracttqha@GCC_4.3.0 1:4.3 + __satfracttqhq2@GCC_4.3.0 1:4.3 + __satfracttqqq2@GCC_4.3.0 1:4.3 + __satfracttqsa@GCC_4.3.0 1:4.3 + __satfracttqsq2@GCC_4.3.0 1:4.3 + __satfracttqta@GCC_4.3.0 1:4.3 + __satfracttquda@GCC_4.3.0 1:4.3 + __satfracttqudq@GCC_4.3.0 1:4.3 + __satfracttquha@GCC_4.3.0 1:4.3 + __satfracttquhq@GCC_4.3.0 1:4.3 + __satfracttquqq@GCC_4.3.0 1:4.3 + __satfracttqusa@GCC_4.3.0 1:4.3 + __satfracttqusq@GCC_4.3.0 1:4.3 + __satfracttquta@GCC_4.3.0 1:4.3 + __satfracttqutq@GCC_4.3.0 1:4.3 + __satfractudada@GCC_4.3.0 1:4.3 + __satfractudadq@GCC_4.3.0 1:4.3 + __satfractudaha@GCC_4.3.0 1:4.3 + __satfractudahq@GCC_4.3.0 1:4.3 + __satfractudaqq@GCC_4.3.0 1:4.3 + __satfractudasa@GCC_4.3.0 1:4.3 + __satfractudasq@GCC_4.3.0 1:4.3 + __satfractudata@GCC_4.3.0 1:4.3 + __satfractudatq@GCC_4.3.0 1:4.3 + __satfractudaudq@GCC_4.3.0 1:4.3 + __satfractudauha2@GCC_4.3.0 1:4.3 + __satfractudauhq@GCC_4.3.0 1:4.3 + __satfractudauqq@GCC_4.3.0 1:4.3 + __satfractudausa2@GCC_4.3.0 1:4.3 + __satfractudausq@GCC_4.3.0 1:4.3 + __satfractudauta2@GCC_4.3.0 1:4.3 + __satfractudautq@GCC_4.3.0 1:4.3 + __satfractudqda@GCC_4.3.0 1:4.3 + __satfractudqdq@GCC_4.3.0 1:4.3 + __satfractudqha@GCC_4.3.0 1:4.3 + __satfractudqhq@GCC_4.3.0 1:4.3 + __satfractudqqq@GCC_4.3.0 1:4.3 + __satfractudqsa@GCC_4.3.0 1:4.3 + __satfractudqsq@GCC_4.3.0 1:4.3 + __satfractudqta@GCC_4.3.0 1:4.3 + __satfractudqtq@GCC_4.3.0 1:4.3 + __satfractudquda@GCC_4.3.0 1:4.3 + __satfractudquha@GCC_4.3.0 1:4.3 + __satfractudquhq2@GCC_4.3.0 1:4.3 + __satfractudquqq2@GCC_4.3.0 1:4.3 + __satfractudqusa@GCC_4.3.0 1:4.3 + __satfractudqusq2@GCC_4.3.0 1:4.3 + __satfractudquta@GCC_4.3.0 1:4.3 + __satfractudqutq2@GCC_4.3.0 1:4.3 + __satfractuhada@GCC_4.3.0 1:4.3 + __satfractuhadq@GCC_4.3.0 1:4.3 + __satfractuhaha@GCC_4.3.0 1:4.3 + __satfractuhahq@GCC_4.3.0 1:4.3 + __satfractuhaqq@GCC_4.3.0 1:4.3 + __satfractuhasa@GCC_4.3.0 1:4.3 + __satfractuhasq@GCC_4.3.0 1:4.3 + __satfractuhata@GCC_4.3.0 1:4.3 + __satfractuhatq@GCC_4.3.0 1:4.3 + __satfractuhauda2@GCC_4.3.0 1:4.3 + __satfractuhaudq@GCC_4.3.0 1:4.3 + __satfractuhauhq@GCC_4.3.0 1:4.3 + __satfractuhauqq@GCC_4.3.0 1:4.3 + __satfractuhausa2@GCC_4.3.0 1:4.3 + __satfractuhausq@GCC_4.3.0 1:4.3 + __satfractuhauta2@GCC_4.3.0 1:4.3 + __satfractuhautq@GCC_4.3.0 1:4.3 + __satfractuhqda@GCC_4.3.0 1:4.3 + __satfractuhqdq@GCC_4.3.0 1:4.3 + __satfractuhqha@GCC_4.3.0 1:4.3 + __satfractuhqhq@GCC_4.3.0 1:4.3 + __satfractuhqqq@GCC_4.3.0 1:4.3 + __satfractuhqsa@GCC_4.3.0 1:4.3 + __satfractuhqsq@GCC_4.3.0 1:4.3 + __satfractuhqta@GCC_4.3.0 1:4.3 + __satfractuhqtq@GCC_4.3.0 1:4.3 + __satfractuhquda@GCC_4.3.0 1:4.3 + __satfractuhqudq2@GCC_4.3.0 1:4.3 + __satfractuhquha@GCC_4.3.0 1:4.3 + __satfractuhquqq2@GCC_4.3.0 1:4.3 + __satfractuhqusa@GCC_4.3.0 1:4.3 + __satfractuhqusq2@GCC_4.3.0 1:4.3 + __satfractuhquta@GCC_4.3.0 1:4.3 + __satfractuhqutq2@GCC_4.3.0 1:4.3 + __satfractunsdida@GCC_4.3.0 1:4.3 + __satfractunsdidq@GCC_4.3.0 1:4.3 + __satfractunsdiha@GCC_4.3.0 1:4.3 + __satfractunsdihq@GCC_4.3.0 1:4.3 + __satfractunsdiqq@GCC_4.3.0 1:4.3 + __satfractunsdisa@GCC_4.3.0 1:4.3 + __satfractunsdisq@GCC_4.3.0 1:4.3 + __satfractunsdita@GCC_4.3.0 1:4.3 + __satfractunsditq@GCC_4.3.0 1:4.3 + __satfractunsdiuda@GCC_4.3.0 1:4.3 + __satfractunsdiudq@GCC_4.3.0 1:4.3 + __satfractunsdiuha@GCC_4.3.0 1:4.3 + __satfractunsdiuhq@GCC_4.3.0 1:4.3 + __satfractunsdiuqq@GCC_4.3.0 1:4.3 + __satfractunsdiusa@GCC_4.3.0 1:4.3 + __satfractunsdiusq@GCC_4.3.0 1:4.3 + __satfractunsdiuta@GCC_4.3.0 1:4.3 + __satfractunsdiutq@GCC_4.3.0 1:4.3 + __satfractunshida@GCC_4.3.0 1:4.3 + __satfractunshidq@GCC_4.3.0 1:4.3 + __satfractunshiha@GCC_4.3.0 1:4.3 + __satfractunshihq@GCC_4.3.0 1:4.3 + __satfractunshiqq@GCC_4.3.0 1:4.3 + __satfractunshisa@GCC_4.3.0 1:4.3 + __satfractunshisq@GCC_4.3.0 1:4.3 + __satfractunshita@GCC_4.3.0 1:4.3 + __satfractunshitq@GCC_4.3.0 1:4.3 + __satfractunshiuda@GCC_4.3.0 1:4.3 + __satfractunshiudq@GCC_4.3.0 1:4.3 + __satfractunshiuha@GCC_4.3.0 1:4.3 + __satfractunshiuhq@GCC_4.3.0 1:4.3 + __satfractunshiuqq@GCC_4.3.0 1:4.3 + __satfractunshiusa@GCC_4.3.0 1:4.3 + __satfractunshiusq@GCC_4.3.0 1:4.3 + __satfractunshiuta@GCC_4.3.0 1:4.3 + __satfractunshiutq@GCC_4.3.0 1:4.3 + __satfractunsqida@GCC_4.3.0 1:4.3 + __satfractunsqidq@GCC_4.3.0 1:4.3 + __satfractunsqiha@GCC_4.3.0 1:4.3 + __satfractunsqihq@GCC_4.3.0 1:4.3 + __satfractunsqiqq@GCC_4.3.0 1:4.3 + __satfractunsqisa@GCC_4.3.0 1:4.3 + __satfractunsqisq@GCC_4.3.0 1:4.3 + __satfractunsqita@GCC_4.3.0 1:4.3 + __satfractunsqitq@GCC_4.3.0 1:4.3 + __satfractunsqiuda@GCC_4.3.0 1:4.3 + __satfractunsqiudq@GCC_4.3.0 1:4.3 + __satfractunsqiuha@GCC_4.3.0 1:4.3 + __satfractunsqiuhq@GCC_4.3.0 1:4.3 + __satfractunsqiuqq@GCC_4.3.0 1:4.3 + __satfractunsqiusa@GCC_4.3.0 1:4.3 + __satfractunsqiusq@GCC_4.3.0 1:4.3 + __satfractunsqiuta@GCC_4.3.0 1:4.3 + __satfractunsqiutq@GCC_4.3.0 1:4.3 + __satfractunssida@GCC_4.3.0 1:4.3 + __satfractunssidq@GCC_4.3.0 1:4.3 + __satfractunssiha@GCC_4.3.0 1:4.3 + __satfractunssihq@GCC_4.3.0 1:4.3 + __satfractunssiqq@GCC_4.3.0 1:4.3 + __satfractunssisa@GCC_4.3.0 1:4.3 + __satfractunssisq@GCC_4.3.0 1:4.3 + __satfractunssita@GCC_4.3.0 1:4.3 + __satfractunssitq@GCC_4.3.0 1:4.3 + __satfractunssiuda@GCC_4.3.0 1:4.3 + __satfractunssiudq@GCC_4.3.0 1:4.3 + __satfractunssiuha@GCC_4.3.0 1:4.3 + __satfractunssiuhq@GCC_4.3.0 1:4.3 + __satfractunssiuqq@GCC_4.3.0 1:4.3 + __satfractunssiusa@GCC_4.3.0 1:4.3 + __satfractunssiusq@GCC_4.3.0 1:4.3 + __satfractunssiuta@GCC_4.3.0 1:4.3 + __satfractunssiutq@GCC_4.3.0 1:4.3 + __satfractunstida@GCC_4.3.0 1:4.3 + __satfractunstidq@GCC_4.3.0 1:4.3 + __satfractunstiha@GCC_4.3.0 1:4.3 + __satfractunstihq@GCC_4.3.0 1:4.3 + __satfractunstiqq@GCC_4.3.0 1:4.3 + __satfractunstisa@GCC_4.3.0 1:4.3 + __satfractunstisq@GCC_4.3.0 1:4.3 + __satfractunstita@GCC_4.3.0 1:4.3 + __satfractunstitq@GCC_4.3.0 1:4.3 + __satfractunstiuda@GCC_4.3.0 1:4.3 + __satfractunstiudq@GCC_4.3.0 1:4.3 + __satfractunstiuha@GCC_4.3.0 1:4.3 + __satfractunstiuhq@GCC_4.3.0 1:4.3 + __satfractunstiuqq@GCC_4.3.0 1:4.3 + __satfractunstiusa@GCC_4.3.0 1:4.3 + __satfractunstiusq@GCC_4.3.0 1:4.3 + __satfractunstiuta@GCC_4.3.0 1:4.3 + __satfractunstiutq@GCC_4.3.0 1:4.3 + __satfractuqqda@GCC_4.3.0 1:4.3 + __satfractuqqdq@GCC_4.3.0 1:4.3 + __satfractuqqha@GCC_4.3.0 1:4.3 + __satfractuqqhq@GCC_4.3.0 1:4.3 + __satfractuqqqq@GCC_4.3.0 1:4.3 + __satfractuqqsa@GCC_4.3.0 1:4.3 + __satfractuqqsq@GCC_4.3.0 1:4.3 + __satfractuqqta@GCC_4.3.0 1:4.3 + __satfractuqqtq@GCC_4.3.0 1:4.3 + __satfractuqquda@GCC_4.3.0 1:4.3 + __satfractuqqudq2@GCC_4.3.0 1:4.3 + __satfractuqquha@GCC_4.3.0 1:4.3 + __satfractuqquhq2@GCC_4.3.0 1:4.3 + __satfractuqqusa@GCC_4.3.0 1:4.3 + __satfractuqqusq2@GCC_4.3.0 1:4.3 + __satfractuqquta@GCC_4.3.0 1:4.3 + __satfractuqqutq2@GCC_4.3.0 1:4.3 + __satfractusada@GCC_4.3.0 1:4.3 + __satfractusadq@GCC_4.3.0 1:4.3 + __satfractusaha@GCC_4.3.0 1:4.3 + __satfractusahq@GCC_4.3.0 1:4.3 + __satfractusaqq@GCC_4.3.0 1:4.3 + __satfractusasa@GCC_4.3.0 1:4.3 + __satfractusasq@GCC_4.3.0 1:4.3 + __satfractusata@GCC_4.3.0 1:4.3 + __satfractusatq@GCC_4.3.0 1:4.3 + __satfractusauda2@GCC_4.3.0 1:4.3 + __satfractusaudq@GCC_4.3.0 1:4.3 + __satfractusauha2@GCC_4.3.0 1:4.3 + __satfractusauhq@GCC_4.3.0 1:4.3 + __satfractusauqq@GCC_4.3.0 1:4.3 + __satfractusausq@GCC_4.3.0 1:4.3 + __satfractusauta2@GCC_4.3.0 1:4.3 + __satfractusautq@GCC_4.3.0 1:4.3 + __satfractusqda@GCC_4.3.0 1:4.3 + __satfractusqdq@GCC_4.3.0 1:4.3 + __satfractusqha@GCC_4.3.0 1:4.3 + __satfractusqhq@GCC_4.3.0 1:4.3 + __satfractusqqq@GCC_4.3.0 1:4.3 + __satfractusqsa@GCC_4.3.0 1:4.3 + __satfractusqsq@GCC_4.3.0 1:4.3 + __satfractusqta@GCC_4.3.0 1:4.3 + __satfractusqtq@GCC_4.3.0 1:4.3 + __satfractusquda@GCC_4.3.0 1:4.3 + __satfractusqudq2@GCC_4.3.0 1:4.3 + __satfractusquha@GCC_4.3.0 1:4.3 + __satfractusquhq2@GCC_4.3.0 1:4.3 + __satfractusquqq2@GCC_4.3.0 1:4.3 + __satfractusqusa@GCC_4.3.0 1:4.3 + __satfractusquta@GCC_4.3.0 1:4.3 + __satfractusqutq2@GCC_4.3.0 1:4.3 + __satfractutada@GCC_4.3.0 1:4.3 + __satfractutadq@GCC_4.3.0 1:4.3 + __satfractutaha@GCC_4.3.0 1:4.3 + __satfractutahq@GCC_4.3.0 1:4.3 + __satfractutaqq@GCC_4.3.0 1:4.3 + __satfractutasa@GCC_4.3.0 1:4.3 + __satfractutasq@GCC_4.3.0 1:4.3 + __satfractutata@GCC_4.3.0 1:4.3 + __satfractutatq@GCC_4.3.0 1:4.3 + __satfractutauda2@GCC_4.3.0 1:4.3 + __satfractutaudq@GCC_4.3.0 1:4.3 + __satfractutauha2@GCC_4.3.0 1:4.3 + __satfractutauhq@GCC_4.3.0 1:4.3 + __satfractutauqq@GCC_4.3.0 1:4.3 + __satfractutausa2@GCC_4.3.0 1:4.3 + __satfractutausq@GCC_4.3.0 1:4.3 + __satfractutautq@GCC_4.3.0 1:4.3 + __satfractutqda@GCC_4.3.0 1:4.3 + __satfractutqdq@GCC_4.3.0 1:4.3 + __satfractutqha@GCC_4.3.0 1:4.3 + __satfractutqhq@GCC_4.3.0 1:4.3 + __satfractutqqq@GCC_4.3.0 1:4.3 + __satfractutqsa@GCC_4.3.0 1:4.3 + __satfractutqsq@GCC_4.3.0 1:4.3 + __satfractutqta@GCC_4.3.0 1:4.3 + __satfractutqtq@GCC_4.3.0 1:4.3 + __satfractutquda@GCC_4.3.0 1:4.3 + __satfractutqudq2@GCC_4.3.0 1:4.3 + __satfractutquha@GCC_4.3.0 1:4.3 + __satfractutquhq2@GCC_4.3.0 1:4.3 + __satfractutquqq2@GCC_4.3.0 1:4.3 + __satfractutqusa@GCC_4.3.0 1:4.3 + __satfractutqusq2@GCC_4.3.0 1:4.3 + __satfractutquta@GCC_4.3.0 1:4.3 + __ssaddda3@GCC_4.3.0 1:4.3 + __ssadddq3@GCC_4.3.0 1:4.3 + __ssaddha3@GCC_4.3.0 1:4.3 + __ssaddhq3@GCC_4.3.0 1:4.3 + __ssaddqq3@GCC_4.3.0 1:4.3 + __ssaddsa3@GCC_4.3.0 1:4.3 + __ssaddsq3@GCC_4.3.0 1:4.3 + __ssaddta3@GCC_4.3.0 1:4.3 + __ssaddtq3@GCC_4.3.0 1:4.3 + __ssashlda3@GCC_4.3.0 1:4.3 + __ssashldq3@GCC_4.3.0 1:4.3 + __ssashlha3@GCC_4.3.0 1:4.3 + __ssashlhq3@GCC_4.3.0 1:4.3 + __ssashlqq3@GCC_4.3.0 1:4.3 + __ssashlsa3@GCC_4.3.0 1:4.3 + __ssashlsq3@GCC_4.3.0 1:4.3 + __ssashlta3@GCC_4.3.0 1:4.3 + __ssashltq3@GCC_4.3.0 1:4.3 + __ssdivda3@GCC_4.3.0 1:4.3 + __ssdivdq3@GCC_4.3.0 1:4.3 + __ssdivha3@GCC_4.3.0 1:4.3 + __ssdivhq3@GCC_4.3.0 1:4.3 + __ssdivqq3@GCC_4.3.0 1:4.3 + __ssdivsa3@GCC_4.3.0 1:4.3 + __ssdivsq3@GCC_4.3.0 1:4.3 + __ssdivta3@GCC_4.3.0 1:4.3 + __ssdivtq3@GCC_4.3.0 1:4.3 + __ssmulda3@GCC_4.3.0 1:4.3 + __ssmuldq3@GCC_4.3.0 1:4.3 + __ssmulha3@GCC_4.3.0 1:4.3 + __ssmulhq3@GCC_4.3.0 1:4.3 + __ssmulqq3@GCC_4.3.0 1:4.3 + __ssmulsa3@GCC_4.3.0 1:4.3 + __ssmulsq3@GCC_4.3.0 1:4.3 + __ssmulta3@GCC_4.3.0 1:4.3 + __ssmultq3@GCC_4.3.0 1:4.3 + __ssnegda2@GCC_4.3.0 1:4.3 + __ssnegdq2@GCC_4.3.0 1:4.3 + __ssnegha2@GCC_4.3.0 1:4.3 + __ssneghq2@GCC_4.3.0 1:4.3 + __ssnegqq2@GCC_4.3.0 1:4.3 + __ssnegsa2@GCC_4.3.0 1:4.3 + __ssnegsq2@GCC_4.3.0 1:4.3 + __ssnegta2@GCC_4.3.0 1:4.3 + __ssnegtq2@GCC_4.3.0 1:4.3 + __sssubda3@GCC_4.3.0 1:4.3 + __sssubdq3@GCC_4.3.0 1:4.3 + __sssubha3@GCC_4.3.0 1:4.3 + __sssubhq3@GCC_4.3.0 1:4.3 + __sssubqq3@GCC_4.3.0 1:4.3 + __sssubsa3@GCC_4.3.0 1:4.3 + __sssubsq3@GCC_4.3.0 1:4.3 + __sssubta3@GCC_4.3.0 1:4.3 + __sssubtq3@GCC_4.3.0 1:4.3 + __subda3@GCC_4.3.0 1:4.3 + __subdf3@GCC_3.0 1:4.1.1 + __subdq3@GCC_4.3.0 1:4.3 + __subha3@GCC_4.3.0 1:4.3 + __subhq3@GCC_4.3.0 1:4.3 + __subqq3@GCC_4.3.0 1:4.3 + __subsa3@GCC_4.3.0 1:4.3 + __subsf3@GCC_3.0 1:4.1.1 + __subsq3@GCC_4.3.0 1:4.3 + __subta3@GCC_4.3.0 1:4.3 + __subtf3@GCC_3.0 1:4.1.1 + __subtq3@GCC_4.3.0 1:4.3 + __subuda3@GCC_4.3.0 1:4.3 + __subudq3@GCC_4.3.0 1:4.3 + __subuha3@GCC_4.3.0 1:4.3 + __subuhq3@GCC_4.3.0 1:4.3 + __subuqq3@GCC_4.3.0 1:4.3 + __subusa3@GCC_4.3.0 1:4.3 + __subusq3@GCC_4.3.0 1:4.3 + __subuta3@GCC_4.3.0 1:4.3 + __subutq3@GCC_4.3.0 1:4.3 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __subvti3@GCC_3.4.4 1:4.1.1 + __sync_add_and_fetch_1@GCC_4.4.0 1:4.4 + __sync_add_and_fetch_2@GCC_4.4.0 1:4.4 + __sync_add_and_fetch_4@GCC_4.4.0 1:4.4 + __sync_add_and_fetch_8@GCC_4.4.0 1:4.4 + __sync_and_and_fetch_1@GCC_4.4.0 1:4.4 + __sync_and_and_fetch_2@GCC_4.4.0 1:4.4 + __sync_and_and_fetch_4@GCC_4.4.0 1:4.4 + __sync_and_and_fetch_8@GCC_4.4.0 1:4.4 + __sync_bool_compare_and_swap_1@GCC_4.4.0 1:4.4 + __sync_bool_compare_and_swap_2@GCC_4.4.0 1:4.4 + __sync_bool_compare_and_swap_4@GCC_4.4.0 1:4.4 + __sync_bool_compare_and_swap_8@GCC_4.4.0 1:4.4 + __sync_fetch_and_add_1@GCC_4.4.0 1:4.4 + __sync_fetch_and_add_2@GCC_4.4.0 1:4.4 + __sync_fetch_and_add_4@GCC_4.4.0 1:4.4 + __sync_fetch_and_add_8@GCC_4.4.0 1:4.4 + __sync_fetch_and_and_1@GCC_4.4.0 1:4.4 + __sync_fetch_and_and_2@GCC_4.4.0 1:4.4 + __sync_fetch_and_and_4@GCC_4.4.0 1:4.4 + __sync_fetch_and_and_8@GCC_4.4.0 1:4.4 + __sync_fetch_and_nand_1@GCC_4.4.0 1:4.4 + __sync_fetch_and_nand_2@GCC_4.4.0 1:4.4 + __sync_fetch_and_nand_4@GCC_4.4.0 1:4.4 + __sync_fetch_and_nand_8@GCC_4.4.0 1:4.4 + __sync_fetch_and_or_1@GCC_4.4.0 1:4.4 + __sync_fetch_and_or_2@GCC_4.4.0 1:4.4 + __sync_fetch_and_or_4@GCC_4.4.0 1:4.4 + __sync_fetch_and_or_8@GCC_4.4.0 1:4.4 + __sync_fetch_and_sub_1@GCC_4.4.0 1:4.4 + __sync_fetch_and_sub_2@GCC_4.4.0 1:4.4 + __sync_fetch_and_sub_4@GCC_4.4.0 1:4.4 + __sync_fetch_and_sub_8@GCC_4.4.0 1:4.4 + __sync_fetch_and_xor_1@GCC_4.4.0 1:4.4 + __sync_fetch_and_xor_2@GCC_4.4.0 1:4.4 + __sync_fetch_and_xor_4@GCC_4.4.0 1:4.4 + __sync_fetch_and_xor_8@GCC_4.4.0 1:4.4 + __sync_lock_test_and_set_1@GCC_4.4.0 1:4.4 + __sync_lock_test_and_set_2@GCC_4.4.0 1:4.4 + __sync_lock_test_and_set_4@GCC_4.4.0 1:4.4 + __sync_lock_test_and_set_8@GCC_4.4.0 1:4.4 + __sync_nand_and_fetch_1@GCC_4.4.0 1:4.4 + __sync_nand_and_fetch_2@GCC_4.4.0 1:4.4 + __sync_nand_and_fetch_4@GCC_4.4.0 1:4.4 + __sync_nand_and_fetch_8@GCC_4.4.0 1:4.4 + __sync_or_and_fetch_1@GCC_4.4.0 1:4.4 + __sync_or_and_fetch_2@GCC_4.4.0 1:4.4 + __sync_or_and_fetch_4@GCC_4.4.0 1:4.4 + __sync_or_and_fetch_8@GCC_4.4.0 1:4.4 + __sync_sub_and_fetch_1@GCC_4.4.0 1:4.4 + __sync_sub_and_fetch_2@GCC_4.4.0 1:4.4 + __sync_sub_and_fetch_4@GCC_4.4.0 1:4.4 + __sync_sub_and_fetch_8@GCC_4.4.0 1:4.4 + __sync_synchronize@GCC_4.4.0 1:4.4 + __sync_val_compare_and_swap_1@GCC_4.4.0 1:4.4 + __sync_val_compare_and_swap_2@GCC_4.4.0 1:4.4 + __sync_val_compare_and_swap_4@GCC_4.4.0 1:4.4 + __sync_val_compare_and_swap_8@GCC_4.4.0 1:4.4 + __sync_xor_and_fetch_1@GCC_4.4.0 1:4.4 + __sync_xor_and_fetch_2@GCC_4.4.0 1:4.4 + __sync_xor_and_fetch_4@GCC_4.4.0 1:4.4 + __sync_xor_and_fetch_8@GCC_4.4.0 1:4.4 + __truncdfsf2@GCC_3.0 1:4.1.1 + __trunctfdf2@GCC_3.0 1:4.1.1 + __trunctfsf2@GCC_3.0 1:4.1.1 + __ucmpti2@GCC_3.0 1:4.1.1 + __udivmodti4@GCC_3.0 1:4.1.1 + __udivti3@GCC_3.0 1:4.1.1 + __udivuda3@GCC_4.3.0 1:4.3 + __udivudq3@GCC_4.3.0 1:4.3 + __udivuha3@GCC_4.3.0 1:4.3 + __udivuhq3@GCC_4.3.0 1:4.3 + __udivuqq3@GCC_4.3.0 1:4.3 + __udivusa3@GCC_4.3.0 1:4.3 + __udivusq3@GCC_4.3.0 1:4.3 + __udivuta3@GCC_4.3.0 1:4.3 + __udivutq3@GCC_4.3.0 1:4.3 + __umodti3@GCC_3.0 1:4.1.1 + __unorddf2@GCC_3.3.4 1:4.1.1 + __unordsf2@GCC_3.3.4 1:4.1.1 + __unordtf2@GCC_4.5.0 1:4.5 + __usadduda3@GCC_4.3.0 1:4.3 + __usaddudq3@GCC_4.3.0 1:4.3 + __usadduha3@GCC_4.3.0 1:4.3 + __usadduhq3@GCC_4.3.0 1:4.3 + __usadduqq3@GCC_4.3.0 1:4.3 + __usaddusa3@GCC_4.3.0 1:4.3 + __usaddusq3@GCC_4.3.0 1:4.3 + __usadduta3@GCC_4.3.0 1:4.3 + __usaddutq3@GCC_4.3.0 1:4.3 + __usashluda3@GCC_4.3.0 1:4.3 + __usashludq3@GCC_4.3.0 1:4.3 + __usashluha3@GCC_4.3.0 1:4.3 + __usashluhq3@GCC_4.3.0 1:4.3 + __usashluqq3@GCC_4.3.0 1:4.3 + __usashlusa3@GCC_4.3.0 1:4.3 + __usashlusq3@GCC_4.3.0 1:4.3 + __usashluta3@GCC_4.3.0 1:4.3 + __usashlutq3@GCC_4.3.0 1:4.3 + __usdivuda3@GCC_4.3.0 1:4.3 + __usdivudq3@GCC_4.3.0 1:4.3 + __usdivuha3@GCC_4.3.0 1:4.3 + __usdivuhq3@GCC_4.3.0 1:4.3 + __usdivuqq3@GCC_4.3.0 1:4.3 + __usdivusa3@GCC_4.3.0 1:4.3 + __usdivusq3@GCC_4.3.0 1:4.3 + __usdivuta3@GCC_4.3.0 1:4.3 + __usdivutq3@GCC_4.3.0 1:4.3 + __usmuluda3@GCC_4.3.0 1:4.3 + __usmuludq3@GCC_4.3.0 1:4.3 + __usmuluha3@GCC_4.3.0 1:4.3 + __usmuluhq3@GCC_4.3.0 1:4.3 + __usmuluqq3@GCC_4.3.0 1:4.3 + __usmulusa3@GCC_4.3.0 1:4.3 + __usmulusq3@GCC_4.3.0 1:4.3 + __usmuluta3@GCC_4.3.0 1:4.3 + __usmulutq3@GCC_4.3.0 1:4.3 + __usneguda2@GCC_4.3.0 1:4.3 + __usnegudq2@GCC_4.3.0 1:4.3 + __usneguha2@GCC_4.3.0 1:4.3 + __usneguhq2@GCC_4.3.0 1:4.3 + __usneguqq2@GCC_4.3.0 1:4.3 + __usnegusa2@GCC_4.3.0 1:4.3 + __usnegusq2@GCC_4.3.0 1:4.3 + __usneguta2@GCC_4.3.0 1:4.3 + __usnegutq2@GCC_4.3.0 1:4.3 + __ussubuda3@GCC_4.3.0 1:4.3 + __ussubudq3@GCC_4.3.0 1:4.3 + __ussubuha3@GCC_4.3.0 1:4.3 + __ussubuhq3@GCC_4.3.0 1:4.3 + __ussubuqq3@GCC_4.3.0 1:4.3 + __ussubusa3@GCC_4.3.0 1:4.3 + __ussubusq3@GCC_4.3.0 1:4.3 + __ussubuta3@GCC_4.3.0 1:4.3 + __ussubutq3@GCC_4.3.0 1:4.3 --- gcc-4.9-4.9.2.orig/debian/lib64gcc1.symbols.mipsel +++ gcc-4.9-4.9.2/debian/lib64gcc1.symbols.mipsel @@ -0,0 +1,1749 @@ +libgcc_s.so.1 lib64gcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3.4@GCC_3.3.4 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4.4@GCC_3.4.4 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.2.0 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.4.0@GCC_4.4.0 1:4.4 + GCC_4.5.0@GCC_4.5.0 1:4.5 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __absvti2@GCC_3.4.4 1:4.1.1 + __addda3@GCC_4.3.0 1:4.3 + __adddf3@GCC_3.0 1:4.1.1 + __adddq3@GCC_4.3.0 1:4.3 + __addha3@GCC_4.3.0 1:4.3 + __addhq3@GCC_4.3.0 1:4.3 + __addqq3@GCC_4.3.0 1:4.3 + __addsa3@GCC_4.3.0 1:4.3 + __addsf3@GCC_3.0 1:4.1.1 + __addsq3@GCC_4.3.0 1:4.3 + __addta3@GCC_4.3.0 1:4.3 + __addtf3@GCC_3.0 1:4.1.1 + __addtq3@GCC_4.3.0 1:4.3 + __adduda3@GCC_4.3.0 1:4.3 + __addudq3@GCC_4.3.0 1:4.3 + __adduha3@GCC_4.3.0 1:4.3 + __adduhq3@GCC_4.3.0 1:4.3 + __adduqq3@GCC_4.3.0 1:4.3 + __addusa3@GCC_4.3.0 1:4.3 + __addusq3@GCC_4.3.0 1:4.3 + __adduta3@GCC_4.3.0 1:4.3 + __addutq3@GCC_4.3.0 1:4.3 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __addvti3@GCC_3.4.4 1:4.1.1 + __ashlda3@GCC_4.3.0 1:4.3 + __ashldq3@GCC_4.3.0 1:4.3 + __ashlha3@GCC_4.3.0 1:4.3 + __ashlhq3@GCC_4.3.0 1:4.3 + __ashlqq3@GCC_4.3.0 1:4.3 + __ashlsa3@GCC_4.3.0 1:4.3 + __ashlsq3@GCC_4.3.0 1:4.3 + __ashlta3@GCC_4.3.0 1:4.3 + __ashlti3@GCC_3.0 1:4.1.1 + __ashltq3@GCC_4.3.0 1:4.3 + __ashluda3@GCC_4.3.0 1:4.3 + __ashludq3@GCC_4.3.0 1:4.3 + __ashluha3@GCC_4.3.0 1:4.3 + __ashluhq3@GCC_4.3.0 1:4.3 + __ashluqq3@GCC_4.3.0 1:4.3 + __ashlusa3@GCC_4.3.0 1:4.3 + __ashlusq3@GCC_4.3.0 1:4.3 + __ashluta3@GCC_4.3.0 1:4.3 + __ashlutq3@GCC_4.3.0 1:4.3 + __ashrda3@GCC_4.3.0 1:4.3 + __ashrdq3@GCC_4.3.0 1:4.3 + __ashrha3@GCC_4.3.0 1:4.3 + __ashrhq3@GCC_4.3.0 1:4.3 + __ashrqq3@GCC_4.3.0 1:4.3 + __ashrsa3@GCC_4.3.0 1:4.3 + __ashrsq3@GCC_4.3.0 1:4.3 + __ashrta3@GCC_4.3.0 1:4.3 + __ashrti3@GCC_3.0 1:4.1.1 + __ashrtq3@GCC_4.3.0 1:4.3 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbti2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzti2@GCC_3.4 1:4.1.1 + __cmpda2@GCC_4.3.0 1:4.3 + __cmpdq2@GCC_4.3.0 1:4.3 + __cmpha2@GCC_4.3.0 1:4.3 + __cmphq2@GCC_4.3.0 1:4.3 + __cmpqq2@GCC_4.3.0 1:4.3 + __cmpsa2@GCC_4.3.0 1:4.3 + __cmpsq2@GCC_4.3.0 1:4.3 + __cmpta2@GCC_4.3.0 1:4.3 + __cmpti2@GCC_3.0 1:4.1.1 + __cmptq2@GCC_4.3.0 1:4.3 + __cmpuda2@GCC_4.3.0 1:4.3 + __cmpudq2@GCC_4.3.0 1:4.3 + __cmpuha2@GCC_4.3.0 1:4.3 + __cmpuhq2@GCC_4.3.0 1:4.3 + __cmpuqq2@GCC_4.3.0 1:4.3 + __cmpusa2@GCC_4.3.0 1:4.3 + __cmpusq2@GCC_4.3.0 1:4.3 + __cmputa2@GCC_4.3.0 1:4.3 + __cmputq2@GCC_4.3.0 1:4.3 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzti2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divda3@GCC_4.3.0 1:4.3 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdf3@GCC_3.0 1:4.1.1 + __divdq3@GCC_4.3.0 1:4.3 + __divha3@GCC_4.3.0 1:4.3 + __divhq3@GCC_4.3.0 1:4.3 + __divqq3@GCC_4.3.0 1:4.3 + __divsa3@GCC_4.3.0 1:4.3 + __divsc3@GCC_4.0.0 1:4.1.1 + __divsf3@GCC_3.0 1:4.1.1 + __divsq3@GCC_4.3.0 1:4.3 + __divta3@GCC_4.3.0 1:4.3 + __divtc3@GCC_4.0.0 1:4.1.1 + __divtf3@GCC_3.0 1:4.1.1 + __divti3@GCC_3.0 1:4.1.1 + __divtq3@GCC_4.3.0 1:4.3 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqdf2@GCC_3.0 1:4.1.1 + __eqsf2@GCC_3.0 1:4.1.1 + __eqtf2@GCC_3.0 1:4.1.1 + __extenddftf2@GCC_3.0 1:4.1.1 + __extendsfdf2@GCC_3.0 1:4.1.1 + __extendsftf2@GCC_3.0 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffsti2@GCC_3.0 1:4.1.1 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixdfsi@GCC_3.0 1:4.1.1 + __fixdfti@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixsfsi@GCC_3.0 1:4.1.1 + __fixsfti@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_3.0 1:4.1.1 + __fixtfsi@GCC_3.0 1:4.1.1 + __fixtfti@GCC_3.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunsdfti@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunssfti@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_3.0 1:4.1.1 + __fixunstfsi@GCC_3.0 1:4.1.1 + __fixunstfti@GCC_3.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_3.0 1:4.1.1 + __floatsidf@GCC_3.0 1:4.1.1 + __floatsisf@GCC_3.0 1:4.1.1 + __floatsitf@GCC_3.0 1:4.1.1 + __floattidf@GCC_3.0 1:4.1.1 + __floattisf@GCC_3.0 1:4.1.1 + __floattitf@GCC_3.0 1:4.1.1 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.2.0 1:4.2.1 + __floatunsidf@GCC_4.2.0 1:4.2.1 + __floatunsisf@GCC_4.2.0 1:4.2.1 + __floatunsitf@GCC_4.2.0 1:4.2.1 + __floatuntidf@GCC_4.2.0 1:4.2.1 + __floatuntisf@GCC_4.2.0 1:4.2.1 + __floatuntitf@GCC_4.2.0 1:4.2.1 + __fractdadf@GCC_4.3.0 1:4.3 + __fractdadi@GCC_4.3.0 1:4.3 + __fractdadq@GCC_4.3.0 1:4.3 + __fractdaha2@GCC_4.3.0 1:4.3 + __fractdahi@GCC_4.3.0 1:4.3 + __fractdahq@GCC_4.3.0 1:4.3 + __fractdaqi@GCC_4.3.0 1:4.3 + __fractdaqq@GCC_4.3.0 1:4.3 + __fractdasa2@GCC_4.3.0 1:4.3 + __fractdasf@GCC_4.3.0 1:4.3 + __fractdasi@GCC_4.3.0 1:4.3 + __fractdasq@GCC_4.3.0 1:4.3 + __fractdata2@GCC_4.3.0 1:4.3 + __fractdati@GCC_4.3.0 1:4.3 + __fractdatq@GCC_4.3.0 1:4.3 + __fractdauda@GCC_4.3.0 1:4.3 + __fractdaudq@GCC_4.3.0 1:4.3 + __fractdauha@GCC_4.3.0 1:4.3 + __fractdauhq@GCC_4.3.0 1:4.3 + __fractdauqq@GCC_4.3.0 1:4.3 + __fractdausa@GCC_4.3.0 1:4.3 + __fractdausq@GCC_4.3.0 1:4.3 + __fractdauta@GCC_4.3.0 1:4.3 + __fractdautq@GCC_4.3.0 1:4.3 + __fractdfda@GCC_4.3.0 1:4.3 + __fractdfdq@GCC_4.3.0 1:4.3 + __fractdfha@GCC_4.3.0 1:4.3 + __fractdfhq@GCC_4.3.0 1:4.3 + __fractdfqq@GCC_4.3.0 1:4.3 + __fractdfsa@GCC_4.3.0 1:4.3 + __fractdfsq@GCC_4.3.0 1:4.3 + __fractdfta@GCC_4.3.0 1:4.3 + __fractdftq@GCC_4.3.0 1:4.3 + __fractdfuda@GCC_4.3.0 1:4.3 + __fractdfudq@GCC_4.3.0 1:4.3 + __fractdfuha@GCC_4.3.0 1:4.3 + __fractdfuhq@GCC_4.3.0 1:4.3 + __fractdfuqq@GCC_4.3.0 1:4.3 + __fractdfusa@GCC_4.3.0 1:4.3 + __fractdfusq@GCC_4.3.0 1:4.3 + __fractdfuta@GCC_4.3.0 1:4.3 + __fractdfutq@GCC_4.3.0 1:4.3 + __fractdida@GCC_4.3.0 1:4.3 + __fractdidq@GCC_4.3.0 1:4.3 + __fractdiha@GCC_4.3.0 1:4.3 + __fractdihq@GCC_4.3.0 1:4.3 + __fractdiqq@GCC_4.3.0 1:4.3 + __fractdisa@GCC_4.3.0 1:4.3 + __fractdisq@GCC_4.3.0 1:4.3 + __fractdita@GCC_4.3.0 1:4.3 + __fractditq@GCC_4.3.0 1:4.3 + __fractdiuda@GCC_4.3.0 1:4.3 + __fractdiudq@GCC_4.3.0 1:4.3 + __fractdiuha@GCC_4.3.0 1:4.3 + __fractdiuhq@GCC_4.3.0 1:4.3 + __fractdiuqq@GCC_4.3.0 1:4.3 + __fractdiusa@GCC_4.3.0 1:4.3 + __fractdiusq@GCC_4.3.0 1:4.3 + __fractdiuta@GCC_4.3.0 1:4.3 + __fractdiutq@GCC_4.3.0 1:4.3 + __fractdqda@GCC_4.3.0 1:4.3 + __fractdqdf@GCC_4.3.0 1:4.3 + __fractdqdi@GCC_4.3.0 1:4.3 + __fractdqha@GCC_4.3.0 1:4.3 + __fractdqhi@GCC_4.3.0 1:4.3 + __fractdqhq2@GCC_4.3.0 1:4.3 + __fractdqqi@GCC_4.3.0 1:4.3 + __fractdqqq2@GCC_4.3.0 1:4.3 + __fractdqsa@GCC_4.3.0 1:4.3 + __fractdqsf@GCC_4.3.0 1:4.3 + __fractdqsi@GCC_4.3.0 1:4.3 + __fractdqsq2@GCC_4.3.0 1:4.3 + __fractdqta@GCC_4.3.0 1:4.3 + __fractdqti@GCC_4.3.0 1:4.3 + __fractdqtq2@GCC_4.3.0 1:4.3 + __fractdquda@GCC_4.3.0 1:4.3 + __fractdqudq@GCC_4.3.0 1:4.3 + __fractdquha@GCC_4.3.0 1:4.3 + __fractdquhq@GCC_4.3.0 1:4.3 + __fractdquqq@GCC_4.3.0 1:4.3 + __fractdqusa@GCC_4.3.0 1:4.3 + __fractdqusq@GCC_4.3.0 1:4.3 + __fractdquta@GCC_4.3.0 1:4.3 + __fractdqutq@GCC_4.3.0 1:4.3 + __fracthada2@GCC_4.3.0 1:4.3 + __fracthadf@GCC_4.3.0 1:4.3 + __fracthadi@GCC_4.3.0 1:4.3 + __fracthadq@GCC_4.3.0 1:4.3 + __fracthahi@GCC_4.3.0 1:4.3 + __fracthahq@GCC_4.3.0 1:4.3 + __fracthaqi@GCC_4.3.0 1:4.3 + __fracthaqq@GCC_4.3.0 1:4.3 + __fracthasa2@GCC_4.3.0 1:4.3 + __fracthasf@GCC_4.3.0 1:4.3 + __fracthasi@GCC_4.3.0 1:4.3 + __fracthasq@GCC_4.3.0 1:4.3 + __fracthata2@GCC_4.3.0 1:4.3 + __fracthati@GCC_4.3.0 1:4.3 + __fracthatq@GCC_4.3.0 1:4.3 + __fracthauda@GCC_4.3.0 1:4.3 + __fracthaudq@GCC_4.3.0 1:4.3 + __fracthauha@GCC_4.3.0 1:4.3 + __fracthauhq@GCC_4.3.0 1:4.3 + __fracthauqq@GCC_4.3.0 1:4.3 + __fracthausa@GCC_4.3.0 1:4.3 + __fracthausq@GCC_4.3.0 1:4.3 + __fracthauta@GCC_4.3.0 1:4.3 + __fracthautq@GCC_4.3.0 1:4.3 + __fracthida@GCC_4.3.0 1:4.3 + __fracthidq@GCC_4.3.0 1:4.3 + __fracthiha@GCC_4.3.0 1:4.3 + __fracthihq@GCC_4.3.0 1:4.3 + __fracthiqq@GCC_4.3.0 1:4.3 + __fracthisa@GCC_4.3.0 1:4.3 + __fracthisq@GCC_4.3.0 1:4.3 + __fracthita@GCC_4.3.0 1:4.3 + __fracthitq@GCC_4.3.0 1:4.3 + __fracthiuda@GCC_4.3.0 1:4.3 + __fracthiudq@GCC_4.3.0 1:4.3 + __fracthiuha@GCC_4.3.0 1:4.3 + __fracthiuhq@GCC_4.3.0 1:4.3 + __fracthiuqq@GCC_4.3.0 1:4.3 + __fracthiusa@GCC_4.3.0 1:4.3 + __fracthiusq@GCC_4.3.0 1:4.3 + __fracthiuta@GCC_4.3.0 1:4.3 + __fracthiutq@GCC_4.3.0 1:4.3 + __fracthqda@GCC_4.3.0 1:4.3 + __fracthqdf@GCC_4.3.0 1:4.3 + __fracthqdi@GCC_4.3.0 1:4.3 + __fracthqdq2@GCC_4.3.0 1:4.3 + __fracthqha@GCC_4.3.0 1:4.3 + __fracthqhi@GCC_4.3.0 1:4.3 + __fracthqqi@GCC_4.3.0 1:4.3 + __fracthqqq2@GCC_4.3.0 1:4.3 + __fracthqsa@GCC_4.3.0 1:4.3 + __fracthqsf@GCC_4.3.0 1:4.3 + __fracthqsi@GCC_4.3.0 1:4.3 + __fracthqsq2@GCC_4.3.0 1:4.3 + __fracthqta@GCC_4.3.0 1:4.3 + __fracthqti@GCC_4.3.0 1:4.3 + __fracthqtq2@GCC_4.3.0 1:4.3 + __fracthquda@GCC_4.3.0 1:4.3 + __fracthqudq@GCC_4.3.0 1:4.3 + __fracthquha@GCC_4.3.0 1:4.3 + __fracthquhq@GCC_4.3.0 1:4.3 + __fracthquqq@GCC_4.3.0 1:4.3 + __fracthqusa@GCC_4.3.0 1:4.3 + __fracthqusq@GCC_4.3.0 1:4.3 + __fracthquta@GCC_4.3.0 1:4.3 + __fracthqutq@GCC_4.3.0 1:4.3 + __fractqida@GCC_4.3.0 1:4.3 + __fractqidq@GCC_4.3.0 1:4.3 + __fractqiha@GCC_4.3.0 1:4.3 + __fractqihq@GCC_4.3.0 1:4.3 + __fractqiqq@GCC_4.3.0 1:4.3 + __fractqisa@GCC_4.3.0 1:4.3 + __fractqisq@GCC_4.3.0 1:4.3 + __fractqita@GCC_4.3.0 1:4.3 + __fractqitq@GCC_4.3.0 1:4.3 + __fractqiuda@GCC_4.3.0 1:4.3 + __fractqiudq@GCC_4.3.0 1:4.3 + __fractqiuha@GCC_4.3.0 1:4.3 + __fractqiuhq@GCC_4.3.0 1:4.3 + __fractqiuqq@GCC_4.3.0 1:4.3 + __fractqiusa@GCC_4.3.0 1:4.3 + __fractqiusq@GCC_4.3.0 1:4.3 + __fractqiuta@GCC_4.3.0 1:4.3 + __fractqiutq@GCC_4.3.0 1:4.3 + __fractqqda@GCC_4.3.0 1:4.3 + __fractqqdf@GCC_4.3.0 1:4.3 + __fractqqdi@GCC_4.3.0 1:4.3 + __fractqqdq2@GCC_4.3.0 1:4.3 + __fractqqha@GCC_4.3.0 1:4.3 + __fractqqhi@GCC_4.3.0 1:4.3 + __fractqqhq2@GCC_4.3.0 1:4.3 + __fractqqqi@GCC_4.3.0 1:4.3 + __fractqqsa@GCC_4.3.0 1:4.3 + __fractqqsf@GCC_4.3.0 1:4.3 + __fractqqsi@GCC_4.3.0 1:4.3 + __fractqqsq2@GCC_4.3.0 1:4.3 + __fractqqta@GCC_4.3.0 1:4.3 + __fractqqti@GCC_4.3.0 1:4.3 + __fractqqtq2@GCC_4.3.0 1:4.3 + __fractqquda@GCC_4.3.0 1:4.3 + __fractqqudq@GCC_4.3.0 1:4.3 + __fractqquha@GCC_4.3.0 1:4.3 + __fractqquhq@GCC_4.3.0 1:4.3 + __fractqquqq@GCC_4.3.0 1:4.3 + __fractqqusa@GCC_4.3.0 1:4.3 + __fractqqusq@GCC_4.3.0 1:4.3 + __fractqquta@GCC_4.3.0 1:4.3 + __fractqqutq@GCC_4.3.0 1:4.3 + __fractsada2@GCC_4.3.0 1:4.3 + __fractsadf@GCC_4.3.0 1:4.3 + __fractsadi@GCC_4.3.0 1:4.3 + __fractsadq@GCC_4.3.0 1:4.3 + __fractsaha2@GCC_4.3.0 1:4.3 + __fractsahi@GCC_4.3.0 1:4.3 + __fractsahq@GCC_4.3.0 1:4.3 + __fractsaqi@GCC_4.3.0 1:4.3 + __fractsaqq@GCC_4.3.0 1:4.3 + __fractsasf@GCC_4.3.0 1:4.3 + __fractsasi@GCC_4.3.0 1:4.3 + __fractsasq@GCC_4.3.0 1:4.3 + __fractsata2@GCC_4.3.0 1:4.3 + __fractsati@GCC_4.3.0 1:4.3 + __fractsatq@GCC_4.3.0 1:4.3 + __fractsauda@GCC_4.3.0 1:4.3 + __fractsaudq@GCC_4.3.0 1:4.3 + __fractsauha@GCC_4.3.0 1:4.3 + __fractsauhq@GCC_4.3.0 1:4.3 + __fractsauqq@GCC_4.3.0 1:4.3 + __fractsausa@GCC_4.3.0 1:4.3 + __fractsausq@GCC_4.3.0 1:4.3 + __fractsauta@GCC_4.3.0 1:4.3 + __fractsautq@GCC_4.3.0 1:4.3 + __fractsfda@GCC_4.3.0 1:4.3 + __fractsfdq@GCC_4.3.0 1:4.3 + __fractsfha@GCC_4.3.0 1:4.3 + __fractsfhq@GCC_4.3.0 1:4.3 + __fractsfqq@GCC_4.3.0 1:4.3 + __fractsfsa@GCC_4.3.0 1:4.3 + __fractsfsq@GCC_4.3.0 1:4.3 + __fractsfta@GCC_4.3.0 1:4.3 + __fractsftq@GCC_4.3.0 1:4.3 + __fractsfuda@GCC_4.3.0 1:4.3 + __fractsfudq@GCC_4.3.0 1:4.3 + __fractsfuha@GCC_4.3.0 1:4.3 + __fractsfuhq@GCC_4.3.0 1:4.3 + __fractsfuqq@GCC_4.3.0 1:4.3 + __fractsfusa@GCC_4.3.0 1:4.3 + __fractsfusq@GCC_4.3.0 1:4.3 + __fractsfuta@GCC_4.3.0 1:4.3 + __fractsfutq@GCC_4.3.0 1:4.3 + __fractsida@GCC_4.3.0 1:4.3 + __fractsidq@GCC_4.3.0 1:4.3 + __fractsiha@GCC_4.3.0 1:4.3 + __fractsihq@GCC_4.3.0 1:4.3 + __fractsiqq@GCC_4.3.0 1:4.3 + __fractsisa@GCC_4.3.0 1:4.3 + __fractsisq@GCC_4.3.0 1:4.3 + __fractsita@GCC_4.3.0 1:4.3 + __fractsitq@GCC_4.3.0 1:4.3 + __fractsiuda@GCC_4.3.0 1:4.3 + __fractsiudq@GCC_4.3.0 1:4.3 + __fractsiuha@GCC_4.3.0 1:4.3 + __fractsiuhq@GCC_4.3.0 1:4.3 + __fractsiuqq@GCC_4.3.0 1:4.3 + __fractsiusa@GCC_4.3.0 1:4.3 + __fractsiusq@GCC_4.3.0 1:4.3 + __fractsiuta@GCC_4.3.0 1:4.3 + __fractsiutq@GCC_4.3.0 1:4.3 + __fractsqda@GCC_4.3.0 1:4.3 + __fractsqdf@GCC_4.3.0 1:4.3 + __fractsqdi@GCC_4.3.0 1:4.3 + __fractsqdq2@GCC_4.3.0 1:4.3 + __fractsqha@GCC_4.3.0 1:4.3 + __fractsqhi@GCC_4.3.0 1:4.3 + __fractsqhq2@GCC_4.3.0 1:4.3 + __fractsqqi@GCC_4.3.0 1:4.3 + __fractsqqq2@GCC_4.3.0 1:4.3 + __fractsqsa@GCC_4.3.0 1:4.3 + __fractsqsf@GCC_4.3.0 1:4.3 + __fractsqsi@GCC_4.3.0 1:4.3 + __fractsqta@GCC_4.3.0 1:4.3 + __fractsqti@GCC_4.3.0 1:4.3 + __fractsqtq2@GCC_4.3.0 1:4.3 + __fractsquda@GCC_4.3.0 1:4.3 + __fractsqudq@GCC_4.3.0 1:4.3 + __fractsquha@GCC_4.3.0 1:4.3 + __fractsquhq@GCC_4.3.0 1:4.3 + __fractsquqq@GCC_4.3.0 1:4.3 + __fractsqusa@GCC_4.3.0 1:4.3 + __fractsqusq@GCC_4.3.0 1:4.3 + __fractsquta@GCC_4.3.0 1:4.3 + __fractsqutq@GCC_4.3.0 1:4.3 + __fracttada2@GCC_4.3.0 1:4.3 + __fracttadf@GCC_4.3.0 1:4.3 + __fracttadi@GCC_4.3.0 1:4.3 + __fracttadq@GCC_4.3.0 1:4.3 + __fracttaha2@GCC_4.3.0 1:4.3 + __fracttahi@GCC_4.3.0 1:4.3 + __fracttahq@GCC_4.3.0 1:4.3 + __fracttaqi@GCC_4.3.0 1:4.3 + __fracttaqq@GCC_4.3.0 1:4.3 + __fracttasa2@GCC_4.3.0 1:4.3 + __fracttasf@GCC_4.3.0 1:4.3 + __fracttasi@GCC_4.3.0 1:4.3 + __fracttasq@GCC_4.3.0 1:4.3 + __fracttati@GCC_4.3.0 1:4.3 + __fracttatq@GCC_4.3.0 1:4.3 + __fracttauda@GCC_4.3.0 1:4.3 + __fracttaudq@GCC_4.3.0 1:4.3 + __fracttauha@GCC_4.3.0 1:4.3 + __fracttauhq@GCC_4.3.0 1:4.3 + __fracttauqq@GCC_4.3.0 1:4.3 + __fracttausa@GCC_4.3.0 1:4.3 + __fracttausq@GCC_4.3.0 1:4.3 + __fracttauta@GCC_4.3.0 1:4.3 + __fracttautq@GCC_4.3.0 1:4.3 + __fracttida@GCC_4.3.0 1:4.3 + __fracttidq@GCC_4.3.0 1:4.3 + __fracttiha@GCC_4.3.0 1:4.3 + __fracttihq@GCC_4.3.0 1:4.3 + __fracttiqq@GCC_4.3.0 1:4.3 + __fracttisa@GCC_4.3.0 1:4.3 + __fracttisq@GCC_4.3.0 1:4.3 + __fracttita@GCC_4.3.0 1:4.3 + __fracttitq@GCC_4.3.0 1:4.3 + __fracttiuda@GCC_4.3.0 1:4.3 + __fracttiudq@GCC_4.3.0 1:4.3 + __fracttiuha@GCC_4.3.0 1:4.3 + __fracttiuhq@GCC_4.3.0 1:4.3 + __fracttiuqq@GCC_4.3.0 1:4.3 + __fracttiusa@GCC_4.3.0 1:4.3 + __fracttiusq@GCC_4.3.0 1:4.3 + __fracttiuta@GCC_4.3.0 1:4.3 + __fracttiutq@GCC_4.3.0 1:4.3 + __fracttqda@GCC_4.3.0 1:4.3 + __fracttqdf@GCC_4.3.0 1:4.3 + __fracttqdi@GCC_4.3.0 1:4.3 + __fracttqdq2@GCC_4.3.0 1:4.3 + __fracttqha@GCC_4.3.0 1:4.3 + __fracttqhi@GCC_4.3.0 1:4.3 + __fracttqhq2@GCC_4.3.0 1:4.3 + __fracttqqi@GCC_4.3.0 1:4.3 + __fracttqqq2@GCC_4.3.0 1:4.3 + __fracttqsa@GCC_4.3.0 1:4.3 + __fracttqsf@GCC_4.3.0 1:4.3 + __fracttqsi@GCC_4.3.0 1:4.3 + __fracttqsq2@GCC_4.3.0 1:4.3 + __fracttqta@GCC_4.3.0 1:4.3 + __fracttqti@GCC_4.3.0 1:4.3 + __fracttquda@GCC_4.3.0 1:4.3 + __fracttqudq@GCC_4.3.0 1:4.3 + __fracttquha@GCC_4.3.0 1:4.3 + __fracttquhq@GCC_4.3.0 1:4.3 + __fracttquqq@GCC_4.3.0 1:4.3 + __fracttqusa@GCC_4.3.0 1:4.3 + __fracttqusq@GCC_4.3.0 1:4.3 + __fracttquta@GCC_4.3.0 1:4.3 + __fracttqutq@GCC_4.3.0 1:4.3 + __fractudada@GCC_4.3.0 1:4.3 + __fractudadf@GCC_4.3.0 1:4.3 + __fractudadi@GCC_4.3.0 1:4.3 + __fractudadq@GCC_4.3.0 1:4.3 + __fractudaha@GCC_4.3.0 1:4.3 + __fractudahi@GCC_4.3.0 1:4.3 + __fractudahq@GCC_4.3.0 1:4.3 + __fractudaqi@GCC_4.3.0 1:4.3 + __fractudaqq@GCC_4.3.0 1:4.3 + __fractudasa@GCC_4.3.0 1:4.3 + __fractudasf@GCC_4.3.0 1:4.3 + __fractudasi@GCC_4.3.0 1:4.3 + __fractudasq@GCC_4.3.0 1:4.3 + __fractudata@GCC_4.3.0 1:4.3 + __fractudati@GCC_4.3.0 1:4.3 + __fractudatq@GCC_4.3.0 1:4.3 + __fractudaudq@GCC_4.3.0 1:4.3 + __fractudauha2@GCC_4.3.0 1:4.3 + __fractudauhq@GCC_4.3.0 1:4.3 + __fractudauqq@GCC_4.3.0 1:4.3 + __fractudausa2@GCC_4.3.0 1:4.3 + __fractudausq@GCC_4.3.0 1:4.3 + __fractudauta2@GCC_4.3.0 1:4.3 + __fractudautq@GCC_4.3.0 1:4.3 + __fractudqda@GCC_4.3.0 1:4.3 + __fractudqdf@GCC_4.3.0 1:4.3 + __fractudqdi@GCC_4.3.0 1:4.3 + __fractudqdq@GCC_4.3.0 1:4.3 + __fractudqha@GCC_4.3.0 1:4.3 + __fractudqhi@GCC_4.3.0 1:4.3 + __fractudqhq@GCC_4.3.0 1:4.3 + __fractudqqi@GCC_4.3.0 1:4.3 + __fractudqqq@GCC_4.3.0 1:4.3 + __fractudqsa@GCC_4.3.0 1:4.3 + __fractudqsf@GCC_4.3.0 1:4.3 + __fractudqsi@GCC_4.3.0 1:4.3 + __fractudqsq@GCC_4.3.0 1:4.3 + __fractudqta@GCC_4.3.0 1:4.3 + __fractudqti@GCC_4.3.0 1:4.3 + __fractudqtq@GCC_4.3.0 1:4.3 + __fractudquda@GCC_4.3.0 1:4.3 + __fractudquha@GCC_4.3.0 1:4.3 + __fractudquhq2@GCC_4.3.0 1:4.3 + __fractudquqq2@GCC_4.3.0 1:4.3 + __fractudqusa@GCC_4.3.0 1:4.3 + __fractudqusq2@GCC_4.3.0 1:4.3 + __fractudquta@GCC_4.3.0 1:4.3 + __fractudqutq2@GCC_4.3.0 1:4.3 + __fractuhada@GCC_4.3.0 1:4.3 + __fractuhadf@GCC_4.3.0 1:4.3 + __fractuhadi@GCC_4.3.0 1:4.3 + __fractuhadq@GCC_4.3.0 1:4.3 + __fractuhaha@GCC_4.3.0 1:4.3 + __fractuhahi@GCC_4.3.0 1:4.3 + __fractuhahq@GCC_4.3.0 1:4.3 + __fractuhaqi@GCC_4.3.0 1:4.3 + __fractuhaqq@GCC_4.3.0 1:4.3 + __fractuhasa@GCC_4.3.0 1:4.3 + __fractuhasf@GCC_4.3.0 1:4.3 + __fractuhasi@GCC_4.3.0 1:4.3 + __fractuhasq@GCC_4.3.0 1:4.3 + __fractuhata@GCC_4.3.0 1:4.3 + __fractuhati@GCC_4.3.0 1:4.3 + __fractuhatq@GCC_4.3.0 1:4.3 + __fractuhauda2@GCC_4.3.0 1:4.3 + __fractuhaudq@GCC_4.3.0 1:4.3 + __fractuhauhq@GCC_4.3.0 1:4.3 + __fractuhauqq@GCC_4.3.0 1:4.3 + __fractuhausa2@GCC_4.3.0 1:4.3 + __fractuhausq@GCC_4.3.0 1:4.3 + __fractuhauta2@GCC_4.3.0 1:4.3 + __fractuhautq@GCC_4.3.0 1:4.3 + __fractuhqda@GCC_4.3.0 1:4.3 + __fractuhqdf@GCC_4.3.0 1:4.3 + __fractuhqdi@GCC_4.3.0 1:4.3 + __fractuhqdq@GCC_4.3.0 1:4.3 + __fractuhqha@GCC_4.3.0 1:4.3 + __fractuhqhi@GCC_4.3.0 1:4.3 + __fractuhqhq@GCC_4.3.0 1:4.3 + __fractuhqqi@GCC_4.3.0 1:4.3 + __fractuhqqq@GCC_4.3.0 1:4.3 + __fractuhqsa@GCC_4.3.0 1:4.3 + __fractuhqsf@GCC_4.3.0 1:4.3 + __fractuhqsi@GCC_4.3.0 1:4.3 + __fractuhqsq@GCC_4.3.0 1:4.3 + __fractuhqta@GCC_4.3.0 1:4.3 + __fractuhqti@GCC_4.3.0 1:4.3 + __fractuhqtq@GCC_4.3.0 1:4.3 + __fractuhquda@GCC_4.3.0 1:4.3 + __fractuhqudq2@GCC_4.3.0 1:4.3 + __fractuhquha@GCC_4.3.0 1:4.3 + __fractuhquqq2@GCC_4.3.0 1:4.3 + __fractuhqusa@GCC_4.3.0 1:4.3 + __fractuhqusq2@GCC_4.3.0 1:4.3 + __fractuhquta@GCC_4.3.0 1:4.3 + __fractuhqutq2@GCC_4.3.0 1:4.3 + __fractunsdadi@GCC_4.3.0 1:4.3 + __fractunsdahi@GCC_4.3.0 1:4.3 + __fractunsdaqi@GCC_4.3.0 1:4.3 + __fractunsdasi@GCC_4.3.0 1:4.3 + __fractunsdati@GCC_4.3.0 1:4.3 + __fractunsdida@GCC_4.3.0 1:4.3 + __fractunsdidq@GCC_4.3.0 1:4.3 + __fractunsdiha@GCC_4.3.0 1:4.3 + __fractunsdihq@GCC_4.3.0 1:4.3 + __fractunsdiqq@GCC_4.3.0 1:4.3 + __fractunsdisa@GCC_4.3.0 1:4.3 + __fractunsdisq@GCC_4.3.0 1:4.3 + __fractunsdita@GCC_4.3.0 1:4.3 + __fractunsditq@GCC_4.3.0 1:4.3 + __fractunsdiuda@GCC_4.3.0 1:4.3 + __fractunsdiudq@GCC_4.3.0 1:4.3 + __fractunsdiuha@GCC_4.3.0 1:4.3 + __fractunsdiuhq@GCC_4.3.0 1:4.3 + __fractunsdiuqq@GCC_4.3.0 1:4.3 + __fractunsdiusa@GCC_4.3.0 1:4.3 + __fractunsdiusq@GCC_4.3.0 1:4.3 + __fractunsdiuta@GCC_4.3.0 1:4.3 + __fractunsdiutq@GCC_4.3.0 1:4.3 + __fractunsdqdi@GCC_4.3.0 1:4.3 + __fractunsdqhi@GCC_4.3.0 1:4.3 + __fractunsdqqi@GCC_4.3.0 1:4.3 + __fractunsdqsi@GCC_4.3.0 1:4.3 + __fractunsdqti@GCC_4.3.0 1:4.3 + __fractunshadi@GCC_4.3.0 1:4.3 + __fractunshahi@GCC_4.3.0 1:4.3 + __fractunshaqi@GCC_4.3.0 1:4.3 + __fractunshasi@GCC_4.3.0 1:4.3 + __fractunshati@GCC_4.3.0 1:4.3 + __fractunshida@GCC_4.3.0 1:4.3 + __fractunshidq@GCC_4.3.0 1:4.3 + __fractunshiha@GCC_4.3.0 1:4.3 + __fractunshihq@GCC_4.3.0 1:4.3 + __fractunshiqq@GCC_4.3.0 1:4.3 + __fractunshisa@GCC_4.3.0 1:4.3 + __fractunshisq@GCC_4.3.0 1:4.3 + __fractunshita@GCC_4.3.0 1:4.3 + __fractunshitq@GCC_4.3.0 1:4.3 + __fractunshiuda@GCC_4.3.0 1:4.3 + __fractunshiudq@GCC_4.3.0 1:4.3 + __fractunshiuha@GCC_4.3.0 1:4.3 + __fractunshiuhq@GCC_4.3.0 1:4.3 + __fractunshiuqq@GCC_4.3.0 1:4.3 + __fractunshiusa@GCC_4.3.0 1:4.3 + __fractunshiusq@GCC_4.3.0 1:4.3 + __fractunshiuta@GCC_4.3.0 1:4.3 + __fractunshiutq@GCC_4.3.0 1:4.3 + __fractunshqdi@GCC_4.3.0 1:4.3 + __fractunshqhi@GCC_4.3.0 1:4.3 + __fractunshqqi@GCC_4.3.0 1:4.3 + __fractunshqsi@GCC_4.3.0 1:4.3 + __fractunshqti@GCC_4.3.0 1:4.3 + __fractunsqida@GCC_4.3.0 1:4.3 + __fractunsqidq@GCC_4.3.0 1:4.3 + __fractunsqiha@GCC_4.3.0 1:4.3 + __fractunsqihq@GCC_4.3.0 1:4.3 + __fractunsqiqq@GCC_4.3.0 1:4.3 + __fractunsqisa@GCC_4.3.0 1:4.3 + __fractunsqisq@GCC_4.3.0 1:4.3 + __fractunsqita@GCC_4.3.0 1:4.3 + __fractunsqitq@GCC_4.3.0 1:4.3 + __fractunsqiuda@GCC_4.3.0 1:4.3 + __fractunsqiudq@GCC_4.3.0 1:4.3 + __fractunsqiuha@GCC_4.3.0 1:4.3 + __fractunsqiuhq@GCC_4.3.0 1:4.3 + __fractunsqiuqq@GCC_4.3.0 1:4.3 + __fractunsqiusa@GCC_4.3.0 1:4.3 + __fractunsqiusq@GCC_4.3.0 1:4.3 + __fractunsqiuta@GCC_4.3.0 1:4.3 + __fractunsqiutq@GCC_4.3.0 1:4.3 + __fractunsqqdi@GCC_4.3.0 1:4.3 + __fractunsqqhi@GCC_4.3.0 1:4.3 + __fractunsqqqi@GCC_4.3.0 1:4.3 + __fractunsqqsi@GCC_4.3.0 1:4.3 + __fractunsqqti@GCC_4.3.0 1:4.3 + __fractunssadi@GCC_4.3.0 1:4.3 + __fractunssahi@GCC_4.3.0 1:4.3 + __fractunssaqi@GCC_4.3.0 1:4.3 + __fractunssasi@GCC_4.3.0 1:4.3 + __fractunssati@GCC_4.3.0 1:4.3 + __fractunssida@GCC_4.3.0 1:4.3 + __fractunssidq@GCC_4.3.0 1:4.3 + __fractunssiha@GCC_4.3.0 1:4.3 + __fractunssihq@GCC_4.3.0 1:4.3 + __fractunssiqq@GCC_4.3.0 1:4.3 + __fractunssisa@GCC_4.3.0 1:4.3 + __fractunssisq@GCC_4.3.0 1:4.3 + __fractunssita@GCC_4.3.0 1:4.3 + __fractunssitq@GCC_4.3.0 1:4.3 + __fractunssiuda@GCC_4.3.0 1:4.3 + __fractunssiudq@GCC_4.3.0 1:4.3 + __fractunssiuha@GCC_4.3.0 1:4.3 + __fractunssiuhq@GCC_4.3.0 1:4.3 + __fractunssiuqq@GCC_4.3.0 1:4.3 + __fractunssiusa@GCC_4.3.0 1:4.3 + __fractunssiusq@GCC_4.3.0 1:4.3 + __fractunssiuta@GCC_4.3.0 1:4.3 + __fractunssiutq@GCC_4.3.0 1:4.3 + __fractunssqdi@GCC_4.3.0 1:4.3 + __fractunssqhi@GCC_4.3.0 1:4.3 + __fractunssqqi@GCC_4.3.0 1:4.3 + __fractunssqsi@GCC_4.3.0 1:4.3 + __fractunssqti@GCC_4.3.0 1:4.3 + __fractunstadi@GCC_4.3.0 1:4.3 + __fractunstahi@GCC_4.3.0 1:4.3 + __fractunstaqi@GCC_4.3.0 1:4.3 + __fractunstasi@GCC_4.3.0 1:4.3 + __fractunstati@GCC_4.3.0 1:4.3 + __fractunstida@GCC_4.3.0 1:4.3 + __fractunstidq@GCC_4.3.0 1:4.3 + __fractunstiha@GCC_4.3.0 1:4.3 + __fractunstihq@GCC_4.3.0 1:4.3 + __fractunstiqq@GCC_4.3.0 1:4.3 + __fractunstisa@GCC_4.3.0 1:4.3 + __fractunstisq@GCC_4.3.0 1:4.3 + __fractunstita@GCC_4.3.0 1:4.3 + __fractunstitq@GCC_4.3.0 1:4.3 + __fractunstiuda@GCC_4.3.0 1:4.3 + __fractunstiudq@GCC_4.3.0 1:4.3 + __fractunstiuha@GCC_4.3.0 1:4.3 + __fractunstiuhq@GCC_4.3.0 1:4.3 + __fractunstiuqq@GCC_4.3.0 1:4.3 + __fractunstiusa@GCC_4.3.0 1:4.3 + __fractunstiusq@GCC_4.3.0 1:4.3 + __fractunstiuta@GCC_4.3.0 1:4.3 + __fractunstiutq@GCC_4.3.0 1:4.3 + __fractunstqdi@GCC_4.3.0 1:4.3 + __fractunstqhi@GCC_4.3.0 1:4.3 + __fractunstqqi@GCC_4.3.0 1:4.3 + __fractunstqsi@GCC_4.3.0 1:4.3 + __fractunstqti@GCC_4.3.0 1:4.3 + __fractunsudadi@GCC_4.3.0 1:4.3 + __fractunsudahi@GCC_4.3.0 1:4.3 + __fractunsudaqi@GCC_4.3.0 1:4.3 + __fractunsudasi@GCC_4.3.0 1:4.3 + __fractunsudati@GCC_4.3.0 1:4.3 + __fractunsudqdi@GCC_4.3.0 1:4.3 + __fractunsudqhi@GCC_4.3.0 1:4.3 + __fractunsudqqi@GCC_4.3.0 1:4.3 + __fractunsudqsi@GCC_4.3.0 1:4.3 + __fractunsudqti@GCC_4.3.0 1:4.3 + __fractunsuhadi@GCC_4.3.0 1:4.3 + __fractunsuhahi@GCC_4.3.0 1:4.3 + __fractunsuhaqi@GCC_4.3.0 1:4.3 + __fractunsuhasi@GCC_4.3.0 1:4.3 + __fractunsuhati@GCC_4.3.0 1:4.3 + __fractunsuhqdi@GCC_4.3.0 1:4.3 + __fractunsuhqhi@GCC_4.3.0 1:4.3 + __fractunsuhqqi@GCC_4.3.0 1:4.3 + __fractunsuhqsi@GCC_4.3.0 1:4.3 + __fractunsuhqti@GCC_4.3.0 1:4.3 + __fractunsuqqdi@GCC_4.3.0 1:4.3 + __fractunsuqqhi@GCC_4.3.0 1:4.3 + __fractunsuqqqi@GCC_4.3.0 1:4.3 + __fractunsuqqsi@GCC_4.3.0 1:4.3 + __fractunsuqqti@GCC_4.3.0 1:4.3 + __fractunsusadi@GCC_4.3.0 1:4.3 + __fractunsusahi@GCC_4.3.0 1:4.3 + __fractunsusaqi@GCC_4.3.0 1:4.3 + __fractunsusasi@GCC_4.3.0 1:4.3 + __fractunsusati@GCC_4.3.0 1:4.3 + __fractunsusqdi@GCC_4.3.0 1:4.3 + __fractunsusqhi@GCC_4.3.0 1:4.3 + __fractunsusqqi@GCC_4.3.0 1:4.3 + __fractunsusqsi@GCC_4.3.0 1:4.3 + __fractunsusqti@GCC_4.3.0 1:4.3 + __fractunsutadi@GCC_4.3.0 1:4.3 + __fractunsutahi@GCC_4.3.0 1:4.3 + __fractunsutaqi@GCC_4.3.0 1:4.3 + __fractunsutasi@GCC_4.3.0 1:4.3 + __fractunsutati@GCC_4.3.0 1:4.3 + __fractunsutqdi@GCC_4.3.0 1:4.3 + __fractunsutqhi@GCC_4.3.0 1:4.3 + __fractunsutqqi@GCC_4.3.0 1:4.3 + __fractunsutqsi@GCC_4.3.0 1:4.3 + __fractunsutqti@GCC_4.3.0 1:4.3 + __fractuqqda@GCC_4.3.0 1:4.3 + __fractuqqdf@GCC_4.3.0 1:4.3 + __fractuqqdi@GCC_4.3.0 1:4.3 + __fractuqqdq@GCC_4.3.0 1:4.3 + __fractuqqha@GCC_4.3.0 1:4.3 + __fractuqqhi@GCC_4.3.0 1:4.3 + __fractuqqhq@GCC_4.3.0 1:4.3 + __fractuqqqi@GCC_4.3.0 1:4.3 + __fractuqqqq@GCC_4.3.0 1:4.3 + __fractuqqsa@GCC_4.3.0 1:4.3 + __fractuqqsf@GCC_4.3.0 1:4.3 + __fractuqqsi@GCC_4.3.0 1:4.3 + __fractuqqsq@GCC_4.3.0 1:4.3 + __fractuqqta@GCC_4.3.0 1:4.3 + __fractuqqti@GCC_4.3.0 1:4.3 + __fractuqqtq@GCC_4.3.0 1:4.3 + __fractuqquda@GCC_4.3.0 1:4.3 + __fractuqqudq2@GCC_4.3.0 1:4.3 + __fractuqquha@GCC_4.3.0 1:4.3 + __fractuqquhq2@GCC_4.3.0 1:4.3 + __fractuqqusa@GCC_4.3.0 1:4.3 + __fractuqqusq2@GCC_4.3.0 1:4.3 + __fractuqquta@GCC_4.3.0 1:4.3 + __fractuqqutq2@GCC_4.3.0 1:4.3 + __fractusada@GCC_4.3.0 1:4.3 + __fractusadf@GCC_4.3.0 1:4.3 + __fractusadi@GCC_4.3.0 1:4.3 + __fractusadq@GCC_4.3.0 1:4.3 + __fractusaha@GCC_4.3.0 1:4.3 + __fractusahi@GCC_4.3.0 1:4.3 + __fractusahq@GCC_4.3.0 1:4.3 + __fractusaqi@GCC_4.3.0 1:4.3 + __fractusaqq@GCC_4.3.0 1:4.3 + __fractusasa@GCC_4.3.0 1:4.3 + __fractusasf@GCC_4.3.0 1:4.3 + __fractusasi@GCC_4.3.0 1:4.3 + __fractusasq@GCC_4.3.0 1:4.3 + __fractusata@GCC_4.3.0 1:4.3 + __fractusati@GCC_4.3.0 1:4.3 + __fractusatq@GCC_4.3.0 1:4.3 + __fractusauda2@GCC_4.3.0 1:4.3 + __fractusaudq@GCC_4.3.0 1:4.3 + __fractusauha2@GCC_4.3.0 1:4.3 + __fractusauhq@GCC_4.3.0 1:4.3 + __fractusauqq@GCC_4.3.0 1:4.3 + __fractusausq@GCC_4.3.0 1:4.3 + __fractusauta2@GCC_4.3.0 1:4.3 + __fractusautq@GCC_4.3.0 1:4.3 + __fractusqda@GCC_4.3.0 1:4.3 + __fractusqdf@GCC_4.3.0 1:4.3 + __fractusqdi@GCC_4.3.0 1:4.3 + __fractusqdq@GCC_4.3.0 1:4.3 + __fractusqha@GCC_4.3.0 1:4.3 + __fractusqhi@GCC_4.3.0 1:4.3 + __fractusqhq@GCC_4.3.0 1:4.3 + __fractusqqi@GCC_4.3.0 1:4.3 + __fractusqqq@GCC_4.3.0 1:4.3 + __fractusqsa@GCC_4.3.0 1:4.3 + __fractusqsf@GCC_4.3.0 1:4.3 + __fractusqsi@GCC_4.3.0 1:4.3 + __fractusqsq@GCC_4.3.0 1:4.3 + __fractusqta@GCC_4.3.0 1:4.3 + __fractusqti@GCC_4.3.0 1:4.3 + __fractusqtq@GCC_4.3.0 1:4.3 + __fractusquda@GCC_4.3.0 1:4.3 + __fractusqudq2@GCC_4.3.0 1:4.3 + __fractusquha@GCC_4.3.0 1:4.3 + __fractusquhq2@GCC_4.3.0 1:4.3 + __fractusquqq2@GCC_4.3.0 1:4.3 + __fractusqusa@GCC_4.3.0 1:4.3 + __fractusquta@GCC_4.3.0 1:4.3 + __fractusqutq2@GCC_4.3.0 1:4.3 + __fractutada@GCC_4.3.0 1:4.3 + __fractutadf@GCC_4.3.0 1:4.3 + __fractutadi@GCC_4.3.0 1:4.3 + __fractutadq@GCC_4.3.0 1:4.3 + __fractutaha@GCC_4.3.0 1:4.3 + __fractutahi@GCC_4.3.0 1:4.3 + __fractutahq@GCC_4.3.0 1:4.3 + __fractutaqi@GCC_4.3.0 1:4.3 + __fractutaqq@GCC_4.3.0 1:4.3 + __fractutasa@GCC_4.3.0 1:4.3 + __fractutasf@GCC_4.3.0 1:4.3 + __fractutasi@GCC_4.3.0 1:4.3 + __fractutasq@GCC_4.3.0 1:4.3 + __fractutata@GCC_4.3.0 1:4.3 + __fractutati@GCC_4.3.0 1:4.3 + __fractutatq@GCC_4.3.0 1:4.3 + __fractutauda2@GCC_4.3.0 1:4.3 + __fractutaudq@GCC_4.3.0 1:4.3 + __fractutauha2@GCC_4.3.0 1:4.3 + __fractutauhq@GCC_4.3.0 1:4.3 + __fractutauqq@GCC_4.3.0 1:4.3 + __fractutausa2@GCC_4.3.0 1:4.3 + __fractutausq@GCC_4.3.0 1:4.3 + __fractutautq@GCC_4.3.0 1:4.3 + __fractutqda@GCC_4.3.0 1:4.3 + __fractutqdf@GCC_4.3.0 1:4.3 + __fractutqdi@GCC_4.3.0 1:4.3 + __fractutqdq@GCC_4.3.0 1:4.3 + __fractutqha@GCC_4.3.0 1:4.3 + __fractutqhi@GCC_4.3.0 1:4.3 + __fractutqhq@GCC_4.3.0 1:4.3 + __fractutqqi@GCC_4.3.0 1:4.3 + __fractutqqq@GCC_4.3.0 1:4.3 + __fractutqsa@GCC_4.3.0 1:4.3 + __fractutqsf@GCC_4.3.0 1:4.3 + __fractutqsi@GCC_4.3.0 1:4.3 + __fractutqsq@GCC_4.3.0 1:4.3 + __fractutqta@GCC_4.3.0 1:4.3 + __fractutqti@GCC_4.3.0 1:4.3 + __fractutqtq@GCC_4.3.0 1:4.3 + __fractutquda@GCC_4.3.0 1:4.3 + __fractutqudq2@GCC_4.3.0 1:4.3 + __fractutquha@GCC_4.3.0 1:4.3 + __fractutquhq2@GCC_4.3.0 1:4.3 + __fractutquqq2@GCC_4.3.0 1:4.3 + __fractutqusa@GCC_4.3.0 1:4.3 + __fractutqusq2@GCC_4.3.0 1:4.3 + __fractutquta@GCC_4.3.0 1:4.3 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __gedf2@GCC_3.0 1:4.1.1 + __gesf2@GCC_3.0 1:4.1.1 + __getf2@GCC_3.0 1:4.1.1 + __gtdf2@GCC_3.0 1:4.1.1 + __gtsf2@GCC_3.0 1:4.1.1 + __gttf2@GCC_3.0 1:4.1.1 + __ledf2@GCC_3.0 1:4.1.1 + __lesf2@GCC_3.0 1:4.1.1 + __letf2@GCC_3.0 1:4.1.1 + __lshrti3@GCC_3.0 1:4.1.1 + __lshruda3@GCC_4.3.0 1:4.3 + __lshrudq3@GCC_4.3.0 1:4.3 + __lshruha3@GCC_4.3.0 1:4.3 + __lshruhq3@GCC_4.3.0 1:4.3 + __lshruqq3@GCC_4.3.0 1:4.3 + __lshrusa3@GCC_4.3.0 1:4.3 + __lshrusq3@GCC_4.3.0 1:4.3 + __lshruta3@GCC_4.3.0 1:4.3 + __lshrutq3@GCC_4.3.0 1:4.3 + __ltdf2@GCC_3.0 1:4.1.1 + __ltsf2@GCC_3.0 1:4.1.1 + __lttf2@GCC_3.0 1:4.1.1 + __modti3@GCC_3.0 1:4.1.1 + __mulda3@GCC_4.3.0 1:4.3 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldf3@GCC_3.0 1:4.1.1 + __muldq3@GCC_4.3.0 1:4.3 + __mulha3@GCC_4.3.0 1:4.3 + __mulhq3@GCC_4.3.0 1:4.3 + __mulqq3@GCC_4.3.0 1:4.3 + __mulsa3@GCC_4.3.0 1:4.3 + __mulsc3@GCC_4.0.0 1:4.1.1 + __mulsf3@GCC_3.0 1:4.1.1 + __mulsq3@GCC_4.3.0 1:4.3 + __multa3@GCC_4.3.0 1:4.3 + __multc3@GCC_4.0.0 1:4.1.1 + __multf3@GCC_3.0 1:4.1.1 + __multi3@GCC_3.0 1:4.1.1 + __multq3@GCC_4.3.0 1:4.3 + __muluda3@GCC_4.3.0 1:4.3 + __muludq3@GCC_4.3.0 1:4.3 + __muluha3@GCC_4.3.0 1:4.3 + __muluhq3@GCC_4.3.0 1:4.3 + __muluqq3@GCC_4.3.0 1:4.3 + __mulusa3@GCC_4.3.0 1:4.3 + __mulusq3@GCC_4.3.0 1:4.3 + __muluta3@GCC_4.3.0 1:4.3 + __mulutq3@GCC_4.3.0 1:4.3 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulvti3@GCC_3.4.4 1:4.1.1 + __nedf2@GCC_3.0 1:4.1.1 + __negda2@GCC_4.3.0 1:4.3 + __negdf2@GCC_3.0 1:4.1.1 + __negdq2@GCC_4.3.0 1:4.3 + __negha2@GCC_4.3.0 1:4.3 + __neghq2@GCC_4.3.0 1:4.3 + __negqq2@GCC_4.3.0 1:4.3 + __negsa2@GCC_4.3.0 1:4.3 + __negsf2@GCC_3.0 1:4.1.1 + __negsq2@GCC_4.3.0 1:4.3 + __negta2@GCC_4.3.0 1:4.3 + __negtf2@GCC_3.0 1:4.1.1 + __negti2@GCC_3.0 1:4.1.1 + __negtq2@GCC_4.3.0 1:4.3 + __neguda2@GCC_4.3.0 1:4.3 + __negudq2@GCC_4.3.0 1:4.3 + __neguha2@GCC_4.3.0 1:4.3 + __neguhq2@GCC_4.3.0 1:4.3 + __neguqq2@GCC_4.3.0 1:4.3 + __negusa2@GCC_4.3.0 1:4.3 + __negusq2@GCC_4.3.0 1:4.3 + __neguta2@GCC_4.3.0 1:4.3 + __negutq2@GCC_4.3.0 1:4.3 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __negvti2@GCC_3.4.4 1:4.1.1 + __nesf2@GCC_3.0 1:4.1.1 + __netf2@GCC_3.0 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __parityti2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountti2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.0.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __satfractdadq@GCC_4.3.0 1:4.3 + __satfractdaha2@GCC_4.3.0 1:4.3 + __satfractdahq@GCC_4.3.0 1:4.3 + __satfractdaqq@GCC_4.3.0 1:4.3 + __satfractdasa2@GCC_4.3.0 1:4.3 + __satfractdasq@GCC_4.3.0 1:4.3 + __satfractdata2@GCC_4.3.0 1:4.3 + __satfractdatq@GCC_4.3.0 1:4.3 + __satfractdauda@GCC_4.3.0 1:4.3 + __satfractdaudq@GCC_4.3.0 1:4.3 + __satfractdauha@GCC_4.3.0 1:4.3 + __satfractdauhq@GCC_4.3.0 1:4.3 + __satfractdauqq@GCC_4.3.0 1:4.3 + __satfractdausa@GCC_4.3.0 1:4.3 + __satfractdausq@GCC_4.3.0 1:4.3 + __satfractdauta@GCC_4.3.0 1:4.3 + __satfractdautq@GCC_4.3.0 1:4.3 + __satfractdfda@GCC_4.3.0 1:4.3 + __satfractdfdq@GCC_4.3.0 1:4.3 + __satfractdfha@GCC_4.3.0 1:4.3 + __satfractdfhq@GCC_4.3.0 1:4.3 + __satfractdfqq@GCC_4.3.0 1:4.3 + __satfractdfsa@GCC_4.3.0 1:4.3 + __satfractdfsq@GCC_4.3.0 1:4.3 + __satfractdfta@GCC_4.3.0 1:4.3 + __satfractdftq@GCC_4.3.0 1:4.3 + __satfractdfuda@GCC_4.3.0 1:4.3 + __satfractdfudq@GCC_4.3.0 1:4.3 + __satfractdfuha@GCC_4.3.0 1:4.3 + __satfractdfuhq@GCC_4.3.0 1:4.3 + __satfractdfuqq@GCC_4.3.0 1:4.3 + __satfractdfusa@GCC_4.3.0 1:4.3 + __satfractdfusq@GCC_4.3.0 1:4.3 + __satfractdfuta@GCC_4.3.0 1:4.3 + __satfractdfutq@GCC_4.3.0 1:4.3 + __satfractdida@GCC_4.3.0 1:4.3 + __satfractdidq@GCC_4.3.0 1:4.3 + __satfractdiha@GCC_4.3.0 1:4.3 + __satfractdihq@GCC_4.3.0 1:4.3 + __satfractdiqq@GCC_4.3.0 1:4.3 + __satfractdisa@GCC_4.3.0 1:4.3 + __satfractdisq@GCC_4.3.0 1:4.3 + __satfractdita@GCC_4.3.0 1:4.3 + __satfractditq@GCC_4.3.0 1:4.3 + __satfractdiuda@GCC_4.3.0 1:4.3 + __satfractdiudq@GCC_4.3.0 1:4.3 + __satfractdiuha@GCC_4.3.0 1:4.3 + __satfractdiuhq@GCC_4.3.0 1:4.3 + __satfractdiuqq@GCC_4.3.0 1:4.3 + __satfractdiusa@GCC_4.3.0 1:4.3 + __satfractdiusq@GCC_4.3.0 1:4.3 + __satfractdiuta@GCC_4.3.0 1:4.3 + __satfractdiutq@GCC_4.3.0 1:4.3 + __satfractdqda@GCC_4.3.0 1:4.3 + __satfractdqha@GCC_4.3.0 1:4.3 + __satfractdqhq2@GCC_4.3.0 1:4.3 + __satfractdqqq2@GCC_4.3.0 1:4.3 + __satfractdqsa@GCC_4.3.0 1:4.3 + __satfractdqsq2@GCC_4.3.0 1:4.3 + __satfractdqta@GCC_4.3.0 1:4.3 + __satfractdqtq2@GCC_4.3.0 1:4.3 + __satfractdquda@GCC_4.3.0 1:4.3 + __satfractdqudq@GCC_4.3.0 1:4.3 + __satfractdquha@GCC_4.3.0 1:4.3 + __satfractdquhq@GCC_4.3.0 1:4.3 + __satfractdquqq@GCC_4.3.0 1:4.3 + __satfractdqusa@GCC_4.3.0 1:4.3 + __satfractdqusq@GCC_4.3.0 1:4.3 + __satfractdquta@GCC_4.3.0 1:4.3 + __satfractdqutq@GCC_4.3.0 1:4.3 + __satfracthada2@GCC_4.3.0 1:4.3 + __satfracthadq@GCC_4.3.0 1:4.3 + __satfracthahq@GCC_4.3.0 1:4.3 + __satfracthaqq@GCC_4.3.0 1:4.3 + __satfracthasa2@GCC_4.3.0 1:4.3 + __satfracthasq@GCC_4.3.0 1:4.3 + __satfracthata2@GCC_4.3.0 1:4.3 + __satfracthatq@GCC_4.3.0 1:4.3 + __satfracthauda@GCC_4.3.0 1:4.3 + __satfracthaudq@GCC_4.3.0 1:4.3 + __satfracthauha@GCC_4.3.0 1:4.3 + __satfracthauhq@GCC_4.3.0 1:4.3 + __satfracthauqq@GCC_4.3.0 1:4.3 + __satfracthausa@GCC_4.3.0 1:4.3 + __satfracthausq@GCC_4.3.0 1:4.3 + __satfracthauta@GCC_4.3.0 1:4.3 + __satfracthautq@GCC_4.3.0 1:4.3 + __satfracthida@GCC_4.3.0 1:4.3 + __satfracthidq@GCC_4.3.0 1:4.3 + __satfracthiha@GCC_4.3.0 1:4.3 + __satfracthihq@GCC_4.3.0 1:4.3 + __satfracthiqq@GCC_4.3.0 1:4.3 + __satfracthisa@GCC_4.3.0 1:4.3 + __satfracthisq@GCC_4.3.0 1:4.3 + __satfracthita@GCC_4.3.0 1:4.3 + __satfracthitq@GCC_4.3.0 1:4.3 + __satfracthiuda@GCC_4.3.0 1:4.3 + __satfracthiudq@GCC_4.3.0 1:4.3 + __satfracthiuha@GCC_4.3.0 1:4.3 + __satfracthiuhq@GCC_4.3.0 1:4.3 + __satfracthiuqq@GCC_4.3.0 1:4.3 + __satfracthiusa@GCC_4.3.0 1:4.3 + __satfracthiusq@GCC_4.3.0 1:4.3 + __satfracthiuta@GCC_4.3.0 1:4.3 + __satfracthiutq@GCC_4.3.0 1:4.3 + __satfracthqda@GCC_4.3.0 1:4.3 + __satfracthqdq2@GCC_4.3.0 1:4.3 + __satfracthqha@GCC_4.3.0 1:4.3 + __satfracthqqq2@GCC_4.3.0 1:4.3 + __satfracthqsa@GCC_4.3.0 1:4.3 + __satfracthqsq2@GCC_4.3.0 1:4.3 + __satfracthqta@GCC_4.3.0 1:4.3 + __satfracthqtq2@GCC_4.3.0 1:4.3 + __satfracthquda@GCC_4.3.0 1:4.3 + __satfracthqudq@GCC_4.3.0 1:4.3 + __satfracthquha@GCC_4.3.0 1:4.3 + __satfracthquhq@GCC_4.3.0 1:4.3 + __satfracthquqq@GCC_4.3.0 1:4.3 + __satfracthqusa@GCC_4.3.0 1:4.3 + __satfracthqusq@GCC_4.3.0 1:4.3 + __satfracthquta@GCC_4.3.0 1:4.3 + __satfracthqutq@GCC_4.3.0 1:4.3 + __satfractqida@GCC_4.3.0 1:4.3 + __satfractqidq@GCC_4.3.0 1:4.3 + __satfractqiha@GCC_4.3.0 1:4.3 + __satfractqihq@GCC_4.3.0 1:4.3 + __satfractqiqq@GCC_4.3.0 1:4.3 + __satfractqisa@GCC_4.3.0 1:4.3 + __satfractqisq@GCC_4.3.0 1:4.3 + __satfractqita@GCC_4.3.0 1:4.3 + __satfractqitq@GCC_4.3.0 1:4.3 + __satfractqiuda@GCC_4.3.0 1:4.3 + __satfractqiudq@GCC_4.3.0 1:4.3 + __satfractqiuha@GCC_4.3.0 1:4.3 + __satfractqiuhq@GCC_4.3.0 1:4.3 + __satfractqiuqq@GCC_4.3.0 1:4.3 + __satfractqiusa@GCC_4.3.0 1:4.3 + __satfractqiusq@GCC_4.3.0 1:4.3 + __satfractqiuta@GCC_4.3.0 1:4.3 + __satfractqiutq@GCC_4.3.0 1:4.3 + __satfractqqda@GCC_4.3.0 1:4.3 + __satfractqqdq2@GCC_4.3.0 1:4.3 + __satfractqqha@GCC_4.3.0 1:4.3 + __satfractqqhq2@GCC_4.3.0 1:4.3 + __satfractqqsa@GCC_4.3.0 1:4.3 + __satfractqqsq2@GCC_4.3.0 1:4.3 + __satfractqqta@GCC_4.3.0 1:4.3 + __satfractqqtq2@GCC_4.3.0 1:4.3 + __satfractqquda@GCC_4.3.0 1:4.3 + __satfractqqudq@GCC_4.3.0 1:4.3 + __satfractqquha@GCC_4.3.0 1:4.3 + __satfractqquhq@GCC_4.3.0 1:4.3 + __satfractqquqq@GCC_4.3.0 1:4.3 + __satfractqqusa@GCC_4.3.0 1:4.3 + __satfractqqusq@GCC_4.3.0 1:4.3 + __satfractqquta@GCC_4.3.0 1:4.3 + __satfractqqutq@GCC_4.3.0 1:4.3 + __satfractsada2@GCC_4.3.0 1:4.3 + __satfractsadq@GCC_4.3.0 1:4.3 + __satfractsaha2@GCC_4.3.0 1:4.3 + __satfractsahq@GCC_4.3.0 1:4.3 + __satfractsaqq@GCC_4.3.0 1:4.3 + __satfractsasq@GCC_4.3.0 1:4.3 + __satfractsata2@GCC_4.3.0 1:4.3 + __satfractsatq@GCC_4.3.0 1:4.3 + __satfractsauda@GCC_4.3.0 1:4.3 + __satfractsaudq@GCC_4.3.0 1:4.3 + __satfractsauha@GCC_4.3.0 1:4.3 + __satfractsauhq@GCC_4.3.0 1:4.3 + __satfractsauqq@GCC_4.3.0 1:4.3 + __satfractsausa@GCC_4.3.0 1:4.3 + __satfractsausq@GCC_4.3.0 1:4.3 + __satfractsauta@GCC_4.3.0 1:4.3 + __satfractsautq@GCC_4.3.0 1:4.3 + __satfractsfda@GCC_4.3.0 1:4.3 + __satfractsfdq@GCC_4.3.0 1:4.3 + __satfractsfha@GCC_4.3.0 1:4.3 + __satfractsfhq@GCC_4.3.0 1:4.3 + __satfractsfqq@GCC_4.3.0 1:4.3 + __satfractsfsa@GCC_4.3.0 1:4.3 + __satfractsfsq@GCC_4.3.0 1:4.3 + __satfractsfta@GCC_4.3.0 1:4.3 + __satfractsftq@GCC_4.3.0 1:4.3 + __satfractsfuda@GCC_4.3.0 1:4.3 + __satfractsfudq@GCC_4.3.0 1:4.3 + __satfractsfuha@GCC_4.3.0 1:4.3 + __satfractsfuhq@GCC_4.3.0 1:4.3 + __satfractsfuqq@GCC_4.3.0 1:4.3 + __satfractsfusa@GCC_4.3.0 1:4.3 + __satfractsfusq@GCC_4.3.0 1:4.3 + __satfractsfuta@GCC_4.3.0 1:4.3 + __satfractsfutq@GCC_4.3.0 1:4.3 + __satfractsida@GCC_4.3.0 1:4.3 + __satfractsidq@GCC_4.3.0 1:4.3 + __satfractsiha@GCC_4.3.0 1:4.3 + __satfractsihq@GCC_4.3.0 1:4.3 + __satfractsiqq@GCC_4.3.0 1:4.3 + __satfractsisa@GCC_4.3.0 1:4.3 + __satfractsisq@GCC_4.3.0 1:4.3 + __satfractsita@GCC_4.3.0 1:4.3 + __satfractsitq@GCC_4.3.0 1:4.3 + __satfractsiuda@GCC_4.3.0 1:4.3 + __satfractsiudq@GCC_4.3.0 1:4.3 + __satfractsiuha@GCC_4.3.0 1:4.3 + __satfractsiuhq@GCC_4.3.0 1:4.3 + __satfractsiuqq@GCC_4.3.0 1:4.3 + __satfractsiusa@GCC_4.3.0 1:4.3 + __satfractsiusq@GCC_4.3.0 1:4.3 + __satfractsiuta@GCC_4.3.0 1:4.3 + __satfractsiutq@GCC_4.3.0 1:4.3 + __satfractsqda@GCC_4.3.0 1:4.3 + __satfractsqdq2@GCC_4.3.0 1:4.3 + __satfractsqha@GCC_4.3.0 1:4.3 + __satfractsqhq2@GCC_4.3.0 1:4.3 + __satfractsqqq2@GCC_4.3.0 1:4.3 + __satfractsqsa@GCC_4.3.0 1:4.3 + __satfractsqta@GCC_4.3.0 1:4.3 + __satfractsqtq2@GCC_4.3.0 1:4.3 + __satfractsquda@GCC_4.3.0 1:4.3 + __satfractsqudq@GCC_4.3.0 1:4.3 + __satfractsquha@GCC_4.3.0 1:4.3 + __satfractsquhq@GCC_4.3.0 1:4.3 + __satfractsquqq@GCC_4.3.0 1:4.3 + __satfractsqusa@GCC_4.3.0 1:4.3 + __satfractsqusq@GCC_4.3.0 1:4.3 + __satfractsquta@GCC_4.3.0 1:4.3 + __satfractsqutq@GCC_4.3.0 1:4.3 + __satfracttada2@GCC_4.3.0 1:4.3 + __satfracttadq@GCC_4.3.0 1:4.3 + __satfracttaha2@GCC_4.3.0 1:4.3 + __satfracttahq@GCC_4.3.0 1:4.3 + __satfracttaqq@GCC_4.3.0 1:4.3 + __satfracttasa2@GCC_4.3.0 1:4.3 + __satfracttasq@GCC_4.3.0 1:4.3 + __satfracttatq@GCC_4.3.0 1:4.3 + __satfracttauda@GCC_4.3.0 1:4.3 + __satfracttaudq@GCC_4.3.0 1:4.3 + __satfracttauha@GCC_4.3.0 1:4.3 + __satfracttauhq@GCC_4.3.0 1:4.3 + __satfracttauqq@GCC_4.3.0 1:4.3 + __satfracttausa@GCC_4.3.0 1:4.3 + __satfracttausq@GCC_4.3.0 1:4.3 + __satfracttauta@GCC_4.3.0 1:4.3 + __satfracttautq@GCC_4.3.0 1:4.3 + __satfracttida@GCC_4.3.0 1:4.3 + __satfracttidq@GCC_4.3.0 1:4.3 + __satfracttiha@GCC_4.3.0 1:4.3 + __satfracttihq@GCC_4.3.0 1:4.3 + __satfracttiqq@GCC_4.3.0 1:4.3 + __satfracttisa@GCC_4.3.0 1:4.3 + __satfracttisq@GCC_4.3.0 1:4.3 + __satfracttita@GCC_4.3.0 1:4.3 + __satfracttitq@GCC_4.3.0 1:4.3 + __satfracttiuda@GCC_4.3.0 1:4.3 + __satfracttiudq@GCC_4.3.0 1:4.3 + __satfracttiuha@GCC_4.3.0 1:4.3 + __satfracttiuhq@GCC_4.3.0 1:4.3 + __satfracttiuqq@GCC_4.3.0 1:4.3 + __satfracttiusa@GCC_4.3.0 1:4.3 + __satfracttiusq@GCC_4.3.0 1:4.3 + __satfracttiuta@GCC_4.3.0 1:4.3 + __satfracttiutq@GCC_4.3.0 1:4.3 + __satfracttqda@GCC_4.3.0 1:4.3 + __satfracttqdq2@GCC_4.3.0 1:4.3 + __satfracttqha@GCC_4.3.0 1:4.3 + __satfracttqhq2@GCC_4.3.0 1:4.3 + __satfracttqqq2@GCC_4.3.0 1:4.3 + __satfracttqsa@GCC_4.3.0 1:4.3 + __satfracttqsq2@GCC_4.3.0 1:4.3 + __satfracttqta@GCC_4.3.0 1:4.3 + __satfracttquda@GCC_4.3.0 1:4.3 + __satfracttqudq@GCC_4.3.0 1:4.3 + __satfracttquha@GCC_4.3.0 1:4.3 + __satfracttquhq@GCC_4.3.0 1:4.3 + __satfracttquqq@GCC_4.3.0 1:4.3 + __satfracttqusa@GCC_4.3.0 1:4.3 + __satfracttqusq@GCC_4.3.0 1:4.3 + __satfracttquta@GCC_4.3.0 1:4.3 + __satfracttqutq@GCC_4.3.0 1:4.3 + __satfractudada@GCC_4.3.0 1:4.3 + __satfractudadq@GCC_4.3.0 1:4.3 + __satfractudaha@GCC_4.3.0 1:4.3 + __satfractudahq@GCC_4.3.0 1:4.3 + __satfractudaqq@GCC_4.3.0 1:4.3 + __satfractudasa@GCC_4.3.0 1:4.3 + __satfractudasq@GCC_4.3.0 1:4.3 + __satfractudata@GCC_4.3.0 1:4.3 + __satfractudatq@GCC_4.3.0 1:4.3 + __satfractudaudq@GCC_4.3.0 1:4.3 + __satfractudauha2@GCC_4.3.0 1:4.3 + __satfractudauhq@GCC_4.3.0 1:4.3 + __satfractudauqq@GCC_4.3.0 1:4.3 + __satfractudausa2@GCC_4.3.0 1:4.3 + __satfractudausq@GCC_4.3.0 1:4.3 + __satfractudauta2@GCC_4.3.0 1:4.3 + __satfractudautq@GCC_4.3.0 1:4.3 + __satfractudqda@GCC_4.3.0 1:4.3 + __satfractudqdq@GCC_4.3.0 1:4.3 + __satfractudqha@GCC_4.3.0 1:4.3 + __satfractudqhq@GCC_4.3.0 1:4.3 + __satfractudqqq@GCC_4.3.0 1:4.3 + __satfractudqsa@GCC_4.3.0 1:4.3 + __satfractudqsq@GCC_4.3.0 1:4.3 + __satfractudqta@GCC_4.3.0 1:4.3 + __satfractudqtq@GCC_4.3.0 1:4.3 + __satfractudquda@GCC_4.3.0 1:4.3 + __satfractudquha@GCC_4.3.0 1:4.3 + __satfractudquhq2@GCC_4.3.0 1:4.3 + __satfractudquqq2@GCC_4.3.0 1:4.3 + __satfractudqusa@GCC_4.3.0 1:4.3 + __satfractudqusq2@GCC_4.3.0 1:4.3 + __satfractudquta@GCC_4.3.0 1:4.3 + __satfractudqutq2@GCC_4.3.0 1:4.3 + __satfractuhada@GCC_4.3.0 1:4.3 + __satfractuhadq@GCC_4.3.0 1:4.3 + __satfractuhaha@GCC_4.3.0 1:4.3 + __satfractuhahq@GCC_4.3.0 1:4.3 + __satfractuhaqq@GCC_4.3.0 1:4.3 + __satfractuhasa@GCC_4.3.0 1:4.3 + __satfractuhasq@GCC_4.3.0 1:4.3 + __satfractuhata@GCC_4.3.0 1:4.3 + __satfractuhatq@GCC_4.3.0 1:4.3 + __satfractuhauda2@GCC_4.3.0 1:4.3 + __satfractuhaudq@GCC_4.3.0 1:4.3 + __satfractuhauhq@GCC_4.3.0 1:4.3 + __satfractuhauqq@GCC_4.3.0 1:4.3 + __satfractuhausa2@GCC_4.3.0 1:4.3 + __satfractuhausq@GCC_4.3.0 1:4.3 + __satfractuhauta2@GCC_4.3.0 1:4.3 + __satfractuhautq@GCC_4.3.0 1:4.3 + __satfractuhqda@GCC_4.3.0 1:4.3 + __satfractuhqdq@GCC_4.3.0 1:4.3 + __satfractuhqha@GCC_4.3.0 1:4.3 + __satfractuhqhq@GCC_4.3.0 1:4.3 + __satfractuhqqq@GCC_4.3.0 1:4.3 + __satfractuhqsa@GCC_4.3.0 1:4.3 + __satfractuhqsq@GCC_4.3.0 1:4.3 + __satfractuhqta@GCC_4.3.0 1:4.3 + __satfractuhqtq@GCC_4.3.0 1:4.3 + __satfractuhquda@GCC_4.3.0 1:4.3 + __satfractuhqudq2@GCC_4.3.0 1:4.3 + __satfractuhquha@GCC_4.3.0 1:4.3 + __satfractuhquqq2@GCC_4.3.0 1:4.3 + __satfractuhqusa@GCC_4.3.0 1:4.3 + __satfractuhqusq2@GCC_4.3.0 1:4.3 + __satfractuhquta@GCC_4.3.0 1:4.3 + __satfractuhqutq2@GCC_4.3.0 1:4.3 + __satfractunsdida@GCC_4.3.0 1:4.3 + __satfractunsdidq@GCC_4.3.0 1:4.3 + __satfractunsdiha@GCC_4.3.0 1:4.3 + __satfractunsdihq@GCC_4.3.0 1:4.3 + __satfractunsdiqq@GCC_4.3.0 1:4.3 + __satfractunsdisa@GCC_4.3.0 1:4.3 + __satfractunsdisq@GCC_4.3.0 1:4.3 + __satfractunsdita@GCC_4.3.0 1:4.3 + __satfractunsditq@GCC_4.3.0 1:4.3 + __satfractunsdiuda@GCC_4.3.0 1:4.3 + __satfractunsdiudq@GCC_4.3.0 1:4.3 + __satfractunsdiuha@GCC_4.3.0 1:4.3 + __satfractunsdiuhq@GCC_4.3.0 1:4.3 + __satfractunsdiuqq@GCC_4.3.0 1:4.3 + __satfractunsdiusa@GCC_4.3.0 1:4.3 + __satfractunsdiusq@GCC_4.3.0 1:4.3 + __satfractunsdiuta@GCC_4.3.0 1:4.3 + __satfractunsdiutq@GCC_4.3.0 1:4.3 + __satfractunshida@GCC_4.3.0 1:4.3 + __satfractunshidq@GCC_4.3.0 1:4.3 + __satfractunshiha@GCC_4.3.0 1:4.3 + __satfractunshihq@GCC_4.3.0 1:4.3 + __satfractunshiqq@GCC_4.3.0 1:4.3 + __satfractunshisa@GCC_4.3.0 1:4.3 + __satfractunshisq@GCC_4.3.0 1:4.3 + __satfractunshita@GCC_4.3.0 1:4.3 + __satfractunshitq@GCC_4.3.0 1:4.3 + __satfractunshiuda@GCC_4.3.0 1:4.3 + __satfractunshiudq@GCC_4.3.0 1:4.3 + __satfractunshiuha@GCC_4.3.0 1:4.3 + __satfractunshiuhq@GCC_4.3.0 1:4.3 + __satfractunshiuqq@GCC_4.3.0 1:4.3 + __satfractunshiusa@GCC_4.3.0 1:4.3 + __satfractunshiusq@GCC_4.3.0 1:4.3 + __satfractunshiuta@GCC_4.3.0 1:4.3 + __satfractunshiutq@GCC_4.3.0 1:4.3 + __satfractunsqida@GCC_4.3.0 1:4.3 + __satfractunsqidq@GCC_4.3.0 1:4.3 + __satfractunsqiha@GCC_4.3.0 1:4.3 + __satfractunsqihq@GCC_4.3.0 1:4.3 + __satfractunsqiqq@GCC_4.3.0 1:4.3 + __satfractunsqisa@GCC_4.3.0 1:4.3 + __satfractunsqisq@GCC_4.3.0 1:4.3 + __satfractunsqita@GCC_4.3.0 1:4.3 + __satfractunsqitq@GCC_4.3.0 1:4.3 + __satfractunsqiuda@GCC_4.3.0 1:4.3 + __satfractunsqiudq@GCC_4.3.0 1:4.3 + __satfractunsqiuha@GCC_4.3.0 1:4.3 + __satfractunsqiuhq@GCC_4.3.0 1:4.3 + __satfractunsqiuqq@GCC_4.3.0 1:4.3 + __satfractunsqiusa@GCC_4.3.0 1:4.3 + __satfractunsqiusq@GCC_4.3.0 1:4.3 + __satfractunsqiuta@GCC_4.3.0 1:4.3 + __satfractunsqiutq@GCC_4.3.0 1:4.3 + __satfractunssida@GCC_4.3.0 1:4.3 + __satfractunssidq@GCC_4.3.0 1:4.3 + __satfractunssiha@GCC_4.3.0 1:4.3 + __satfractunssihq@GCC_4.3.0 1:4.3 + __satfractunssiqq@GCC_4.3.0 1:4.3 + __satfractunssisa@GCC_4.3.0 1:4.3 + __satfractunssisq@GCC_4.3.0 1:4.3 + __satfractunssita@GCC_4.3.0 1:4.3 + __satfractunssitq@GCC_4.3.0 1:4.3 + __satfractunssiuda@GCC_4.3.0 1:4.3 + __satfractunssiudq@GCC_4.3.0 1:4.3 + __satfractunssiuha@GCC_4.3.0 1:4.3 + __satfractunssiuhq@GCC_4.3.0 1:4.3 + __satfractunssiuqq@GCC_4.3.0 1:4.3 + __satfractunssiusa@GCC_4.3.0 1:4.3 + __satfractunssiusq@GCC_4.3.0 1:4.3 + __satfractunssiuta@GCC_4.3.0 1:4.3 + __satfractunssiutq@GCC_4.3.0 1:4.3 + __satfractunstida@GCC_4.3.0 1:4.3 + __satfractunstidq@GCC_4.3.0 1:4.3 + __satfractunstiha@GCC_4.3.0 1:4.3 + __satfractunstihq@GCC_4.3.0 1:4.3 + __satfractunstiqq@GCC_4.3.0 1:4.3 + __satfractunstisa@GCC_4.3.0 1:4.3 + __satfractunstisq@GCC_4.3.0 1:4.3 + __satfractunstita@GCC_4.3.0 1:4.3 + __satfractunstitq@GCC_4.3.0 1:4.3 + __satfractunstiuda@GCC_4.3.0 1:4.3 + __satfractunstiudq@GCC_4.3.0 1:4.3 + __satfractunstiuha@GCC_4.3.0 1:4.3 + __satfractunstiuhq@GCC_4.3.0 1:4.3 + __satfractunstiuqq@GCC_4.3.0 1:4.3 + __satfractunstiusa@GCC_4.3.0 1:4.3 + __satfractunstiusq@GCC_4.3.0 1:4.3 + __satfractunstiuta@GCC_4.3.0 1:4.3 + __satfractunstiutq@GCC_4.3.0 1:4.3 + __satfractuqqda@GCC_4.3.0 1:4.3 + __satfractuqqdq@GCC_4.3.0 1:4.3 + __satfractuqqha@GCC_4.3.0 1:4.3 + __satfractuqqhq@GCC_4.3.0 1:4.3 + __satfractuqqqq@GCC_4.3.0 1:4.3 + __satfractuqqsa@GCC_4.3.0 1:4.3 + __satfractuqqsq@GCC_4.3.0 1:4.3 + __satfractuqqta@GCC_4.3.0 1:4.3 + __satfractuqqtq@GCC_4.3.0 1:4.3 + __satfractuqquda@GCC_4.3.0 1:4.3 + __satfractuqqudq2@GCC_4.3.0 1:4.3 + __satfractuqquha@GCC_4.3.0 1:4.3 + __satfractuqquhq2@GCC_4.3.0 1:4.3 + __satfractuqqusa@GCC_4.3.0 1:4.3 + __satfractuqqusq2@GCC_4.3.0 1:4.3 + __satfractuqquta@GCC_4.3.0 1:4.3 + __satfractuqqutq2@GCC_4.3.0 1:4.3 + __satfractusada@GCC_4.3.0 1:4.3 + __satfractusadq@GCC_4.3.0 1:4.3 + __satfractusaha@GCC_4.3.0 1:4.3 + __satfractusahq@GCC_4.3.0 1:4.3 + __satfractusaqq@GCC_4.3.0 1:4.3 + __satfractusasa@GCC_4.3.0 1:4.3 + __satfractusasq@GCC_4.3.0 1:4.3 + __satfractusata@GCC_4.3.0 1:4.3 + __satfractusatq@GCC_4.3.0 1:4.3 + __satfractusauda2@GCC_4.3.0 1:4.3 + __satfractusaudq@GCC_4.3.0 1:4.3 + __satfractusauha2@GCC_4.3.0 1:4.3 + __satfractusauhq@GCC_4.3.0 1:4.3 + __satfractusauqq@GCC_4.3.0 1:4.3 + __satfractusausq@GCC_4.3.0 1:4.3 + __satfractusauta2@GCC_4.3.0 1:4.3 + __satfractusautq@GCC_4.3.0 1:4.3 + __satfractusqda@GCC_4.3.0 1:4.3 + __satfractusqdq@GCC_4.3.0 1:4.3 + __satfractusqha@GCC_4.3.0 1:4.3 + __satfractusqhq@GCC_4.3.0 1:4.3 + __satfractusqqq@GCC_4.3.0 1:4.3 + __satfractusqsa@GCC_4.3.0 1:4.3 + __satfractusqsq@GCC_4.3.0 1:4.3 + __satfractusqta@GCC_4.3.0 1:4.3 + __satfractusqtq@GCC_4.3.0 1:4.3 + __satfractusquda@GCC_4.3.0 1:4.3 + __satfractusqudq2@GCC_4.3.0 1:4.3 + __satfractusquha@GCC_4.3.0 1:4.3 + __satfractusquhq2@GCC_4.3.0 1:4.3 + __satfractusquqq2@GCC_4.3.0 1:4.3 + __satfractusqusa@GCC_4.3.0 1:4.3 + __satfractusquta@GCC_4.3.0 1:4.3 + __satfractusqutq2@GCC_4.3.0 1:4.3 + __satfractutada@GCC_4.3.0 1:4.3 + __satfractutadq@GCC_4.3.0 1:4.3 + __satfractutaha@GCC_4.3.0 1:4.3 + __satfractutahq@GCC_4.3.0 1:4.3 + __satfractutaqq@GCC_4.3.0 1:4.3 + __satfractutasa@GCC_4.3.0 1:4.3 + __satfractutasq@GCC_4.3.0 1:4.3 + __satfractutata@GCC_4.3.0 1:4.3 + __satfractutatq@GCC_4.3.0 1:4.3 + __satfractutauda2@GCC_4.3.0 1:4.3 + __satfractutaudq@GCC_4.3.0 1:4.3 + __satfractutauha2@GCC_4.3.0 1:4.3 + __satfractutauhq@GCC_4.3.0 1:4.3 + __satfractutauqq@GCC_4.3.0 1:4.3 + __satfractutausa2@GCC_4.3.0 1:4.3 + __satfractutausq@GCC_4.3.0 1:4.3 + __satfractutautq@GCC_4.3.0 1:4.3 + __satfractutqda@GCC_4.3.0 1:4.3 + __satfractutqdq@GCC_4.3.0 1:4.3 + __satfractutqha@GCC_4.3.0 1:4.3 + __satfractutqhq@GCC_4.3.0 1:4.3 + __satfractutqqq@GCC_4.3.0 1:4.3 + __satfractutqsa@GCC_4.3.0 1:4.3 + __satfractutqsq@GCC_4.3.0 1:4.3 + __satfractutqta@GCC_4.3.0 1:4.3 + __satfractutqtq@GCC_4.3.0 1:4.3 + __satfractutquda@GCC_4.3.0 1:4.3 + __satfractutqudq2@GCC_4.3.0 1:4.3 + __satfractutquha@GCC_4.3.0 1:4.3 + __satfractutquhq2@GCC_4.3.0 1:4.3 + __satfractutquqq2@GCC_4.3.0 1:4.3 + __satfractutqusa@GCC_4.3.0 1:4.3 + __satfractutqusq2@GCC_4.3.0 1:4.3 + __satfractutquta@GCC_4.3.0 1:4.3 + __ssaddda3@GCC_4.3.0 1:4.3 + __ssadddq3@GCC_4.3.0 1:4.3 + __ssaddha3@GCC_4.3.0 1:4.3 + __ssaddhq3@GCC_4.3.0 1:4.3 + __ssaddqq3@GCC_4.3.0 1:4.3 + __ssaddsa3@GCC_4.3.0 1:4.3 + __ssaddsq3@GCC_4.3.0 1:4.3 + __ssaddta3@GCC_4.3.0 1:4.3 + __ssaddtq3@GCC_4.3.0 1:4.3 + __ssashlda3@GCC_4.3.0 1:4.3 + __ssashldq3@GCC_4.3.0 1:4.3 + __ssashlha3@GCC_4.3.0 1:4.3 + __ssashlhq3@GCC_4.3.0 1:4.3 + __ssashlqq3@GCC_4.3.0 1:4.3 + __ssashlsa3@GCC_4.3.0 1:4.3 + __ssashlsq3@GCC_4.3.0 1:4.3 + __ssashlta3@GCC_4.3.0 1:4.3 + __ssashltq3@GCC_4.3.0 1:4.3 + __ssdivda3@GCC_4.3.0 1:4.3 + __ssdivdq3@GCC_4.3.0 1:4.3 + __ssdivha3@GCC_4.3.0 1:4.3 + __ssdivhq3@GCC_4.3.0 1:4.3 + __ssdivqq3@GCC_4.3.0 1:4.3 + __ssdivsa3@GCC_4.3.0 1:4.3 + __ssdivsq3@GCC_4.3.0 1:4.3 + __ssdivta3@GCC_4.3.0 1:4.3 + __ssdivtq3@GCC_4.3.0 1:4.3 + __ssmulda3@GCC_4.3.0 1:4.3 + __ssmuldq3@GCC_4.3.0 1:4.3 + __ssmulha3@GCC_4.3.0 1:4.3 + __ssmulhq3@GCC_4.3.0 1:4.3 + __ssmulqq3@GCC_4.3.0 1:4.3 + __ssmulsa3@GCC_4.3.0 1:4.3 + __ssmulsq3@GCC_4.3.0 1:4.3 + __ssmulta3@GCC_4.3.0 1:4.3 + __ssmultq3@GCC_4.3.0 1:4.3 + __ssnegda2@GCC_4.3.0 1:4.3 + __ssnegdq2@GCC_4.3.0 1:4.3 + __ssnegha2@GCC_4.3.0 1:4.3 + __ssneghq2@GCC_4.3.0 1:4.3 + __ssnegqq2@GCC_4.3.0 1:4.3 + __ssnegsa2@GCC_4.3.0 1:4.3 + __ssnegsq2@GCC_4.3.0 1:4.3 + __ssnegta2@GCC_4.3.0 1:4.3 + __ssnegtq2@GCC_4.3.0 1:4.3 + __sssubda3@GCC_4.3.0 1:4.3 + __sssubdq3@GCC_4.3.0 1:4.3 + __sssubha3@GCC_4.3.0 1:4.3 + __sssubhq3@GCC_4.3.0 1:4.3 + __sssubqq3@GCC_4.3.0 1:4.3 + __sssubsa3@GCC_4.3.0 1:4.3 + __sssubsq3@GCC_4.3.0 1:4.3 + __sssubta3@GCC_4.3.0 1:4.3 + __sssubtq3@GCC_4.3.0 1:4.3 + __subda3@GCC_4.3.0 1:4.3 + __subdf3@GCC_3.0 1:4.1.1 + __subdq3@GCC_4.3.0 1:4.3 + __subha3@GCC_4.3.0 1:4.3 + __subhq3@GCC_4.3.0 1:4.3 + __subqq3@GCC_4.3.0 1:4.3 + __subsa3@GCC_4.3.0 1:4.3 + __subsf3@GCC_3.0 1:4.1.1 + __subsq3@GCC_4.3.0 1:4.3 + __subta3@GCC_4.3.0 1:4.3 + __subtf3@GCC_3.0 1:4.1.1 + __subtq3@GCC_4.3.0 1:4.3 + __subuda3@GCC_4.3.0 1:4.3 + __subudq3@GCC_4.3.0 1:4.3 + __subuha3@GCC_4.3.0 1:4.3 + __subuhq3@GCC_4.3.0 1:4.3 + __subuqq3@GCC_4.3.0 1:4.3 + __subusa3@GCC_4.3.0 1:4.3 + __subusq3@GCC_4.3.0 1:4.3 + __subuta3@GCC_4.3.0 1:4.3 + __subutq3@GCC_4.3.0 1:4.3 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __subvti3@GCC_3.4.4 1:4.1.1 + __sync_add_and_fetch_1@GCC_4.4.0 1:4.4 + __sync_add_and_fetch_2@GCC_4.4.0 1:4.4 + __sync_add_and_fetch_4@GCC_4.4.0 1:4.4 + __sync_add_and_fetch_8@GCC_4.4.0 1:4.4 + __sync_and_and_fetch_1@GCC_4.4.0 1:4.4 + __sync_and_and_fetch_2@GCC_4.4.0 1:4.4 + __sync_and_and_fetch_4@GCC_4.4.0 1:4.4 + __sync_and_and_fetch_8@GCC_4.4.0 1:4.4 + __sync_bool_compare_and_swap_1@GCC_4.4.0 1:4.4 + __sync_bool_compare_and_swap_2@GCC_4.4.0 1:4.4 + __sync_bool_compare_and_swap_4@GCC_4.4.0 1:4.4 + __sync_bool_compare_and_swap_8@GCC_4.4.0 1:4.4 + __sync_fetch_and_add_1@GCC_4.4.0 1:4.4 + __sync_fetch_and_add_2@GCC_4.4.0 1:4.4 + __sync_fetch_and_add_4@GCC_4.4.0 1:4.4 + __sync_fetch_and_add_8@GCC_4.4.0 1:4.4 + __sync_fetch_and_and_1@GCC_4.4.0 1:4.4 + __sync_fetch_and_and_2@GCC_4.4.0 1:4.4 + __sync_fetch_and_and_4@GCC_4.4.0 1:4.4 + __sync_fetch_and_and_8@GCC_4.4.0 1:4.4 + __sync_fetch_and_nand_1@GCC_4.4.0 1:4.4 + __sync_fetch_and_nand_2@GCC_4.4.0 1:4.4 + __sync_fetch_and_nand_4@GCC_4.4.0 1:4.4 + __sync_fetch_and_nand_8@GCC_4.4.0 1:4.4 + __sync_fetch_and_or_1@GCC_4.4.0 1:4.4 + __sync_fetch_and_or_2@GCC_4.4.0 1:4.4 + __sync_fetch_and_or_4@GCC_4.4.0 1:4.4 + __sync_fetch_and_or_8@GCC_4.4.0 1:4.4 + __sync_fetch_and_sub_1@GCC_4.4.0 1:4.4 + __sync_fetch_and_sub_2@GCC_4.4.0 1:4.4 + __sync_fetch_and_sub_4@GCC_4.4.0 1:4.4 + __sync_fetch_and_sub_8@GCC_4.4.0 1:4.4 + __sync_fetch_and_xor_1@GCC_4.4.0 1:4.4 + __sync_fetch_and_xor_2@GCC_4.4.0 1:4.4 + __sync_fetch_and_xor_4@GCC_4.4.0 1:4.4 + __sync_fetch_and_xor_8@GCC_4.4.0 1:4.4 + __sync_lock_test_and_set_1@GCC_4.4.0 1:4.4 + __sync_lock_test_and_set_2@GCC_4.4.0 1:4.4 + __sync_lock_test_and_set_4@GCC_4.4.0 1:4.4 + __sync_lock_test_and_set_8@GCC_4.4.0 1:4.4 + __sync_nand_and_fetch_1@GCC_4.4.0 1:4.4 + __sync_nand_and_fetch_2@GCC_4.4.0 1:4.4 + __sync_nand_and_fetch_4@GCC_4.4.0 1:4.4 + __sync_nand_and_fetch_8@GCC_4.4.0 1:4.4 + __sync_or_and_fetch_1@GCC_4.4.0 1:4.4 + __sync_or_and_fetch_2@GCC_4.4.0 1:4.4 + __sync_or_and_fetch_4@GCC_4.4.0 1:4.4 + __sync_or_and_fetch_8@GCC_4.4.0 1:4.4 + __sync_sub_and_fetch_1@GCC_4.4.0 1:4.4 + __sync_sub_and_fetch_2@GCC_4.4.0 1:4.4 + __sync_sub_and_fetch_4@GCC_4.4.0 1:4.4 + __sync_sub_and_fetch_8@GCC_4.4.0 1:4.4 + __sync_synchronize@GCC_4.4.0 1:4.4 + __sync_val_compare_and_swap_1@GCC_4.4.0 1:4.4 + __sync_val_compare_and_swap_2@GCC_4.4.0 1:4.4 + __sync_val_compare_and_swap_4@GCC_4.4.0 1:4.4 + __sync_val_compare_and_swap_8@GCC_4.4.0 1:4.4 + __sync_xor_and_fetch_1@GCC_4.4.0 1:4.4 + __sync_xor_and_fetch_2@GCC_4.4.0 1:4.4 + __sync_xor_and_fetch_4@GCC_4.4.0 1:4.4 + __sync_xor_and_fetch_8@GCC_4.4.0 1:4.4 + __truncdfsf2@GCC_3.0 1:4.1.1 + __trunctfdf2@GCC_3.0 1:4.1.1 + __trunctfsf2@GCC_3.0 1:4.1.1 + __ucmpti2@GCC_3.0 1:4.1.1 + __udivmodti4@GCC_3.0 1:4.1.1 + __udivti3@GCC_3.0 1:4.1.1 + __udivuda3@GCC_4.3.0 1:4.3 + __udivudq3@GCC_4.3.0 1:4.3 + __udivuha3@GCC_4.3.0 1:4.3 + __udivuhq3@GCC_4.3.0 1:4.3 + __udivuqq3@GCC_4.3.0 1:4.3 + __udivusa3@GCC_4.3.0 1:4.3 + __udivusq3@GCC_4.3.0 1:4.3 + __udivuta3@GCC_4.3.0 1:4.3 + __udivutq3@GCC_4.3.0 1:4.3 + __umodti3@GCC_3.0 1:4.1.1 + __unorddf2@GCC_3.3.4 1:4.1.1 + __unordsf2@GCC_3.3.4 1:4.1.1 + __unordtf2@GCC_4.5.0 1:4.5 + __usadduda3@GCC_4.3.0 1:4.3 + __usaddudq3@GCC_4.3.0 1:4.3 + __usadduha3@GCC_4.3.0 1:4.3 + __usadduhq3@GCC_4.3.0 1:4.3 + __usadduqq3@GCC_4.3.0 1:4.3 + __usaddusa3@GCC_4.3.0 1:4.3 + __usaddusq3@GCC_4.3.0 1:4.3 + __usadduta3@GCC_4.3.0 1:4.3 + __usaddutq3@GCC_4.3.0 1:4.3 + __usashluda3@GCC_4.3.0 1:4.3 + __usashludq3@GCC_4.3.0 1:4.3 + __usashluha3@GCC_4.3.0 1:4.3 + __usashluhq3@GCC_4.3.0 1:4.3 + __usashluqq3@GCC_4.3.0 1:4.3 + __usashlusa3@GCC_4.3.0 1:4.3 + __usashlusq3@GCC_4.3.0 1:4.3 + __usashluta3@GCC_4.3.0 1:4.3 + __usashlutq3@GCC_4.3.0 1:4.3 + __usdivuda3@GCC_4.3.0 1:4.3 + __usdivudq3@GCC_4.3.0 1:4.3 + __usdivuha3@GCC_4.3.0 1:4.3 + __usdivuhq3@GCC_4.3.0 1:4.3 + __usdivuqq3@GCC_4.3.0 1:4.3 + __usdivusa3@GCC_4.3.0 1:4.3 + __usdivusq3@GCC_4.3.0 1:4.3 + __usdivuta3@GCC_4.3.0 1:4.3 + __usdivutq3@GCC_4.3.0 1:4.3 + __usmuluda3@GCC_4.3.0 1:4.3 + __usmuludq3@GCC_4.3.0 1:4.3 + __usmuluha3@GCC_4.3.0 1:4.3 + __usmuluhq3@GCC_4.3.0 1:4.3 + __usmuluqq3@GCC_4.3.0 1:4.3 + __usmulusa3@GCC_4.3.0 1:4.3 + __usmulusq3@GCC_4.3.0 1:4.3 + __usmuluta3@GCC_4.3.0 1:4.3 + __usmulutq3@GCC_4.3.0 1:4.3 + __usneguda2@GCC_4.3.0 1:4.3 + __usnegudq2@GCC_4.3.0 1:4.3 + __usneguha2@GCC_4.3.0 1:4.3 + __usneguhq2@GCC_4.3.0 1:4.3 + __usneguqq2@GCC_4.3.0 1:4.3 + __usnegusa2@GCC_4.3.0 1:4.3 + __usnegusq2@GCC_4.3.0 1:4.3 + __usneguta2@GCC_4.3.0 1:4.3 + __usnegutq2@GCC_4.3.0 1:4.3 + __ussubuda3@GCC_4.3.0 1:4.3 + __ussubudq3@GCC_4.3.0 1:4.3 + __ussubuha3@GCC_4.3.0 1:4.3 + __ussubuhq3@GCC_4.3.0 1:4.3 + __ussubuqq3@GCC_4.3.0 1:4.3 + __ussubusa3@GCC_4.3.0 1:4.3 + __ussubusq3@GCC_4.3.0 1:4.3 + __ussubuta3@GCC_4.3.0 1:4.3 + __ussubutq3@GCC_4.3.0 1:4.3 --- gcc-4.9-4.9.2.orig/debian/lib64gcc1.symbols.powerpc +++ gcc-4.9-4.9.2/debian/lib64gcc1.symbols.powerpc @@ -0,0 +1,129 @@ +libgcc_s.so.1 lib64gcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4.4@GCC_3.4.4 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __absvti2@GCC_3.4.4 1:4.1.1 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __addvti3@GCC_3.4.4 1:4.1.1 + __ashlti3@GCC_3.0 1:4.1.1 + __ashrti3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbti2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzti2@GCC_3.4 1:4.1.1 + __cmpti2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzti2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.0.0 1:4.1.1 + __divti3@GCC_3.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffsti2@GCC_3.0 1:4.1.1 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixdfti@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixsfti@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_3.0 1:4.1.1 + __fixtfti@GCC_3.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunsdfti@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunssfti@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_3.0 1:4.1.1 + __fixunstfti@GCC_3.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_3.0 1:4.1.1 + __floattidf@GCC_3.0 1:4.1.1 + __floattisf@GCC_3.0 1:4.1.1 + __floattitf@GCC_3.0 1:4.1.1 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.2.0 1:4.2.1 + __floatuntidf@GCC_4.2.0 1:4.2.1 + __floatuntisf@GCC_4.2.0 1:4.2.1 + __floatuntitf@GCC_4.2.0 1:4.2.1 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __gcc_qadd@GCC_3.4.4 1:4.1.1 + __gcc_qdiv@GCC_3.4.4 1:4.1.1 + __gcc_qmul@GCC_3.4.4 1:4.1.1 + __gcc_qsub@GCC_3.4.4 1:4.1.1 + __lshrti3@GCC_3.0 1:4.1.1 + __modti3@GCC_3.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.0.0 1:4.1.1 + __multi3@GCC_3.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulvti3@GCC_3.4.4 1:4.1.1 + __negti2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __negvti2@GCC_3.4.4 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __parityti2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountti2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.0.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __subvti3@GCC_3.4.4 1:4.1.1 + __ucmpti2@GCC_3.0 1:4.1.1 + __udivmodti4@GCC_3.0 1:4.1.1 + __udivti3@GCC_3.0 1:4.1.1 + __umodti3@GCC_3.0 1:4.1.1 + _xlqadd@GCC_3.4 1:4.1.1 + _xlqdiv@GCC_3.4 1:4.1.1 + _xlqmul@GCC_3.4 1:4.1.1 + _xlqsub@GCC_3.4 1:4.1.1 --- gcc-4.9-4.9.2.orig/debian/lib64gcc1.symbols.s390 +++ gcc-4.9-4.9.2/debian/lib64gcc1.symbols.s390 @@ -0,0 +1,110 @@ +libgcc_s.so.1 lib64gcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4.4@GCC_3.4.4 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.1.0@GCC_4.1.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.2@GLIBC_2.2 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __absvti2@GCC_3.4.4 1:4.1.1 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __addvti3@GCC_3.4.4 1:4.1.1 + __ashlti3@GCC_3.0 1:4.1.1 + __ashrti3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbti2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzti2@GCC_3.4 1:4.1.1 + __cmpti2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzti2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.2 1:4.1.1 + __deregister_frame_info@GLIBC_2.2 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.1.0 1:4.1.1 + __divti3@GCC_3.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffsti2@GCC_3.0 1:4.1.1 + __fixdfti@GCC_3.0 1:4.1.1 + __fixsfti@GCC_3.0 1:4.1.1 + __fixtfti@GCC_4.1.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfti@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfti@GCC_3.0 1:4.1.1 + __fixunstfti@GCC_4.1.0 1:4.1.1 + __floattidf@GCC_3.0 1:4.1.1 + __floattisf@GCC_3.0 1:4.1.1 + __floattitf@GCC_4.1.0 1:4.1.1 + __floatuntidf@GCC_4.2.0 1:4.2.1 + __floatuntisf@GCC_4.2.0 1:4.2.1 + __floatuntitf@GCC_4.2.0 1:4.2.1 + __frame_state_for@GLIBC_2.2 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __lshrti3@GCC_3.0 1:4.1.1 + __modti3@GCC_3.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.1.0 1:4.1.1 + __multi3@GCC_3.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulvti3@GCC_3.4.4 1:4.1.1 + __negti2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __negvti2@GCC_3.4.4 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __parityti2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountti2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.1.0 1:4.1.1 + __register_frame@GLIBC_2.2 1:4.1.1 + __register_frame_info@GLIBC_2.2 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.2 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.2 1:4.1.1 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __subvti3@GCC_3.4.4 1:4.1.1 + __ucmpti2@GCC_3.0 1:4.1.1 + __udivmodti4@GCC_3.0 1:4.1.1 + __udivti3@GCC_3.0 1:4.1.1 + __umodti3@GCC_3.0 1:4.1.1 --- gcc-4.9-4.9.2.orig/debian/lib64gcc1.symbols.sparc +++ gcc-4.9-4.9.2/debian/lib64gcc1.symbols.sparc @@ -0,0 +1,109 @@ +libgcc_s.so.1 lib64gcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4.4@GCC_3.4.4 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.2@GLIBC_2.2 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __absvti2@GCC_3.4.4 1:4.1.1 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __addvti3@GCC_3.4.4 1:4.1.1 + __ashlti3@GCC_3.0 1:4.1.1 + __ashrti3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbti2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzti2@GCC_3.4 1:4.1.1 + __cmpti2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzti2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.2 1:4.1.1 + __deregister_frame_info@GLIBC_2.2 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.0.0 1:4.1.1 + __divti3@GCC_3.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffsti2@GCC_3.0 1:4.1.1 + __fixdfti@GCC_3.0 1:4.1.1 + __fixsfti@GCC_3.0 1:4.1.1 + __fixtfti@GCC_3.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfti@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfti@GCC_3.0 1:4.1.1 + __fixunstfti@GCC_3.0 1:4.1.1 + __floattidf@GCC_3.0 1:4.1.1 + __floattisf@GCC_3.0 1:4.1.1 + __floattitf@GCC_3.0 1:4.1.1 + __floatuntidf@GCC_4.2.0 1:4.2.1 + __floatuntisf@GCC_4.2.0 1:4.2.1 + __floatuntitf@GCC_4.2.0 1:4.2.1 + __frame_state_for@GLIBC_2.2 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __lshrti3@GCC_3.0 1:4.1.1 + __modti3@GCC_3.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.0.0 1:4.1.1 + __multi3@GCC_3.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulvti3@GCC_3.4.4 1:4.1.1 + __negti2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __negvti2@GCC_3.4.4 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __parityti2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountti2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.0.0 1:4.1.1 + __register_frame@GLIBC_2.2 1:4.1.1 + __register_frame_info@GLIBC_2.2 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.2 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.2 1:4.1.1 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __subvti3@GCC_3.4.4 1:4.1.1 + __ucmpti2@GCC_3.0 1:4.1.1 + __udivmodti4@GCC_3.0 1:4.1.1 + __udivti3@GCC_3.0 1:4.1.1 + __umodti3@GCC_3.0 1:4.1.1 --- gcc-4.9-4.9.2.orig/debian/lib64gccLC.postinst +++ gcc-4.9-4.9.2/debian/lib64gccLC.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/lib64gcc@LC@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi +esac + +#DEBHELPER# --- gcc-4.9-4.9.2.orig/debian/lib64gfortran3.overrides +++ gcc-4.9-4.9.2/debian/lib64gfortran3.overrides @@ -0,0 +1,2 @@ +# automake gets it wrong for the multilib build +lib64gfortran3 binary: binary-or-shlib-defines-rpath --- gcc-4.9-4.9.2.orig/debian/lib64gfortran3.symbols +++ gcc-4.9-4.9.2/debian/lib64gfortran3.symbols @@ -0,0 +1,7 @@ +libgfortran.so.3 lib64gfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.10" +#include "libgfortran3.symbols.16" +#include "libgfortran3.symbols.16.powerpc" +#include "libgfortran3.symbols.64" +#include "libgfortran3.symbols.qf" --- gcc-4.9-4.9.2.orig/debian/lib64gfortran3.symbols.mips +++ gcc-4.9-4.9.2/debian/lib64gfortran3.symbols.mips @@ -0,0 +1,5 @@ +libgfortran.so.3 lib64gfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.16.powerpc" +#include "libgfortran3.symbols.16.powerpc64" +#include "libgfortran3.symbols.64" --- gcc-4.9-4.9.2.orig/debian/lib64gfortran3.symbols.mipsel +++ gcc-4.9-4.9.2/debian/lib64gfortran3.symbols.mipsel @@ -0,0 +1,5 @@ +libgfortran.so.3 lib64gfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.16.powerpc" +#include "libgfortran3.symbols.16.powerpc64" +#include "libgfortran3.symbols.64" --- gcc-4.9-4.9.2.orig/debian/lib64gfortran3.symbols.powerpc +++ gcc-4.9-4.9.2/debian/lib64gfortran3.symbols.powerpc @@ -0,0 +1,5 @@ +libgfortran.so.3 lib64gfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.16.powerpc" +#include "libgfortran3.symbols.16.powerpc64" +#include "libgfortran3.symbols.64" --- gcc-4.9-4.9.2.orig/debian/lib64gfortran3.symbols.s390 +++ gcc-4.9-4.9.2/debian/lib64gfortran3.symbols.s390 @@ -0,0 +1,5 @@ +libgfortran.so.3 lib64gfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.16.powerpc" +#include "libgfortran3.symbols.16.powerpc64" +#include "libgfortran3.symbols.64" --- gcc-4.9-4.9.2.orig/debian/lib64gfortran3.symbols.sparc +++ gcc-4.9-4.9.2/debian/lib64gfortran3.symbols.sparc @@ -0,0 +1,5 @@ +libgfortran.so.3 lib64gfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.16.powerpc" +#include "libgfortran3.symbols.16.powerpc64" +#include "libgfortran3.symbols.64" --- gcc-4.9-4.9.2.orig/debian/lib64gomp1.symbols +++ gcc-4.9-4.9.2/debian/lib64gomp1.symbols @@ -0,0 +1,4 @@ +libgomp.so.1 lib64gomp1 #MINVER# +#include "libgomp1.symbols.common" + GOMP_atomic_end@GOMP_1.0 4.2.1 + GOMP_atomic_start@GOMP_1.0 4.2.1 --- gcc-4.9-4.9.2.orig/debian/lib64itm1.symbols +++ gcc-4.9-4.9.2/debian/lib64itm1.symbols @@ -0,0 +1,4 @@ +libitm.so.1 lib64itm1 #MINVER# +#include "libitm1.symbols.common" +#include "libitm1.symbols.64bit" +(arch=amd64 i386 x32)#include "libitm1.symbols.x86" --- gcc-4.9-4.9.2.orig/debian/lib64objc4.symbols +++ gcc-4.9-4.9.2/debian/lib64objc4.symbols @@ -0,0 +1,3 @@ +libobjc.so.4 lib64objc4 #MINVER# +#include "libobjc4.symbols.common" + __gnu_objc_personality_v0@Base 4.2.1 --- gcc-4.9-4.9.2.orig/debian/lib64quadmath0.symbols +++ gcc-4.9-4.9.2/debian/lib64quadmath0.symbols @@ -0,0 +1,2 @@ +libquadmath.so.0 lib64quadmath0 #MINVER# +#include "libquadmath0.symbols.common" --- gcc-4.9-4.9.2.orig/debian/lib64stdc++6.symbols.i386 +++ gcc-4.9-4.9.2/debian/lib64stdc++6.symbols.i386 @@ -0,0 +1,39 @@ +libstdc++.so.6 lib64stdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# acosl@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# asinl@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# atan2l@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# atanl@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# ceill@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# coshl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# cosl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# expl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# floorl@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# fmodl@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# frexpl@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# hypotl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# ldexpf@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# ldexpl@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# log10l@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# logl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# modfl@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# powf@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# powl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# sinhl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# sinl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# sqrtl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# tanhl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# tanl@GLIBCXX_3.4 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 + (optional)_Z16__VLTRegisterSetPPvPKvmmS0_@CXXABI_1.3.8 4.9.0 + (optional)_Z17__VLTRegisterPairPPvPKvmS2_@CXXABI_1.3.8 4.9.0 + (optional)_Z21__VLTRegisterSetDebugPPvPKvmmS0_@CXXABI_1.3.8 4.9.0 + (optional)_Z22__VLTRegisterPairDebugPPvPKvmS2_PKcS4_@CXXABI_1.3.8 4.9.0 + (optional)_Z24__VLTVerifyVtablePointerPPvPKv@CXXABI_1.3.8 4.9.0 + (optional)_Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_@CXXABI_1.3.8 4.9.0 + (optional)__VLTChangePermission@CXXABI_1.3.8 4.9.0 --- gcc-4.9-4.9.2.orig/debian/lib64stdc++6.symbols.powerpc +++ gcc-4.9-4.9.2/debian/lib64stdc++6.symbols.powerpc @@ -0,0 +1,10 @@ +libstdc++.so.6 lib64stdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.64bit" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 --- gcc-4.9-4.9.2.orig/debian/lib64stdc++6.symbols.s390 +++ gcc-4.9-4.9.2/debian/lib64stdc++6.symbols.s390 @@ -0,0 +1,12 @@ +libstdc++.so.6 lib64stdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# ldexpf@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# powf@GLIBCXX_3.4 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.64bit" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 --- gcc-4.9-4.9.2.orig/debian/lib64stdc++6.symbols.sparc +++ gcc-4.9-4.9.2/debian/lib64stdc++6.symbols.sparc @@ -0,0 +1,10 @@ +libstdc++.so.6 lib64stdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVli@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVli@GLIBCXX_3.4 4.1.1 +# FIXME: Currently no ldbl symbols in the 64bit libstdc++ on sparc. +# #include "libstdc++6.symbols.ldbl.64bit" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 --- gcc-4.9-4.9.2.orig/debian/lib64stdc++CXX.postinst +++ gcc-4.9-4.9.2/debian/lib64stdc++CXX.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/lib64stdc++@CXX@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi +esac + +#DEBHELPER# --- gcc-4.9-4.9.2.orig/debian/libasan.symbols.32 +++ gcc-4.9-4.9.2/debian/libasan.symbols.32 @@ -0,0 +1,4 @@ + _Znaj@Base 4.8 + _ZnajRKSt9nothrow_t@Base 4.8 + _Znwj@Base 4.8 + _ZnwjRKSt9nothrow_t@Base 4.8 --- gcc-4.9-4.9.2.orig/debian/libasan.symbols.64 +++ gcc-4.9-4.9.2/debian/libasan.symbols.64 @@ -0,0 +1,6 @@ + __interceptor_shmctl@Base 4.9 + _Znam@Base 4.8 + _ZnamRKSt9nothrow_t@Base 4.8 + _Znwm@Base 4.8 + _ZnwmRKSt9nothrow_t@Base 4.8 + shmctl@Base 4.9 --- gcc-4.9-4.9.2.orig/debian/libasan.symbols.common +++ gcc-4.9-4.9.2/debian/libasan.symbols.common @@ -0,0 +1,1258 @@ + _ZN11__sanitizer11CheckFailedEPKciS1_yy@Base 4.8 + _ZN11__sanitizer7OnPrintEPKc@Base 4.9 + _ZdaPv@Base 4.8 + _ZdaPvRKSt9nothrow_t@Base 4.8 + _ZdlPv@Base 4.8 + _ZdlPvRKSt9nothrow_t@Base 4.8 + __asan_address_is_poisoned@Base 4.8 + __asan_after_dynamic_init@Base 4.8 + __asan_backtrace_alloc@Base 4.9 + __asan_backtrace_close@Base 4.9 + __asan_backtrace_create_state@Base 4.9 + __asan_backtrace_dwarf_add@Base 4.9 + __asan_backtrace_free@Base 4.9 + __asan_backtrace_get_view@Base 4.9 + __asan_backtrace_initialize@Base 4.9 + __asan_backtrace_open@Base 4.9 + __asan_backtrace_pcinfo@Base 4.9 + __asan_backtrace_qsort@Base 4.9 + __asan_backtrace_release_view@Base 4.9 + __asan_backtrace_syminfo@Base 4.9 + __asan_backtrace_vector_finish@Base 4.9 + __asan_backtrace_vector_grow@Base 4.9 + __asan_backtrace_vector_release@Base 4.9 + __asan_before_dynamic_init@Base 4.8 + __asan_cplus_demangle_builtin_types@Base 4.9 + __asan_cplus_demangle_fill_ctor@Base 4.9 + __asan_cplus_demangle_fill_dtor@Base 4.9 + __asan_cplus_demangle_fill_extended_operator@Base 4.9 + __asan_cplus_demangle_fill_name@Base 4.9 + __asan_cplus_demangle_init_info@Base 4.9 + __asan_cplus_demangle_mangled_name@Base 4.9 + __asan_cplus_demangle_operators@Base 4.9 + __asan_cplus_demangle_print@Base 4.9 + __asan_cplus_demangle_print_callback@Base 4.9 + __asan_cplus_demangle_type@Base 4.9 + __asan_cplus_demangle_v3@Base 4.9 + __asan_cplus_demangle_v3_callback@Base 4.9 + __asan_describe_address@Base 4.8 + __asan_get_allocated_size@Base 4.8 + __asan_get_current_allocated_bytes@Base 4.8 + __asan_get_estimated_allocated_size@Base 4.8 + __asan_get_free_bytes@Base 4.8 + __asan_get_heap_size@Base 4.8 + __asan_get_ownership@Base 4.8 + __asan_get_unmapped_bytes@Base 4.8 + __asan_handle_no_return@Base 4.8 + __asan_init_v3@Base 4.9 + __asan_internal_memcmp@Base 4.9 + __asan_internal_memcpy@Base 4.9 + __asan_internal_memset@Base 4.9 + __asan_internal_strcmp@Base 4.9 + __asan_internal_strlen@Base 4.9 + __asan_internal_strncmp@Base 4.9 + __asan_internal_strnlen@Base 4.9 + __asan_is_gnu_v3_mangled_ctor@Base 4.9 + __asan_is_gnu_v3_mangled_dtor@Base 4.9 + __asan_java_demangle_v3@Base 4.9 + __asan_java_demangle_v3_callback@Base 4.9 + __asan_option_detect_stack_use_after_return@Base 4.9 + __asan_poison_memory_region@Base 4.8 + __asan_poison_stack_memory@Base 4.8 + __asan_print_accumulated_stats@Base 4.8 + __asan_region_is_poisoned@Base 4.8 + __asan_register_globals@Base 4.8 + __asan_report_error@Base 4.8 + __asan_report_load16@Base 4.8 + __asan_report_load1@Base 4.8 + __asan_report_load2@Base 4.8 + __asan_report_load4@Base 4.8 + __asan_report_load8@Base 4.8 + __asan_report_load_n@Base 4.8 + __asan_report_store16@Base 4.8 + __asan_report_store1@Base 4.8 + __asan_report_store2@Base 4.8 + __asan_report_store4@Base 4.8 + __asan_report_store8@Base 4.8 + __asan_report_store_n@Base 4.8 + __asan_set_death_callback@Base 4.8 + __asan_set_error_exit_code@Base 4.8 + __asan_set_error_report_callback@Base 4.8 + __asan_stack_free_0@Base 4.9 + __asan_stack_free_10@Base 4.9 + __asan_stack_free_1@Base 4.9 + __asan_stack_free_2@Base 4.9 + __asan_stack_free_3@Base 4.9 + __asan_stack_free_4@Base 4.9 + __asan_stack_free_5@Base 4.9 + __asan_stack_free_6@Base 4.9 + __asan_stack_free_7@Base 4.9 + __asan_stack_free_8@Base 4.9 + __asan_stack_free_9@Base 4.9 + __asan_stack_malloc_0@Base 4.9 + __asan_stack_malloc_10@Base 4.9 + __asan_stack_malloc_1@Base 4.9 + __asan_stack_malloc_2@Base 4.9 + __asan_stack_malloc_3@Base 4.9 + __asan_stack_malloc_4@Base 4.9 + __asan_stack_malloc_5@Base 4.9 + __asan_stack_malloc_6@Base 4.9 + __asan_stack_malloc_7@Base 4.9 + __asan_stack_malloc_8@Base 4.9 + __asan_stack_malloc_9@Base 4.9 + __asan_unpoison_memory_region@Base 4.8 + __asan_unpoison_stack_memory@Base 4.8 + __asan_unregister_globals@Base 4.8 + __cxa_atexit@Base 4.9 + __cxa_throw@Base 4.8 + __interceptor___cxa_atexit@Base 4.9 + __interceptor___cxa_throw@Base 4.8 + __interceptor___isoc99_fscanf@Base 4.8 + __interceptor___isoc99_scanf@Base 4.8 + __interceptor___isoc99_sscanf@Base 4.8 + __interceptor___isoc99_vfscanf@Base 4.8 + __interceptor___isoc99_vscanf@Base 4.8 + __interceptor___isoc99_vsscanf@Base 4.8 + __interceptor___libc_memalign@Base 4.8 + __interceptor___xpg_strerror_r@Base 4.9 + __interceptor__exit@Base 4.9 + __interceptor__longjmp@Base 4.8 + __interceptor_accept4@Base 4.9 + __interceptor_accept@Base 4.9 + __interceptor_asctime@Base 4.8 + __interceptor_asctime_r@Base 4.8 + __interceptor_atoi@Base 4.8 + __interceptor_atol@Base 4.8 + __interceptor_atoll@Base 4.8 + __interceptor_backtrace@Base 4.9 + __interceptor_backtrace_symbols@Base 4.9 + __interceptor_calloc@Base 4.8 + __interceptor_canonicalize_file_name@Base 4.9 + __interceptor_cfree@Base 4.8 + __interceptor_clock_getres@Base 4.9 + __interceptor_clock_gettime@Base 4.9 + __interceptor_clock_settime@Base 4.9 + __interceptor_confstr@Base 4.9 + __interceptor_ctime@Base 4.8 + __interceptor_ctime_r@Base 4.8 + __interceptor_drand48_r@Base 4.9 + __interceptor_ether_aton@Base 4.9 + __interceptor_ether_aton_r@Base 4.9 + __interceptor_ether_hostton@Base 4.9 + __interceptor_ether_line@Base 4.9 + __interceptor_ether_ntoa@Base 4.9 + __interceptor_ether_ntoa_r@Base 4.9 + __interceptor_ether_ntohost@Base 4.9 + __interceptor_free@Base 4.8 + __interceptor_frexp@Base 4.9 + __interceptor_frexpf@Base 4.9 + __interceptor_frexpl@Base 4.9 + __interceptor_fscanf@Base 4.8 + __interceptor_fstatfs64@Base 4.9 + __interceptor_fstatfs@Base 4.9 + __interceptor_fstatvfs64@Base 4.9 + __interceptor_fstatvfs@Base 4.9 + __interceptor_get_current_dir_name@Base 4.9 + __interceptor_getaddrinfo@Base 4.9 + __interceptor_getcwd@Base 4.9 + __interceptor_getdelim@Base 4.9 + __interceptor_getgrgid@Base 4.9 + __interceptor_getgrgid_r@Base 4.9 + __interceptor_getgrnam@Base 4.9 + __interceptor_getgrnam_r@Base 4.9 + __interceptor_getgroups@Base 4.9 + __interceptor_gethostbyaddr@Base 4.9 + __interceptor_gethostbyaddr_r@Base 4.9 + __interceptor_gethostbyname2@Base 4.9 + __interceptor_gethostbyname2_r@Base 4.9 + __interceptor_gethostbyname@Base 4.9 + __interceptor_gethostbyname_r@Base 4.9 + __interceptor_gethostent@Base 4.9 + __interceptor_gethostent_r@Base 4.9 + __interceptor_getitimer@Base 4.9 + __interceptor_getline@Base 4.9 + __interceptor_getmntent@Base 4.9 + __interceptor_getmntent_r@Base 4.9 + __interceptor_getnameinfo@Base 4.9 + __interceptor_getpeername@Base 4.9 + __interceptor_getpwnam@Base 4.9 + __interceptor_getpwnam_r@Base 4.9 + __interceptor_getpwuid@Base 4.9 + __interceptor_getpwuid_r@Base 4.9 + __interceptor_getsockname@Base 4.9 + __interceptor_getsockopt@Base 4.9 + __interceptor_glob64@Base 4.9 + __interceptor_glob@Base 4.9 + __interceptor_gmtime@Base 4.8 + __interceptor_gmtime_r@Base 4.8 + __interceptor_iconv@Base 4.9 + __interceptor_index@Base 4.8 + __interceptor_inet_aton@Base 4.9 + __interceptor_inet_ntop@Base 4.9 + __interceptor_inet_pton@Base 4.9 + __interceptor_initgroups@Base 4.9 + __interceptor_ioctl@Base 4.9 + __interceptor_lgamma@Base 4.9 + __interceptor_lgamma_r@Base 4.9 + __interceptor_lgammaf@Base 4.9 + __interceptor_lgammaf_r@Base 4.9 + __interceptor_lgammal@Base 4.9 + __interceptor_lgammal_r@Base 4.9 + __interceptor_localtime@Base 4.8 + __interceptor_localtime_r@Base 4.8 + __interceptor_longjmp@Base 4.8 + __interceptor_lrand48_r@Base 4.9 + __interceptor_mallinfo@Base 4.8 + __interceptor_malloc@Base 4.8 + __interceptor_malloc_stats@Base 4.8 + __interceptor_malloc_usable_size@Base 4.8 + __interceptor_mallopt@Base 4.8 + __interceptor_mbsnrtowcs@Base 4.9 + __interceptor_mbsrtowcs@Base 4.9 + __interceptor_mbstowcs@Base 4.9 + __interceptor_memalign@Base 4.8 + __interceptor_memcmp@Base 4.8 + __interceptor_memcpy@Base 4.8 + __interceptor_memmove@Base 4.8 + __interceptor_memset@Base 4.8 + __interceptor_mlock@Base 4.8 + __interceptor_mlockall@Base 4.8 + __interceptor_modf@Base 4.9 + __interceptor_modff@Base 4.9 + __interceptor_modfl@Base 4.9 + __interceptor_munlock@Base 4.8 + __interceptor_munlockall@Base 4.8 + __interceptor_poll@Base 4.9 + __interceptor_posix_memalign@Base 4.8 + __interceptor_ppoll@Base 4.9 + __interceptor_prctl@Base 4.8 + __interceptor_pread64@Base 4.8 + __interceptor_pread@Base 4.8 + __interceptor_preadv64@Base 4.9 + __interceptor_preadv@Base 4.9 + __interceptor_pthread_attr_getaffinity_np@Base 4.9 + __interceptor_pthread_attr_getdetachstate@Base 4.9 + __interceptor_pthread_attr_getguardsize@Base 4.9 + __interceptor_pthread_attr_getinheritsched@Base 4.9 + __interceptor_pthread_attr_getschedparam@Base 4.9 + __interceptor_pthread_attr_getschedpolicy@Base 4.9 + __interceptor_pthread_attr_getscope@Base 4.9 + __interceptor_pthread_attr_getstack@Base 4.9 + __interceptor_pthread_attr_getstacksize@Base 4.9 + __interceptor_pthread_cond_broadcast@Base 4.9 + __interceptor_pthread_cond_init@Base 4.9 + __interceptor_pthread_cond_signal@Base 4.9 + __interceptor_pthread_cond_wait@Base 4.9 + __interceptor_pthread_create@Base 4.8 + __interceptor_pthread_getschedparam@Base 4.9 + __interceptor_pthread_mutex_lock@Base 4.9 + __interceptor_pthread_mutex_unlock@Base 4.9 + __interceptor_pthread_setname_np@Base 4.9 + __interceptor_pvalloc@Base 4.8 + __interceptor_pwrite64@Base 4.8 + __interceptor_pwrite@Base 4.8 + __interceptor_pwritev64@Base 4.9 + __interceptor_pwritev@Base 4.9 + __interceptor_random_r@Base 4.9 + __interceptor_read@Base 4.8 + __interceptor_readdir64@Base 4.9 + __interceptor_readdir64_r@Base 4.9 + __interceptor_readdir@Base 4.9 + __interceptor_readdir_r@Base 4.9 + __interceptor_readv@Base 4.9 + __interceptor_realloc@Base 4.8 + __interceptor_realpath@Base 4.9 + __interceptor_recvmsg@Base 4.9 + __interceptor_remquo@Base 4.9 + __interceptor_remquof@Base 4.9 + __interceptor_remquol@Base 4.9 + __interceptor_scandir64@Base 4.9 + __interceptor_scandir@Base 4.9 + __interceptor_scanf@Base 4.8 + __interceptor_sched_getaffinity@Base 4.9 + __interceptor_setitimer@Base 4.9 + __interceptor_setlocale@Base 4.9 + __interceptor_sigaction@Base 4.8 + __interceptor_sigemptyset@Base 4.9 + __interceptor_sigfillset@Base 4.9 + __interceptor_siglongjmp@Base 4.8 + __interceptor_signal@Base 4.8 + __interceptor_sigpending@Base 4.9 + __interceptor_sigprocmask@Base 4.9 + __interceptor_sigtimedwait@Base 4.9 + __interceptor_sigwait@Base 4.9 + __interceptor_sigwaitinfo@Base 4.9 + __interceptor_sincos@Base 4.9 + __interceptor_sincosf@Base 4.9 + __interceptor_sincosl@Base 4.9 + __interceptor_sscanf@Base 4.8 + __interceptor_statfs64@Base 4.9 + __interceptor_statfs@Base 4.9 + __interceptor_statvfs64@Base 4.9 + __interceptor_statvfs@Base 4.9 + __interceptor_strcasecmp@Base 4.8 + __interceptor_strcat@Base 4.8 + __interceptor_strchr@Base 4.8 + __interceptor_strcmp@Base 4.8 + __interceptor_strcpy@Base 4.8 + __interceptor_strdup@Base 4.8 + __interceptor_strerror@Base 4.9 + __interceptor_strerror_r@Base 4.9 + __interceptor_strlen@Base 4.8 + __interceptor_strncasecmp@Base 4.8 + __interceptor_strncat@Base 4.8 + __interceptor_strncmp@Base 4.8 + __interceptor_strncpy@Base 4.8 + __interceptor_strnlen@Base 4.8 + __interceptor_strptime@Base 4.9 + __interceptor_strtoimax@Base 4.9 + __interceptor_strtol@Base 4.8 + __interceptor_strtoll@Base 4.8 + __interceptor_strtoumax@Base 4.9 + __interceptor_swapcontext@Base 4.8 + __interceptor_sysinfo@Base 4.9 + __interceptor_tcgetattr@Base 4.9 + __interceptor_tempnam@Base 4.9 + __interceptor_textdomain@Base 4.9 + __interceptor_time@Base 4.9 + __interceptor_times@Base 4.9 + __interceptor_tmpnam@Base 4.9 + __interceptor_tmpnam_r@Base 4.9 + __interceptor_valloc@Base 4.8 + __interceptor_vfscanf@Base 4.8 + __interceptor_vscanf@Base 4.8 + __interceptor_vsscanf@Base 4.8 + __interceptor_wait3@Base 4.9 + __interceptor_wait4@Base 4.9 + __interceptor_wait@Base 4.9 + __interceptor_waitid@Base 4.9 + __interceptor_waitpid@Base 4.9 + __interceptor_wcslen@Base 4.9 + __interceptor_wcsnrtombs@Base 4.9 + __interceptor_wcsrtombs@Base 4.9 + __interceptor_wcstombs@Base 4.9 + __interceptor_wordexp@Base 4.9 + __interceptor_write@Base 4.8 + __interceptor_writev@Base 4.9 + __isoc99_fscanf@Base 4.8 + __isoc99_scanf@Base 4.8 + __isoc99_sscanf@Base 4.8 + __isoc99_vfscanf@Base 4.8 + __isoc99_vscanf@Base 4.8 + __isoc99_vsscanf@Base 4.8 + __libc_memalign@Base 4.8 + __lsan_disable@Base 4.9 + __lsan_do_leak_check@Base 4.9 + __lsan_enable@Base 4.9 + __lsan_ignore_object@Base 4.9 + __sanitizer_annotate_contiguous_container@Base 4.9 + __sanitizer_cov@Base 4.9 + __sanitizer_cov_dump@Base 4.9 + __sanitizer_print_stack_trace@Base 4.9 + __sanitizer_report_error_summary@Base 4.8 + __sanitizer_sandbox_on_notify@Base 4.8 + __sanitizer_set_report_path@Base 4.8 + __sanitizer_syscall_post_impl_accept4@Base 4.9 + __sanitizer_syscall_post_impl_accept@Base 4.9 + __sanitizer_syscall_post_impl_access@Base 4.9 + __sanitizer_syscall_post_impl_acct@Base 4.9 + __sanitizer_syscall_post_impl_add_key@Base 4.9 + __sanitizer_syscall_post_impl_adjtimex@Base 4.9 + __sanitizer_syscall_post_impl_alarm@Base 4.9 + __sanitizer_syscall_post_impl_bdflush@Base 4.9 + __sanitizer_syscall_post_impl_bind@Base 4.9 + __sanitizer_syscall_post_impl_brk@Base 4.9 + __sanitizer_syscall_post_impl_capget@Base 4.9 + __sanitizer_syscall_post_impl_capset@Base 4.9 + __sanitizer_syscall_post_impl_chdir@Base 4.9 + __sanitizer_syscall_post_impl_chmod@Base 4.9 + __sanitizer_syscall_post_impl_chown16@Base 4.9 + __sanitizer_syscall_post_impl_chown@Base 4.9 + __sanitizer_syscall_post_impl_chroot@Base 4.9 + __sanitizer_syscall_post_impl_clock_adjtime@Base 4.9 + __sanitizer_syscall_post_impl_clock_getres@Base 4.9 + __sanitizer_syscall_post_impl_clock_gettime@Base 4.9 + __sanitizer_syscall_post_impl_clock_nanosleep@Base 4.9 + __sanitizer_syscall_post_impl_clock_settime@Base 4.9 + __sanitizer_syscall_post_impl_close@Base 4.9 + __sanitizer_syscall_post_impl_connect@Base 4.9 + __sanitizer_syscall_post_impl_creat@Base 4.9 + __sanitizer_syscall_post_impl_delete_module@Base 4.9 + __sanitizer_syscall_post_impl_dup2@Base 4.9 + __sanitizer_syscall_post_impl_dup3@Base 4.9 + __sanitizer_syscall_post_impl_dup@Base 4.9 + __sanitizer_syscall_post_impl_epoll_create1@Base 4.9 + __sanitizer_syscall_post_impl_epoll_create@Base 4.9 + __sanitizer_syscall_post_impl_epoll_ctl@Base 4.9 + __sanitizer_syscall_post_impl_epoll_pwait@Base 4.9 + __sanitizer_syscall_post_impl_epoll_wait@Base 4.9 + __sanitizer_syscall_post_impl_eventfd2@Base 4.9 + __sanitizer_syscall_post_impl_eventfd@Base 4.9 + __sanitizer_syscall_post_impl_exit@Base 4.9 + __sanitizer_syscall_post_impl_exit_group@Base 4.9 + __sanitizer_syscall_post_impl_faccessat@Base 4.9 + __sanitizer_syscall_post_impl_fchdir@Base 4.9 + __sanitizer_syscall_post_impl_fchmod@Base 4.9 + __sanitizer_syscall_post_impl_fchmodat@Base 4.9 + __sanitizer_syscall_post_impl_fchown16@Base 4.9 + __sanitizer_syscall_post_impl_fchown@Base 4.9 + __sanitizer_syscall_post_impl_fchownat@Base 4.9 + __sanitizer_syscall_post_impl_fcntl64@Base 4.9 + __sanitizer_syscall_post_impl_fcntl@Base 4.9 + __sanitizer_syscall_post_impl_fdatasync@Base 4.9 + __sanitizer_syscall_post_impl_fgetxattr@Base 4.9 + __sanitizer_syscall_post_impl_flistxattr@Base 4.9 + __sanitizer_syscall_post_impl_flock@Base 4.9 + __sanitizer_syscall_post_impl_fork@Base 4.9 + __sanitizer_syscall_post_impl_fremovexattr@Base 4.9 + __sanitizer_syscall_post_impl_fsetxattr@Base 4.9 + __sanitizer_syscall_post_impl_fstat64@Base 4.9 + __sanitizer_syscall_post_impl_fstat@Base 4.9 + __sanitizer_syscall_post_impl_fstatat64@Base 4.9 + __sanitizer_syscall_post_impl_fstatfs64@Base 4.9 + __sanitizer_syscall_post_impl_fstatfs@Base 4.9 + __sanitizer_syscall_post_impl_fsync@Base 4.9 + __sanitizer_syscall_post_impl_ftruncate@Base 4.9 + __sanitizer_syscall_post_impl_futimesat@Base 4.9 + __sanitizer_syscall_post_impl_get_mempolicy@Base 4.9 + __sanitizer_syscall_post_impl_get_robust_list@Base 4.9 + __sanitizer_syscall_post_impl_getcpu@Base 4.9 + __sanitizer_syscall_post_impl_getcwd@Base 4.9 + __sanitizer_syscall_post_impl_getdents64@Base 4.9 + __sanitizer_syscall_post_impl_getdents@Base 4.9 + __sanitizer_syscall_post_impl_getegid16@Base 4.9 + __sanitizer_syscall_post_impl_getegid@Base 4.9 + __sanitizer_syscall_post_impl_geteuid16@Base 4.9 + __sanitizer_syscall_post_impl_geteuid@Base 4.9 + __sanitizer_syscall_post_impl_getgid16@Base 4.9 + __sanitizer_syscall_post_impl_getgid@Base 4.9 + __sanitizer_syscall_post_impl_getgroups16@Base 4.9 + __sanitizer_syscall_post_impl_getgroups@Base 4.9 + __sanitizer_syscall_post_impl_gethostname@Base 4.9 + __sanitizer_syscall_post_impl_getitimer@Base 4.9 + __sanitizer_syscall_post_impl_getpeername@Base 4.9 + __sanitizer_syscall_post_impl_getpgid@Base 4.9 + __sanitizer_syscall_post_impl_getpgrp@Base 4.9 + __sanitizer_syscall_post_impl_getpid@Base 4.9 + __sanitizer_syscall_post_impl_getppid@Base 4.9 + __sanitizer_syscall_post_impl_getpriority@Base 4.9 + __sanitizer_syscall_post_impl_getresgid16@Base 4.9 + __sanitizer_syscall_post_impl_getresgid@Base 4.9 + __sanitizer_syscall_post_impl_getresuid16@Base 4.9 + __sanitizer_syscall_post_impl_getresuid@Base 4.9 + __sanitizer_syscall_post_impl_getrlimit@Base 4.9 + __sanitizer_syscall_post_impl_getrusage@Base 4.9 + __sanitizer_syscall_post_impl_getsid@Base 4.9 + __sanitizer_syscall_post_impl_getsockname@Base 4.9 + __sanitizer_syscall_post_impl_getsockopt@Base 4.9 + __sanitizer_syscall_post_impl_gettid@Base 4.9 + __sanitizer_syscall_post_impl_gettimeofday@Base 4.9 + __sanitizer_syscall_post_impl_getuid16@Base 4.9 + __sanitizer_syscall_post_impl_getuid@Base 4.9 + __sanitizer_syscall_post_impl_getxattr@Base 4.9 + __sanitizer_syscall_post_impl_init_module@Base 4.9 + __sanitizer_syscall_post_impl_inotify_add_watch@Base 4.9 + __sanitizer_syscall_post_impl_inotify_init1@Base 4.9 + __sanitizer_syscall_post_impl_inotify_init@Base 4.9 + __sanitizer_syscall_post_impl_inotify_rm_watch@Base 4.9 + __sanitizer_syscall_post_impl_io_cancel@Base 4.9 + __sanitizer_syscall_post_impl_io_destroy@Base 4.9 + __sanitizer_syscall_post_impl_io_getevents@Base 4.9 + __sanitizer_syscall_post_impl_io_setup@Base 4.9 + __sanitizer_syscall_post_impl_io_submit@Base 4.9 + __sanitizer_syscall_post_impl_ioctl@Base 4.9 + __sanitizer_syscall_post_impl_ioperm@Base 4.9 + __sanitizer_syscall_post_impl_ioprio_get@Base 4.9 + __sanitizer_syscall_post_impl_ioprio_set@Base 4.9 + __sanitizer_syscall_post_impl_ipc@Base 4.9 + __sanitizer_syscall_post_impl_kexec_load@Base 4.9 + __sanitizer_syscall_post_impl_keyctl@Base 4.9 + __sanitizer_syscall_post_impl_kill@Base 4.9 + __sanitizer_syscall_post_impl_lchown16@Base 4.9 + __sanitizer_syscall_post_impl_lchown@Base 4.9 + __sanitizer_syscall_post_impl_lgetxattr@Base 4.9 + __sanitizer_syscall_post_impl_link@Base 4.9 + __sanitizer_syscall_post_impl_linkat@Base 4.9 + __sanitizer_syscall_post_impl_listen@Base 4.9 + __sanitizer_syscall_post_impl_listxattr@Base 4.9 + __sanitizer_syscall_post_impl_llistxattr@Base 4.9 + __sanitizer_syscall_post_impl_llseek@Base 4.9 + __sanitizer_syscall_post_impl_lookup_dcookie@Base 4.9 + __sanitizer_syscall_post_impl_lremovexattr@Base 4.9 + __sanitizer_syscall_post_impl_lseek@Base 4.9 + __sanitizer_syscall_post_impl_lsetxattr@Base 4.9 + __sanitizer_syscall_post_impl_lstat64@Base 4.9 + __sanitizer_syscall_post_impl_lstat@Base 4.9 + __sanitizer_syscall_post_impl_madvise@Base 4.9 + __sanitizer_syscall_post_impl_mbind@Base 4.9 + __sanitizer_syscall_post_impl_migrate_pages@Base 4.9 + __sanitizer_syscall_post_impl_mincore@Base 4.9 + __sanitizer_syscall_post_impl_mkdir@Base 4.9 + __sanitizer_syscall_post_impl_mkdirat@Base 4.9 + __sanitizer_syscall_post_impl_mknod@Base 4.9 + __sanitizer_syscall_post_impl_mknodat@Base 4.9 + __sanitizer_syscall_post_impl_mlock@Base 4.9 + __sanitizer_syscall_post_impl_mlockall@Base 4.9 + __sanitizer_syscall_post_impl_mmap_pgoff@Base 4.9 + __sanitizer_syscall_post_impl_mount@Base 4.9 + __sanitizer_syscall_post_impl_move_pages@Base 4.9 + __sanitizer_syscall_post_impl_mprotect@Base 4.9 + __sanitizer_syscall_post_impl_mq_getsetattr@Base 4.9 + __sanitizer_syscall_post_impl_mq_notify@Base 4.9 + __sanitizer_syscall_post_impl_mq_open@Base 4.9 + __sanitizer_syscall_post_impl_mq_timedreceive@Base 4.9 + __sanitizer_syscall_post_impl_mq_timedsend@Base 4.9 + __sanitizer_syscall_post_impl_mq_unlink@Base 4.9 + __sanitizer_syscall_post_impl_mremap@Base 4.9 + __sanitizer_syscall_post_impl_msgctl@Base 4.9 + __sanitizer_syscall_post_impl_msgget@Base 4.9 + __sanitizer_syscall_post_impl_msgrcv@Base 4.9 + __sanitizer_syscall_post_impl_msgsnd@Base 4.9 + __sanitizer_syscall_post_impl_msync@Base 4.9 + __sanitizer_syscall_post_impl_munlock@Base 4.9 + __sanitizer_syscall_post_impl_munlockall@Base 4.9 + __sanitizer_syscall_post_impl_munmap@Base 4.9 + __sanitizer_syscall_post_impl_name_to_handle_at@Base 4.9 + __sanitizer_syscall_post_impl_nanosleep@Base 4.9 + __sanitizer_syscall_post_impl_newfstat@Base 4.9 + __sanitizer_syscall_post_impl_newfstatat@Base 4.9 + __sanitizer_syscall_post_impl_newlstat@Base 4.9 + __sanitizer_syscall_post_impl_newstat@Base 4.9 + __sanitizer_syscall_post_impl_newuname@Base 4.9 + __sanitizer_syscall_post_impl_ni_syscall@Base 4.9 + __sanitizer_syscall_post_impl_nice@Base 4.9 + __sanitizer_syscall_post_impl_old_getrlimit@Base 4.9 + __sanitizer_syscall_post_impl_old_mmap@Base 4.9 + __sanitizer_syscall_post_impl_old_readdir@Base 4.9 + __sanitizer_syscall_post_impl_old_select@Base 4.9 + __sanitizer_syscall_post_impl_oldumount@Base 4.9 + __sanitizer_syscall_post_impl_olduname@Base 4.9 + __sanitizer_syscall_post_impl_open@Base 4.9 + __sanitizer_syscall_post_impl_open_by_handle_at@Base 4.9 + __sanitizer_syscall_post_impl_openat@Base 4.9 + __sanitizer_syscall_post_impl_pause@Base 4.9 + __sanitizer_syscall_post_impl_pciconfig_iobase@Base 4.9 + __sanitizer_syscall_post_impl_pciconfig_read@Base 4.9 + __sanitizer_syscall_post_impl_pciconfig_write@Base 4.9 + __sanitizer_syscall_post_impl_perf_event_open@Base 4.9 + __sanitizer_syscall_post_impl_personality@Base 4.9 + __sanitizer_syscall_post_impl_pipe2@Base 4.9 + __sanitizer_syscall_post_impl_pipe@Base 4.9 + __sanitizer_syscall_post_impl_pivot_root@Base 4.9 + __sanitizer_syscall_post_impl_poll@Base 4.9 + __sanitizer_syscall_post_impl_ppoll@Base 4.9 + __sanitizer_syscall_post_impl_pread64@Base 4.9 + __sanitizer_syscall_post_impl_preadv@Base 4.9 + __sanitizer_syscall_post_impl_prlimit64@Base 4.9 + __sanitizer_syscall_post_impl_process_vm_readv@Base 4.9 + __sanitizer_syscall_post_impl_process_vm_writev@Base 4.9 + __sanitizer_syscall_post_impl_pselect6@Base 4.9 + __sanitizer_syscall_post_impl_ptrace@Base 4.9 + __sanitizer_syscall_post_impl_pwrite64@Base 4.9 + __sanitizer_syscall_post_impl_pwritev@Base 4.9 + __sanitizer_syscall_post_impl_quotactl@Base 4.9 + __sanitizer_syscall_post_impl_read@Base 4.9 + __sanitizer_syscall_post_impl_readlink@Base 4.9 + __sanitizer_syscall_post_impl_readlinkat@Base 4.9 + __sanitizer_syscall_post_impl_readv@Base 4.9 + __sanitizer_syscall_post_impl_reboot@Base 4.9 + __sanitizer_syscall_post_impl_recv@Base 4.9 + __sanitizer_syscall_post_impl_recvfrom@Base 4.9 + __sanitizer_syscall_post_impl_recvmmsg@Base 4.9 + __sanitizer_syscall_post_impl_recvmsg@Base 4.9 + __sanitizer_syscall_post_impl_remap_file_pages@Base 4.9 + __sanitizer_syscall_post_impl_removexattr@Base 4.9 + __sanitizer_syscall_post_impl_rename@Base 4.9 + __sanitizer_syscall_post_impl_renameat@Base 4.9 + __sanitizer_syscall_post_impl_request_key@Base 4.9 + __sanitizer_syscall_post_impl_restart_syscall@Base 4.9 + __sanitizer_syscall_post_impl_rmdir@Base 4.9 + __sanitizer_syscall_post_impl_rt_sigpending@Base 4.9 + __sanitizer_syscall_post_impl_rt_sigprocmask@Base 4.9 + __sanitizer_syscall_post_impl_rt_sigqueueinfo@Base 4.9 + __sanitizer_syscall_post_impl_rt_sigtimedwait@Base 4.9 + __sanitizer_syscall_post_impl_rt_tgsigqueueinfo@Base 4.9 + __sanitizer_syscall_post_impl_sched_get_priority_max@Base 4.9 + __sanitizer_syscall_post_impl_sched_get_priority_min@Base 4.9 + __sanitizer_syscall_post_impl_sched_getaffinity@Base 4.9 + __sanitizer_syscall_post_impl_sched_getparam@Base 4.9 + __sanitizer_syscall_post_impl_sched_getscheduler@Base 4.9 + __sanitizer_syscall_post_impl_sched_rr_get_interval@Base 4.9 + __sanitizer_syscall_post_impl_sched_setaffinity@Base 4.9 + __sanitizer_syscall_post_impl_sched_setparam@Base 4.9 + __sanitizer_syscall_post_impl_sched_setscheduler@Base 4.9 + __sanitizer_syscall_post_impl_sched_yield@Base 4.9 + __sanitizer_syscall_post_impl_select@Base 4.9 + __sanitizer_syscall_post_impl_semctl@Base 4.9 + __sanitizer_syscall_post_impl_semget@Base 4.9 + __sanitizer_syscall_post_impl_semop@Base 4.9 + __sanitizer_syscall_post_impl_semtimedop@Base 4.9 + __sanitizer_syscall_post_impl_send@Base 4.9 + __sanitizer_syscall_post_impl_sendfile64@Base 4.9 + __sanitizer_syscall_post_impl_sendfile@Base 4.9 + __sanitizer_syscall_post_impl_sendmmsg@Base 4.9 + __sanitizer_syscall_post_impl_sendmsg@Base 4.9 + __sanitizer_syscall_post_impl_sendto@Base 4.9 + __sanitizer_syscall_post_impl_set_mempolicy@Base 4.9 + __sanitizer_syscall_post_impl_set_robust_list@Base 4.9 + __sanitizer_syscall_post_impl_set_tid_address@Base 4.9 + __sanitizer_syscall_post_impl_setdomainname@Base 4.9 + __sanitizer_syscall_post_impl_setfsgid16@Base 4.9 + __sanitizer_syscall_post_impl_setfsgid@Base 4.9 + __sanitizer_syscall_post_impl_setfsuid16@Base 4.9 + __sanitizer_syscall_post_impl_setfsuid@Base 4.9 + __sanitizer_syscall_post_impl_setgid16@Base 4.9 + __sanitizer_syscall_post_impl_setgid@Base 4.9 + __sanitizer_syscall_post_impl_setgroups16@Base 4.9 + __sanitizer_syscall_post_impl_setgroups@Base 4.9 + __sanitizer_syscall_post_impl_sethostname@Base 4.9 + __sanitizer_syscall_post_impl_setitimer@Base 4.9 + __sanitizer_syscall_post_impl_setns@Base 4.9 + __sanitizer_syscall_post_impl_setpgid@Base 4.9 + __sanitizer_syscall_post_impl_setpriority@Base 4.9 + __sanitizer_syscall_post_impl_setregid16@Base 4.9 + __sanitizer_syscall_post_impl_setregid@Base 4.9 + __sanitizer_syscall_post_impl_setresgid16@Base 4.9 + __sanitizer_syscall_post_impl_setresgid@Base 4.9 + __sanitizer_syscall_post_impl_setresuid16@Base 4.9 + __sanitizer_syscall_post_impl_setresuid@Base 4.9 + __sanitizer_syscall_post_impl_setreuid16@Base 4.9 + __sanitizer_syscall_post_impl_setreuid@Base 4.9 + __sanitizer_syscall_post_impl_setrlimit@Base 4.9 + __sanitizer_syscall_post_impl_setsid@Base 4.9 + __sanitizer_syscall_post_impl_setsockopt@Base 4.9 + __sanitizer_syscall_post_impl_settimeofday@Base 4.9 + __sanitizer_syscall_post_impl_setuid16@Base 4.9 + __sanitizer_syscall_post_impl_setuid@Base 4.9 + __sanitizer_syscall_post_impl_setxattr@Base 4.9 + __sanitizer_syscall_post_impl_sgetmask@Base 4.9 + __sanitizer_syscall_post_impl_shmat@Base 4.9 + __sanitizer_syscall_post_impl_shmctl@Base 4.9 + __sanitizer_syscall_post_impl_shmdt@Base 4.9 + __sanitizer_syscall_post_impl_shmget@Base 4.9 + __sanitizer_syscall_post_impl_shutdown@Base 4.9 + __sanitizer_syscall_post_impl_signal@Base 4.9 + __sanitizer_syscall_post_impl_signalfd4@Base 4.9 + __sanitizer_syscall_post_impl_signalfd@Base 4.9 + __sanitizer_syscall_post_impl_sigpending@Base 4.9 + __sanitizer_syscall_post_impl_sigprocmask@Base 4.9 + __sanitizer_syscall_post_impl_socket@Base 4.9 + __sanitizer_syscall_post_impl_socketcall@Base 4.9 + __sanitizer_syscall_post_impl_socketpair@Base 4.9 + __sanitizer_syscall_post_impl_splice@Base 4.9 + __sanitizer_syscall_post_impl_spu_create@Base 4.9 + __sanitizer_syscall_post_impl_spu_run@Base 4.9 + __sanitizer_syscall_post_impl_ssetmask@Base 4.9 + __sanitizer_syscall_post_impl_stat64@Base 4.9 + __sanitizer_syscall_post_impl_stat@Base 4.9 + __sanitizer_syscall_post_impl_statfs64@Base 4.9 + __sanitizer_syscall_post_impl_statfs@Base 4.9 + __sanitizer_syscall_post_impl_stime@Base 4.9 + __sanitizer_syscall_post_impl_swapoff@Base 4.9 + __sanitizer_syscall_post_impl_swapon@Base 4.9 + __sanitizer_syscall_post_impl_symlink@Base 4.9 + __sanitizer_syscall_post_impl_symlinkat@Base 4.9 + __sanitizer_syscall_post_impl_sync@Base 4.9 + __sanitizer_syscall_post_impl_syncfs@Base 4.9 + __sanitizer_syscall_post_impl_sysctl@Base 4.9 + __sanitizer_syscall_post_impl_sysfs@Base 4.9 + __sanitizer_syscall_post_impl_sysinfo@Base 4.9 + __sanitizer_syscall_post_impl_syslog@Base 4.9 + __sanitizer_syscall_post_impl_tee@Base 4.9 + __sanitizer_syscall_post_impl_tgkill@Base 4.9 + __sanitizer_syscall_post_impl_time@Base 4.9 + __sanitizer_syscall_post_impl_timer_create@Base 4.9 + __sanitizer_syscall_post_impl_timer_delete@Base 4.9 + __sanitizer_syscall_post_impl_timer_getoverrun@Base 4.9 + __sanitizer_syscall_post_impl_timer_gettime@Base 4.9 + __sanitizer_syscall_post_impl_timer_settime@Base 4.9 + __sanitizer_syscall_post_impl_timerfd_create@Base 4.9 + __sanitizer_syscall_post_impl_timerfd_gettime@Base 4.9 + __sanitizer_syscall_post_impl_timerfd_settime@Base 4.9 + __sanitizer_syscall_post_impl_times@Base 4.9 + __sanitizer_syscall_post_impl_tkill@Base 4.9 + __sanitizer_syscall_post_impl_truncate@Base 4.9 + __sanitizer_syscall_post_impl_umask@Base 4.9 + __sanitizer_syscall_post_impl_umount@Base 4.9 + __sanitizer_syscall_post_impl_uname@Base 4.9 + __sanitizer_syscall_post_impl_unlink@Base 4.9 + __sanitizer_syscall_post_impl_unlinkat@Base 4.9 + __sanitizer_syscall_post_impl_unshare@Base 4.9 + __sanitizer_syscall_post_impl_uselib@Base 4.9 + __sanitizer_syscall_post_impl_ustat@Base 4.9 + __sanitizer_syscall_post_impl_utime@Base 4.9 + __sanitizer_syscall_post_impl_utimensat@Base 4.9 + __sanitizer_syscall_post_impl_utimes@Base 4.9 + __sanitizer_syscall_post_impl_vfork@Base 4.9 + __sanitizer_syscall_post_impl_vhangup@Base 4.9 + __sanitizer_syscall_post_impl_vmsplice@Base 4.9 + __sanitizer_syscall_post_impl_wait4@Base 4.9 + __sanitizer_syscall_post_impl_waitid@Base 4.9 + __sanitizer_syscall_post_impl_waitpid@Base 4.9 + __sanitizer_syscall_post_impl_write@Base 4.9 + __sanitizer_syscall_post_impl_writev@Base 4.9 + __sanitizer_syscall_pre_impl_accept4@Base 4.9 + __sanitizer_syscall_pre_impl_accept@Base 4.9 + __sanitizer_syscall_pre_impl_access@Base 4.9 + __sanitizer_syscall_pre_impl_acct@Base 4.9 + __sanitizer_syscall_pre_impl_add_key@Base 4.9 + __sanitizer_syscall_pre_impl_adjtimex@Base 4.9 + __sanitizer_syscall_pre_impl_alarm@Base 4.9 + __sanitizer_syscall_pre_impl_bdflush@Base 4.9 + __sanitizer_syscall_pre_impl_bind@Base 4.9 + __sanitizer_syscall_pre_impl_brk@Base 4.9 + __sanitizer_syscall_pre_impl_capget@Base 4.9 + __sanitizer_syscall_pre_impl_capset@Base 4.9 + __sanitizer_syscall_pre_impl_chdir@Base 4.9 + __sanitizer_syscall_pre_impl_chmod@Base 4.9 + __sanitizer_syscall_pre_impl_chown16@Base 4.9 + __sanitizer_syscall_pre_impl_chown@Base 4.9 + __sanitizer_syscall_pre_impl_chroot@Base 4.9 + __sanitizer_syscall_pre_impl_clock_adjtime@Base 4.9 + __sanitizer_syscall_pre_impl_clock_getres@Base 4.9 + __sanitizer_syscall_pre_impl_clock_gettime@Base 4.9 + __sanitizer_syscall_pre_impl_clock_nanosleep@Base 4.9 + __sanitizer_syscall_pre_impl_clock_settime@Base 4.9 + __sanitizer_syscall_pre_impl_close@Base 4.9 + __sanitizer_syscall_pre_impl_connect@Base 4.9 + __sanitizer_syscall_pre_impl_creat@Base 4.9 + __sanitizer_syscall_pre_impl_delete_module@Base 4.9 + __sanitizer_syscall_pre_impl_dup2@Base 4.9 + __sanitizer_syscall_pre_impl_dup3@Base 4.9 + __sanitizer_syscall_pre_impl_dup@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_create1@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_create@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_ctl@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_pwait@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_wait@Base 4.9 + __sanitizer_syscall_pre_impl_eventfd2@Base 4.9 + __sanitizer_syscall_pre_impl_eventfd@Base 4.9 + __sanitizer_syscall_pre_impl_exit@Base 4.9 + __sanitizer_syscall_pre_impl_exit_group@Base 4.9 + __sanitizer_syscall_pre_impl_faccessat@Base 4.9 + __sanitizer_syscall_pre_impl_fchdir@Base 4.9 + __sanitizer_syscall_pre_impl_fchmod@Base 4.9 + __sanitizer_syscall_pre_impl_fchmodat@Base 4.9 + __sanitizer_syscall_pre_impl_fchown16@Base 4.9 + __sanitizer_syscall_pre_impl_fchown@Base 4.9 + __sanitizer_syscall_pre_impl_fchownat@Base 4.9 + __sanitizer_syscall_pre_impl_fcntl64@Base 4.9 + __sanitizer_syscall_pre_impl_fcntl@Base 4.9 + __sanitizer_syscall_pre_impl_fdatasync@Base 4.9 + __sanitizer_syscall_pre_impl_fgetxattr@Base 4.9 + __sanitizer_syscall_pre_impl_flistxattr@Base 4.9 + __sanitizer_syscall_pre_impl_flock@Base 4.9 + __sanitizer_syscall_pre_impl_fork@Base 4.9 + __sanitizer_syscall_pre_impl_fremovexattr@Base 4.9 + __sanitizer_syscall_pre_impl_fsetxattr@Base 4.9 + __sanitizer_syscall_pre_impl_fstat64@Base 4.9 + __sanitizer_syscall_pre_impl_fstat@Base 4.9 + __sanitizer_syscall_pre_impl_fstatat64@Base 4.9 + __sanitizer_syscall_pre_impl_fstatfs64@Base 4.9 + __sanitizer_syscall_pre_impl_fstatfs@Base 4.9 + __sanitizer_syscall_pre_impl_fsync@Base 4.9 + __sanitizer_syscall_pre_impl_ftruncate@Base 4.9 + __sanitizer_syscall_pre_impl_futimesat@Base 4.9 + __sanitizer_syscall_pre_impl_get_mempolicy@Base 4.9 + __sanitizer_syscall_pre_impl_get_robust_list@Base 4.9 + __sanitizer_syscall_pre_impl_getcpu@Base 4.9 + __sanitizer_syscall_pre_impl_getcwd@Base 4.9 + __sanitizer_syscall_pre_impl_getdents64@Base 4.9 + __sanitizer_syscall_pre_impl_getdents@Base 4.9 + __sanitizer_syscall_pre_impl_getegid16@Base 4.9 + __sanitizer_syscall_pre_impl_getegid@Base 4.9 + __sanitizer_syscall_pre_impl_geteuid16@Base 4.9 + __sanitizer_syscall_pre_impl_geteuid@Base 4.9 + __sanitizer_syscall_pre_impl_getgid16@Base 4.9 + __sanitizer_syscall_pre_impl_getgid@Base 4.9 + __sanitizer_syscall_pre_impl_getgroups16@Base 4.9 + __sanitizer_syscall_pre_impl_getgroups@Base 4.9 + __sanitizer_syscall_pre_impl_gethostname@Base 4.9 + __sanitizer_syscall_pre_impl_getitimer@Base 4.9 + __sanitizer_syscall_pre_impl_getpeername@Base 4.9 + __sanitizer_syscall_pre_impl_getpgid@Base 4.9 + __sanitizer_syscall_pre_impl_getpgrp@Base 4.9 + __sanitizer_syscall_pre_impl_getpid@Base 4.9 + __sanitizer_syscall_pre_impl_getppid@Base 4.9 + __sanitizer_syscall_pre_impl_getpriority@Base 4.9 + __sanitizer_syscall_pre_impl_getresgid16@Base 4.9 + __sanitizer_syscall_pre_impl_getresgid@Base 4.9 + __sanitizer_syscall_pre_impl_getresuid16@Base 4.9 + __sanitizer_syscall_pre_impl_getresuid@Base 4.9 + __sanitizer_syscall_pre_impl_getrlimit@Base 4.9 + __sanitizer_syscall_pre_impl_getrusage@Base 4.9 + __sanitizer_syscall_pre_impl_getsid@Base 4.9 + __sanitizer_syscall_pre_impl_getsockname@Base 4.9 + __sanitizer_syscall_pre_impl_getsockopt@Base 4.9 + __sanitizer_syscall_pre_impl_gettid@Base 4.9 + __sanitizer_syscall_pre_impl_gettimeofday@Base 4.9 + __sanitizer_syscall_pre_impl_getuid16@Base 4.9 + __sanitizer_syscall_pre_impl_getuid@Base 4.9 + __sanitizer_syscall_pre_impl_getxattr@Base 4.9 + __sanitizer_syscall_pre_impl_init_module@Base 4.9 + __sanitizer_syscall_pre_impl_inotify_add_watch@Base 4.9 + __sanitizer_syscall_pre_impl_inotify_init1@Base 4.9 + __sanitizer_syscall_pre_impl_inotify_init@Base 4.9 + __sanitizer_syscall_pre_impl_inotify_rm_watch@Base 4.9 + __sanitizer_syscall_pre_impl_io_cancel@Base 4.9 + __sanitizer_syscall_pre_impl_io_destroy@Base 4.9 + __sanitizer_syscall_pre_impl_io_getevents@Base 4.9 + __sanitizer_syscall_pre_impl_io_setup@Base 4.9 + __sanitizer_syscall_pre_impl_io_submit@Base 4.9 + __sanitizer_syscall_pre_impl_ioctl@Base 4.9 + __sanitizer_syscall_pre_impl_ioperm@Base 4.9 + __sanitizer_syscall_pre_impl_ioprio_get@Base 4.9 + __sanitizer_syscall_pre_impl_ioprio_set@Base 4.9 + __sanitizer_syscall_pre_impl_ipc@Base 4.9 + __sanitizer_syscall_pre_impl_kexec_load@Base 4.9 + __sanitizer_syscall_pre_impl_keyctl@Base 4.9 + __sanitizer_syscall_pre_impl_kill@Base 4.9 + __sanitizer_syscall_pre_impl_lchown16@Base 4.9 + __sanitizer_syscall_pre_impl_lchown@Base 4.9 + __sanitizer_syscall_pre_impl_lgetxattr@Base 4.9 + __sanitizer_syscall_pre_impl_link@Base 4.9 + __sanitizer_syscall_pre_impl_linkat@Base 4.9 + __sanitizer_syscall_pre_impl_listen@Base 4.9 + __sanitizer_syscall_pre_impl_listxattr@Base 4.9 + __sanitizer_syscall_pre_impl_llistxattr@Base 4.9 + __sanitizer_syscall_pre_impl_llseek@Base 4.9 + __sanitizer_syscall_pre_impl_lookup_dcookie@Base 4.9 + __sanitizer_syscall_pre_impl_lremovexattr@Base 4.9 + __sanitizer_syscall_pre_impl_lseek@Base 4.9 + __sanitizer_syscall_pre_impl_lsetxattr@Base 4.9 + __sanitizer_syscall_pre_impl_lstat64@Base 4.9 + __sanitizer_syscall_pre_impl_lstat@Base 4.9 + __sanitizer_syscall_pre_impl_madvise@Base 4.9 + __sanitizer_syscall_pre_impl_mbind@Base 4.9 + __sanitizer_syscall_pre_impl_migrate_pages@Base 4.9 + __sanitizer_syscall_pre_impl_mincore@Base 4.9 + __sanitizer_syscall_pre_impl_mkdir@Base 4.9 + __sanitizer_syscall_pre_impl_mkdirat@Base 4.9 + __sanitizer_syscall_pre_impl_mknod@Base 4.9 + __sanitizer_syscall_pre_impl_mknodat@Base 4.9 + __sanitizer_syscall_pre_impl_mlock@Base 4.9 + __sanitizer_syscall_pre_impl_mlockall@Base 4.9 + __sanitizer_syscall_pre_impl_mmap_pgoff@Base 4.9 + __sanitizer_syscall_pre_impl_mount@Base 4.9 + __sanitizer_syscall_pre_impl_move_pages@Base 4.9 + __sanitizer_syscall_pre_impl_mprotect@Base 4.9 + __sanitizer_syscall_pre_impl_mq_getsetattr@Base 4.9 + __sanitizer_syscall_pre_impl_mq_notify@Base 4.9 + __sanitizer_syscall_pre_impl_mq_open@Base 4.9 + __sanitizer_syscall_pre_impl_mq_timedreceive@Base 4.9 + __sanitizer_syscall_pre_impl_mq_timedsend@Base 4.9 + __sanitizer_syscall_pre_impl_mq_unlink@Base 4.9 + __sanitizer_syscall_pre_impl_mremap@Base 4.9 + __sanitizer_syscall_pre_impl_msgctl@Base 4.9 + __sanitizer_syscall_pre_impl_msgget@Base 4.9 + __sanitizer_syscall_pre_impl_msgrcv@Base 4.9 + __sanitizer_syscall_pre_impl_msgsnd@Base 4.9 + __sanitizer_syscall_pre_impl_msync@Base 4.9 + __sanitizer_syscall_pre_impl_munlock@Base 4.9 + __sanitizer_syscall_pre_impl_munlockall@Base 4.9 + __sanitizer_syscall_pre_impl_munmap@Base 4.9 + __sanitizer_syscall_pre_impl_name_to_handle_at@Base 4.9 + __sanitizer_syscall_pre_impl_nanosleep@Base 4.9 + __sanitizer_syscall_pre_impl_newfstat@Base 4.9 + __sanitizer_syscall_pre_impl_newfstatat@Base 4.9 + __sanitizer_syscall_pre_impl_newlstat@Base 4.9 + __sanitizer_syscall_pre_impl_newstat@Base 4.9 + __sanitizer_syscall_pre_impl_newuname@Base 4.9 + __sanitizer_syscall_pre_impl_ni_syscall@Base 4.9 + __sanitizer_syscall_pre_impl_nice@Base 4.9 + __sanitizer_syscall_pre_impl_old_getrlimit@Base 4.9 + __sanitizer_syscall_pre_impl_old_mmap@Base 4.9 + __sanitizer_syscall_pre_impl_old_readdir@Base 4.9 + __sanitizer_syscall_pre_impl_old_select@Base 4.9 + __sanitizer_syscall_pre_impl_oldumount@Base 4.9 + __sanitizer_syscall_pre_impl_olduname@Base 4.9 + __sanitizer_syscall_pre_impl_open@Base 4.9 + __sanitizer_syscall_pre_impl_open_by_handle_at@Base 4.9 + __sanitizer_syscall_pre_impl_openat@Base 4.9 + __sanitizer_syscall_pre_impl_pause@Base 4.9 + __sanitizer_syscall_pre_impl_pciconfig_iobase@Base 4.9 + __sanitizer_syscall_pre_impl_pciconfig_read@Base 4.9 + __sanitizer_syscall_pre_impl_pciconfig_write@Base 4.9 + __sanitizer_syscall_pre_impl_perf_event_open@Base 4.9 + __sanitizer_syscall_pre_impl_personality@Base 4.9 + __sanitizer_syscall_pre_impl_pipe2@Base 4.9 + __sanitizer_syscall_pre_impl_pipe@Base 4.9 + __sanitizer_syscall_pre_impl_pivot_root@Base 4.9 + __sanitizer_syscall_pre_impl_poll@Base 4.9 + __sanitizer_syscall_pre_impl_ppoll@Base 4.9 + __sanitizer_syscall_pre_impl_pread64@Base 4.9 + __sanitizer_syscall_pre_impl_preadv@Base 4.9 + __sanitizer_syscall_pre_impl_prlimit64@Base 4.9 + __sanitizer_syscall_pre_impl_process_vm_readv@Base 4.9 + __sanitizer_syscall_pre_impl_process_vm_writev@Base 4.9 + __sanitizer_syscall_pre_impl_pselect6@Base 4.9 + __sanitizer_syscall_pre_impl_ptrace@Base 4.9 + __sanitizer_syscall_pre_impl_pwrite64@Base 4.9 + __sanitizer_syscall_pre_impl_pwritev@Base 4.9 + __sanitizer_syscall_pre_impl_quotactl@Base 4.9 + __sanitizer_syscall_pre_impl_read@Base 4.9 + __sanitizer_syscall_pre_impl_readlink@Base 4.9 + __sanitizer_syscall_pre_impl_readlinkat@Base 4.9 + __sanitizer_syscall_pre_impl_readv@Base 4.9 + __sanitizer_syscall_pre_impl_reboot@Base 4.9 + __sanitizer_syscall_pre_impl_recv@Base 4.9 + __sanitizer_syscall_pre_impl_recvfrom@Base 4.9 + __sanitizer_syscall_pre_impl_recvmmsg@Base 4.9 + __sanitizer_syscall_pre_impl_recvmsg@Base 4.9 + __sanitizer_syscall_pre_impl_remap_file_pages@Base 4.9 + __sanitizer_syscall_pre_impl_removexattr@Base 4.9 + __sanitizer_syscall_pre_impl_rename@Base 4.9 + __sanitizer_syscall_pre_impl_renameat@Base 4.9 + __sanitizer_syscall_pre_impl_request_key@Base 4.9 + __sanitizer_syscall_pre_impl_restart_syscall@Base 4.9 + __sanitizer_syscall_pre_impl_rmdir@Base 4.9 + __sanitizer_syscall_pre_impl_rt_sigpending@Base 4.9 + __sanitizer_syscall_pre_impl_rt_sigprocmask@Base 4.9 + __sanitizer_syscall_pre_impl_rt_sigqueueinfo@Base 4.9 + __sanitizer_syscall_pre_impl_rt_sigtimedwait@Base 4.9 + __sanitizer_syscall_pre_impl_rt_tgsigqueueinfo@Base 4.9 + __sanitizer_syscall_pre_impl_sched_get_priority_max@Base 4.9 + __sanitizer_syscall_pre_impl_sched_get_priority_min@Base 4.9 + __sanitizer_syscall_pre_impl_sched_getaffinity@Base 4.9 + __sanitizer_syscall_pre_impl_sched_getparam@Base 4.9 + __sanitizer_syscall_pre_impl_sched_getscheduler@Base 4.9 + __sanitizer_syscall_pre_impl_sched_rr_get_interval@Base 4.9 + __sanitizer_syscall_pre_impl_sched_setaffinity@Base 4.9 + __sanitizer_syscall_pre_impl_sched_setparam@Base 4.9 + __sanitizer_syscall_pre_impl_sched_setscheduler@Base 4.9 + __sanitizer_syscall_pre_impl_sched_yield@Base 4.9 + __sanitizer_syscall_pre_impl_select@Base 4.9 + __sanitizer_syscall_pre_impl_semctl@Base 4.9 + __sanitizer_syscall_pre_impl_semget@Base 4.9 + __sanitizer_syscall_pre_impl_semop@Base 4.9 + __sanitizer_syscall_pre_impl_semtimedop@Base 4.9 + __sanitizer_syscall_pre_impl_send@Base 4.9 + __sanitizer_syscall_pre_impl_sendfile64@Base 4.9 + __sanitizer_syscall_pre_impl_sendfile@Base 4.9 + __sanitizer_syscall_pre_impl_sendmmsg@Base 4.9 + __sanitizer_syscall_pre_impl_sendmsg@Base 4.9 + __sanitizer_syscall_pre_impl_sendto@Base 4.9 + __sanitizer_syscall_pre_impl_set_mempolicy@Base 4.9 + __sanitizer_syscall_pre_impl_set_robust_list@Base 4.9 + __sanitizer_syscall_pre_impl_set_tid_address@Base 4.9 + __sanitizer_syscall_pre_impl_setdomainname@Base 4.9 + __sanitizer_syscall_pre_impl_setfsgid16@Base 4.9 + __sanitizer_syscall_pre_impl_setfsgid@Base 4.9 + __sanitizer_syscall_pre_impl_setfsuid16@Base 4.9 + __sanitizer_syscall_pre_impl_setfsuid@Base 4.9 + __sanitizer_syscall_pre_impl_setgid16@Base 4.9 + __sanitizer_syscall_pre_impl_setgid@Base 4.9 + __sanitizer_syscall_pre_impl_setgroups16@Base 4.9 + __sanitizer_syscall_pre_impl_setgroups@Base 4.9 + __sanitizer_syscall_pre_impl_sethostname@Base 4.9 + __sanitizer_syscall_pre_impl_setitimer@Base 4.9 + __sanitizer_syscall_pre_impl_setns@Base 4.9 + __sanitizer_syscall_pre_impl_setpgid@Base 4.9 + __sanitizer_syscall_pre_impl_setpriority@Base 4.9 + __sanitizer_syscall_pre_impl_setregid16@Base 4.9 + __sanitizer_syscall_pre_impl_setregid@Base 4.9 + __sanitizer_syscall_pre_impl_setresgid16@Base 4.9 + __sanitizer_syscall_pre_impl_setresgid@Base 4.9 + __sanitizer_syscall_pre_impl_setresuid16@Base 4.9 + __sanitizer_syscall_pre_impl_setresuid@Base 4.9 + __sanitizer_syscall_pre_impl_setreuid16@Base 4.9 + __sanitizer_syscall_pre_impl_setreuid@Base 4.9 + __sanitizer_syscall_pre_impl_setrlimit@Base 4.9 + __sanitizer_syscall_pre_impl_setsid@Base 4.9 + __sanitizer_syscall_pre_impl_setsockopt@Base 4.9 + __sanitizer_syscall_pre_impl_settimeofday@Base 4.9 + __sanitizer_syscall_pre_impl_setuid16@Base 4.9 + __sanitizer_syscall_pre_impl_setuid@Base 4.9 + __sanitizer_syscall_pre_impl_setxattr@Base 4.9 + __sanitizer_syscall_pre_impl_sgetmask@Base 4.9 + __sanitizer_syscall_pre_impl_shmat@Base 4.9 + __sanitizer_syscall_pre_impl_shmctl@Base 4.9 + __sanitizer_syscall_pre_impl_shmdt@Base 4.9 + __sanitizer_syscall_pre_impl_shmget@Base 4.9 + __sanitizer_syscall_pre_impl_shutdown@Base 4.9 + __sanitizer_syscall_pre_impl_signal@Base 4.9 + __sanitizer_syscall_pre_impl_signalfd4@Base 4.9 + __sanitizer_syscall_pre_impl_signalfd@Base 4.9 + __sanitizer_syscall_pre_impl_sigpending@Base 4.9 + __sanitizer_syscall_pre_impl_sigprocmask@Base 4.9 + __sanitizer_syscall_pre_impl_socket@Base 4.9 + __sanitizer_syscall_pre_impl_socketcall@Base 4.9 + __sanitizer_syscall_pre_impl_socketpair@Base 4.9 + __sanitizer_syscall_pre_impl_splice@Base 4.9 + __sanitizer_syscall_pre_impl_spu_create@Base 4.9 + __sanitizer_syscall_pre_impl_spu_run@Base 4.9 + __sanitizer_syscall_pre_impl_ssetmask@Base 4.9 + __sanitizer_syscall_pre_impl_stat64@Base 4.9 + __sanitizer_syscall_pre_impl_stat@Base 4.9 + __sanitizer_syscall_pre_impl_statfs64@Base 4.9 + __sanitizer_syscall_pre_impl_statfs@Base 4.9 + __sanitizer_syscall_pre_impl_stime@Base 4.9 + __sanitizer_syscall_pre_impl_swapoff@Base 4.9 + __sanitizer_syscall_pre_impl_swapon@Base 4.9 + __sanitizer_syscall_pre_impl_symlink@Base 4.9 + __sanitizer_syscall_pre_impl_symlinkat@Base 4.9 + __sanitizer_syscall_pre_impl_sync@Base 4.9 + __sanitizer_syscall_pre_impl_syncfs@Base 4.9 + __sanitizer_syscall_pre_impl_sysctl@Base 4.9 + __sanitizer_syscall_pre_impl_sysfs@Base 4.9 + __sanitizer_syscall_pre_impl_sysinfo@Base 4.9 + __sanitizer_syscall_pre_impl_syslog@Base 4.9 + __sanitizer_syscall_pre_impl_tee@Base 4.9 + __sanitizer_syscall_pre_impl_tgkill@Base 4.9 + __sanitizer_syscall_pre_impl_time@Base 4.9 + __sanitizer_syscall_pre_impl_timer_create@Base 4.9 + __sanitizer_syscall_pre_impl_timer_delete@Base 4.9 + __sanitizer_syscall_pre_impl_timer_getoverrun@Base 4.9 + __sanitizer_syscall_pre_impl_timer_gettime@Base 4.9 + __sanitizer_syscall_pre_impl_timer_settime@Base 4.9 + __sanitizer_syscall_pre_impl_timerfd_create@Base 4.9 + __sanitizer_syscall_pre_impl_timerfd_gettime@Base 4.9 + __sanitizer_syscall_pre_impl_timerfd_settime@Base 4.9 + __sanitizer_syscall_pre_impl_times@Base 4.9 + __sanitizer_syscall_pre_impl_tkill@Base 4.9 + __sanitizer_syscall_pre_impl_truncate@Base 4.9 + __sanitizer_syscall_pre_impl_umask@Base 4.9 + __sanitizer_syscall_pre_impl_umount@Base 4.9 + __sanitizer_syscall_pre_impl_uname@Base 4.9 + __sanitizer_syscall_pre_impl_unlink@Base 4.9 + __sanitizer_syscall_pre_impl_unlinkat@Base 4.9 + __sanitizer_syscall_pre_impl_unshare@Base 4.9 + __sanitizer_syscall_pre_impl_uselib@Base 4.9 + __sanitizer_syscall_pre_impl_ustat@Base 4.9 + __sanitizer_syscall_pre_impl_utime@Base 4.9 + __sanitizer_syscall_pre_impl_utimensat@Base 4.9 + __sanitizer_syscall_pre_impl_utimes@Base 4.9 + __sanitizer_syscall_pre_impl_vfork@Base 4.9 + __sanitizer_syscall_pre_impl_vhangup@Base 4.9 + __sanitizer_syscall_pre_impl_vmsplice@Base 4.9 + __sanitizer_syscall_pre_impl_wait4@Base 4.9 + __sanitizer_syscall_pre_impl_waitid@Base 4.9 + __sanitizer_syscall_pre_impl_waitpid@Base 4.9 + __sanitizer_syscall_pre_impl_write@Base 4.9 + __sanitizer_syscall_pre_impl_writev@Base 4.9 + __sanitizer_unaligned_load16@Base 4.9 + __sanitizer_unaligned_load32@Base 4.9 + __sanitizer_unaligned_load64@Base 4.9 + __sanitizer_unaligned_store16@Base 4.9 + __sanitizer_unaligned_store32@Base 4.9 + __sanitizer_unaligned_store64@Base 4.9 + __xpg_strerror_r@Base 4.9 + _exit@Base 4.9 + _longjmp@Base 4.8 + accept4@Base 4.9 + accept@Base 4.9 + asctime@Base 4.8 + asctime_r@Base 4.8 + atoi@Base 4.8 + atol@Base 4.8 + atoll@Base 4.8 + backtrace@Base 4.9 + backtrace_symbols@Base 4.9 + calloc@Base 4.8 + canonicalize_file_name@Base 4.9 + cfree@Base 4.8 + clock_getres@Base 4.9 + clock_gettime@Base 4.9 + clock_settime@Base 4.9 + confstr@Base 4.9 + ctime@Base 4.8 + ctime_r@Base 4.8 + drand48_r@Base 4.9 + ether_aton@Base 4.9 + ether_aton_r@Base 4.9 + ether_hostton@Base 4.9 + ether_line@Base 4.9 + ether_ntoa@Base 4.9 + ether_ntoa_r@Base 4.9 + ether_ntohost@Base 4.9 + free@Base 4.8 + frexp@Base 4.9 + frexpf@Base 4.9 + frexpl@Base 4.9 + fscanf@Base 4.8 + fstatfs64@Base 4.9 + fstatfs@Base 4.9 + fstatvfs64@Base 4.9 + fstatvfs@Base 4.9 + get_current_dir_name@Base 4.9 + getaddrinfo@Base 4.9 + getcwd@Base 4.9 + getdelim@Base 4.9 + getgrgid@Base 4.9 + getgrgid_r@Base 4.9 + getgrnam@Base 4.9 + getgrnam_r@Base 4.9 + getgroups@Base 4.9 + gethostbyaddr@Base 4.9 + gethostbyaddr_r@Base 4.9 + gethostbyname2@Base 4.9 + gethostbyname2_r@Base 4.9 + gethostbyname@Base 4.9 + gethostbyname_r@Base 4.9 + gethostent@Base 4.9 + gethostent_r@Base 4.9 + getitimer@Base 4.9 + getline@Base 4.9 + getmntent@Base 4.9 + getmntent_r@Base 4.9 + getnameinfo@Base 4.9 + getpeername@Base 4.9 + getpwnam@Base 4.9 + getpwnam_r@Base 4.9 + getpwuid@Base 4.9 + getpwuid_r@Base 4.9 + getsockname@Base 4.9 + getsockopt@Base 4.9 + glob64@Base 4.9 + glob@Base 4.9 + gmtime@Base 4.8 + gmtime_r@Base 4.8 + iconv@Base 4.9 + index@Base 4.8 + inet_aton@Base 4.9 + inet_ntop@Base 4.9 + inet_pton@Base 4.9 + initgroups@Base 4.9 + ioctl@Base 4.9 + lgamma@Base 4.9 + lgamma_r@Base 4.9 + lgammaf@Base 4.9 + lgammaf_r@Base 4.9 + lgammal@Base 4.9 + lgammal_r@Base 4.9 + localtime@Base 4.8 + localtime_r@Base 4.8 + longjmp@Base 4.8 + lrand48_r@Base 4.9 + mallinfo@Base 4.8 + malloc@Base 4.8 + malloc_stats@Base 4.8 + malloc_usable_size@Base 4.8 + mallopt@Base 4.8 + mbsnrtowcs@Base 4.9 + mbsrtowcs@Base 4.9 + mbstowcs@Base 4.9 + memalign@Base 4.8 + memcmp@Base 4.8 + memcpy@Base 4.8 + memmove@Base 4.8 + memset@Base 4.8 + mlock@Base 4.8 + mlockall@Base 4.8 + modf@Base 4.9 + modff@Base 4.9 + modfl@Base 4.9 + munlock@Base 4.8 + munlockall@Base 4.8 + poll@Base 4.9 + posix_memalign@Base 4.8 + ppoll@Base 4.9 + prctl@Base 4.8 + pread64@Base 4.8 + pread@Base 4.8 + preadv64@Base 4.9 + preadv@Base 4.9 + pthread_attr_getaffinity_np@Base 4.9 + pthread_attr_getdetachstate@Base 4.9 + pthread_attr_getguardsize@Base 4.9 + pthread_attr_getinheritsched@Base 4.9 + pthread_attr_getschedparam@Base 4.9 + pthread_attr_getschedpolicy@Base 4.9 + pthread_attr_getscope@Base 4.9 + pthread_attr_getstack@Base 4.9 + pthread_attr_getstacksize@Base 4.9 + pthread_cond_broadcast@Base 4.9 + pthread_cond_init@Base 4.9 + pthread_cond_signal@Base 4.9 + pthread_cond_wait@Base 4.9 + pthread_create@Base 4.8 + pthread_getschedparam@Base 4.9 + pthread_mutex_lock@Base 4.9 + pthread_mutex_unlock@Base 4.9 + pthread_setname_np@Base 4.9 + pvalloc@Base 4.8 + pwrite64@Base 4.8 + pwrite@Base 4.8 + pwritev64@Base 4.9 + pwritev@Base 4.9 + random_r@Base 4.9 + read@Base 4.8 + readdir64@Base 4.9 + readdir64_r@Base 4.9 + readdir@Base 4.9 + readdir_r@Base 4.9 + readv@Base 4.9 + realloc@Base 4.8 + realpath@Base 4.9 + recvmsg@Base 4.9 + remquo@Base 4.9 + remquof@Base 4.9 + remquol@Base 4.9 + scandir64@Base 4.9 + scandir@Base 4.9 + scanf@Base 4.8 + sched_getaffinity@Base 4.9 + setitimer@Base 4.9 + setlocale@Base 4.9 + sigaction@Base 4.8 + sigemptyset@Base 4.9 + sigfillset@Base 4.9 + siglongjmp@Base 4.8 + signal@Base 4.8 + sigpending@Base 4.9 + sigprocmask@Base 4.9 + sigtimedwait@Base 4.9 + sigwait@Base 4.9 + sigwaitinfo@Base 4.9 + sincos@Base 4.9 + sincosf@Base 4.9 + sincosl@Base 4.9 + sscanf@Base 4.8 + statfs64@Base 4.9 + statfs@Base 4.9 + statvfs64@Base 4.9 + statvfs@Base 4.9 + strcasecmp@Base 4.8 + strcat@Base 4.8 + strchr@Base 4.8 + strcmp@Base 4.8 + strcpy@Base 4.8 + strdup@Base 4.8 + strerror@Base 4.9 + strerror_r@Base 4.9 + strlen@Base 4.8 + strncasecmp@Base 4.8 + strncat@Base 4.8 + strncmp@Base 4.8 + strncpy@Base 4.8 + strnlen@Base 4.8 + strptime@Base 4.9 + strtoimax@Base 4.9 + strtol@Base 4.8 + strtoll@Base 4.8 + strtoumax@Base 4.9 + swapcontext@Base 4.8 + sysinfo@Base 4.9 + tcgetattr@Base 4.9 + tempnam@Base 4.9 + textdomain@Base 4.9 + time@Base 4.9 + times@Base 4.9 + tmpnam@Base 4.9 + tmpnam_r@Base 4.9 + valloc@Base 4.8 + vfscanf@Base 4.8 + vscanf@Base 4.8 + vsscanf@Base 4.8 + wait3@Base 4.9 + wait4@Base 4.9 + wait@Base 4.9 + waitid@Base 4.9 + waitpid@Base 4.9 + wcslen@Base 4.9 + wcsnrtombs@Base 4.9 + wcsrtombs@Base 4.9 + wcstombs@Base 4.9 + wordexp@Base 4.9 + write@Base 4.8 + writev@Base 4.9 --- gcc-4.9-4.9.2.orig/debian/libasan1.symbols +++ gcc-4.9-4.9.2/debian/libasan1.symbols @@ -0,0 +1,7 @@ +libasan.so.1 libasan1 #MINVER# +#include "libasan.symbols.common" +(arch=!arm64 !alpha !amd64 !ia64 !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)#include "libasan.symbols.32" +(arch=arm64 alpha amd64 ia64 ppc64 ppc64el s390x sparc64 kfreebsd-amd64)#include "libasan.symbols.64" +# these are missing on some archs ... + (arch=!armel !armhf !powerpc !ppc64 !sparc !sparc64)__interceptor_ptrace@Base 4.9 + (arch=!armel !armhf !powerpc !ppc64 !sparc !sparc64)ptrace@Base 4.9 --- gcc-4.9-4.9.2.orig/debian/libatomic1.symbols +++ gcc-4.9-4.9.2/debian/libatomic1.symbols @@ -0,0 +1,3 @@ +libatomic.so.1 libatomic1 #MINVER# +#include "libatomic1.symbols.common" +(arch=arm64 alpha amd64 ia64 ppc64 ppc64el s390x sparc64 x32 kfreebsd-amd64)#include "libatomic1.symbols.64" --- gcc-4.9-4.9.2.orig/debian/libatomic1.symbols.64 +++ gcc-4.9-4.9.2/debian/libatomic1.symbols.64 @@ -0,0 +1,17 @@ + __atomic_add_fetch_16@LIBATOMIC_1.0 4.8 + __atomic_and_fetch_16@LIBATOMIC_1.0 4.8 + __atomic_compare_exchange_16@LIBATOMIC_1.0 4.8 + __atomic_exchange_16@LIBATOMIC_1.0 4.8 + __atomic_fetch_add_16@LIBATOMIC_1.0 4.8 + __atomic_fetch_and_16@LIBATOMIC_1.0 4.8 + __atomic_fetch_nand_16@LIBATOMIC_1.0 4.8 + __atomic_fetch_or_16@LIBATOMIC_1.0 4.8 + __atomic_fetch_sub_16@LIBATOMIC_1.0 4.8 + __atomic_fetch_xor_16@LIBATOMIC_1.0 4.8 + __atomic_load_16@LIBATOMIC_1.0 4.8 + __atomic_nand_fetch_16@LIBATOMIC_1.0 4.8 + __atomic_or_fetch_16@LIBATOMIC_1.0 4.8 + __atomic_store_16@LIBATOMIC_1.0 4.8 + __atomic_sub_fetch_16@LIBATOMIC_1.0 4.8 + __atomic_test_and_set_16@LIBATOMIC_1.0 4.8 + __atomic_xor_fetch_16@LIBATOMIC_1.0 4.8 --- gcc-4.9-4.9.2.orig/debian/libatomic1.symbols.common +++ gcc-4.9-4.9.2/debian/libatomic1.symbols.common @@ -0,0 +1,76 @@ + LIBATOMIC_1.0@LIBATOMIC_1.0 4.8 + LIBATOMIC_1.1@LIBATOMIC_1.1 4.9 + __atomic_add_fetch_1@LIBATOMIC_1.0 4.8 + __atomic_add_fetch_2@LIBATOMIC_1.0 4.8 + __atomic_add_fetch_4@LIBATOMIC_1.0 4.8 + __atomic_add_fetch_8@LIBATOMIC_1.0 4.8 + __atomic_and_fetch_1@LIBATOMIC_1.0 4.8 + __atomic_and_fetch_2@LIBATOMIC_1.0 4.8 + __atomic_and_fetch_4@LIBATOMIC_1.0 4.8 + __atomic_and_fetch_8@LIBATOMIC_1.0 4.8 + __atomic_compare_exchange@LIBATOMIC_1.0 4.8 + __atomic_compare_exchange_1@LIBATOMIC_1.0 4.8 + __atomic_compare_exchange_2@LIBATOMIC_1.0 4.8 + __atomic_compare_exchange_4@LIBATOMIC_1.0 4.8 + __atomic_compare_exchange_8@LIBATOMIC_1.0 4.8 + __atomic_exchange@LIBATOMIC_1.0 4.8 + __atomic_exchange_1@LIBATOMIC_1.0 4.8 + __atomic_exchange_2@LIBATOMIC_1.0 4.8 + __atomic_exchange_4@LIBATOMIC_1.0 4.8 + __atomic_exchange_8@LIBATOMIC_1.0 4.8 + __atomic_feraiseexcept@LIBATOMIC_1.1 4.9 + __atomic_fetch_add_1@LIBATOMIC_1.0 4.8 + __atomic_fetch_add_2@LIBATOMIC_1.0 4.8 + __atomic_fetch_add_4@LIBATOMIC_1.0 4.8 + __atomic_fetch_add_8@LIBATOMIC_1.0 4.8 + __atomic_fetch_and_1@LIBATOMIC_1.0 4.8 + __atomic_fetch_and_2@LIBATOMIC_1.0 4.8 + __atomic_fetch_and_4@LIBATOMIC_1.0 4.8 + __atomic_fetch_and_8@LIBATOMIC_1.0 4.8 + __atomic_fetch_nand_1@LIBATOMIC_1.0 4.8 + __atomic_fetch_nand_2@LIBATOMIC_1.0 4.8 + __atomic_fetch_nand_4@LIBATOMIC_1.0 4.8 + __atomic_fetch_nand_8@LIBATOMIC_1.0 4.8 + __atomic_fetch_or_1@LIBATOMIC_1.0 4.8 + __atomic_fetch_or_2@LIBATOMIC_1.0 4.8 + __atomic_fetch_or_4@LIBATOMIC_1.0 4.8 + __atomic_fetch_or_8@LIBATOMIC_1.0 4.8 + __atomic_fetch_sub_1@LIBATOMIC_1.0 4.8 + __atomic_fetch_sub_2@LIBATOMIC_1.0 4.8 + __atomic_fetch_sub_4@LIBATOMIC_1.0 4.8 + __atomic_fetch_sub_8@LIBATOMIC_1.0 4.8 + __atomic_fetch_xor_1@LIBATOMIC_1.0 4.8 + __atomic_fetch_xor_2@LIBATOMIC_1.0 4.8 + __atomic_fetch_xor_4@LIBATOMIC_1.0 4.8 + __atomic_fetch_xor_8@LIBATOMIC_1.0 4.8 + __atomic_is_lock_free@LIBATOMIC_1.0 4.8 + __atomic_load@LIBATOMIC_1.0 4.8 + __atomic_load_1@LIBATOMIC_1.0 4.8 + __atomic_load_2@LIBATOMIC_1.0 4.8 + __atomic_load_4@LIBATOMIC_1.0 4.8 + __atomic_load_8@LIBATOMIC_1.0 4.8 + __atomic_nand_fetch_1@LIBATOMIC_1.0 4.8 + __atomic_nand_fetch_2@LIBATOMIC_1.0 4.8 + __atomic_nand_fetch_4@LIBATOMIC_1.0 4.8 + __atomic_nand_fetch_8@LIBATOMIC_1.0 4.8 + __atomic_or_fetch_1@LIBATOMIC_1.0 4.8 + __atomic_or_fetch_2@LIBATOMIC_1.0 4.8 + __atomic_or_fetch_4@LIBATOMIC_1.0 4.8 + __atomic_or_fetch_8@LIBATOMIC_1.0 4.8 + __atomic_store@LIBATOMIC_1.0 4.8 + __atomic_store_1@LIBATOMIC_1.0 4.8 + __atomic_store_2@LIBATOMIC_1.0 4.8 + __atomic_store_4@LIBATOMIC_1.0 4.8 + __atomic_store_8@LIBATOMIC_1.0 4.8 + __atomic_sub_fetch_1@LIBATOMIC_1.0 4.8 + __atomic_sub_fetch_2@LIBATOMIC_1.0 4.8 + __atomic_sub_fetch_4@LIBATOMIC_1.0 4.8 + __atomic_sub_fetch_8@LIBATOMIC_1.0 4.8 + __atomic_test_and_set_1@LIBATOMIC_1.0 4.8 + __atomic_test_and_set_2@LIBATOMIC_1.0 4.8 + __atomic_test_and_set_4@LIBATOMIC_1.0 4.8 + __atomic_test_and_set_8@LIBATOMIC_1.0 4.8 + __atomic_xor_fetch_1@LIBATOMIC_1.0 4.8 + __atomic_xor_fetch_2@LIBATOMIC_1.0 4.8 + __atomic_xor_fetch_4@LIBATOMIC_1.0 4.8 + __atomic_xor_fetch_8@LIBATOMIC_1.0 4.8 --- gcc-4.9-4.9.2.orig/debian/libcilkrts5.symbols +++ gcc-4.9-4.9.2/debian/libcilkrts5.symbols @@ -0,0 +1,319 @@ +libcilkrts.so.5 libcilkrts5 #MINVER# + CILKABI0@CILKABI0 4.9 + CILKABI1@CILKABI1 4.9 + CILKLIB1.02@CILKLIB1.02 4.9 + __cilkrts_bind_thread@CILKABI0 4.9 + __cilkrts_bind_thread_1@CILKABI1 4.9 + __cilkrts_bump_loop_rank@CILKABI1 4.9 + __cilkrts_bump_loop_rank_internal@CILKABI1 4.9 + __cilkrts_bump_worker_rank@CILKABI1 4.9 + __cilkrts_bump_worker_rank_internal@CILKABI1 4.9 + __cilkrts_cilk_for_32@CILKABI0 4.9 + __cilkrts_cilk_for_64@CILKABI0 4.9 + __cilkrts_dump_stats@CILKABI0 4.9 + __cilkrts_end_cilk@CILKABI0 4.9 + __cilkrts_enter_frame@CILKABI0 4.9 + __cilkrts_enter_frame_1@CILKABI1 4.9 + __cilkrts_enter_frame_fast@CILKABI0 4.9 + __cilkrts_enter_frame_fast_1@CILKABI1 4.9 + __cilkrts_get_force_reduce@CILKABI0 4.9 + __cilkrts_get_nworkers@CILKABI0 4.9 + __cilkrts_get_pedigree_info@CILKABI1 4.9 + __cilkrts_get_pedigree_internal@CILKABI1 4.9 + __cilkrts_get_sf@CILKABI1 4.9 + __cilkrts_get_stack_size@CILKABI1 4.9 + __cilkrts_get_tls_worker@CILKABI0 4.9 + __cilkrts_get_tls_worker_fast@CILKABI0 4.9 + __cilkrts_get_total_workers@CILKABI0 4.9 + __cilkrts_get_worker_number@CILKABI0 4.9 + __cilkrts_get_worker_rank@CILKABI1 4.9 + __cilkrts_global_state@CILKABI0 4.9 + __cilkrts_hyper_create@CILKABI0 4.9 + __cilkrts_hyper_destroy@CILKABI0 4.9 + __cilkrts_hyper_lookup@CILKABI0 4.9 + __cilkrts_hyperobject_alloc@CILKABI0 4.9 + __cilkrts_hyperobject_dealloc@CILKABI0 4.9 + __cilkrts_hyperobject_noop_destroy@CILKABI0 4.9 + __cilkrts_init@CILKABI0 4.9 + __cilkrts_leave_frame@CILKABI0 4.9 + __cilkrts_metacall@CILKABI0 4.9 + __cilkrts_rethrow@CILKABI0 4.9 + __cilkrts_return_exception@CILKABI0 4.9 + __cilkrts_save_fp_ctrl_state@CILKABI1 4.9 + __cilkrts_set_param@CILKABI0 4.9 + __cilkrts_stack_alloc@CILKABI1 4.9 + __cilkrts_stack_free@CILKABI1 4.9 + __cilkrts_sync@CILKABI0 4.9 + __cilkrts_synched@CILKABI0 4.9 + __cilkrts_watch_stack@CILKABI1 4.9 + __cilkrts_worker_stub@CILKABI0 4.9 + cilk_c_reducer_max_identity_char@CILKLIB1.02 4.9 + cilk_c_reducer_max_identity_double@CILKLIB1.02 4.9 + cilk_c_reducer_max_identity_float@CILKLIB1.02 4.9 + cilk_c_reducer_max_identity_int@CILKLIB1.02 4.9 + cilk_c_reducer_max_identity_long@CILKLIB1.02 4.9 + cilk_c_reducer_max_identity_longdouble@CILKLIB1.02 4.9 + cilk_c_reducer_max_identity_longlong@CILKLIB1.02 4.9 + cilk_c_reducer_max_identity_schar@CILKLIB1.02 4.9 + cilk_c_reducer_max_identity_short@CILKLIB1.02 4.9 + cilk_c_reducer_max_identity_uchar@CILKLIB1.02 4.9 + cilk_c_reducer_max_identity_uint@CILKLIB1.02 4.9 + cilk_c_reducer_max_identity_ulong@CILKLIB1.02 4.9 + cilk_c_reducer_max_identity_ulonglong@CILKLIB1.02 4.9 + cilk_c_reducer_max_identity_unsigned@CILKLIB1.02 4.9 + cilk_c_reducer_max_identity_ushort@CILKLIB1.02 4.9 + cilk_c_reducer_max_identity_wchar_t@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_identity_char@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_identity_double@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_identity_float@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_identity_int@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_identity_long@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_identity_longdouble@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_identity_longlong@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_identity_schar@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_identity_short@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_identity_uchar@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_identity_uint@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_identity_ulong@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_identity_ulonglong@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_identity_unsigned@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_identity_ushort@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_identity_wchar_t@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_reduce_char@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_reduce_double@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_reduce_float@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_reduce_int@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_reduce_long@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_reduce_longdouble@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_reduce_longlong@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_reduce_schar@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_reduce_short@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_reduce_uchar@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_reduce_uint@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_reduce_ulong@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_reduce_ulonglong@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_reduce_unsigned@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_reduce_ushort@CILKLIB1.02 4.9 + cilk_c_reducer_max_index_reduce_wchar_t@CILKLIB1.02 4.9 + cilk_c_reducer_max_reduce_char@CILKLIB1.02 4.9 + cilk_c_reducer_max_reduce_double@CILKLIB1.02 4.9 + cilk_c_reducer_max_reduce_float@CILKLIB1.02 4.9 + cilk_c_reducer_max_reduce_int@CILKLIB1.02 4.9 + cilk_c_reducer_max_reduce_long@CILKLIB1.02 4.9 + cilk_c_reducer_max_reduce_longdouble@CILKLIB1.02 4.9 + cilk_c_reducer_max_reduce_longlong@CILKLIB1.02 4.9 + cilk_c_reducer_max_reduce_schar@CILKLIB1.02 4.9 + cilk_c_reducer_max_reduce_short@CILKLIB1.02 4.9 + cilk_c_reducer_max_reduce_uchar@CILKLIB1.02 4.9 + cilk_c_reducer_max_reduce_uint@CILKLIB1.02 4.9 + cilk_c_reducer_max_reduce_ulong@CILKLIB1.02 4.9 + cilk_c_reducer_max_reduce_ulonglong@CILKLIB1.02 4.9 + cilk_c_reducer_max_reduce_unsigned@CILKLIB1.02 4.9 + cilk_c_reducer_max_reduce_ushort@CILKLIB1.02 4.9 + cilk_c_reducer_max_reduce_wchar_t@CILKLIB1.02 4.9 + cilk_c_reducer_min_identity_char@CILKLIB1.02 4.9 + cilk_c_reducer_min_identity_double@CILKLIB1.02 4.9 + cilk_c_reducer_min_identity_float@CILKLIB1.02 4.9 + cilk_c_reducer_min_identity_int@CILKLIB1.02 4.9 + cilk_c_reducer_min_identity_long@CILKLIB1.02 4.9 + cilk_c_reducer_min_identity_longdouble@CILKLIB1.02 4.9 + cilk_c_reducer_min_identity_longlong@CILKLIB1.02 4.9 + cilk_c_reducer_min_identity_schar@CILKLIB1.02 4.9 + cilk_c_reducer_min_identity_short@CILKLIB1.02 4.9 + cilk_c_reducer_min_identity_uchar@CILKLIB1.02 4.9 + cilk_c_reducer_min_identity_uint@CILKLIB1.02 4.9 + cilk_c_reducer_min_identity_ulong@CILKLIB1.02 4.9 + cilk_c_reducer_min_identity_ulonglong@CILKLIB1.02 4.9 + cilk_c_reducer_min_identity_unsigned@CILKLIB1.02 4.9 + cilk_c_reducer_min_identity_ushort@CILKLIB1.02 4.9 + cilk_c_reducer_min_identity_wchar_t@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_identity_char@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_identity_double@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_identity_float@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_identity_int@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_identity_long@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_identity_longdouble@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_identity_longlong@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_identity_schar@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_identity_short@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_identity_uchar@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_identity_uint@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_identity_ulong@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_identity_ulonglong@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_identity_unsigned@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_identity_ushort@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_identity_wchar_t@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_reduce_char@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_reduce_double@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_reduce_float@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_reduce_int@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_reduce_long@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_reduce_longdouble@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_reduce_longlong@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_reduce_schar@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_reduce_short@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_reduce_uchar@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_reduce_uint@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_reduce_ulong@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_reduce_ulonglong@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_reduce_unsigned@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_reduce_ushort@CILKLIB1.02 4.9 + cilk_c_reducer_min_index_reduce_wchar_t@CILKLIB1.02 4.9 + cilk_c_reducer_min_reduce_char@CILKLIB1.02 4.9 + cilk_c_reducer_min_reduce_double@CILKLIB1.02 4.9 + cilk_c_reducer_min_reduce_float@CILKLIB1.02 4.9 + cilk_c_reducer_min_reduce_int@CILKLIB1.02 4.9 + cilk_c_reducer_min_reduce_long@CILKLIB1.02 4.9 + cilk_c_reducer_min_reduce_longdouble@CILKLIB1.02 4.9 + cilk_c_reducer_min_reduce_longlong@CILKLIB1.02 4.9 + cilk_c_reducer_min_reduce_schar@CILKLIB1.02 4.9 + cilk_c_reducer_min_reduce_short@CILKLIB1.02 4.9 + cilk_c_reducer_min_reduce_uchar@CILKLIB1.02 4.9 + cilk_c_reducer_min_reduce_uint@CILKLIB1.02 4.9 + cilk_c_reducer_min_reduce_ulong@CILKLIB1.02 4.9 + cilk_c_reducer_min_reduce_ulonglong@CILKLIB1.02 4.9 + cilk_c_reducer_min_reduce_unsigned@CILKLIB1.02 4.9 + cilk_c_reducer_min_reduce_ushort@CILKLIB1.02 4.9 + cilk_c_reducer_min_reduce_wchar_t@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_identity_char@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_identity_double@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_identity_float@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_identity_int@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_identity_long@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_identity_longdouble@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_identity_longlong@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_identity_schar@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_identity_short@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_identity_uchar@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_identity_uint@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_identity_ulong@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_identity_ulonglong@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_identity_unsigned@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_identity_ushort@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_identity_wchar_t@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_reduce_char@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_reduce_double@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_reduce_float@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_reduce_int@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_reduce_long@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_reduce_longdouble@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_reduce_longlong@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_reduce_schar@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_reduce_short@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_reduce_uchar@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_reduce_uint@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_reduce_ulong@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_reduce_ulonglong@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_reduce_unsigned@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_reduce_ushort@CILKLIB1.02 4.9 + cilk_c_reducer_opadd_reduce_wchar_t@CILKLIB1.02 4.9 + cilk_c_reducer_opand_identity_char@CILKLIB1.02 4.9 + cilk_c_reducer_opand_identity_int@CILKLIB1.02 4.9 + cilk_c_reducer_opand_identity_long@CILKLIB1.02 4.9 + cilk_c_reducer_opand_identity_longlong@CILKLIB1.02 4.9 + cilk_c_reducer_opand_identity_schar@CILKLIB1.02 4.9 + cilk_c_reducer_opand_identity_short@CILKLIB1.02 4.9 + cilk_c_reducer_opand_identity_uchar@CILKLIB1.02 4.9 + cilk_c_reducer_opand_identity_uint@CILKLIB1.02 4.9 + cilk_c_reducer_opand_identity_ulong@CILKLIB1.02 4.9 + cilk_c_reducer_opand_identity_ulonglong@CILKLIB1.02 4.9 + cilk_c_reducer_opand_identity_unsigned@CILKLIB1.02 4.9 + cilk_c_reducer_opand_identity_ushort@CILKLIB1.02 4.9 + cilk_c_reducer_opand_identity_wchar_t@CILKLIB1.02 4.9 + cilk_c_reducer_opand_reduce_char@CILKLIB1.02 4.9 + cilk_c_reducer_opand_reduce_int@CILKLIB1.02 4.9 + cilk_c_reducer_opand_reduce_long@CILKLIB1.02 4.9 + cilk_c_reducer_opand_reduce_longlong@CILKLIB1.02 4.9 + cilk_c_reducer_opand_reduce_schar@CILKLIB1.02 4.9 + cilk_c_reducer_opand_reduce_short@CILKLIB1.02 4.9 + cilk_c_reducer_opand_reduce_uchar@CILKLIB1.02 4.9 + cilk_c_reducer_opand_reduce_uint@CILKLIB1.02 4.9 + cilk_c_reducer_opand_reduce_ulong@CILKLIB1.02 4.9 + cilk_c_reducer_opand_reduce_ulonglong@CILKLIB1.02 4.9 + cilk_c_reducer_opand_reduce_unsigned@CILKLIB1.02 4.9 + cilk_c_reducer_opand_reduce_ushort@CILKLIB1.02 4.9 + cilk_c_reducer_opand_reduce_wchar_t@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_identity_char@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_identity_double@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_identity_float@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_identity_int@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_identity_long@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_identity_longdouble@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_identity_longlong@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_identity_schar@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_identity_short@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_identity_uchar@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_identity_uint@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_identity_ulong@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_identity_ulonglong@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_identity_unsigned@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_identity_ushort@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_identity_wchar_t@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_reduce_char@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_reduce_double@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_reduce_float@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_reduce_int@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_reduce_long@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_reduce_longdouble@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_reduce_longlong@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_reduce_schar@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_reduce_short@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_reduce_uchar@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_reduce_uint@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_reduce_ulong@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_reduce_ulonglong@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_reduce_unsigned@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_reduce_ushort@CILKLIB1.02 4.9 + cilk_c_reducer_opmul_reduce_wchar_t@CILKLIB1.02 4.9 + cilk_c_reducer_opor_identity_char@CILKLIB1.02 4.9 + cilk_c_reducer_opor_identity_int@CILKLIB1.02 4.9 + cilk_c_reducer_opor_identity_long@CILKLIB1.02 4.9 + cilk_c_reducer_opor_identity_longlong@CILKLIB1.02 4.9 + cilk_c_reducer_opor_identity_schar@CILKLIB1.02 4.9 + cilk_c_reducer_opor_identity_short@CILKLIB1.02 4.9 + cilk_c_reducer_opor_identity_uchar@CILKLIB1.02 4.9 + cilk_c_reducer_opor_identity_uint@CILKLIB1.02 4.9 + cilk_c_reducer_opor_identity_ulong@CILKLIB1.02 4.9 + cilk_c_reducer_opor_identity_ulonglong@CILKLIB1.02 4.9 + cilk_c_reducer_opor_identity_unsigned@CILKLIB1.02 4.9 + cilk_c_reducer_opor_identity_ushort@CILKLIB1.02 4.9 + cilk_c_reducer_opor_identity_wchar_t@CILKLIB1.02 4.9 + cilk_c_reducer_opor_reduce_char@CILKLIB1.02 4.9 + cilk_c_reducer_opor_reduce_int@CILKLIB1.02 4.9 + cilk_c_reducer_opor_reduce_long@CILKLIB1.02 4.9 + cilk_c_reducer_opor_reduce_longlong@CILKLIB1.02 4.9 + cilk_c_reducer_opor_reduce_schar@CILKLIB1.02 4.9 + cilk_c_reducer_opor_reduce_short@CILKLIB1.02 4.9 + cilk_c_reducer_opor_reduce_uchar@CILKLIB1.02 4.9 + cilk_c_reducer_opor_reduce_uint@CILKLIB1.02 4.9 + cilk_c_reducer_opor_reduce_ulong@CILKLIB1.02 4.9 + cilk_c_reducer_opor_reduce_ulonglong@CILKLIB1.02 4.9 + cilk_c_reducer_opor_reduce_unsigned@CILKLIB1.02 4.9 + cilk_c_reducer_opor_reduce_ushort@CILKLIB1.02 4.9 + cilk_c_reducer_opor_reduce_wchar_t@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_identity_char@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_identity_int@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_identity_long@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_identity_longlong@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_identity_schar@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_identity_short@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_identity_uchar@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_identity_uint@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_identity_ulong@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_identity_ulonglong@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_identity_unsigned@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_identity_ushort@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_identity_wchar_t@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_reduce_char@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_reduce_int@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_reduce_long@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_reduce_longlong@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_reduce_schar@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_reduce_short@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_reduce_uchar@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_reduce_uint@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_reduce_ulong@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_reduce_ulonglong@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_reduce_unsigned@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_reduce_ushort@CILKLIB1.02 4.9 + cilk_c_reducer_opxor_reduce_wchar_t@CILKLIB1.02 4.9 --- gcc-4.9-4.9.2.orig/debian/libgcc1.symbols.aeabi +++ gcc-4.9-4.9.2/debian/libgcc1.symbols.aeabi @@ -0,0 +1,69 @@ + __aeabi_cdcmpeq@GCC_3.5 1:4.4.0 + __aeabi_cdcmple@GCC_3.5 1:4.4.0 + __aeabi_cdrcmple@GCC_3.5 1:4.4.0 + __aeabi_cfcmpeq@GCC_3.5 1:4.4.0 + __aeabi_cfcmple@GCC_3.5 1:4.4.0 + __aeabi_cfrcmple@GCC_3.5 1:4.4.0 + __aeabi_d2f@GCC_3.5 1:4.4.0 + __aeabi_d2iz@GCC_3.5 1:4.4.0 + __aeabi_d2lz@GCC_3.5 1:4.4.0 + __aeabi_d2uiz@GCC_3.5 1:4.4.0 + __aeabi_d2ulz@GCC_3.5 1:4.4.0 + __aeabi_dadd@GCC_3.5 1:4.4.0 + __aeabi_dcmpeq@GCC_3.5 1:4.4.0 + __aeabi_dcmpge@GCC_3.5 1:4.4.0 + __aeabi_dcmpgt@GCC_3.5 1:4.4.0 + __aeabi_dcmple@GCC_3.5 1:4.4.0 + __aeabi_dcmplt@GCC_3.5 1:4.4.0 + __aeabi_dcmpun@GCC_3.5 1:4.4.0 + __aeabi_ddiv@GCC_3.5 1:4.4.0 + __aeabi_dmul@GCC_3.5 1:4.4.0 + __aeabi_dneg@GCC_3.5 1:4.4.0 + __aeabi_drsub@GCC_3.5 1:4.4.0 + __aeabi_dsub@GCC_3.5 1:4.4.0 + __aeabi_f2d@GCC_3.5 1:4.4.0 + __aeabi_f2iz@GCC_3.5 1:4.4.0 + __aeabi_f2lz@GCC_3.5 1:4.4.0 + __aeabi_f2uiz@GCC_3.5 1:4.4.0 + __aeabi_f2ulz@GCC_3.5 1:4.4.0 + __aeabi_fadd@GCC_3.5 1:4.4.0 + __aeabi_fcmpeq@GCC_3.5 1:4.4.0 + __aeabi_fcmpge@GCC_3.5 1:4.4.0 + __aeabi_fcmpgt@GCC_3.5 1:4.4.0 + __aeabi_fcmple@GCC_3.5 1:4.4.0 + __aeabi_fcmplt@GCC_3.5 1:4.4.0 + __aeabi_fcmpun@GCC_3.5 1:4.4.0 + __aeabi_fdiv@GCC_3.5 1:4.4.0 + __aeabi_fmul@GCC_3.5 1:4.4.0 + __aeabi_fneg@GCC_3.5 1:4.4.0 + __aeabi_frsub@GCC_3.5 1:4.4.0 + __aeabi_fsub@GCC_3.5 1:4.4.0 + __aeabi_i2d@GCC_3.5 1:4.4.0 + __aeabi_i2f@GCC_3.5 1:4.4.0 + __aeabi_idiv@GCC_3.5 1:4.4.0 + __aeabi_idiv0@GCC_3.5 1:4.5.0 + __aeabi_idivmod@GCC_3.5 1:4.4.0 + __aeabi_l2d@GCC_3.5 1:4.4.0 + __aeabi_l2f@GCC_3.5 1:4.4.0 + __aeabi_lasr@GCC_3.5 1:4.4.0 + __aeabi_lcmp@GCC_3.5 1:4.4.0 + __aeabi_ldivmod@GCC_3.5 1:4.4.0 + __aeabi_ldiv0@GCC_3.5 1:4.5.0 + __aeabi_llsl@GCC_3.5 1:4.4.0 + __aeabi_llsr@GCC_3.5 1:4.4.0 + __aeabi_lmul@GCC_3.5 1:4.4.0 + __aeabi_ui2d@GCC_3.5 1:4.4.0 + __aeabi_ui2f@GCC_3.5 1:4.4.0 + __aeabi_uidiv@GCC_3.5 1:4.4.0 + __aeabi_uidivmod@GCC_3.5 1:4.4.0 + __aeabi_ul2d@GCC_3.5 1:4.4.0 + __aeabi_ul2f@GCC_3.5 1:4.4.0 + __aeabi_ulcmp@GCC_3.5 1:4.4.0 + __aeabi_uldivmod@GCC_3.5 1:4.4.0 + __aeabi_unwind_cpp_pr0@GCC_3.5 1:4.4.0 + __aeabi_unwind_cpp_pr1@GCC_3.5 1:4.4.0 + __aeabi_unwind_cpp_pr2@GCC_3.5 1:4.4.0 + __aeabi_uread4@GCC_3.5 1:4.4.0 + __aeabi_uread8@GCC_3.5 1:4.4.0 + __aeabi_uwrite4@GCC_3.5 1:4.4.0 + __aeabi_uwrite8@GCC_3.5 1:4.4.0 --- gcc-4.9-4.9.2.orig/debian/libgcc1.symbols.alpha +++ gcc-4.9-4.9.2/debian/libgcc1.symbols.alpha @@ -0,0 +1,110 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4.4@GCC_3.4.4 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GCC_LDBL_4.0.0@GCC_LDBL_4.0.0 1:4.2.1 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __absvti2@GCC_3.4.4 1:4.1.1 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __addvti3@GCC_3.4.4 1:4.1.1 + __ashlti3@GCC_3.0 1:4.1.1 + __ashrti3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbti2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzti2@GCC_3.4 1:4.1.1 + __cmpti2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzti2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_LDBL_4.0.0 1:4.2.1 + __divti3@GCC_3.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffsti2@GCC_3.0 1:4.1.1 + __fixdfti@GCC_3.0 1:4.1.1 + __fixsfti@GCC_3.0 1:4.1.1 + __fixtfti@GCC_3.0 1:4.2.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfti@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfti@GCC_3.0 1:4.1.1 + __fixunstfti@GCC_3.0 1:4.2.1 + __floattidf@GCC_3.0 1:4.1.1 + __floattisf@GCC_3.0 1:4.1.1 + __floattitf@GCC_3.0 1:4.2.1 + __floatuntidf@GCC_4.2.0 1:4.2.1 + __floatuntisf@GCC_4.2.0 1:4.2.1 + __floatuntitf@GCC_4.2.0 1:4.2.1 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __lshrti3@GCC_3.0 1:4.1.1 + __modti3@GCC_3.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_LDBL_4.0.0 1:4.2.1 + __multi3@GCC_3.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulvti3@GCC_3.4.4 1:4.1.1 + __negti2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __negvti2@GCC_3.4.4 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __parityti2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountti2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_LDBL_4.0.0 1:4.2.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __subvti3@GCC_3.4.4 1:4.1.1 + __ucmpti2@GCC_3.0 1:4.1.1 + __udivmodti4@GCC_3.0 1:4.1.1 + __udivti3@GCC_3.0 1:4.1.1 + __umodti3@GCC_3.0 1:4.1.1 --- gcc-4.9-4.9.2.orig/debian/libgcc1.symbols.amd64 +++ gcc-4.9-4.9.2/debian/libgcc1.symbols.amd64 @@ -0,0 +1,150 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4.4@GCC_3.4.4 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GCC_4.8.0@GCC_4.8.0 1:4.8 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __absvti2@GCC_3.4.4 1:4.1.1 + __addtf3@GCC_4.3.0 1:4.3 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __addvti3@GCC_3.4.4 1:4.1.1 + __ashlti3@GCC_3.0 1:4.1.1 + __ashrti3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbti2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzti2@GCC_3.4 1:4.1.1 + __cmpti2@GCC_3.0 1:4.1.1 + __cpu_indicator_init@GCC_4.8.0 1:4.8 + __cpu_model@GCC_4.8.0 1:4.8 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzti2@GCC_3.4 1:4.1.1 + __deregister_frame@GCC_3.0 1:4.1.1 + __deregister_frame_info@GCC_3.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.0.0 1:4.3 + __divtc3@GCC_4.3.0 1:4.4.0 + __divtf3@GCC_4.3.0 1:4.3 + __divti3@GCC_3.0 1:4.1.1 + __divxc3@GCC_4.0.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqtf2@GCC_4.3.0 1:4.3 + __extenddftf2@GCC_4.3.0 1:4.3 + __extendsftf2@GCC_4.3.0 1:4.3 + __extendxftf2@GCC_4.3.0 1:4.3 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffsti2@GCC_3.0 1:4.1.1 + __fixdfti@GCC_3.0 1:4.1.1 + __fixsfti@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_4.3.0 1:4.3 + __fixtfsi@GCC_4.3.0 1:4.3 + __fixtfti@GCC_4.3.0 1:4.3 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfti@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfti@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_4.3.0 1:4.3 + __fixunstfsi@GCC_4.3.0 1:4.3 + __fixunstfti@GCC_4.3.0 1:4.3 + __fixunsxfdi@GCC_3.0 1:4.1.1 + __fixunsxfti@GCC_3.0 1:4.1.1 + __fixxfti@GCC_3.0 1:4.1.1 + __floatditf@GCC_4.3.0 1:4.3 + __floatsitf@GCC_4.3.0 1:4.3 + __floattidf@GCC_3.0 1:4.1.1 + __floattisf@GCC_3.0 1:4.1.1 + __floattitf@GCC_4.3.0 1:4.3 + __floattixf@GCC_3.0 1:4.1.1 + __floatunditf@GCC_4.3.0 1:4.3 + __floatunsitf@GCC_4.3.0 1:4.3 + __floatuntidf@GCC_4.2.0 1:4.2.1 + __floatuntisf@GCC_4.2.0 1:4.2.1 + __floatuntitf@GCC_4.3.0 1:4.3 + __floatuntixf@GCC_4.2.0 1:4.2.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __getf2@GCC_4.3.0 1:4.3 + __gttf2@GCC_3.0 1:4.3 + __gttf2@GCC_4.3.0 1:4.4.0 + __letf2@GCC_4.3.0 1:4.3 + __lshrti3@GCC_3.0 1:4.1.1 + __lttf2@GCC_3.0 1:4.3 + __lttf2@GCC_4.3.0 1:4.4.0 + __modti3@GCC_3.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.0.0 1:4.3 + __multc3@GCC_4.3.0 1:4.4.0 + __multf3@GCC_4.3.0 1:4.3 + __multi3@GCC_3.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulvti3@GCC_3.4.4 1:4.1.1 + __mulxc3@GCC_4.0.0 1:4.1.1 + __negtf2@GCC_4.3.0 1:4.3 + __negti2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __negvti2@GCC_3.4.4 1:4.1.1 + __netf2@GCC_3.0 1:4.3 + __netf2@GCC_4.3.0 1:4.4.0 + __paritydi2@GCC_3.4 1:4.1.1 + __parityti2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountti2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.0.0 1:4.3 + __powitf2@GCC_4.3.0 1:4.4.0 + __powixf2@GCC_4.0.0 1:4.1.1 + __register_frame@GCC_3.0 1:4.1.1 + __register_frame_info@GCC_3.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GCC_3.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GCC_3.0 1:4.1.1 + __subtf3@GCC_4.3.0 1:4.3 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __subvti3@GCC_3.4.4 1:4.1.1 + __trunctfdf2@GCC_4.3.0 1:4.3 + __trunctfsf2@GCC_4.3.0 1:4.3 + __trunctfxf2@GCC_4.3.0 1:4.3 + __ucmpti2@GCC_3.0 1:4.1.1 + __udivmodti4@GCC_3.0 1:4.1.1 + __udivti3@GCC_3.0 1:4.1.1 + __umodti3@GCC_3.0 1:4.1.1 + __unordtf2@GCC_4.3.0 1:4.3 --- gcc-4.9-4.9.2.orig/debian/libgcc1.symbols.arm64 +++ gcc-4.9-4.9.2/debian/libgcc1.symbols.arm64 @@ -0,0 +1,134 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.7 + GCC_3.3.1@GCC_3.3.1 1:4.7 + GCC_3.3@GCC_3.3 1:4.7 + GCC_3.4.2@GCC_3.4.2 1:4.7 + GCC_3.4.4@GCC_3.4.4 1:4.7 + GCC_3.4@GCC_3.4 1:4.7 + GCC_4.0.0@GCC_4.0.0 1:4.7 + GCC_4.2.0@GCC_4.2.0 1:4.7 + GCC_4.3.0@GCC_4.3.0 1:4.7 + GCC_4.5.0@GCC_4.5.0 1:4.7 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.0@GLIBC_2.0 1:4.7 + _Unwind_Backtrace@GCC_3.3 1:4.7 + _Unwind_DeleteException@GCC_3.0 1:4.7 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.7 + _Unwind_Find_FDE@GCC_3.0 1:4.7 + _Unwind_ForcedUnwind@GCC_3.0 1:4.7 + _Unwind_GetCFA@GCC_3.3 1:4.7 + _Unwind_GetDataRelBase@GCC_3.0 1:4.7 + _Unwind_GetGR@GCC_3.0 1:4.7 + _Unwind_GetIP@GCC_3.0 1:4.7 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.7 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.7 + _Unwind_GetRegionStart@GCC_3.0 1:4.7 + _Unwind_GetTextRelBase@GCC_3.0 1:4.7 + _Unwind_RaiseException@GCC_3.0 1:4.7 + _Unwind_Resume@GCC_3.0 1:4.7 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.7 + _Unwind_SetGR@GCC_3.0 1:4.7 + _Unwind_SetIP@GCC_3.0 1:4.7 + __absvdi2@GCC_3.0 1:4.7 + __absvsi2@GCC_3.0 1:4.7 + __absvti2@GCC_3.4.4 1:4.7 + __addtf3@GCC_3.0 1:4.7 + __addvdi3@GCC_3.0 1:4.7 + __addvsi3@GCC_3.0 1:4.7 + __addvti3@GCC_3.4.4 1:4.7 + __ashlti3@GCC_3.0 1:4.7 + __ashrti3@GCC_3.0 1:4.7 + __bswapdi2@GCC_4.3.0 1:4.7 + __bswapsi2@GCC_4.3.0 1:4.7 + __clear_cache@GCC_3.0 1:4.7 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbti2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.7 + __clzti2@GCC_3.4 1:4.7 + __cmpti2@GCC_3.0 1:4.7 + __ctzdi2@GCC_3.4 1:4.7 + __ctzti2@GCC_3.4 1:4.7 + __deregister_frame@GLIBC_2.0 1:4.7 + __deregister_frame_info@GLIBC_2.0 1:4.7 + __deregister_frame_info_bases@GCC_3.0 1:4.7 + __divdc3@GCC_4.0.0 1:4.7 + __divsc3@GCC_4.0.0 1:4.7 + __divtc3@GCC_4.0.0 1:4.7 + __divtf3@GCC_3.0 1:4.7 + __divti3@GCC_3.0 1:4.7 + __emutls_get_address@GCC_4.3.0 1:4.7 + __emutls_register_common@GCC_4.3.0 1:4.7 + __enable_execute_stack@GCC_3.4.2 1:4.7 + __eqtf2@GCC_3.0 1:4.7 + __extenddftf2@GCC_3.0 1:4.7 + __extendsftf2@GCC_3.0 1:4.7 + __ffsdi2@GCC_3.0 1:4.7 + __ffsti2@GCC_3.0 1:4.7 + __fixdfti@GCC_3.0 1:4.7 + __fixsfti@GCC_3.0 1:4.7 + __fixtfdi@GCC_3.0 1:4.7 + __fixtfsi@GCC_3.0 1:4.7 + __fixtfti@GCC_3.0 1:4.7 + __fixunsdfdi@GCC_3.0 1:4.7 + __fixunsdfti@GCC_3.0 1:4.7 + __fixunssfdi@GCC_3.0 1:4.7 + __fixunssfti@GCC_3.0 1:4.7 + __fixunstfdi@GCC_3.0 1:4.7 + __fixunstfsi@GCC_3.0 1:4.7 + __fixunstfti@GCC_3.0 1:4.7 + __floatditf@GCC_3.0 1:4.7 + __floatsitf@GCC_3.0 1:4.7 + __floattidf@GCC_3.0 1:4.7 + __floattisf@GCC_3.0 1:4.7 + __floattitf@GCC_3.0 1:4.7 + __floatunditf@GCC_4.2.0 1:4.7 + __floatunsitf@GCC_4.2.0 1:4.7 + __floatuntidf@GCC_4.2.0 1:4.7 + __floatuntisf@GCC_4.2.0 1:4.7 + __floatuntitf@GCC_4.2.0 1:4.7 + __frame_state_for@GLIBC_2.0 1:4.7 + __gcc_personality_v0@GCC_3.3.1 1:4.7 + __getf2@GCC_3.0 1:4.7 + __gttf2@GCC_3.0 1:4.7 + __letf2@GCC_3.0 1:4.7 + __lshrti3@GCC_3.0 1:4.7 + __lttf2@GCC_3.0 1:4.7 + __modti3@GCC_3.0 1:4.7 + __muldc3@GCC_4.0.0 1:4.7 + __mulsc3@GCC_4.0.0 1:4.7 + __multc3@GCC_4.0.0 1:4.7 + __multf3@GCC_3.0 1:4.7 + __multi3@GCC_3.0 1:4.7 + __mulvdi3@GCC_3.0 1:4.7 + __mulvsi3@GCC_3.0 1:4.7 + __mulvti3@GCC_3.4.4 1:4.7 + __negtf2@GCC_3.0 1:4.7 + __negti2@GCC_3.0 1:4.7 + __negvdi2@GCC_3.0 1:4.7 + __negvsi2@GCC_3.0 1:4.7 + __negvti2@GCC_3.4.4 1:4.7 + __netf2@GCC_3.0 1:4.7 + __paritydi2@GCC_3.4 1:4.7 + __parityti2@GCC_3.4 1:4.7 + __popcountdi2@GCC_3.4 1:4.7 + __popcountti2@GCC_3.4 1:4.7 + __powidf2@GCC_4.0.0 1:4.7 + __powisf2@GCC_4.0.0 1:4.7 + __powitf2@GCC_4.0.0 1:4.7 + __register_frame@GLIBC_2.0 1:4.7 + __register_frame_info@GLIBC_2.0 1:4.7 + __register_frame_info_bases@GCC_3.0 1:4.7 + __register_frame_info_table@GLIBC_2.0 1:4.7 + __register_frame_info_table_bases@GCC_3.0 1:4.7 + __register_frame_table@GLIBC_2.0 1:4.7 + __subtf3@GCC_3.0 1:4.7 + __subvdi3@GCC_3.0 1:4.7 + __subvsi3@GCC_3.0 1:4.7 + __subvti3@GCC_3.4.4 1:4.7 + __trunctfdf2@GCC_3.0 1:4.7 + __trunctfsf2@GCC_3.0 1:4.7 + __ucmpti2@GCC_3.0 1:4.7 + __udivmodti4@GCC_3.0 1:4.7 + __udivti3@GCC_3.0 1:4.7 + __umodti3@GCC_3.0 1:4.7 + __unordtf2@GCC_4.5.0 1:4.7 --- gcc-4.9-4.9.2.orig/debian/libgcc1.symbols.armel +++ gcc-4.9-4.9.2/debian/libgcc1.symbols.armel @@ -0,0 +1,1103 @@ +libgcc_s.so.1 libgcc1 #MINVER# +(ignore-blacklist)#include "libgcc1.symbols.aeabi" + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3.4@GCC_3.3.4 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_3.5@GCC_3.5 1:4.3.0 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_4.3.0 1:4.3.0 + _Unwind_Complete@GCC_3.5 1:4.3.0 + _Unwind_DeleteException@GCC_3.0 1:4.3.0 + _Unwind_ForcedUnwind@GCC_3.0 1:4.3.0 + _Unwind_GetCFA@GCC_3.3 1:4.3.0 + _Unwind_GetDataRelBase@GCC_3.0 1:4.3.0 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.3.0 + _Unwind_GetRegionStart@GCC_3.0 1:4.3.0 + _Unwind_GetTextRelBase@GCC_3.0 1:4.3.0 + _Unwind_RaiseException@GCC_3.0 1:4.3.0 + _Unwind_Resume@GCC_3.0 1:4.3.0 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.3.0 + _Unwind_VRS_Get@GCC_3.5 1:4.3.0 + _Unwind_VRS_Pop@GCC_3.5 1:4.3.0 + _Unwind_VRS_Set@GCC_3.5 1:4.3.0 + __absvdi2@GCC_3.0 1:4.3.0 + __absvsi2@GCC_3.0 1:4.3.0 + __adddf3@GCC_3.0 1:4.3.0 + __addsf3@GCC_3.0 1:4.3.0 + __addvdi3@GCC_3.0 1:4.3.0 + __addvsi3@GCC_3.0 1:4.3.0 + __ashldi3@GCC_3.0 1:4.3.0 + __ashrdi3@GCC_3.0 1:4.3.0 + __bswapdi2@GCC_4.3.0 1:4.3.0 + __bswapsi2@GCC_4.3.0 1:4.3.0 + __clear_cache@GCC_3.0 1:4.3.0 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbsi2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.3.0 + __clzsi2@GCC_3.4 1:4.3.0 + __cmpdi2@GCC_3.0 1:4.3.0 + __ctzdi2@GCC_3.4 1:4.3.0 + __ctzsi2@GCC_3.4 1:4.3.0 + __divdc3@GCC_4.0.0 1:4.3.0 + __divdf3@GCC_3.0 1:4.3.0 + __divdi3@GLIBC_2.0 1:4.3.0 + __divsc3@GCC_4.0.0 1:4.3.0 + __divsf3@GCC_3.0 1:4.3.0 + __divsi3@GCC_3.0 1:4.3.0 + __emutls_get_address@GCC_4.3.0 1:4.3.0 + __emutls_register_common@GCC_4.3.0 1:4.3.0 + __enable_execute_stack@GCC_3.4.2 1:4.3.0 + __eqdf2@GCC_3.0 1:4.3.0 + __eqsf2@GCC_3.0 1:4.3.0 + __extendsfdf2@GCC_3.0 1:4.3.0 + __ffsdi2@GCC_3.0 1:4.3.0 + __ffssi2@GCC_4.3.0 1:4.3.0 + __fixdfdi@GCC_3.0 1:4.3.0 + __fixdfsi@GCC_3.0 1:4.3.0 + __fixsfdi@GCC_3.0 1:4.3.0 + __fixsfsi@GCC_3.0 1:4.3.0 + __fixunsdfdi@GCC_3.0 1:4.3.0 + __fixunsdfsi@GCC_3.0 1:4.3.0 + __fixunssfdi@GCC_3.0 1:4.3.0 + __fixunssfsi@GCC_3.0 1:4.3.0 + __floatdidf@GCC_3.0 1:4.3.0 + __floatdisf@GCC_3.0 1:4.3.0 + __floatsidf@GCC_3.0 1:4.3.0 + __floatsisf@GCC_3.0 1:4.3.0 + __floatundidf@GCC_4.2.0 1:4.3.0 + __floatundisf@GCC_4.2.0 1:4.3.0 + __floatunsidf@GCC_4.2.0 1:4.3.0 + __floatunsisf@GCC_4.2.0 1:4.3.0 + __gcc_personality_v0@GCC_3.3.1 1:4.3.0 + __gedf2@GCC_3.0 1:4.3.0 + __gesf2@GCC_3.0 1:4.3.0 + __gnu_addda3@GCC_4.3.0 1:4.3.0 + __gnu_adddq3@GCC_4.3.0 1:4.3.0 + __gnu_addha3@GCC_4.3.0 1:4.3.0 + __gnu_addhq3@GCC_4.3.0 1:4.3.0 + __gnu_addqq3@GCC_4.3.0 1:4.3.0 + __gnu_addsa3@GCC_4.3.0 1:4.3.0 + __gnu_addsq3@GCC_4.3.0 1:4.3.0 + __gnu_adduda3@GCC_4.3.0 1:4.3.0 + __gnu_addudq3@GCC_4.3.0 1:4.3.0 + __gnu_adduha3@GCC_4.3.0 1:4.3.0 + __gnu_adduhq3@GCC_4.3.0 1:4.3.0 + __gnu_adduqq3@GCC_4.3.0 1:4.3.0 + __gnu_addusa3@GCC_4.3.0 1:4.3.0 + __gnu_addusq3@GCC_4.3.0 1:4.3.0 + __gnu_ashlda3@GCC_4.3.0 1:4.3.0 + __gnu_ashldq3@GCC_4.3.0 1:4.3.0 + __gnu_ashlha3@GCC_4.3.0 1:4.3.0 + __gnu_ashlhq3@GCC_4.3.0 1:4.3.0 + __gnu_ashlqq3@GCC_4.3.0 1:4.3.0 + __gnu_ashlsa3@GCC_4.3.0 1:4.3.0 + __gnu_ashlsq3@GCC_4.3.0 1:4.3.0 + __gnu_ashluda3@GCC_4.3.0 1:4.3.0 + __gnu_ashludq3@GCC_4.3.0 1:4.3.0 + __gnu_ashluha3@GCC_4.3.0 1:4.3.0 + __gnu_ashluhq3@GCC_4.3.0 1:4.3.0 + __gnu_ashluqq3@GCC_4.3.0 1:4.3.0 + __gnu_ashlusa3@GCC_4.3.0 1:4.3.0 + __gnu_ashlusq3@GCC_4.3.0 1:4.3.0 + __gnu_ashrda3@GCC_4.3.0 1:4.3.0 + __gnu_ashrdq3@GCC_4.3.0 1:4.3.0 + __gnu_ashrha3@GCC_4.3.0 1:4.3.0 + __gnu_ashrhq3@GCC_4.3.0 1:4.3.0 + __gnu_ashrqq3@GCC_4.3.0 1:4.3.0 + __gnu_ashrsa3@GCC_4.3.0 1:4.3.0 + __gnu_ashrsq3@GCC_4.3.0 1:4.3.0 + __gnu_cmpda2@GCC_4.3.0 1:4.3.0 + __gnu_cmpdq2@GCC_4.3.0 1:4.3.0 + __gnu_cmpha2@GCC_4.3.0 1:4.3.0 + __gnu_cmphq2@GCC_4.3.0 1:4.3.0 + __gnu_cmpqq2@GCC_4.3.0 1:4.3.0 + __gnu_cmpsa2@GCC_4.3.0 1:4.3.0 + __gnu_cmpsq2@GCC_4.3.0 1:4.3.0 + __gnu_cmpuda2@GCC_4.3.0 1:4.3.0 + __gnu_cmpudq2@GCC_4.3.0 1:4.3.0 + __gnu_cmpuha2@GCC_4.3.0 1:4.3.0 + __gnu_cmpuhq2@GCC_4.3.0 1:4.3.0 + __gnu_cmpuqq2@GCC_4.3.0 1:4.3.0 + __gnu_cmpusa2@GCC_4.3.0 1:4.3.0 + __gnu_cmpusq2@GCC_4.3.0 1:4.3.0 + __gnu_divda3@GCC_4.3.0 1:4.3.0 + __gnu_divdq3@GCC_4.3.0 1:4.3.0 + __gnu_divha3@GCC_4.3.0 1:4.3.0 + __gnu_divhq3@GCC_4.3.0 1:4.3.0 + __gnu_divqq3@GCC_4.3.0 1:4.3.0 + __gnu_divsa3@GCC_4.3.0 1:4.3.0 + __gnu_divsq3@GCC_4.3.0 1:4.3.0 + __gnu_fractdadf@GCC_4.3.0 1:4.3.0 + __gnu_fractdadi@GCC_4.3.0 1:4.3.0 + __gnu_fractdadq@GCC_4.3.0 1:4.3.0 + __gnu_fractdaha2@GCC_4.3.0 1:4.3.0 + __gnu_fractdahi@GCC_4.3.0 1:4.3.0 + __gnu_fractdahq@GCC_4.3.0 1:4.3.0 + __gnu_fractdaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractdaqq@GCC_4.3.0 1:4.3.0 + __gnu_fractdasa2@GCC_4.3.0 1:4.3.0 + __gnu_fractdasf@GCC_4.3.0 1:4.3.0 + __gnu_fractdasi@GCC_4.3.0 1:4.3.0 + __gnu_fractdasq@GCC_4.3.0 1:4.3.0 + __gnu_fractdauda@GCC_4.3.0 1:4.3.0 + __gnu_fractdaudq@GCC_4.3.0 1:4.3.0 + __gnu_fractdauha@GCC_4.3.0 1:4.3.0 + __gnu_fractdauhq@GCC_4.3.0 1:4.3.0 + __gnu_fractdauqq@GCC_4.3.0 1:4.3.0 + __gnu_fractdausa@GCC_4.3.0 1:4.3.0 + __gnu_fractdausq@GCC_4.3.0 1:4.3.0 + __gnu_fractdfda@GCC_4.3.0 1:4.3.0 + __gnu_fractdfdq@GCC_4.3.0 1:4.3.0 + __gnu_fractdfha@GCC_4.3.0 1:4.3.0 + __gnu_fractdfhq@GCC_4.3.0 1:4.3.0 + __gnu_fractdfqq@GCC_4.3.0 1:4.3.0 + __gnu_fractdfsa@GCC_4.3.0 1:4.3.0 + __gnu_fractdfsq@GCC_4.3.0 1:4.3.0 + __gnu_fractdfuda@GCC_4.3.0 1:4.3.0 + __gnu_fractdfudq@GCC_4.3.0 1:4.3.0 + __gnu_fractdfuha@GCC_4.3.0 1:4.3.0 + __gnu_fractdfuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractdfuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractdfusa@GCC_4.3.0 1:4.3.0 + __gnu_fractdfusq@GCC_4.3.0 1:4.3.0 + __gnu_fractdida@GCC_4.3.0 1:4.3.0 + __gnu_fractdidq@GCC_4.3.0 1:4.3.0 + __gnu_fractdiha@GCC_4.3.0 1:4.3.0 + __gnu_fractdihq@GCC_4.3.0 1:4.3.0 + __gnu_fractdiqq@GCC_4.3.0 1:4.3.0 + __gnu_fractdisa@GCC_4.3.0 1:4.3.0 + __gnu_fractdisq@GCC_4.3.0 1:4.3.0 + __gnu_fractdiuda@GCC_4.3.0 1:4.3.0 + __gnu_fractdiudq@GCC_4.3.0 1:4.3.0 + __gnu_fractdiuha@GCC_4.3.0 1:4.3.0 + __gnu_fractdiuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractdiuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractdiusa@GCC_4.3.0 1:4.3.0 + __gnu_fractdiusq@GCC_4.3.0 1:4.3.0 + __gnu_fractdqda@GCC_4.3.0 1:4.3.0 + __gnu_fractdqdf@GCC_4.3.0 1:4.3.0 + __gnu_fractdqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractdqha@GCC_4.3.0 1:4.3.0 + __gnu_fractdqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractdqhq2@GCC_4.3.0 1:4.3.0 + __gnu_fractdqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractdqqq2@GCC_4.3.0 1:4.3.0 + __gnu_fractdqsa@GCC_4.3.0 1:4.3.0 + __gnu_fractdqsf@GCC_4.3.0 1:4.3.0 + __gnu_fractdqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractdqsq2@GCC_4.3.0 1:4.3.0 + __gnu_fractdquda@GCC_4.3.0 1:4.3.0 + __gnu_fractdqudq@GCC_4.3.0 1:4.3.0 + __gnu_fractdquha@GCC_4.3.0 1:4.3.0 + __gnu_fractdquhq@GCC_4.3.0 1:4.3.0 + __gnu_fractdquqq@GCC_4.3.0 1:4.3.0 + __gnu_fractdqusa@GCC_4.3.0 1:4.3.0 + __gnu_fractdqusq@GCC_4.3.0 1:4.3.0 + __gnu_fracthada2@GCC_4.3.0 1:4.3.0 + __gnu_fracthadf@GCC_4.3.0 1:4.3.0 + __gnu_fracthadi@GCC_4.3.0 1:4.3.0 + __gnu_fracthadq@GCC_4.3.0 1:4.3.0 + __gnu_fracthahi@GCC_4.3.0 1:4.3.0 + __gnu_fracthahq@GCC_4.3.0 1:4.3.0 + __gnu_fracthaqi@GCC_4.3.0 1:4.3.0 + __gnu_fracthaqq@GCC_4.3.0 1:4.3.0 + __gnu_fracthasa2@GCC_4.3.0 1:4.3.0 + __gnu_fracthasf@GCC_4.3.0 1:4.3.0 + __gnu_fracthasi@GCC_4.3.0 1:4.3.0 + __gnu_fracthasq@GCC_4.3.0 1:4.3.0 + __gnu_fracthauda@GCC_4.3.0 1:4.3.0 + __gnu_fracthaudq@GCC_4.3.0 1:4.3.0 + __gnu_fracthauha@GCC_4.3.0 1:4.3.0 + __gnu_fracthauhq@GCC_4.3.0 1:4.3.0 + __gnu_fracthauqq@GCC_4.3.0 1:4.3.0 + __gnu_fracthausa@GCC_4.3.0 1:4.3.0 + __gnu_fracthausq@GCC_4.3.0 1:4.3.0 + __gnu_fracthida@GCC_4.3.0 1:4.3.0 + __gnu_fracthidq@GCC_4.3.0 1:4.3.0 + __gnu_fracthiha@GCC_4.3.0 1:4.3.0 + __gnu_fracthihq@GCC_4.3.0 1:4.3.0 + __gnu_fracthiqq@GCC_4.3.0 1:4.3.0 + __gnu_fracthisa@GCC_4.3.0 1:4.3.0 + __gnu_fracthisq@GCC_4.3.0 1:4.3.0 + __gnu_fracthiuda@GCC_4.3.0 1:4.3.0 + __gnu_fracthiudq@GCC_4.3.0 1:4.3.0 + __gnu_fracthiuha@GCC_4.3.0 1:4.3.0 + __gnu_fracthiuhq@GCC_4.3.0 1:4.3.0 + __gnu_fracthiuqq@GCC_4.3.0 1:4.3.0 + __gnu_fracthiusa@GCC_4.3.0 1:4.3.0 + __gnu_fracthiusq@GCC_4.3.0 1:4.3.0 + __gnu_fracthqda@GCC_4.3.0 1:4.3.0 + __gnu_fracthqdf@GCC_4.3.0 1:4.3.0 + __gnu_fracthqdi@GCC_4.3.0 1:4.3.0 + __gnu_fracthqdq2@GCC_4.3.0 1:4.3.0 + __gnu_fracthqha@GCC_4.3.0 1:4.3.0 + __gnu_fracthqhi@GCC_4.3.0 1:4.3.0 + __gnu_fracthqqi@GCC_4.3.0 1:4.3.0 + __gnu_fracthqqq2@GCC_4.3.0 1:4.3.0 + __gnu_fracthqsa@GCC_4.3.0 1:4.3.0 + __gnu_fracthqsf@GCC_4.3.0 1:4.3.0 + __gnu_fracthqsi@GCC_4.3.0 1:4.3.0 + __gnu_fracthqsq2@GCC_4.3.0 1:4.3.0 + __gnu_fracthquda@GCC_4.3.0 1:4.3.0 + __gnu_fracthqudq@GCC_4.3.0 1:4.3.0 + __gnu_fracthquha@GCC_4.3.0 1:4.3.0 + __gnu_fracthquhq@GCC_4.3.0 1:4.3.0 + __gnu_fracthquqq@GCC_4.3.0 1:4.3.0 + __gnu_fracthqusa@GCC_4.3.0 1:4.3.0 + __gnu_fracthqusq@GCC_4.3.0 1:4.3.0 + __gnu_fractqida@GCC_4.3.0 1:4.3.0 + __gnu_fractqidq@GCC_4.3.0 1:4.3.0 + __gnu_fractqiha@GCC_4.3.0 1:4.3.0 + __gnu_fractqihq@GCC_4.3.0 1:4.3.0 + __gnu_fractqiqq@GCC_4.3.0 1:4.3.0 + __gnu_fractqisa@GCC_4.3.0 1:4.3.0 + __gnu_fractqisq@GCC_4.3.0 1:4.3.0 + __gnu_fractqiuda@GCC_4.3.0 1:4.3.0 + __gnu_fractqiudq@GCC_4.3.0 1:4.3.0 + __gnu_fractqiuha@GCC_4.3.0 1:4.3.0 + __gnu_fractqiuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractqiuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractqiusa@GCC_4.3.0 1:4.3.0 + __gnu_fractqiusq@GCC_4.3.0 1:4.3.0 + __gnu_fractqqda@GCC_4.3.0 1:4.3.0 + __gnu_fractqqdf@GCC_4.3.0 1:4.3.0 + __gnu_fractqqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractqqdq2@GCC_4.3.0 1:4.3.0 + __gnu_fractqqha@GCC_4.3.0 1:4.3.0 + __gnu_fractqqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractqqhq2@GCC_4.3.0 1:4.3.0 + __gnu_fractqqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractqqsa@GCC_4.3.0 1:4.3.0 + __gnu_fractqqsf@GCC_4.3.0 1:4.3.0 + __gnu_fractqqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractqqsq2@GCC_4.3.0 1:4.3.0 + __gnu_fractqquda@GCC_4.3.0 1:4.3.0 + __gnu_fractqqudq@GCC_4.3.0 1:4.3.0 + __gnu_fractqquha@GCC_4.3.0 1:4.3.0 + __gnu_fractqquhq@GCC_4.3.0 1:4.3.0 + __gnu_fractqquqq@GCC_4.3.0 1:4.3.0 + __gnu_fractqqusa@GCC_4.3.0 1:4.3.0 + __gnu_fractqqusq@GCC_4.3.0 1:4.3.0 + __gnu_fractsada2@GCC_4.3.0 1:4.3.0 + __gnu_fractsadf@GCC_4.3.0 1:4.3.0 + __gnu_fractsadi@GCC_4.3.0 1:4.3.0 + __gnu_fractsadq@GCC_4.3.0 1:4.3.0 + __gnu_fractsaha2@GCC_4.3.0 1:4.3.0 + __gnu_fractsahi@GCC_4.3.0 1:4.3.0 + __gnu_fractsahq@GCC_4.3.0 1:4.3.0 + __gnu_fractsaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractsaqq@GCC_4.3.0 1:4.3.0 + __gnu_fractsasf@GCC_4.3.0 1:4.3.0 + __gnu_fractsasi@GCC_4.3.0 1:4.3.0 + __gnu_fractsasq@GCC_4.3.0 1:4.3.0 + __gnu_fractsauda@GCC_4.3.0 1:4.3.0 + __gnu_fractsaudq@GCC_4.3.0 1:4.3.0 + __gnu_fractsauha@GCC_4.3.0 1:4.3.0 + __gnu_fractsauhq@GCC_4.3.0 1:4.3.0 + __gnu_fractsauqq@GCC_4.3.0 1:4.3.0 + __gnu_fractsausa@GCC_4.3.0 1:4.3.0 + __gnu_fractsausq@GCC_4.3.0 1:4.3.0 + __gnu_fractsfda@GCC_4.3.0 1:4.3.0 + __gnu_fractsfdq@GCC_4.3.0 1:4.3.0 + __gnu_fractsfha@GCC_4.3.0 1:4.3.0 + __gnu_fractsfhq@GCC_4.3.0 1:4.3.0 + __gnu_fractsfqq@GCC_4.3.0 1:4.3.0 + __gnu_fractsfsa@GCC_4.3.0 1:4.3.0 + __gnu_fractsfsq@GCC_4.3.0 1:4.3.0 + __gnu_fractsfuda@GCC_4.3.0 1:4.3.0 + __gnu_fractsfudq@GCC_4.3.0 1:4.3.0 + __gnu_fractsfuha@GCC_4.3.0 1:4.3.0 + __gnu_fractsfuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractsfuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractsfusa@GCC_4.3.0 1:4.3.0 + __gnu_fractsfusq@GCC_4.3.0 1:4.3.0 + __gnu_fractsida@GCC_4.3.0 1:4.3.0 + __gnu_fractsidq@GCC_4.3.0 1:4.3.0 + __gnu_fractsiha@GCC_4.3.0 1:4.3.0 + __gnu_fractsihq@GCC_4.3.0 1:4.3.0 + __gnu_fractsiqq@GCC_4.3.0 1:4.3.0 + __gnu_fractsisa@GCC_4.3.0 1:4.3.0 + __gnu_fractsisq@GCC_4.3.0 1:4.3.0 + __gnu_fractsiuda@GCC_4.3.0 1:4.3.0 + __gnu_fractsiudq@GCC_4.3.0 1:4.3.0 + __gnu_fractsiuha@GCC_4.3.0 1:4.3.0 + __gnu_fractsiuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractsiuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractsiusa@GCC_4.3.0 1:4.3.0 + __gnu_fractsiusq@GCC_4.3.0 1:4.3.0 + __gnu_fractsqda@GCC_4.3.0 1:4.3.0 + __gnu_fractsqdf@GCC_4.3.0 1:4.3.0 + __gnu_fractsqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractsqdq2@GCC_4.3.0 1:4.3.0 + __gnu_fractsqha@GCC_4.3.0 1:4.3.0 + __gnu_fractsqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractsqhq2@GCC_4.3.0 1:4.3.0 + __gnu_fractsqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractsqqq2@GCC_4.3.0 1:4.3.0 + __gnu_fractsqsa@GCC_4.3.0 1:4.3.0 + __gnu_fractsqsf@GCC_4.3.0 1:4.3.0 + __gnu_fractsqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractsquda@GCC_4.3.0 1:4.3.0 + __gnu_fractsqudq@GCC_4.3.0 1:4.3.0 + __gnu_fractsquha@GCC_4.3.0 1:4.3.0 + __gnu_fractsquhq@GCC_4.3.0 1:4.3.0 + __gnu_fractsquqq@GCC_4.3.0 1:4.3.0 + __gnu_fractsqusa@GCC_4.3.0 1:4.3.0 + __gnu_fractsqusq@GCC_4.3.0 1:4.3.0 + __gnu_fractudada@GCC_4.3.0 1:4.3.0 + __gnu_fractudadf@GCC_4.3.0 1:4.3.0 + __gnu_fractudadi@GCC_4.3.0 1:4.3.0 + __gnu_fractudadq@GCC_4.3.0 1:4.3.0 + __gnu_fractudaha@GCC_4.3.0 1:4.3.0 + __gnu_fractudahi@GCC_4.3.0 1:4.3.0 + __gnu_fractudahq@GCC_4.3.0 1:4.3.0 + __gnu_fractudaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractudaqq@GCC_4.3.0 1:4.3.0 + __gnu_fractudasa@GCC_4.3.0 1:4.3.0 + __gnu_fractudasf@GCC_4.3.0 1:4.3.0 + __gnu_fractudasi@GCC_4.3.0 1:4.3.0 + __gnu_fractudasq@GCC_4.3.0 1:4.3.0 + __gnu_fractudaudq@GCC_4.3.0 1:4.3.0 + __gnu_fractudauha2@GCC_4.3.0 1:4.3.0 + __gnu_fractudauhq@GCC_4.3.0 1:4.3.0 + __gnu_fractudauqq@GCC_4.3.0 1:4.3.0 + __gnu_fractudausa2@GCC_4.3.0 1:4.3.0 + __gnu_fractudausq@GCC_4.3.0 1:4.3.0 + __gnu_fractudqda@GCC_4.3.0 1:4.3.0 + __gnu_fractudqdf@GCC_4.3.0 1:4.3.0 + __gnu_fractudqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractudqdq@GCC_4.3.0 1:4.3.0 + __gnu_fractudqha@GCC_4.3.0 1:4.3.0 + __gnu_fractudqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractudqhq@GCC_4.3.0 1:4.3.0 + __gnu_fractudqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractudqqq@GCC_4.3.0 1:4.3.0 + __gnu_fractudqsa@GCC_4.3.0 1:4.3.0 + __gnu_fractudqsf@GCC_4.3.0 1:4.3.0 + __gnu_fractudqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractudqsq@GCC_4.3.0 1:4.3.0 + __gnu_fractudquda@GCC_4.3.0 1:4.3.0 + __gnu_fractudquha@GCC_4.3.0 1:4.3.0 + __gnu_fractudquhq2@GCC_4.3.0 1:4.3.0 + __gnu_fractudquqq2@GCC_4.3.0 1:4.3.0 + __gnu_fractudqusa@GCC_4.3.0 1:4.3.0 + __gnu_fractudqusq2@GCC_4.3.0 1:4.3.0 + __gnu_fractuhada@GCC_4.3.0 1:4.3.0 + __gnu_fractuhadf@GCC_4.3.0 1:4.3.0 + __gnu_fractuhadi@GCC_4.3.0 1:4.3.0 + __gnu_fractuhadq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhaha@GCC_4.3.0 1:4.3.0 + __gnu_fractuhahi@GCC_4.3.0 1:4.3.0 + __gnu_fractuhahq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractuhaqq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhasa@GCC_4.3.0 1:4.3.0 + __gnu_fractuhasf@GCC_4.3.0 1:4.3.0 + __gnu_fractuhasi@GCC_4.3.0 1:4.3.0 + __gnu_fractuhasq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhauda2@GCC_4.3.0 1:4.3.0 + __gnu_fractuhaudq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhauhq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhauqq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhausa2@GCC_4.3.0 1:4.3.0 + __gnu_fractuhausq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqda@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqdf@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqdq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqha@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqhq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqqq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqsa@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqsf@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqsq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhquda@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqudq2@GCC_4.3.0 1:4.3.0 + __gnu_fractuhquha@GCC_4.3.0 1:4.3.0 + __gnu_fractuhquqq2@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqusa@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqusq2@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdadi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdahi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdasi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdida@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdidq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiha@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdihq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiqq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdisa@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdisq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiuda@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiudq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiuha@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiusa@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiusq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractunshadi@GCC_4.3.0 1:4.3.0 + __gnu_fractunshahi@GCC_4.3.0 1:4.3.0 + __gnu_fractunshaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunshasi@GCC_4.3.0 1:4.3.0 + __gnu_fractunshida@GCC_4.3.0 1:4.3.0 + __gnu_fractunshidq@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiha@GCC_4.3.0 1:4.3.0 + __gnu_fractunshihq@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiqq@GCC_4.3.0 1:4.3.0 + __gnu_fractunshisa@GCC_4.3.0 1:4.3.0 + __gnu_fractunshisq@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiuda@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiudq@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiuha@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiusa@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiusq@GCC_4.3.0 1:4.3.0 + __gnu_fractunshqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractunshqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractunshqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunshqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqida@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqidq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiha@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqihq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiqq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqisa@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqisq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiuda@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiudq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiuha@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiusa@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiusq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractunssadi@GCC_4.3.0 1:4.3.0 + __gnu_fractunssahi@GCC_4.3.0 1:4.3.0 + __gnu_fractunssaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunssasi@GCC_4.3.0 1:4.3.0 + __gnu_fractunssida@GCC_4.3.0 1:4.3.0 + __gnu_fractunssidq@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiha@GCC_4.3.0 1:4.3.0 + __gnu_fractunssihq@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiqq@GCC_4.3.0 1:4.3.0 + __gnu_fractunssisa@GCC_4.3.0 1:4.3.0 + __gnu_fractunssisq@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiuda@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiudq@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiuha@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiusa@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiusq@GCC_4.3.0 1:4.3.0 + __gnu_fractunssqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractunssqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractunssqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunssqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsudadi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsudahi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsudaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsudasi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsudqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsudqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsudqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsudqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuhadi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuhahi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuhaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuhasi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuhqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuhqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuhqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuhqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuqqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuqqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuqqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuqqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsusadi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsusahi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsusaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsusasi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsusqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsusqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsusqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsusqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqda@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqdf@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqdq@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqha@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqhq@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqqq@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqsa@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqsf@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqsq@GCC_4.3.0 1:4.3.0 + __gnu_fractuqquda@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqudq2@GCC_4.3.0 1:4.3.0 + __gnu_fractuqquha@GCC_4.3.0 1:4.3.0 + __gnu_fractuqquhq2@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqusa@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqusq2@GCC_4.3.0 1:4.3.0 + __gnu_fractusada@GCC_4.3.0 1:4.3.0 + __gnu_fractusadf@GCC_4.3.0 1:4.3.0 + __gnu_fractusadi@GCC_4.3.0 1:4.3.0 + __gnu_fractusadq@GCC_4.3.0 1:4.3.0 + __gnu_fractusaha@GCC_4.3.0 1:4.3.0 + __gnu_fractusahi@GCC_4.3.0 1:4.3.0 + __gnu_fractusahq@GCC_4.3.0 1:4.3.0 + __gnu_fractusaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractusaqq@GCC_4.3.0 1:4.3.0 + __gnu_fractusasa@GCC_4.3.0 1:4.3.0 + __gnu_fractusasf@GCC_4.3.0 1:4.3.0 + __gnu_fractusasi@GCC_4.3.0 1:4.3.0 + __gnu_fractusasq@GCC_4.3.0 1:4.3.0 + __gnu_fractusauda2@GCC_4.3.0 1:4.3.0 + __gnu_fractusaudq@GCC_4.3.0 1:4.3.0 + __gnu_fractusauha2@GCC_4.3.0 1:4.3.0 + __gnu_fractusauhq@GCC_4.3.0 1:4.3.0 + __gnu_fractusauqq@GCC_4.3.0 1:4.3.0 + __gnu_fractusausq@GCC_4.3.0 1:4.3.0 + __gnu_fractusqda@GCC_4.3.0 1:4.3.0 + __gnu_fractusqdf@GCC_4.3.0 1:4.3.0 + __gnu_fractusqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractusqdq@GCC_4.3.0 1:4.3.0 + __gnu_fractusqha@GCC_4.3.0 1:4.3.0 + __gnu_fractusqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractusqhq@GCC_4.3.0 1:4.3.0 + __gnu_fractusqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractusqqq@GCC_4.3.0 1:4.3.0 + __gnu_fractusqsa@GCC_4.3.0 1:4.3.0 + __gnu_fractusqsf@GCC_4.3.0 1:4.3.0 + __gnu_fractusqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractusqsq@GCC_4.3.0 1:4.3.0 + __gnu_fractusquda@GCC_4.3.0 1:4.3.0 + __gnu_fractusqudq2@GCC_4.3.0 1:4.3.0 + __gnu_fractusquha@GCC_4.3.0 1:4.3.0 + __gnu_fractusquhq2@GCC_4.3.0 1:4.3.0 + __gnu_fractusquqq2@GCC_4.3.0 1:4.3.0 + __gnu_fractusqusa@GCC_4.3.0 1:4.3.0 + __gnu_lshruda3@GCC_4.3.0 1:4.3.0 + __gnu_lshrudq3@GCC_4.3.0 1:4.3.0 + __gnu_lshruha3@GCC_4.3.0 1:4.3.0 + __gnu_lshruhq3@GCC_4.3.0 1:4.3.0 + __gnu_lshruqq3@GCC_4.3.0 1:4.3.0 + __gnu_lshrusa3@GCC_4.3.0 1:4.3.0 + __gnu_lshrusq3@GCC_4.3.0 1:4.3.0 + __gnu_mulda3@GCC_4.3.0 1:4.3.0 + __gnu_muldq3@GCC_4.3.0 1:4.3.0 + __gnu_mulha3@GCC_4.3.0 1:4.3.0 + __gnu_mulhq3@GCC_4.3.0 1:4.3.0 + __gnu_mulqq3@GCC_4.3.0 1:4.3.0 + __gnu_mulsa3@GCC_4.3.0 1:4.3.0 + __gnu_mulsq3@GCC_4.3.0 1:4.3.0 + __gnu_muluda3@GCC_4.3.0 1:4.3.0 + __gnu_muludq3@GCC_4.3.0 1:4.3.0 + __gnu_muluha3@GCC_4.3.0 1:4.3.0 + __gnu_muluhq3@GCC_4.3.0 1:4.3.0 + __gnu_muluqq3@GCC_4.3.0 1:4.3.0 + __gnu_mulusa3@GCC_4.3.0 1:4.3.0 + __gnu_mulusq3@GCC_4.3.0 1:4.3.0 + __gnu_negda2@GCC_4.3.0 1:4.3.0 + __gnu_negdq2@GCC_4.3.0 1:4.3.0 + __gnu_negha2@GCC_4.3.0 1:4.3.0 + __gnu_neghq2@GCC_4.3.0 1:4.3.0 + __gnu_negqq2@GCC_4.3.0 1:4.3.0 + __gnu_negsa2@GCC_4.3.0 1:4.3.0 + __gnu_negsq2@GCC_4.3.0 1:4.3.0 + __gnu_neguda2@GCC_4.3.0 1:4.3.0 + __gnu_negudq2@GCC_4.3.0 1:4.3.0 + __gnu_neguha2@GCC_4.3.0 1:4.3.0 + __gnu_neguhq2@GCC_4.3.0 1:4.3.0 + __gnu_neguqq2@GCC_4.3.0 1:4.3.0 + __gnu_negusa2@GCC_4.3.0 1:4.3.0 + __gnu_negusq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractdadq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdaha2@GCC_4.3.0 1:4.3.0 + __gnu_satfractdahq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdaqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdasa2@GCC_4.3.0 1:4.3.0 + __gnu_satfractdasq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdauda@GCC_4.3.0 1:4.3.0 + __gnu_satfractdaudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdauha@GCC_4.3.0 1:4.3.0 + __gnu_satfractdauhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdauqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdausa@GCC_4.3.0 1:4.3.0 + __gnu_satfractdausq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfda@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfdq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfha@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfsq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdida@GCC_4.3.0 1:4.3.0 + __gnu_satfractdidq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiha@GCC_4.3.0 1:4.3.0 + __gnu_satfractdihq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdisa@GCC_4.3.0 1:4.3.0 + __gnu_satfractdisq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqda@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqha@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqhq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqqq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqsq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractdquda@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdquha@GCC_4.3.0 1:4.3.0 + __gnu_satfractdquhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdquqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqusq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthada2@GCC_4.3.0 1:4.3.0 + __gnu_satfracthadq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthahq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthaqq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthasa2@GCC_4.3.0 1:4.3.0 + __gnu_satfracthasq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthauda@GCC_4.3.0 1:4.3.0 + __gnu_satfracthaudq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthauha@GCC_4.3.0 1:4.3.0 + __gnu_satfracthauhq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthauqq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthausa@GCC_4.3.0 1:4.3.0 + __gnu_satfracthausq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthida@GCC_4.3.0 1:4.3.0 + __gnu_satfracthidq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiha@GCC_4.3.0 1:4.3.0 + __gnu_satfracthihq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiqq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthisa@GCC_4.3.0 1:4.3.0 + __gnu_satfracthisq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiuda@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiudq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiuha@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiusa@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiusq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqda@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqdq2@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqha@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqqq2@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqsa@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqsq2@GCC_4.3.0 1:4.3.0 + __gnu_satfracthquda@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqudq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthquha@GCC_4.3.0 1:4.3.0 + __gnu_satfracthquhq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthquqq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqusa@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqida@GCC_4.3.0 1:4.3.0 + __gnu_satfractqidq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiha@GCC_4.3.0 1:4.3.0 + __gnu_satfractqihq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqisa@GCC_4.3.0 1:4.3.0 + __gnu_satfractqisq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqda@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqdq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqha@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqhq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqsq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractqquda@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqquha@GCC_4.3.0 1:4.3.0 + __gnu_satfractqquhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqquqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsada2@GCC_4.3.0 1:4.3.0 + __gnu_satfractsadq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsaha2@GCC_4.3.0 1:4.3.0 + __gnu_satfractsahq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsaqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsasq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsauda@GCC_4.3.0 1:4.3.0 + __gnu_satfractsaudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsauha@GCC_4.3.0 1:4.3.0 + __gnu_satfractsauhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsauqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsausa@GCC_4.3.0 1:4.3.0 + __gnu_satfractsausq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfda@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfdq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfha@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfsq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsida@GCC_4.3.0 1:4.3.0 + __gnu_satfractsidq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiha@GCC_4.3.0 1:4.3.0 + __gnu_satfractsihq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsisa@GCC_4.3.0 1:4.3.0 + __gnu_satfractsisq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqda@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqdq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqha@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqhq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqqq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractsquda@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsquha@GCC_4.3.0 1:4.3.0 + __gnu_satfractsquhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsquqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudada@GCC_4.3.0 1:4.3.0 + __gnu_satfractudadq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudaha@GCC_4.3.0 1:4.3.0 + __gnu_satfractudahq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudaqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudasa@GCC_4.3.0 1:4.3.0 + __gnu_satfractudasq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudaudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudauha2@GCC_4.3.0 1:4.3.0 + __gnu_satfractudauhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudauqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudausa2@GCC_4.3.0 1:4.3.0 + __gnu_satfractudausq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqda@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqdq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqha@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqsq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudquda@GCC_4.3.0 1:4.3.0 + __gnu_satfractudquha@GCC_4.3.0 1:4.3.0 + __gnu_satfractudquhq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractudquqq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqusq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhada@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhadq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhaha@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhahq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhaqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhasa@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhasq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhauda2@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhaudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhauhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhauqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhausa2@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhausq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqda@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqdq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqha@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqsq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhquda@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqudq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhquha@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhquqq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqusq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdida@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdidq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiha@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdihq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdisa@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdisq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshida@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshidq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiha@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshihq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshisa@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshisq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqida@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqidq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiha@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqihq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqisa@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqisq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssida@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssidq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiha@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssihq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssisa@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssisq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqda@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqdq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqha@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqsq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqquda@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqudq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqquha@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqquhq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqusq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractusada@GCC_4.3.0 1:4.3.0 + __gnu_satfractusadq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusaha@GCC_4.3.0 1:4.3.0 + __gnu_satfractusahq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusaqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusasa@GCC_4.3.0 1:4.3.0 + __gnu_satfractusasq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusauda2@GCC_4.3.0 1:4.3.0 + __gnu_satfractusaudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusauha2@GCC_4.3.0 1:4.3.0 + __gnu_satfractusauhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusauqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusausq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqda@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqdq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqha@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqsq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusquda@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqudq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractusquha@GCC_4.3.0 1:4.3.0 + __gnu_satfractusquhq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractusquqq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqusa@GCC_4.3.0 1:4.3.0 + __gnu_ssaddda3@GCC_4.3.0 1:4.3.0 + __gnu_ssadddq3@GCC_4.3.0 1:4.3.0 + __gnu_ssaddha3@GCC_4.3.0 1:4.3.0 + __gnu_ssaddhq3@GCC_4.3.0 1:4.3.0 + __gnu_ssaddqq3@GCC_4.3.0 1:4.3.0 + __gnu_ssaddsa3@GCC_4.3.0 1:4.3.0 + __gnu_ssaddsq3@GCC_4.3.0 1:4.3.0 + __gnu_ssashlda3@GCC_4.3.0 1:4.3.0 + __gnu_ssashldq3@GCC_4.3.0 1:4.3.0 + __gnu_ssashlha3@GCC_4.3.0 1:4.3.0 + __gnu_ssashlhq3@GCC_4.3.0 1:4.3.0 + __gnu_ssashlqq3@GCC_4.3.0 1:4.3.0 + __gnu_ssashlsa3@GCC_4.3.0 1:4.3.0 + __gnu_ssashlsq3@GCC_4.3.0 1:4.3.0 + __gnu_ssdivda3@GCC_4.3.0 1:4.3.0 + __gnu_ssdivdq3@GCC_4.3.0 1:4.3.0 + __gnu_ssdivha3@GCC_4.3.0 1:4.3.0 + __gnu_ssdivhq3@GCC_4.3.0 1:4.3.0 + __gnu_ssdivqq3@GCC_4.3.0 1:4.3.0 + __gnu_ssdivsa3@GCC_4.3.0 1:4.3.0 + __gnu_ssdivsq3@GCC_4.3.0 1:4.3.0 + __gnu_ssmulda3@GCC_4.3.0 1:4.3.0 + __gnu_ssmuldq3@GCC_4.3.0 1:4.3.0 + __gnu_ssmulha3@GCC_4.3.0 1:4.3.0 + __gnu_ssmulhq3@GCC_4.3.0 1:4.3.0 + __gnu_ssmulqq3@GCC_4.3.0 1:4.3.0 + __gnu_ssmulsa3@GCC_4.3.0 1:4.3.0 + __gnu_ssmulsq3@GCC_4.3.0 1:4.3.0 + __gnu_ssnegda2@GCC_4.3.0 1:4.3.0 + __gnu_ssnegdq2@GCC_4.3.0 1:4.3.0 + __gnu_ssnegha2@GCC_4.3.0 1:4.3.0 + __gnu_ssneghq2@GCC_4.3.0 1:4.3.0 + __gnu_ssnegqq2@GCC_4.3.0 1:4.3.0 + __gnu_ssnegsa2@GCC_4.3.0 1:4.3.0 + __gnu_ssnegsq2@GCC_4.3.0 1:4.3.0 + __gnu_sssubda3@GCC_4.3.0 1:4.3.0 + __gnu_sssubdq3@GCC_4.3.0 1:4.3.0 + __gnu_sssubha3@GCC_4.3.0 1:4.3.0 + __gnu_sssubhq3@GCC_4.3.0 1:4.3.0 + __gnu_sssubqq3@GCC_4.3.0 1:4.3.0 + __gnu_sssubsa3@GCC_4.3.0 1:4.3.0 + __gnu_sssubsq3@GCC_4.3.0 1:4.3.0 + __gnu_subda3@GCC_4.3.0 1:4.3.0 + __gnu_subdq3@GCC_4.3.0 1:4.3.0 + __gnu_subha3@GCC_4.3.0 1:4.3.0 + __gnu_subhq3@GCC_4.3.0 1:4.3.0 + __gnu_subqq3@GCC_4.3.0 1:4.3.0 + __gnu_subsa3@GCC_4.3.0 1:4.3.0 + __gnu_subsq3@GCC_4.3.0 1:4.3.0 + __gnu_subuda3@GCC_4.3.0 1:4.3.0 + __gnu_subudq3@GCC_4.3.0 1:4.3.0 + __gnu_subuha3@GCC_4.3.0 1:4.3.0 + __gnu_subuhq3@GCC_4.3.0 1:4.3.0 + __gnu_subuqq3@GCC_4.3.0 1:4.3.0 + __gnu_subusa3@GCC_4.3.0 1:4.3.0 + __gnu_subusq3@GCC_4.3.0 1:4.3.0 + __gnu_udivuda3@GCC_4.3.0 1:4.3.0 + __gnu_udivudq3@GCC_4.3.0 1:4.3.0 + __gnu_udivuha3@GCC_4.3.0 1:4.3.0 + __gnu_udivuhq3@GCC_4.3.0 1:4.3.0 + __gnu_udivuqq3@GCC_4.3.0 1:4.3.0 + __gnu_udivusa3@GCC_4.3.0 1:4.3.0 + __gnu_udivusq3@GCC_4.3.0 1:4.3.0 + __gnu_unwind_frame@GCC_3.5 1:4.3.0 + __gnu_usadduda3@GCC_4.3.0 1:4.3.0 + __gnu_usaddudq3@GCC_4.3.0 1:4.3.0 + __gnu_usadduha3@GCC_4.3.0 1:4.3.0 + __gnu_usadduhq3@GCC_4.3.0 1:4.3.0 + __gnu_usadduqq3@GCC_4.3.0 1:4.3.0 + __gnu_usaddusa3@GCC_4.3.0 1:4.3.0 + __gnu_usaddusq3@GCC_4.3.0 1:4.3.0 + __gnu_usashluda3@GCC_4.3.0 1:4.3.0 + __gnu_usashludq3@GCC_4.3.0 1:4.3.0 + __gnu_usashluha3@GCC_4.3.0 1:4.3.0 + __gnu_usashluhq3@GCC_4.3.0 1:4.3.0 + __gnu_usashluqq3@GCC_4.3.0 1:4.3.0 + __gnu_usashlusa3@GCC_4.3.0 1:4.3.0 + __gnu_usashlusq3@GCC_4.3.0 1:4.3.0 + __gnu_usdivuda3@GCC_4.3.0 1:4.3.0 + __gnu_usdivudq3@GCC_4.3.0 1:4.3.0 + __gnu_usdivuha3@GCC_4.3.0 1:4.3.0 + __gnu_usdivuhq3@GCC_4.3.0 1:4.3.0 + __gnu_usdivuqq3@GCC_4.3.0 1:4.3.0 + __gnu_usdivusa3@GCC_4.3.0 1:4.3.0 + __gnu_usdivusq3@GCC_4.3.0 1:4.3.0 + __gnu_usmuluda3@GCC_4.3.0 1:4.3.0 + __gnu_usmuludq3@GCC_4.3.0 1:4.3.0 + __gnu_usmuluha3@GCC_4.3.0 1:4.3.0 + __gnu_usmuluhq3@GCC_4.3.0 1:4.3.0 + __gnu_usmuluqq3@GCC_4.3.0 1:4.3.0 + __gnu_usmulusa3@GCC_4.3.0 1:4.3.0 + __gnu_usmulusq3@GCC_4.3.0 1:4.3.0 + __gnu_usneguda2@GCC_4.3.0 1:4.3.0 + __gnu_usnegudq2@GCC_4.3.0 1:4.3.0 + __gnu_usneguha2@GCC_4.3.0 1:4.3.0 + __gnu_usneguhq2@GCC_4.3.0 1:4.3.0 + __gnu_usneguqq2@GCC_4.3.0 1:4.3.0 + __gnu_usnegusa2@GCC_4.3.0 1:4.3.0 + __gnu_usnegusq2@GCC_4.3.0 1:4.3.0 + __gnu_ussubuda3@GCC_4.3.0 1:4.3.0 + __gnu_ussubudq3@GCC_4.3.0 1:4.3.0 + __gnu_ussubuha3@GCC_4.3.0 1:4.3.0 + __gnu_ussubuhq3@GCC_4.3.0 1:4.3.0 + __gnu_ussubuqq3@GCC_4.3.0 1:4.3.0 + __gnu_ussubusa3@GCC_4.3.0 1:4.3.0 + __gnu_ussubusq3@GCC_4.3.0 1:4.3.0 + __gtdf2@GCC_3.0 1:4.3.0 + __gtsf2@GCC_3.0 1:4.3.0 + __ledf2@GCC_3.0 1:4.3.0 + __lesf2@GCC_3.0 1:4.3.0 + __lshrdi3@GCC_3.0 1:4.3.0 + __ltdf2@GCC_3.0 1:4.3.0 + __ltsf2@GCC_3.0 1:4.3.0 + __moddi3@GLIBC_2.0 1:4.3.0 + __modsi3@GCC_3.0 1:4.3.0 + __muldc3@GCC_4.0.0 1:4.3.0 + __muldf3@GCC_3.0 1:4.3.0 + __muldi3@GCC_3.0 1:4.3.0 + __mulsc3@GCC_4.0.0 1:4.3.0 + __mulsf3@GCC_3.0 1:4.3.0 + __mulvdi3@GCC_3.0 1:4.3.0 + __mulvsi3@GCC_3.0 1:4.3.0 + __nedf2@GCC_3.0 1:4.3.0 + __negdf2@GCC_3.0 1:4.3.0 + __negdi2@GCC_3.0 1:4.3.0 + __negsf2@GCC_3.0 1:4.3.0 + __negvdi2@GCC_3.0 1:4.3.0 + __negvsi2@GCC_3.0 1:4.3.0 + __nesf2@GCC_3.0 1:4.3.0 + __paritydi2@GCC_3.4 1:4.3.0 + __paritysi2@GCC_3.4 1:4.3.0 + __popcountdi2@GCC_3.4 1:4.3.0 + __popcountsi2@GCC_3.4 1:4.3.0 + __powidf2@GCC_4.0.0 1:4.3.0 + __powisf2@GCC_4.0.0 1:4.3.0 + __subdf3@GCC_3.0 1:4.3.0 + __subsf3@GCC_3.0 1:4.3.0 + __subvdi3@GCC_3.0 1:4.3.0 + __subvsi3@GCC_3.0 1:4.3.0 + __truncdfsf2@GCC_3.0 1:4.3.0 + __ucmpdi2@GCC_3.0 1:4.3.0 + __udivdi3@GLIBC_2.0 1:4.3.0 + __udivmoddi4@GCC_3.0 1:4.3.0 + __udivsi3@GCC_3.0 1:4.3.0 + __umoddi3@GLIBC_2.0 1:4.3.0 + __umodsi3@GCC_3.0 1:4.3.0 + __unorddf2@GCC_3.3.4 1:4.3.0 + __unordsf2@GCC_3.3.4 1:4.3.0 --- gcc-4.9-4.9.2.orig/debian/libgcc1.symbols.armhf +++ gcc-4.9-4.9.2/debian/libgcc1.symbols.armhf @@ -0,0 +1,1103 @@ +libgcc_s.so.1 libgcc1 #MINVER# +(ignore-blacklist)#include "libgcc1.symbols.aeabi" + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3.4@GCC_3.3.4 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_3.5@GCC_3.5 1:4.3.0 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_4.3.0 1:4.3.0 + _Unwind_Complete@GCC_3.5 1:4.3.0 + _Unwind_DeleteException@GCC_3.0 1:4.3.0 + _Unwind_ForcedUnwind@GCC_3.0 1:4.3.0 + _Unwind_GetCFA@GCC_3.3 1:4.3.0 + _Unwind_GetDataRelBase@GCC_3.0 1:4.3.0 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.3.0 + _Unwind_GetRegionStart@GCC_3.0 1:4.3.0 + _Unwind_GetTextRelBase@GCC_3.0 1:4.3.0 + _Unwind_RaiseException@GCC_3.0 1:4.3.0 + _Unwind_Resume@GCC_3.0 1:4.3.0 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.3.0 + _Unwind_VRS_Get@GCC_3.5 1:4.3.0 + _Unwind_VRS_Pop@GCC_3.5 1:4.3.0 + _Unwind_VRS_Set@GCC_3.5 1:4.3.0 + __absvdi2@GCC_3.0 1:4.3.0 + __absvsi2@GCC_3.0 1:4.3.0 + __adddf3@GCC_3.0 1:4.3.0 + __addsf3@GCC_3.0 1:4.3.0 + __addvdi3@GCC_3.0 1:4.3.0 + __addvsi3@GCC_3.0 1:4.3.0 + __ashldi3@GCC_3.0 1:4.3.0 + __ashrdi3@GCC_3.0 1:4.3.0 + __bswapdi2@GCC_4.3.0 1:4.3.0 + __bswapsi2@GCC_4.3.0 1:4.3.0 + __clear_cache@GCC_3.0 1:4.3.0 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbsi2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.3.0 + __clzsi2@GCC_3.4 1:4.3.0 + __cmpdi2@GCC_3.0 1:4.3.0 + __ctzdi2@GCC_3.4 1:4.3.0 + __ctzsi2@GCC_3.4 1:4.3.0 + __divdc3@GCC_4.0.0 1:4.3.0 + __divdf3@GCC_3.0 1:4.3.0 + __divdi3@GLIBC_2.0 1:4.3.0 + __divsc3@GCC_4.0.0 1:4.3.0 + __divsf3@GCC_3.0 1:4.3.0 + __divsi3@GCC_3.0 1:4.3.0 + __emutls_get_address@GCC_4.3.0 1:4.3.0 + __emutls_register_common@GCC_4.3.0 1:4.3.0 + __enable_execute_stack@GCC_3.4.2 1:4.3.0 + __eqdf2@GCC_3.0 1:4.3.0 + __eqsf2@GCC_3.0 1:4.3.0 + __extendsfdf2@GCC_3.0 1:4.3.0 + __ffsdi2@GCC_3.0 1:4.3.0 + __ffssi2@GCC_4.3.0 1:4.3.0 + __fixdfdi@GCC_3.0 1:4.3.0 + __fixdfsi@GCC_3.0 1:4.3.0 + __fixsfdi@GCC_3.0 1:4.3.0 + __fixsfsi@GCC_3.0 1:4.3.0 + __fixunsdfdi@GCC_3.0 1:4.3.0 + __fixunsdfsi@GCC_3.0 1:4.3.0 + __fixunssfdi@GCC_3.0 1:4.3.0 + __fixunssfsi@GCC_3.0 1:4.3.0 + __floatdidf@GCC_3.0 1:4.3.0 + __floatdisf@GCC_3.0 1:4.3.0 + __floatsidf@GCC_3.0 1:4.3.0 + __floatsisf@GCC_3.0 1:4.3.0 + __floatundidf@GCC_4.2.0 1:4.3.0 + __floatundisf@GCC_4.2.0 1:4.3.0 + __floatunsidf@GCC_4.2.0 1:4.3.0 + __floatunsisf@GCC_4.2.0 1:4.3.0 + __gcc_personality_v0@GCC_3.3.1 1:4.3.0 + __gedf2@GCC_3.0 1:4.3.0 + __gesf2@GCC_3.0 1:4.3.0 + __gnu_addda3@GCC_4.3.0 1:4.3.0 + __gnu_adddq3@GCC_4.3.0 1:4.3.0 + __gnu_addha3@GCC_4.3.0 1:4.3.0 + __gnu_addhq3@GCC_4.3.0 1:4.3.0 + __gnu_addqq3@GCC_4.3.0 1:4.3.0 + __gnu_addsa3@GCC_4.3.0 1:4.3.0 + __gnu_addsq3@GCC_4.3.0 1:4.3.0 + __gnu_adduda3@GCC_4.3.0 1:4.3.0 + __gnu_addudq3@GCC_4.3.0 1:4.3.0 + __gnu_adduha3@GCC_4.3.0 1:4.3.0 + __gnu_adduhq3@GCC_4.3.0 1:4.3.0 + __gnu_adduqq3@GCC_4.3.0 1:4.3.0 + __gnu_addusa3@GCC_4.3.0 1:4.3.0 + __gnu_addusq3@GCC_4.3.0 1:4.3.0 + __gnu_ashlda3@GCC_4.3.0 1:4.3.0 + __gnu_ashldq3@GCC_4.3.0 1:4.3.0 + __gnu_ashlha3@GCC_4.3.0 1:4.3.0 + __gnu_ashlhq3@GCC_4.3.0 1:4.3.0 + __gnu_ashlqq3@GCC_4.3.0 1:4.3.0 + __gnu_ashlsa3@GCC_4.3.0 1:4.3.0 + __gnu_ashlsq3@GCC_4.3.0 1:4.3.0 + __gnu_ashluda3@GCC_4.3.0 1:4.3.0 + __gnu_ashludq3@GCC_4.3.0 1:4.3.0 + __gnu_ashluha3@GCC_4.3.0 1:4.3.0 + __gnu_ashluhq3@GCC_4.3.0 1:4.3.0 + __gnu_ashluqq3@GCC_4.3.0 1:4.3.0 + __gnu_ashlusa3@GCC_4.3.0 1:4.3.0 + __gnu_ashlusq3@GCC_4.3.0 1:4.3.0 + __gnu_ashrda3@GCC_4.3.0 1:4.3.0 + __gnu_ashrdq3@GCC_4.3.0 1:4.3.0 + __gnu_ashrha3@GCC_4.3.0 1:4.3.0 + __gnu_ashrhq3@GCC_4.3.0 1:4.3.0 + __gnu_ashrqq3@GCC_4.3.0 1:4.3.0 + __gnu_ashrsa3@GCC_4.3.0 1:4.3.0 + __gnu_ashrsq3@GCC_4.3.0 1:4.3.0 + __gnu_cmpda2@GCC_4.3.0 1:4.3.0 + __gnu_cmpdq2@GCC_4.3.0 1:4.3.0 + __gnu_cmpha2@GCC_4.3.0 1:4.3.0 + __gnu_cmphq2@GCC_4.3.0 1:4.3.0 + __gnu_cmpqq2@GCC_4.3.0 1:4.3.0 + __gnu_cmpsa2@GCC_4.3.0 1:4.3.0 + __gnu_cmpsq2@GCC_4.3.0 1:4.3.0 + __gnu_cmpuda2@GCC_4.3.0 1:4.3.0 + __gnu_cmpudq2@GCC_4.3.0 1:4.3.0 + __gnu_cmpuha2@GCC_4.3.0 1:4.3.0 + __gnu_cmpuhq2@GCC_4.3.0 1:4.3.0 + __gnu_cmpuqq2@GCC_4.3.0 1:4.3.0 + __gnu_cmpusa2@GCC_4.3.0 1:4.3.0 + __gnu_cmpusq2@GCC_4.3.0 1:4.3.0 + __gnu_divda3@GCC_4.3.0 1:4.3.0 + __gnu_divdq3@GCC_4.3.0 1:4.3.0 + __gnu_divha3@GCC_4.3.0 1:4.3.0 + __gnu_divhq3@GCC_4.3.0 1:4.3.0 + __gnu_divqq3@GCC_4.3.0 1:4.3.0 + __gnu_divsa3@GCC_4.3.0 1:4.3.0 + __gnu_divsq3@GCC_4.3.0 1:4.3.0 + __gnu_fractdadf@GCC_4.3.0 1:4.3.0 + __gnu_fractdadi@GCC_4.3.0 1:4.3.0 + __gnu_fractdadq@GCC_4.3.0 1:4.3.0 + __gnu_fractdaha2@GCC_4.3.0 1:4.3.0 + __gnu_fractdahi@GCC_4.3.0 1:4.3.0 + __gnu_fractdahq@GCC_4.3.0 1:4.3.0 + __gnu_fractdaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractdaqq@GCC_4.3.0 1:4.3.0 + __gnu_fractdasa2@GCC_4.3.0 1:4.3.0 + __gnu_fractdasf@GCC_4.3.0 1:4.3.0 + __gnu_fractdasi@GCC_4.3.0 1:4.3.0 + __gnu_fractdasq@GCC_4.3.0 1:4.3.0 + __gnu_fractdauda@GCC_4.3.0 1:4.3.0 + __gnu_fractdaudq@GCC_4.3.0 1:4.3.0 + __gnu_fractdauha@GCC_4.3.0 1:4.3.0 + __gnu_fractdauhq@GCC_4.3.0 1:4.3.0 + __gnu_fractdauqq@GCC_4.3.0 1:4.3.0 + __gnu_fractdausa@GCC_4.3.0 1:4.3.0 + __gnu_fractdausq@GCC_4.3.0 1:4.3.0 + __gnu_fractdfda@GCC_4.3.0 1:4.3.0 + __gnu_fractdfdq@GCC_4.3.0 1:4.3.0 + __gnu_fractdfha@GCC_4.3.0 1:4.3.0 + __gnu_fractdfhq@GCC_4.3.0 1:4.3.0 + __gnu_fractdfqq@GCC_4.3.0 1:4.3.0 + __gnu_fractdfsa@GCC_4.3.0 1:4.3.0 + __gnu_fractdfsq@GCC_4.3.0 1:4.3.0 + __gnu_fractdfuda@GCC_4.3.0 1:4.3.0 + __gnu_fractdfudq@GCC_4.3.0 1:4.3.0 + __gnu_fractdfuha@GCC_4.3.0 1:4.3.0 + __gnu_fractdfuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractdfuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractdfusa@GCC_4.3.0 1:4.3.0 + __gnu_fractdfusq@GCC_4.3.0 1:4.3.0 + __gnu_fractdida@GCC_4.3.0 1:4.3.0 + __gnu_fractdidq@GCC_4.3.0 1:4.3.0 + __gnu_fractdiha@GCC_4.3.0 1:4.3.0 + __gnu_fractdihq@GCC_4.3.0 1:4.3.0 + __gnu_fractdiqq@GCC_4.3.0 1:4.3.0 + __gnu_fractdisa@GCC_4.3.0 1:4.3.0 + __gnu_fractdisq@GCC_4.3.0 1:4.3.0 + __gnu_fractdiuda@GCC_4.3.0 1:4.3.0 + __gnu_fractdiudq@GCC_4.3.0 1:4.3.0 + __gnu_fractdiuha@GCC_4.3.0 1:4.3.0 + __gnu_fractdiuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractdiuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractdiusa@GCC_4.3.0 1:4.3.0 + __gnu_fractdiusq@GCC_4.3.0 1:4.3.0 + __gnu_fractdqda@GCC_4.3.0 1:4.3.0 + __gnu_fractdqdf@GCC_4.3.0 1:4.3.0 + __gnu_fractdqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractdqha@GCC_4.3.0 1:4.3.0 + __gnu_fractdqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractdqhq2@GCC_4.3.0 1:4.3.0 + __gnu_fractdqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractdqqq2@GCC_4.3.0 1:4.3.0 + __gnu_fractdqsa@GCC_4.3.0 1:4.3.0 + __gnu_fractdqsf@GCC_4.3.0 1:4.3.0 + __gnu_fractdqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractdqsq2@GCC_4.3.0 1:4.3.0 + __gnu_fractdquda@GCC_4.3.0 1:4.3.0 + __gnu_fractdqudq@GCC_4.3.0 1:4.3.0 + __gnu_fractdquha@GCC_4.3.0 1:4.3.0 + __gnu_fractdquhq@GCC_4.3.0 1:4.3.0 + __gnu_fractdquqq@GCC_4.3.0 1:4.3.0 + __gnu_fractdqusa@GCC_4.3.0 1:4.3.0 + __gnu_fractdqusq@GCC_4.3.0 1:4.3.0 + __gnu_fracthada2@GCC_4.3.0 1:4.3.0 + __gnu_fracthadf@GCC_4.3.0 1:4.3.0 + __gnu_fracthadi@GCC_4.3.0 1:4.3.0 + __gnu_fracthadq@GCC_4.3.0 1:4.3.0 + __gnu_fracthahi@GCC_4.3.0 1:4.3.0 + __gnu_fracthahq@GCC_4.3.0 1:4.3.0 + __gnu_fracthaqi@GCC_4.3.0 1:4.3.0 + __gnu_fracthaqq@GCC_4.3.0 1:4.3.0 + __gnu_fracthasa2@GCC_4.3.0 1:4.3.0 + __gnu_fracthasf@GCC_4.3.0 1:4.3.0 + __gnu_fracthasi@GCC_4.3.0 1:4.3.0 + __gnu_fracthasq@GCC_4.3.0 1:4.3.0 + __gnu_fracthauda@GCC_4.3.0 1:4.3.0 + __gnu_fracthaudq@GCC_4.3.0 1:4.3.0 + __gnu_fracthauha@GCC_4.3.0 1:4.3.0 + __gnu_fracthauhq@GCC_4.3.0 1:4.3.0 + __gnu_fracthauqq@GCC_4.3.0 1:4.3.0 + __gnu_fracthausa@GCC_4.3.0 1:4.3.0 + __gnu_fracthausq@GCC_4.3.0 1:4.3.0 + __gnu_fracthida@GCC_4.3.0 1:4.3.0 + __gnu_fracthidq@GCC_4.3.0 1:4.3.0 + __gnu_fracthiha@GCC_4.3.0 1:4.3.0 + __gnu_fracthihq@GCC_4.3.0 1:4.3.0 + __gnu_fracthiqq@GCC_4.3.0 1:4.3.0 + __gnu_fracthisa@GCC_4.3.0 1:4.3.0 + __gnu_fracthisq@GCC_4.3.0 1:4.3.0 + __gnu_fracthiuda@GCC_4.3.0 1:4.3.0 + __gnu_fracthiudq@GCC_4.3.0 1:4.3.0 + __gnu_fracthiuha@GCC_4.3.0 1:4.3.0 + __gnu_fracthiuhq@GCC_4.3.0 1:4.3.0 + __gnu_fracthiuqq@GCC_4.3.0 1:4.3.0 + __gnu_fracthiusa@GCC_4.3.0 1:4.3.0 + __gnu_fracthiusq@GCC_4.3.0 1:4.3.0 + __gnu_fracthqda@GCC_4.3.0 1:4.3.0 + __gnu_fracthqdf@GCC_4.3.0 1:4.3.0 + __gnu_fracthqdi@GCC_4.3.0 1:4.3.0 + __gnu_fracthqdq2@GCC_4.3.0 1:4.3.0 + __gnu_fracthqha@GCC_4.3.0 1:4.3.0 + __gnu_fracthqhi@GCC_4.3.0 1:4.3.0 + __gnu_fracthqqi@GCC_4.3.0 1:4.3.0 + __gnu_fracthqqq2@GCC_4.3.0 1:4.3.0 + __gnu_fracthqsa@GCC_4.3.0 1:4.3.0 + __gnu_fracthqsf@GCC_4.3.0 1:4.3.0 + __gnu_fracthqsi@GCC_4.3.0 1:4.3.0 + __gnu_fracthqsq2@GCC_4.3.0 1:4.3.0 + __gnu_fracthquda@GCC_4.3.0 1:4.3.0 + __gnu_fracthqudq@GCC_4.3.0 1:4.3.0 + __gnu_fracthquha@GCC_4.3.0 1:4.3.0 + __gnu_fracthquhq@GCC_4.3.0 1:4.3.0 + __gnu_fracthquqq@GCC_4.3.0 1:4.3.0 + __gnu_fracthqusa@GCC_4.3.0 1:4.3.0 + __gnu_fracthqusq@GCC_4.3.0 1:4.3.0 + __gnu_fractqida@GCC_4.3.0 1:4.3.0 + __gnu_fractqidq@GCC_4.3.0 1:4.3.0 + __gnu_fractqiha@GCC_4.3.0 1:4.3.0 + __gnu_fractqihq@GCC_4.3.0 1:4.3.0 + __gnu_fractqiqq@GCC_4.3.0 1:4.3.0 + __gnu_fractqisa@GCC_4.3.0 1:4.3.0 + __gnu_fractqisq@GCC_4.3.0 1:4.3.0 + __gnu_fractqiuda@GCC_4.3.0 1:4.3.0 + __gnu_fractqiudq@GCC_4.3.0 1:4.3.0 + __gnu_fractqiuha@GCC_4.3.0 1:4.3.0 + __gnu_fractqiuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractqiuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractqiusa@GCC_4.3.0 1:4.3.0 + __gnu_fractqiusq@GCC_4.3.0 1:4.3.0 + __gnu_fractqqda@GCC_4.3.0 1:4.3.0 + __gnu_fractqqdf@GCC_4.3.0 1:4.3.0 + __gnu_fractqqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractqqdq2@GCC_4.3.0 1:4.3.0 + __gnu_fractqqha@GCC_4.3.0 1:4.3.0 + __gnu_fractqqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractqqhq2@GCC_4.3.0 1:4.3.0 + __gnu_fractqqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractqqsa@GCC_4.3.0 1:4.3.0 + __gnu_fractqqsf@GCC_4.3.0 1:4.3.0 + __gnu_fractqqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractqqsq2@GCC_4.3.0 1:4.3.0 + __gnu_fractqquda@GCC_4.3.0 1:4.3.0 + __gnu_fractqqudq@GCC_4.3.0 1:4.3.0 + __gnu_fractqquha@GCC_4.3.0 1:4.3.0 + __gnu_fractqquhq@GCC_4.3.0 1:4.3.0 + __gnu_fractqquqq@GCC_4.3.0 1:4.3.0 + __gnu_fractqqusa@GCC_4.3.0 1:4.3.0 + __gnu_fractqqusq@GCC_4.3.0 1:4.3.0 + __gnu_fractsada2@GCC_4.3.0 1:4.3.0 + __gnu_fractsadf@GCC_4.3.0 1:4.3.0 + __gnu_fractsadi@GCC_4.3.0 1:4.3.0 + __gnu_fractsadq@GCC_4.3.0 1:4.3.0 + __gnu_fractsaha2@GCC_4.3.0 1:4.3.0 + __gnu_fractsahi@GCC_4.3.0 1:4.3.0 + __gnu_fractsahq@GCC_4.3.0 1:4.3.0 + __gnu_fractsaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractsaqq@GCC_4.3.0 1:4.3.0 + __gnu_fractsasf@GCC_4.3.0 1:4.3.0 + __gnu_fractsasi@GCC_4.3.0 1:4.3.0 + __gnu_fractsasq@GCC_4.3.0 1:4.3.0 + __gnu_fractsauda@GCC_4.3.0 1:4.3.0 + __gnu_fractsaudq@GCC_4.3.0 1:4.3.0 + __gnu_fractsauha@GCC_4.3.0 1:4.3.0 + __gnu_fractsauhq@GCC_4.3.0 1:4.3.0 + __gnu_fractsauqq@GCC_4.3.0 1:4.3.0 + __gnu_fractsausa@GCC_4.3.0 1:4.3.0 + __gnu_fractsausq@GCC_4.3.0 1:4.3.0 + __gnu_fractsfda@GCC_4.3.0 1:4.3.0 + __gnu_fractsfdq@GCC_4.3.0 1:4.3.0 + __gnu_fractsfha@GCC_4.3.0 1:4.3.0 + __gnu_fractsfhq@GCC_4.3.0 1:4.3.0 + __gnu_fractsfqq@GCC_4.3.0 1:4.3.0 + __gnu_fractsfsa@GCC_4.3.0 1:4.3.0 + __gnu_fractsfsq@GCC_4.3.0 1:4.3.0 + __gnu_fractsfuda@GCC_4.3.0 1:4.3.0 + __gnu_fractsfudq@GCC_4.3.0 1:4.3.0 + __gnu_fractsfuha@GCC_4.3.0 1:4.3.0 + __gnu_fractsfuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractsfuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractsfusa@GCC_4.3.0 1:4.3.0 + __gnu_fractsfusq@GCC_4.3.0 1:4.3.0 + __gnu_fractsida@GCC_4.3.0 1:4.3.0 + __gnu_fractsidq@GCC_4.3.0 1:4.3.0 + __gnu_fractsiha@GCC_4.3.0 1:4.3.0 + __gnu_fractsihq@GCC_4.3.0 1:4.3.0 + __gnu_fractsiqq@GCC_4.3.0 1:4.3.0 + __gnu_fractsisa@GCC_4.3.0 1:4.3.0 + __gnu_fractsisq@GCC_4.3.0 1:4.3.0 + __gnu_fractsiuda@GCC_4.3.0 1:4.3.0 + __gnu_fractsiudq@GCC_4.3.0 1:4.3.0 + __gnu_fractsiuha@GCC_4.3.0 1:4.3.0 + __gnu_fractsiuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractsiuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractsiusa@GCC_4.3.0 1:4.3.0 + __gnu_fractsiusq@GCC_4.3.0 1:4.3.0 + __gnu_fractsqda@GCC_4.3.0 1:4.3.0 + __gnu_fractsqdf@GCC_4.3.0 1:4.3.0 + __gnu_fractsqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractsqdq2@GCC_4.3.0 1:4.3.0 + __gnu_fractsqha@GCC_4.3.0 1:4.3.0 + __gnu_fractsqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractsqhq2@GCC_4.3.0 1:4.3.0 + __gnu_fractsqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractsqqq2@GCC_4.3.0 1:4.3.0 + __gnu_fractsqsa@GCC_4.3.0 1:4.3.0 + __gnu_fractsqsf@GCC_4.3.0 1:4.3.0 + __gnu_fractsqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractsquda@GCC_4.3.0 1:4.3.0 + __gnu_fractsqudq@GCC_4.3.0 1:4.3.0 + __gnu_fractsquha@GCC_4.3.0 1:4.3.0 + __gnu_fractsquhq@GCC_4.3.0 1:4.3.0 + __gnu_fractsquqq@GCC_4.3.0 1:4.3.0 + __gnu_fractsqusa@GCC_4.3.0 1:4.3.0 + __gnu_fractsqusq@GCC_4.3.0 1:4.3.0 + __gnu_fractudada@GCC_4.3.0 1:4.3.0 + __gnu_fractudadf@GCC_4.3.0 1:4.3.0 + __gnu_fractudadi@GCC_4.3.0 1:4.3.0 + __gnu_fractudadq@GCC_4.3.0 1:4.3.0 + __gnu_fractudaha@GCC_4.3.0 1:4.3.0 + __gnu_fractudahi@GCC_4.3.0 1:4.3.0 + __gnu_fractudahq@GCC_4.3.0 1:4.3.0 + __gnu_fractudaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractudaqq@GCC_4.3.0 1:4.3.0 + __gnu_fractudasa@GCC_4.3.0 1:4.3.0 + __gnu_fractudasf@GCC_4.3.0 1:4.3.0 + __gnu_fractudasi@GCC_4.3.0 1:4.3.0 + __gnu_fractudasq@GCC_4.3.0 1:4.3.0 + __gnu_fractudaudq@GCC_4.3.0 1:4.3.0 + __gnu_fractudauha2@GCC_4.3.0 1:4.3.0 + __gnu_fractudauhq@GCC_4.3.0 1:4.3.0 + __gnu_fractudauqq@GCC_4.3.0 1:4.3.0 + __gnu_fractudausa2@GCC_4.3.0 1:4.3.0 + __gnu_fractudausq@GCC_4.3.0 1:4.3.0 + __gnu_fractudqda@GCC_4.3.0 1:4.3.0 + __gnu_fractudqdf@GCC_4.3.0 1:4.3.0 + __gnu_fractudqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractudqdq@GCC_4.3.0 1:4.3.0 + __gnu_fractudqha@GCC_4.3.0 1:4.3.0 + __gnu_fractudqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractudqhq@GCC_4.3.0 1:4.3.0 + __gnu_fractudqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractudqqq@GCC_4.3.0 1:4.3.0 + __gnu_fractudqsa@GCC_4.3.0 1:4.3.0 + __gnu_fractudqsf@GCC_4.3.0 1:4.3.0 + __gnu_fractudqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractudqsq@GCC_4.3.0 1:4.3.0 + __gnu_fractudquda@GCC_4.3.0 1:4.3.0 + __gnu_fractudquha@GCC_4.3.0 1:4.3.0 + __gnu_fractudquhq2@GCC_4.3.0 1:4.3.0 + __gnu_fractudquqq2@GCC_4.3.0 1:4.3.0 + __gnu_fractudqusa@GCC_4.3.0 1:4.3.0 + __gnu_fractudqusq2@GCC_4.3.0 1:4.3.0 + __gnu_fractuhada@GCC_4.3.0 1:4.3.0 + __gnu_fractuhadf@GCC_4.3.0 1:4.3.0 + __gnu_fractuhadi@GCC_4.3.0 1:4.3.0 + __gnu_fractuhadq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhaha@GCC_4.3.0 1:4.3.0 + __gnu_fractuhahi@GCC_4.3.0 1:4.3.0 + __gnu_fractuhahq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractuhaqq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhasa@GCC_4.3.0 1:4.3.0 + __gnu_fractuhasf@GCC_4.3.0 1:4.3.0 + __gnu_fractuhasi@GCC_4.3.0 1:4.3.0 + __gnu_fractuhasq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhauda2@GCC_4.3.0 1:4.3.0 + __gnu_fractuhaudq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhauhq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhauqq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhausa2@GCC_4.3.0 1:4.3.0 + __gnu_fractuhausq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqda@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqdf@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqdq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqha@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqhq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqqq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqsa@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqsf@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqsq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhquda@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqudq2@GCC_4.3.0 1:4.3.0 + __gnu_fractuhquha@GCC_4.3.0 1:4.3.0 + __gnu_fractuhquqq2@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqusa@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqusq2@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdadi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdahi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdasi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdida@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdidq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiha@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdihq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiqq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdisa@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdisq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiuda@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiudq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiuha@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiusa@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiusq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractunshadi@GCC_4.3.0 1:4.3.0 + __gnu_fractunshahi@GCC_4.3.0 1:4.3.0 + __gnu_fractunshaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunshasi@GCC_4.3.0 1:4.3.0 + __gnu_fractunshida@GCC_4.3.0 1:4.3.0 + __gnu_fractunshidq@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiha@GCC_4.3.0 1:4.3.0 + __gnu_fractunshihq@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiqq@GCC_4.3.0 1:4.3.0 + __gnu_fractunshisa@GCC_4.3.0 1:4.3.0 + __gnu_fractunshisq@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiuda@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiudq@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiuha@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiusa@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiusq@GCC_4.3.0 1:4.3.0 + __gnu_fractunshqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractunshqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractunshqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunshqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqida@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqidq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiha@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqihq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiqq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqisa@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqisq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiuda@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiudq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiuha@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiusa@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiusq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractunssadi@GCC_4.3.0 1:4.3.0 + __gnu_fractunssahi@GCC_4.3.0 1:4.3.0 + __gnu_fractunssaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunssasi@GCC_4.3.0 1:4.3.0 + __gnu_fractunssida@GCC_4.3.0 1:4.3.0 + __gnu_fractunssidq@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiha@GCC_4.3.0 1:4.3.0 + __gnu_fractunssihq@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiqq@GCC_4.3.0 1:4.3.0 + __gnu_fractunssisa@GCC_4.3.0 1:4.3.0 + __gnu_fractunssisq@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiuda@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiudq@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiuha@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiusa@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiusq@GCC_4.3.0 1:4.3.0 + __gnu_fractunssqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractunssqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractunssqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunssqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsudadi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsudahi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsudaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsudasi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsudqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsudqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsudqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsudqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuhadi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuhahi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuhaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuhasi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuhqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuhqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuhqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuhqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuqqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuqqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuqqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuqqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsusadi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsusahi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsusaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsusasi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsusqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsusqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsusqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsusqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqda@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqdf@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqdq@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqha@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqhq@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqqq@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqsa@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqsf@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqsq@GCC_4.3.0 1:4.3.0 + __gnu_fractuqquda@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqudq2@GCC_4.3.0 1:4.3.0 + __gnu_fractuqquha@GCC_4.3.0 1:4.3.0 + __gnu_fractuqquhq2@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqusa@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqusq2@GCC_4.3.0 1:4.3.0 + __gnu_fractusada@GCC_4.3.0 1:4.3.0 + __gnu_fractusadf@GCC_4.3.0 1:4.3.0 + __gnu_fractusadi@GCC_4.3.0 1:4.3.0 + __gnu_fractusadq@GCC_4.3.0 1:4.3.0 + __gnu_fractusaha@GCC_4.3.0 1:4.3.0 + __gnu_fractusahi@GCC_4.3.0 1:4.3.0 + __gnu_fractusahq@GCC_4.3.0 1:4.3.0 + __gnu_fractusaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractusaqq@GCC_4.3.0 1:4.3.0 + __gnu_fractusasa@GCC_4.3.0 1:4.3.0 + __gnu_fractusasf@GCC_4.3.0 1:4.3.0 + __gnu_fractusasi@GCC_4.3.0 1:4.3.0 + __gnu_fractusasq@GCC_4.3.0 1:4.3.0 + __gnu_fractusauda2@GCC_4.3.0 1:4.3.0 + __gnu_fractusaudq@GCC_4.3.0 1:4.3.0 + __gnu_fractusauha2@GCC_4.3.0 1:4.3.0 + __gnu_fractusauhq@GCC_4.3.0 1:4.3.0 + __gnu_fractusauqq@GCC_4.3.0 1:4.3.0 + __gnu_fractusausq@GCC_4.3.0 1:4.3.0 + __gnu_fractusqda@GCC_4.3.0 1:4.3.0 + __gnu_fractusqdf@GCC_4.3.0 1:4.3.0 + __gnu_fractusqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractusqdq@GCC_4.3.0 1:4.3.0 + __gnu_fractusqha@GCC_4.3.0 1:4.3.0 + __gnu_fractusqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractusqhq@GCC_4.3.0 1:4.3.0 + __gnu_fractusqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractusqqq@GCC_4.3.0 1:4.3.0 + __gnu_fractusqsa@GCC_4.3.0 1:4.3.0 + __gnu_fractusqsf@GCC_4.3.0 1:4.3.0 + __gnu_fractusqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractusqsq@GCC_4.3.0 1:4.3.0 + __gnu_fractusquda@GCC_4.3.0 1:4.3.0 + __gnu_fractusqudq2@GCC_4.3.0 1:4.3.0 + __gnu_fractusquha@GCC_4.3.0 1:4.3.0 + __gnu_fractusquhq2@GCC_4.3.0 1:4.3.0 + __gnu_fractusquqq2@GCC_4.3.0 1:4.3.0 + __gnu_fractusqusa@GCC_4.3.0 1:4.3.0 + __gnu_lshruda3@GCC_4.3.0 1:4.3.0 + __gnu_lshrudq3@GCC_4.3.0 1:4.3.0 + __gnu_lshruha3@GCC_4.3.0 1:4.3.0 + __gnu_lshruhq3@GCC_4.3.0 1:4.3.0 + __gnu_lshruqq3@GCC_4.3.0 1:4.3.0 + __gnu_lshrusa3@GCC_4.3.0 1:4.3.0 + __gnu_lshrusq3@GCC_4.3.0 1:4.3.0 + __gnu_mulda3@GCC_4.3.0 1:4.3.0 + __gnu_muldq3@GCC_4.3.0 1:4.3.0 + __gnu_mulha3@GCC_4.3.0 1:4.3.0 + __gnu_mulhq3@GCC_4.3.0 1:4.3.0 + __gnu_mulqq3@GCC_4.3.0 1:4.3.0 + __gnu_mulsa3@GCC_4.3.0 1:4.3.0 + __gnu_mulsq3@GCC_4.3.0 1:4.3.0 + __gnu_muluda3@GCC_4.3.0 1:4.3.0 + __gnu_muludq3@GCC_4.3.0 1:4.3.0 + __gnu_muluha3@GCC_4.3.0 1:4.3.0 + __gnu_muluhq3@GCC_4.3.0 1:4.3.0 + __gnu_muluqq3@GCC_4.3.0 1:4.3.0 + __gnu_mulusa3@GCC_4.3.0 1:4.3.0 + __gnu_mulusq3@GCC_4.3.0 1:4.3.0 + __gnu_negda2@GCC_4.3.0 1:4.3.0 + __gnu_negdq2@GCC_4.3.0 1:4.3.0 + __gnu_negha2@GCC_4.3.0 1:4.3.0 + __gnu_neghq2@GCC_4.3.0 1:4.3.0 + __gnu_negqq2@GCC_4.3.0 1:4.3.0 + __gnu_negsa2@GCC_4.3.0 1:4.3.0 + __gnu_negsq2@GCC_4.3.0 1:4.3.0 + __gnu_neguda2@GCC_4.3.0 1:4.3.0 + __gnu_negudq2@GCC_4.3.0 1:4.3.0 + __gnu_neguha2@GCC_4.3.0 1:4.3.0 + __gnu_neguhq2@GCC_4.3.0 1:4.3.0 + __gnu_neguqq2@GCC_4.3.0 1:4.3.0 + __gnu_negusa2@GCC_4.3.0 1:4.3.0 + __gnu_negusq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractdadq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdaha2@GCC_4.3.0 1:4.3.0 + __gnu_satfractdahq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdaqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdasa2@GCC_4.3.0 1:4.3.0 + __gnu_satfractdasq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdauda@GCC_4.3.0 1:4.3.0 + __gnu_satfractdaudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdauha@GCC_4.3.0 1:4.3.0 + __gnu_satfractdauhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdauqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdausa@GCC_4.3.0 1:4.3.0 + __gnu_satfractdausq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfda@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfdq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfha@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfsq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdida@GCC_4.3.0 1:4.3.0 + __gnu_satfractdidq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiha@GCC_4.3.0 1:4.3.0 + __gnu_satfractdihq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdisa@GCC_4.3.0 1:4.3.0 + __gnu_satfractdisq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqda@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqha@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqhq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqqq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqsq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractdquda@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdquha@GCC_4.3.0 1:4.3.0 + __gnu_satfractdquhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdquqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqusq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthada2@GCC_4.3.0 1:4.3.0 + __gnu_satfracthadq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthahq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthaqq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthasa2@GCC_4.3.0 1:4.3.0 + __gnu_satfracthasq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthauda@GCC_4.3.0 1:4.3.0 + __gnu_satfracthaudq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthauha@GCC_4.3.0 1:4.3.0 + __gnu_satfracthauhq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthauqq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthausa@GCC_4.3.0 1:4.3.0 + __gnu_satfracthausq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthida@GCC_4.3.0 1:4.3.0 + __gnu_satfracthidq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiha@GCC_4.3.0 1:4.3.0 + __gnu_satfracthihq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiqq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthisa@GCC_4.3.0 1:4.3.0 + __gnu_satfracthisq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiuda@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiudq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiuha@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiusa@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiusq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqda@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqdq2@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqha@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqqq2@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqsa@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqsq2@GCC_4.3.0 1:4.3.0 + __gnu_satfracthquda@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqudq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthquha@GCC_4.3.0 1:4.3.0 + __gnu_satfracthquhq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthquqq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqusa@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqida@GCC_4.3.0 1:4.3.0 + __gnu_satfractqidq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiha@GCC_4.3.0 1:4.3.0 + __gnu_satfractqihq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqisa@GCC_4.3.0 1:4.3.0 + __gnu_satfractqisq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqda@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqdq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqha@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqhq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqsq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractqquda@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqquha@GCC_4.3.0 1:4.3.0 + __gnu_satfractqquhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqquqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsada2@GCC_4.3.0 1:4.3.0 + __gnu_satfractsadq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsaha2@GCC_4.3.0 1:4.3.0 + __gnu_satfractsahq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsaqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsasq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsauda@GCC_4.3.0 1:4.3.0 + __gnu_satfractsaudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsauha@GCC_4.3.0 1:4.3.0 + __gnu_satfractsauhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsauqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsausa@GCC_4.3.0 1:4.3.0 + __gnu_satfractsausq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfda@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfdq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfha@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfsq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsida@GCC_4.3.0 1:4.3.0 + __gnu_satfractsidq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiha@GCC_4.3.0 1:4.3.0 + __gnu_satfractsihq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsisa@GCC_4.3.0 1:4.3.0 + __gnu_satfractsisq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqda@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqdq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqha@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqhq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqqq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractsquda@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsquha@GCC_4.3.0 1:4.3.0 + __gnu_satfractsquhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsquqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudada@GCC_4.3.0 1:4.3.0 + __gnu_satfractudadq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudaha@GCC_4.3.0 1:4.3.0 + __gnu_satfractudahq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudaqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudasa@GCC_4.3.0 1:4.3.0 + __gnu_satfractudasq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudaudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudauha2@GCC_4.3.0 1:4.3.0 + __gnu_satfractudauhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudauqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudausa2@GCC_4.3.0 1:4.3.0 + __gnu_satfractudausq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqda@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqdq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqha@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqsq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudquda@GCC_4.3.0 1:4.3.0 + __gnu_satfractudquha@GCC_4.3.0 1:4.3.0 + __gnu_satfractudquhq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractudquqq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqusq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhada@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhadq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhaha@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhahq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhaqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhasa@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhasq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhauda2@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhaudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhauhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhauqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhausa2@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhausq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqda@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqdq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqha@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqsq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhquda@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqudq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhquha@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhquqq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqusq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdida@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdidq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiha@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdihq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdisa@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdisq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshida@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshidq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiha@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshihq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshisa@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshisq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqida@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqidq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiha@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqihq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqisa@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqisq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssida@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssidq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiha@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssihq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssisa@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssisq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqda@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqdq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqha@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqsq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqquda@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqudq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqquha@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqquhq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqusq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractusada@GCC_4.3.0 1:4.3.0 + __gnu_satfractusadq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusaha@GCC_4.3.0 1:4.3.0 + __gnu_satfractusahq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusaqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusasa@GCC_4.3.0 1:4.3.0 + __gnu_satfractusasq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusauda2@GCC_4.3.0 1:4.3.0 + __gnu_satfractusaudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusauha2@GCC_4.3.0 1:4.3.0 + __gnu_satfractusauhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusauqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusausq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqda@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqdq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqha@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqsq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusquda@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqudq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractusquha@GCC_4.3.0 1:4.3.0 + __gnu_satfractusquhq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractusquqq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqusa@GCC_4.3.0 1:4.3.0 + __gnu_ssaddda3@GCC_4.3.0 1:4.3.0 + __gnu_ssadddq3@GCC_4.3.0 1:4.3.0 + __gnu_ssaddha3@GCC_4.3.0 1:4.3.0 + __gnu_ssaddhq3@GCC_4.3.0 1:4.3.0 + __gnu_ssaddqq3@GCC_4.3.0 1:4.3.0 + __gnu_ssaddsa3@GCC_4.3.0 1:4.3.0 + __gnu_ssaddsq3@GCC_4.3.0 1:4.3.0 + __gnu_ssashlda3@GCC_4.3.0 1:4.3.0 + __gnu_ssashldq3@GCC_4.3.0 1:4.3.0 + __gnu_ssashlha3@GCC_4.3.0 1:4.3.0 + __gnu_ssashlhq3@GCC_4.3.0 1:4.3.0 + __gnu_ssashlqq3@GCC_4.3.0 1:4.3.0 + __gnu_ssashlsa3@GCC_4.3.0 1:4.3.0 + __gnu_ssashlsq3@GCC_4.3.0 1:4.3.0 + __gnu_ssdivda3@GCC_4.3.0 1:4.3.0 + __gnu_ssdivdq3@GCC_4.3.0 1:4.3.0 + __gnu_ssdivha3@GCC_4.3.0 1:4.3.0 + __gnu_ssdivhq3@GCC_4.3.0 1:4.3.0 + __gnu_ssdivqq3@GCC_4.3.0 1:4.3.0 + __gnu_ssdivsa3@GCC_4.3.0 1:4.3.0 + __gnu_ssdivsq3@GCC_4.3.0 1:4.3.0 + __gnu_ssmulda3@GCC_4.3.0 1:4.3.0 + __gnu_ssmuldq3@GCC_4.3.0 1:4.3.0 + __gnu_ssmulha3@GCC_4.3.0 1:4.3.0 + __gnu_ssmulhq3@GCC_4.3.0 1:4.3.0 + __gnu_ssmulqq3@GCC_4.3.0 1:4.3.0 + __gnu_ssmulsa3@GCC_4.3.0 1:4.3.0 + __gnu_ssmulsq3@GCC_4.3.0 1:4.3.0 + __gnu_ssnegda2@GCC_4.3.0 1:4.3.0 + __gnu_ssnegdq2@GCC_4.3.0 1:4.3.0 + __gnu_ssnegha2@GCC_4.3.0 1:4.3.0 + __gnu_ssneghq2@GCC_4.3.0 1:4.3.0 + __gnu_ssnegqq2@GCC_4.3.0 1:4.3.0 + __gnu_ssnegsa2@GCC_4.3.0 1:4.3.0 + __gnu_ssnegsq2@GCC_4.3.0 1:4.3.0 + __gnu_sssubda3@GCC_4.3.0 1:4.3.0 + __gnu_sssubdq3@GCC_4.3.0 1:4.3.0 + __gnu_sssubha3@GCC_4.3.0 1:4.3.0 + __gnu_sssubhq3@GCC_4.3.0 1:4.3.0 + __gnu_sssubqq3@GCC_4.3.0 1:4.3.0 + __gnu_sssubsa3@GCC_4.3.0 1:4.3.0 + __gnu_sssubsq3@GCC_4.3.0 1:4.3.0 + __gnu_subda3@GCC_4.3.0 1:4.3.0 + __gnu_subdq3@GCC_4.3.0 1:4.3.0 + __gnu_subha3@GCC_4.3.0 1:4.3.0 + __gnu_subhq3@GCC_4.3.0 1:4.3.0 + __gnu_subqq3@GCC_4.3.0 1:4.3.0 + __gnu_subsa3@GCC_4.3.0 1:4.3.0 + __gnu_subsq3@GCC_4.3.0 1:4.3.0 + __gnu_subuda3@GCC_4.3.0 1:4.3.0 + __gnu_subudq3@GCC_4.3.0 1:4.3.0 + __gnu_subuha3@GCC_4.3.0 1:4.3.0 + __gnu_subuhq3@GCC_4.3.0 1:4.3.0 + __gnu_subuqq3@GCC_4.3.0 1:4.3.0 + __gnu_subusa3@GCC_4.3.0 1:4.3.0 + __gnu_subusq3@GCC_4.3.0 1:4.3.0 + __gnu_udivuda3@GCC_4.3.0 1:4.3.0 + __gnu_udivudq3@GCC_4.3.0 1:4.3.0 + __gnu_udivuha3@GCC_4.3.0 1:4.3.0 + __gnu_udivuhq3@GCC_4.3.0 1:4.3.0 + __gnu_udivuqq3@GCC_4.3.0 1:4.3.0 + __gnu_udivusa3@GCC_4.3.0 1:4.3.0 + __gnu_udivusq3@GCC_4.3.0 1:4.3.0 + __gnu_unwind_frame@GCC_3.5 1:4.3.0 + __gnu_usadduda3@GCC_4.3.0 1:4.3.0 + __gnu_usaddudq3@GCC_4.3.0 1:4.3.0 + __gnu_usadduha3@GCC_4.3.0 1:4.3.0 + __gnu_usadduhq3@GCC_4.3.0 1:4.3.0 + __gnu_usadduqq3@GCC_4.3.0 1:4.3.0 + __gnu_usaddusa3@GCC_4.3.0 1:4.3.0 + __gnu_usaddusq3@GCC_4.3.0 1:4.3.0 + __gnu_usashluda3@GCC_4.3.0 1:4.3.0 + __gnu_usashludq3@GCC_4.3.0 1:4.3.0 + __gnu_usashluha3@GCC_4.3.0 1:4.3.0 + __gnu_usashluhq3@GCC_4.3.0 1:4.3.0 + __gnu_usashluqq3@GCC_4.3.0 1:4.3.0 + __gnu_usashlusa3@GCC_4.3.0 1:4.3.0 + __gnu_usashlusq3@GCC_4.3.0 1:4.3.0 + __gnu_usdivuda3@GCC_4.3.0 1:4.3.0 + __gnu_usdivudq3@GCC_4.3.0 1:4.3.0 + __gnu_usdivuha3@GCC_4.3.0 1:4.3.0 + __gnu_usdivuhq3@GCC_4.3.0 1:4.3.0 + __gnu_usdivuqq3@GCC_4.3.0 1:4.3.0 + __gnu_usdivusa3@GCC_4.3.0 1:4.3.0 + __gnu_usdivusq3@GCC_4.3.0 1:4.3.0 + __gnu_usmuluda3@GCC_4.3.0 1:4.3.0 + __gnu_usmuludq3@GCC_4.3.0 1:4.3.0 + __gnu_usmuluha3@GCC_4.3.0 1:4.3.0 + __gnu_usmuluhq3@GCC_4.3.0 1:4.3.0 + __gnu_usmuluqq3@GCC_4.3.0 1:4.3.0 + __gnu_usmulusa3@GCC_4.3.0 1:4.3.0 + __gnu_usmulusq3@GCC_4.3.0 1:4.3.0 + __gnu_usneguda2@GCC_4.3.0 1:4.3.0 + __gnu_usnegudq2@GCC_4.3.0 1:4.3.0 + __gnu_usneguha2@GCC_4.3.0 1:4.3.0 + __gnu_usneguhq2@GCC_4.3.0 1:4.3.0 + __gnu_usneguqq2@GCC_4.3.0 1:4.3.0 + __gnu_usnegusa2@GCC_4.3.0 1:4.3.0 + __gnu_usnegusq2@GCC_4.3.0 1:4.3.0 + __gnu_ussubuda3@GCC_4.3.0 1:4.3.0 + __gnu_ussubudq3@GCC_4.3.0 1:4.3.0 + __gnu_ussubuha3@GCC_4.3.0 1:4.3.0 + __gnu_ussubuhq3@GCC_4.3.0 1:4.3.0 + __gnu_ussubuqq3@GCC_4.3.0 1:4.3.0 + __gnu_ussubusa3@GCC_4.3.0 1:4.3.0 + __gnu_ussubusq3@GCC_4.3.0 1:4.3.0 + __gtdf2@GCC_3.0 1:4.3.0 + __gtsf2@GCC_3.0 1:4.3.0 + __ledf2@GCC_3.0 1:4.3.0 + __lesf2@GCC_3.0 1:4.3.0 + __lshrdi3@GCC_3.0 1:4.3.0 + __ltdf2@GCC_3.0 1:4.3.0 + __ltsf2@GCC_3.0 1:4.3.0 + __moddi3@GLIBC_2.0 1:4.3.0 + __modsi3@GCC_3.0 1:4.3.0 + __muldc3@GCC_4.0.0 1:4.3.0 + __muldf3@GCC_3.0 1:4.3.0 + __muldi3@GCC_3.0 1:4.3.0 + __mulsc3@GCC_4.0.0 1:4.3.0 + __mulsf3@GCC_3.0 1:4.3.0 + __mulvdi3@GCC_3.0 1:4.3.0 + __mulvsi3@GCC_3.0 1:4.3.0 + __nedf2@GCC_3.0 1:4.3.0 + __negdf2@GCC_3.0 1:4.3.0 + __negdi2@GCC_3.0 1:4.3.0 + __negsf2@GCC_3.0 1:4.3.0 + __negvdi2@GCC_3.0 1:4.3.0 + __negvsi2@GCC_3.0 1:4.3.0 + __nesf2@GCC_3.0 1:4.3.0 + __paritydi2@GCC_3.4 1:4.3.0 + __paritysi2@GCC_3.4 1:4.3.0 + __popcountdi2@GCC_3.4 1:4.3.0 + __popcountsi2@GCC_3.4 1:4.3.0 + __powidf2@GCC_4.0.0 1:4.3.0 + __powisf2@GCC_4.0.0 1:4.3.0 + __subdf3@GCC_3.0 1:4.3.0 + __subsf3@GCC_3.0 1:4.3.0 + __subvdi3@GCC_3.0 1:4.3.0 + __subvsi3@GCC_3.0 1:4.3.0 + __truncdfsf2@GCC_3.0 1:4.3.0 + __ucmpdi2@GCC_3.0 1:4.3.0 + __udivdi3@GLIBC_2.0 1:4.3.0 + __udivmoddi4@GCC_3.0 1:4.3.0 + __udivsi3@GCC_3.0 1:4.3.0 + __umoddi3@GLIBC_2.0 1:4.3.0 + __umodsi3@GCC_3.0 1:4.3.0 + __unorddf2@GCC_3.3.4 1:4.3.0 + __unordsf2@GCC_3.3.4 1:4.3.0 --- gcc-4.9-4.9.2.orig/debian/libgcc1.symbols.hurd-i386 +++ gcc-4.9-4.9.2/debian/libgcc1.symbols.hurd-i386 @@ -0,0 +1,103 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 4.2.1 + GCC_3.3.1@GCC_3.3.1 4.2.1 + GCC_3.3@GCC_3.3 4.2.1 + GCC_3.4.2@GCC_3.4.2 4.2.1 + GCC_3.4@GCC_3.4 4.2.1 + GCC_4.0.0@GCC_4.0.0 4.2.1 + GCC_4.2.0@GCC_4.2.0 4.2.1 + GCC_4.3.0@GCC_4.3.0 1:4.3.0 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GCC_4.8.0@GCC_4.8.0 1:4.8 + GLIBC_2.0@GLIBC_2.0 4.2.1 + _Unwind_Backtrace@GCC_3.3 4.2.1 + _Unwind_DeleteException@GCC_3.0 4.2.1 + _Unwind_FindEnclosingFunction@GCC_3.3 4.2.1 + _Unwind_Find_FDE@GCC_3.0 4.2.1 + _Unwind_ForcedUnwind@GCC_3.0 4.2.1 + _Unwind_GetCFA@GCC_3.3 4.2.1 + _Unwind_GetDataRelBase@GCC_3.0 4.2.1 + _Unwind_GetGR@GCC_3.0 4.2.1 + _Unwind_GetIP@GCC_3.0 4.2.1 + _Unwind_GetIPInfo@GCC_4.2.0 4.2.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 4.2.1 + _Unwind_GetRegionStart@GCC_3.0 4.2.1 + _Unwind_GetTextRelBase@GCC_3.0 4.2.1 + _Unwind_RaiseException@GCC_3.0 4.2.1 + _Unwind_Resume@GCC_3.0 4.2.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 4.2.1 + _Unwind_SetGR@GCC_3.0 4.2.1 + _Unwind_SetIP@GCC_3.0 4.2.1 + __absvdi2@GCC_3.0 4.2.1 + __absvsi2@GCC_3.0 4.2.1 + __addvdi3@GCC_3.0 4.2.1 + __addvsi3@GCC_3.0 4.2.1 + __ashldi3@GCC_3.0 4.2.1 + __ashrdi3@GCC_3.0 4.2.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 4.2.1 + __clzdi2@GCC_3.4 4.2.1 + __clzsi2@GCC_3.4 4.2.1 + __cmpdi2@GCC_3.0 4.2.1 + __ctzdi2@GCC_3.4 4.2.1 + __ctzsi2@GCC_3.4 4.2.1 + __deregister_frame@GLIBC_2.0 4.2.1 + __deregister_frame_info@GLIBC_2.0 4.2.1 + __deregister_frame_info_bases@GCC_3.0 4.2.1 + __divdc3@GCC_4.0.0 4.2.1 + __divdi3@GLIBC_2.0 4.2.1 + __divsc3@GCC_4.0.0 4.2.1 + __divxc3@GCC_4.0.0 4.2.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 4.2.1 + __ffsdi2@GCC_3.0 4.2.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 4.2.1 + __fixsfdi@GCC_3.0 4.2.1 + __fixunsdfdi@GCC_3.0 4.2.1 + __fixunsdfsi@GCC_3.0 4.2.1 + __fixunssfdi@GCC_3.0 4.2.1 + __fixunssfsi@GCC_3.0 4.2.1 + __fixunsxfdi@GCC_3.0 4.2.1 + __fixunsxfsi@GCC_3.0 4.2.1 + __fixxfdi@GCC_3.0 4.2.1 + __floatdidf@GCC_3.0 4.2.1 + __floatdisf@GCC_3.0 4.2.1 + __floatdixf@GCC_3.0 4.2.1 + __floatundidf@GCC_4.2.0 4.2.1 + __floatundisf@GCC_4.2.0 4.2.1 + __floatundixf@GCC_4.2.0 4.2.1 + __frame_state_for@GLIBC_2.0 4.2.1 + __gcc_personality_v0@GCC_3.3.1 4.2.1 + __lshrdi3@GCC_3.0 4.2.1 + __moddi3@GLIBC_2.0 4.2.1 + __muldc3@GCC_4.0.0 4.2.1 + __muldi3@GCC_3.0 4.2.1 + __mulsc3@GCC_4.0.0 4.2.1 + __mulvdi3@GCC_3.0 4.2.1 + __mulvsi3@GCC_3.0 4.2.1 + __mulxc3@GCC_4.0.0 4.2.1 + __negdi2@GCC_3.0 4.2.1 + __negvdi2@GCC_3.0 4.2.1 + __negvsi2@GCC_3.0 4.2.1 + __paritydi2@GCC_3.4 4.2.1 + __paritysi2@GCC_3.4 4.2.1 + __popcountdi2@GCC_3.4 4.2.1 + __popcountsi2@GCC_3.4 4.2.1 + __powidf2@GCC_4.0.0 4.2.1 + __powisf2@GCC_4.0.0 4.2.1 + __powixf2@GCC_4.0.0 4.2.1 + __register_frame@GLIBC_2.0 4.2.1 + __register_frame_info@GLIBC_2.0 4.2.1 + __register_frame_info_bases@GCC_3.0 4.2.1 + __register_frame_info_table@GLIBC_2.0 4.2.1 + __register_frame_info_table_bases@GCC_3.0 4.2.1 + __register_frame_table@GLIBC_2.0 4.2.1 + __subvdi3@GCC_3.0 4.2.1 + __subvsi3@GCC_3.0 4.2.1 + __ucmpdi2@GCC_3.0 4.2.1 + __udivdi3@GLIBC_2.0 4.2.1 + __udivmoddi4@GCC_3.0 4.2.1 + __umoddi3@GLIBC_2.0 4.2.1 --- gcc-4.9-4.9.2.orig/debian/libgcc1.symbols.i386 +++ gcc-4.9-4.9.2/debian/libgcc1.symbols.i386 @@ -0,0 +1,140 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.4.0@GCC_4.4.0 1:4.4.0 + GCC_4.5.0@GCC_4.5.0 1:4.5.0 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GCC_4.8.0@GCC_4.8.0 1:4.8 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __addtf3@GCC_4.4.0 1:4.4.0 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __ashldi3@GCC_3.0 1:4.1.1 + __ashrdi3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbsi2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzsi2@GCC_3.4 1:4.1.1 + __cmpdi2@GCC_3.0 1:4.1.1 + __copysigntf3@GCC_4.4.0 1:4.4.0 + __cpu_indicator_init@GCC_4.8.0 1:4.8 + __cpu_model@GCC_4.8.0 1:4.8 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzsi2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdi3@GLIBC_2.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.4.0 1:4.4.0 + __divtf3@GCC_4.4.0 1:4.4.0 + __divxc3@GCC_4.0.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqtf2@GCC_4.4.0 1:4.4.0 + __extenddftf2@GCC_4.4.0 1:4.4.0 + __extendsftf2@GCC_4.4.0 1:4.4.0 + __extendxftf2@GCC_4.5.0 1:4.5.0 + __fabstf2@GCC_4.4.0 1:4.4.0 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_4.4.0 1:4.4.0 + __fixtfsi@GCC_4.4.0 1:4.4.0 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_4.4.0 1:4.4.0 + __fixunstfsi@GCC_4.4.0 1:4.4.0 + __fixunsxfdi@GCC_3.0 1:4.1.1 + __fixunsxfsi@GCC_3.0 1:4.1.1 + __fixxfdi@GCC_3.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_4.4.0 1:4.4.0 + __floatdixf@GCC_3.0 1:4.1.1 + __floatsitf@GCC_4.4.0 1:4.4.0 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.4.0 1:4.4.0 + __floatundixf@GCC_4.2.0 1:4.2.1 + __floatunsitf@GCC_4.4.0 1:4.4.0 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __getf2@GCC_4.4.0 1:4.4.0 + __gttf2@GCC_4.4.0 1:4.4.0 + __letf2@GCC_4.4.0 1:4.4.0 + __lshrdi3@GCC_3.0 1:4.1.1 + __lttf2@GCC_4.4.0 1:4.4.0 + __moddi3@GLIBC_2.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldi3@GCC_3.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.4.0 1:4.4.0 + __multf3@GCC_4.4.0 1:4.4.0 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulxc3@GCC_4.0.0 1:4.1.1 + __negdi2@GCC_3.0 1:4.1.1 + __negtf2@GCC_4.4.0 1:4.4.0 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __netf2@GCC_4.4.0 1:4.4.0 + __paritydi2@GCC_3.4 1:4.1.1 + __paritysi2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountsi2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.4.0 1:4.4.0 + __powixf2@GCC_4.0.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __subtf3@GCC_4.4.0 1:4.4.0 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __trunctfdf2@GCC_4.4.0 1:4.4.0 + __trunctfsf2@GCC_4.4.0 1:4.4.0 + __trunctfxf2@GCC_4.4.0 1:4.4.0 + __ucmpdi2@GCC_3.0 1:4.1.1 + __udivdi3@GLIBC_2.0 1:4.1.1 + __udivmoddi4@GCC_3.0 1:4.1.1 + __umoddi3@GLIBC_2.0 1:4.1.1 + __unordtf2@GCC_4.4.0 1:4.4.0 --- gcc-4.9-4.9.2.orig/debian/libgcc1.symbols.ia64 +++ gcc-4.9-4.9.2/debian/libgcc1.symbols.ia64 @@ -0,0 +1,148 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3.2@GCC_3.3.2 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4.4@GCC_3.4.4 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.4.0@GCC_4.4.0 1:4.4.0 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetBSP@GCC_3.3.2 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __absvti2@GCC_3.4.4 1:4.1.1 + __addtf3@GCC_4.4.0 1:4.4.0 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __addvti3@GCC_3.4.4 1:4.1.1 + __ashlti3@GCC_3.0 1:4.1.1 + __ashrti3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.8 + __clrsbti2@GCC_4.7.0 1:4.8 + __clzdi2@GCC_3.4 1:4.1.1 + __clzti2@GCC_3.4 1:4.1.1 + __cmpti2@GCC_3.0 1:4.1.1 + __copysigntf3@GCC_4.4.0 1:4.4.0 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzti2@GCC_3.4 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdf3@GCC_3.0 1:4.1.1 + __divdi3@GLIBC_2.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divsf3@GCC_3.0 1:4.1.1 + __divsi3@GCC_3.0 1:4.1.1 + __divtc3@GCC_4.4.0 1:4.4.0 + __divtf3@GCC_3.0 1:4.1.1 + __divti3@GCC_3.0 1:4.1.1 + __divxc3@GCC_4.0.0 1:4.1.1 + __divxf3@GCC_3.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqtf2@GCC_4.4.0 1:4.4.0 + __extenddftf2@GCC_4.4.0 1:4.4.0 + __extendsftf2@GCC_4.4.0 1:4.4.0 + __fabstf2@GCC_4.4.0 1:4.4.0 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffsti2@GCC_3.0 1:4.1.1 + __fixdfti@GCC_3.0 1:4.1.1 + __fixsfti@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_4.4.0 1:4.4.0 + __fixtfsi@GCC_4.4.0 1:4.4.0 + __fixtfti@GCC_3.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfti@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfti@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_4.4.0 1:4.4.0 + __fixunstfsi@GCC_4.4.0 1:4.4.0 + __fixunstfti@GCC_3.0 1:4.1.1 + __fixunsxfdi@GCC_3.0 1:4.1.1 + __fixunsxfti@GCC_3.0 1:4.1.1 + __fixxfti@GCC_3.0 1:4.1.1 + __floatditf@GCC_4.4.0 1:4.4.0 + __floatsitf@GCC_4.4.0 1:4.4.0 + __floattidf@GCC_3.0 1:4.1.1 + __floattisf@GCC_3.0 1:4.1.1 + __floattitf@GCC_3.0 1:4.1.1 + __floattixf@GCC_3.0 1:4.1.1 + __floatunditf@GCC_4.4.0 1:4.4.0 + __floatunsitf@GCC_4.4.0 1:4.4.0 + __floatuntidf@GCC_4.2.0 1:4.2.1 + __floatuntisf@GCC_4.2.0 1:4.2.1 + __floatuntixf@GCC_4.2.0 1:4.2.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __getf2@GCC_4.4.0 1:4.4.0 + __gttf2@GCC_4.4.0 1:4.4.0 + __ia64_nonlocal_goto@GCC_3.0 1:4.1.1 + __ia64_restore_stack_nonlocal@GCC_3.0 1:4.1.1 + __ia64_save_stack_nonlocal@GCC_3.0 1:4.1.1 + __ia64_trampoline@GCC_3.0 1:4.1.1 + __letf2@GCC_4.4.0 1:4.4.0 + __lshrti3@GCC_3.0 1:4.1.1 + __lttf2@GCC_4.4.0 1:4.4.0 + __moddi3@GLIBC_2.0 1:4.1.1 + __modsi3@GCC_3.0 1:4.1.1 + __modti3@GCC_3.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.4.0 1:4.4.0 + __multf3@GCC_4.4.0 1:4.4.0 + __multi3@GCC_3.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulvti3@GCC_3.4.4 1:4.1.1 + __mulxc3@GCC_4.0.0 1:4.1.1 + __negtf2@GCC_4.4.0 1:4.4.0 + __negti2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __negvti2@GCC_3.4.4 1:4.1.1 + __netf2@GCC_4.4.0 1:4.4.0 + __paritydi2@GCC_3.4 1:4.1.1 + __parityti2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountti2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.4.0 1:4.4.0 + __powixf2@GCC_4.0.0 1:4.1.1 + __subtf3@GCC_4.4.0 1:4.4.0 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __subvti3@GCC_3.4.4 1:4.1.1 + __trunctfdf2@GCC_4.4.0 1:4.4.0 + __trunctfsf2@GCC_4.4.0 1:4.4.0 + __trunctfxf2@GCC_4.4.0 1:4.4.0 + __ucmpti2@GCC_3.0 1:4.1.1 + __udivdi3@GLIBC_2.0 1:4.1.1 + __udivmodti4@GCC_3.0 1:4.1.1 + __udivsi3@GCC_3.0 1:4.1.1 + __udivti3@GCC_3.0 1:4.1.1 + __umoddi3@GLIBC_2.0 1:4.1.1 + __umodsi3@GCC_3.0 1:4.1.1 + __umodti3@GCC_3.0 1:4.1.1 + __unordtf2@GCC_4.4.0 1:4.4.0 --- gcc-4.9-4.9.2.orig/debian/libgcc1.symbols.kfreebsd-amd64 +++ gcc-4.9-4.9.2/debian/libgcc1.symbols.kfreebsd-amd64 @@ -0,0 +1,142 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4.4@GCC_3.4.4 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GCC_4.8.0@GCC_4.8.0 1:4.8 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __absvti2@GCC_3.4.4 1:4.1.1 + __addtf3@GCC_4.3.0 1:4.3 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __addvti3@GCC_3.4.4 1:4.1.1 + __ashlti3@GCC_3.0 1:4.1.1 + __ashrti3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clzdi2@GCC_3.4 1:4.1.1 + __clzti2@GCC_3.4 1:4.1.1 + __cmpti2@GCC_3.0 1:4.1.1 + __cpu_indicator_init@GCC_4.8.0 1:4.8 + __cpu_model@GCC_4.8.0 1:4.8 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzti2@GCC_3.4 1:4.1.1 + __deregister_frame@GCC_3.0 1:4.1.1 + __deregister_frame_info@GCC_3.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.0.0 1:4.3 + __divtf3@GCC_4.3.0 1:4.3 + __divti3@GCC_3.0 1:4.1.1 + __divxc3@GCC_4.0.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqtf2@GCC_4.3.0 1:4.3 + __extenddftf2@GCC_4.3.0 1:4.3 + __extendsftf2@GCC_4.3.0 1:4.3 + __extendxftf2@GCC_4.3.0 1:4.3 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffsti2@GCC_3.0 1:4.1.1 + __fixdfti@GCC_3.0 1:4.1.1 + __fixsfti@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_4.3.0 1:4.3 + __fixtfsi@GCC_4.3.0 1:4.3 + __fixtfti@GCC_4.3.0 1:4.3 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfti@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfti@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_4.3.0 1:4.3 + __fixunstfsi@GCC_4.3.0 1:4.3 + __fixunstfti@GCC_4.3.0 1:4.3 + __fixunsxfdi@GCC_3.0 1:4.1.1 + __fixunsxfti@GCC_3.0 1:4.1.1 + __fixxfti@GCC_3.0 1:4.1.1 + __floatditf@GCC_4.3.0 1:4.3 + __floatsitf@GCC_4.3.0 1:4.3 + __floattidf@GCC_3.0 1:4.1.1 + __floattisf@GCC_3.0 1:4.1.1 + __floattitf@GCC_4.3.0 1:4.3 + __floattixf@GCC_3.0 1:4.1.1 + __floatunditf@GCC_4.3.0 1:4.3 + __floatunsitf@GCC_4.3.0 1:4.3 + __floatuntidf@GCC_4.2.0 1:4.2.1 + __floatuntisf@GCC_4.2.0 1:4.2.1 + __floatuntitf@GCC_4.3.0 1:4.3 + __floatuntixf@GCC_4.2.0 1:4.2.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __getf2@GCC_4.3.0 1:4.3 + __gttf2@GCC_3.0 1:4.3 + __letf2@GCC_4.3.0 1:4.3 + __lshrti3@GCC_3.0 1:4.1.1 + __lttf2@GCC_3.0 1:4.3 + __modti3@GCC_3.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.0.0 1:4.3 + __multf3@GCC_4.3.0 1:4.3 + __multi3@GCC_3.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulvti3@GCC_3.4.4 1:4.1.1 + __mulxc3@GCC_4.0.0 1:4.1.1 + __negtf2@GCC_4.3.0 1:4.3 + __negti2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __negvti2@GCC_3.4.4 1:4.1.1 + __netf2@GCC_3.0 1:4.3 + __paritydi2@GCC_3.4 1:4.1.1 + __parityti2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountti2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.0.0 1:4.3 + __powixf2@GCC_4.0.0 1:4.1.1 + __register_frame@GCC_3.0 1:4.1.1 + __register_frame_info@GCC_3.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GCC_3.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GCC_3.0 1:4.1.1 + __subtf3@GCC_4.3.0 1:4.3 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __subvti3@GCC_3.4.4 1:4.1.1 + __trunctfdf2@GCC_4.3.0 1:4.3 + __trunctfsf2@GCC_4.3.0 1:4.3 + __trunctfxf2@GCC_4.3.0 1:4.3 + __ucmpti2@GCC_3.0 1:4.1.1 + __udivmodti4@GCC_3.0 1:4.1.1 + __udivti3@GCC_3.0 1:4.1.1 + __umodti3@GCC_3.0 1:4.1.1 + __unordtf2@GCC_4.3.0 1:4.3 --- gcc-4.9-4.9.2.orig/debian/libgcc1.symbols.kfreebsd-i386 +++ gcc-4.9-4.9.2/debian/libgcc1.symbols.kfreebsd-i386 @@ -0,0 +1,136 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.4.0@GCC_4.4.0 1:4.4.0 + GCC_4.5.0@GCC_4.5.0 1:4.5.0 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GCC_4.8.0@GCC_4.8.0 1:4.8 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __addtf3@GCC_4.4.0 1:4.4.0 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __ashldi3@GCC_3.0 1:4.1.1 + __ashrdi3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clzdi2@GCC_3.4 1:4.1.1 + __clzsi2@GCC_3.4 1:4.1.1 + __cmpdi2@GCC_3.0 1:4.1.1 + __copysigntf3@GCC_4.4.0 1:4.4.0 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzsi2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdi3@GLIBC_2.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.4.0 1:4.4.0 + __divtf3@GCC_4.4.0 1:4.4.0 + __divxc3@GCC_4.0.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqtf2@GCC_4.4.0 1:4.4.0 + __extenddftf2@GCC_4.4.0 1:4.4.0 + __extendsftf2@GCC_4.4.0 1:4.4.0 + __extendxftf2@GCC_4.5.0 1:4.5.0 + __fabstf2@GCC_4.4.0 1:4.4.0 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_4.4.0 1:4.4.0 + __fixtfsi@GCC_4.4.0 1:4.4.0 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_4.4.0 1:4.4.0 + __fixunstfsi@GCC_4.4.0 1:4.4.0 + __fixunsxfdi@GCC_3.0 1:4.1.1 + __fixunsxfsi@GCC_3.0 1:4.1.1 + __fixxfdi@GCC_3.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_4.4.0 1:4.4.0 + __floatdixf@GCC_3.0 1:4.1.1 + __floatsitf@GCC_4.4.0 1:4.4.0 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.4.0 1:4.4.0 + __floatundixf@GCC_4.2.0 1:4.2.1 + __floatunsitf@GCC_4.4.0 1:4.4.0 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __getf2@GCC_4.4.0 1:4.4.0 + __gttf2@GCC_4.4.0 1:4.4.0 + __letf2@GCC_4.4.0 1:4.4.0 + __lshrdi3@GCC_3.0 1:4.1.1 + __lttf2@GCC_4.4.0 1:4.4.0 + __moddi3@GLIBC_2.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldi3@GCC_3.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.4.0 1:4.4.0 + __multf3@GCC_4.4.0 1:4.4.0 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulxc3@GCC_4.0.0 1:4.1.1 + __negdi2@GCC_3.0 1:4.1.1 + __negtf2@GCC_4.4.0 1:4.4.0 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __netf2@GCC_4.4.0 1:4.4.0 + __paritydi2@GCC_3.4 1:4.1.1 + __paritysi2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountsi2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.4.0 1:4.4.0 + __powixf2@GCC_4.0.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __subtf3@GCC_4.4.0 1:4.4.0 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __trunctfdf2@GCC_4.4.0 1:4.4.0 + __trunctfsf2@GCC_4.4.0 1:4.4.0 + __trunctfxf2@GCC_4.4.0 1:4.4.0 + __ucmpdi2@GCC_3.0 1:4.1.1 + __udivdi3@GLIBC_2.0 1:4.1.1 + __udivmoddi4@GCC_3.0 1:4.1.1 + __umoddi3@GLIBC_2.0 1:4.1.1 + __unordtf2@GCC_4.4.0 1:4.4.0 --- gcc-4.9-4.9.2.orig/debian/libgcc1.symbols.lpia +++ gcc-4.9-4.9.2/debian/libgcc1.symbols.lpia @@ -0,0 +1,135 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.4.0@GCC_4.4.0 1:4.4.0 + GCC_4.5.0@GCC_4.5.0 1:4.5.0 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GCC_4.8.0@GCC_4.8.0 1:4.8 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __addtf3@GCC_4.4.0 1:4.4.0 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __ashldi3@GCC_3.0 1:4.1.1 + __ashrdi3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clzdi2@GCC_3.4 1:4.1.1 + __clzsi2@GCC_3.4 1:4.1.1 + __cmpdi2@GCC_3.0 1:4.1.1 + __copysigntf3@GCC_4.4.0 1:4.4.0 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzsi2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdi3@GLIBC_2.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.4.0 1:4.4.0 + __divtf3@GCC_4.4.0 1:4.4.0 + __divxc3@GCC_4.0.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqtf2@GCC_4.4.0 1:4.4.0 + __extenddftf2@GCC_4.4.0 1:4.4.0 + __extendsftf2@GCC_4.4.0 1:4.4.0 + __fabstf2@GCC_4.4.0 1:4.4.0 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_4.4.0 1:4.4.0 + __fixtfsi@GCC_4.4.0 1:4.4.0 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_4.4.0 1:4.4.0 + __fixunstfsi@GCC_4.4.0 1:4.4.0 + __fixunsxfdi@GCC_3.0 1:4.1.1 + __fixunsxfsi@GCC_3.0 1:4.1.1 + __fixxfdi@GCC_3.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_4.4.0 1:4.4.0 + __floatdixf@GCC_3.0 1:4.1.1 + __floatsitf@GCC_4.4.0 1:4.4.0 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.4.0 1:4.4.0 + __floatundixf@GCC_4.2.0 1:4.2.1 + __floatunsitf@GCC_4.4.0 1:4.4.0 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __getf2@GCC_4.4.0 1:4.4.0 + __gttf2@GCC_4.4.0 1:4.4.0 + __letf2@GCC_4.4.0 1:4.4.0 + __lshrdi3@GCC_3.0 1:4.1.1 + __lttf2@GCC_4.4.0 1:4.4.0 + __moddi3@GLIBC_2.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldi3@GCC_3.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.4.0 1:4.4.0 + __multf3@GCC_4.4.0 1:4.4.0 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulxc3@GCC_4.0.0 1:4.1.1 + __negdi2@GCC_3.0 1:4.1.1 + __negtf2@GCC_4.4.0 1:4.4.0 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __netf2@GCC_4.4.0 1:4.4.0 + __paritydi2@GCC_3.4 1:4.1.1 + __paritysi2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountsi2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.4.0 1:4.4.0 + __powixf2@GCC_4.0.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __subtf3@GCC_4.4.0 1:4.4.0 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __trunctfdf2@GCC_4.4.0 1:4.4.0 + __trunctfsf2@GCC_4.4.0 1:4.4.0 + __trunctfxf2@GCC_4.4.0 1:4.4.0 + __ucmpdi2@GCC_3.0 1:4.1.1 + __udivdi3@GLIBC_2.0 1:4.1.1 + __udivmoddi4@GCC_3.0 1:4.1.1 + __umoddi3@GLIBC_2.0 1:4.1.1 + __unordtf2@GCC_4.4.0 1:4.4.0 --- gcc-4.9-4.9.2.orig/debian/libgcc1.symbols.mips +++ gcc-4.9-4.9.2/debian/libgcc1.symbols.mips @@ -0,0 +1,1222 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3.4@GCC_3.3.4 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.4.0@GCC_4.4.0 1:4.4.0 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __addda3@GCC_4.3.0 1:4.3 + __adddf3@GCC_3.0 1:4.1.1 + __adddq3@GCC_4.3.0 1:4.3 + __addha3@GCC_4.3.0 1:4.3 + __addhq3@GCC_4.3.0 1:4.3 + __addqq3@GCC_4.3.0 1:4.3 + __addsa3@GCC_4.3.0 1:4.3 + __addsf3@GCC_3.0 1:4.1.1 + __addsq3@GCC_4.3.0 1:4.3 + __adduda3@GCC_4.3.0 1:4.3 + __addudq3@GCC_4.3.0 1:4.3 + __adduha3@GCC_4.3.0 1:4.3 + __adduhq3@GCC_4.3.0 1:4.3 + __adduqq3@GCC_4.3.0 1:4.3 + __addusa3@GCC_4.3.0 1:4.3 + __addusq3@GCC_4.3.0 1:4.3 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __ashlda3@GCC_4.3.0 1:4.3 + __ashldi3@GCC_3.0 1:4.1.1 + __ashldq3@GCC_4.3.0 1:4.3 + __ashlha3@GCC_4.3.0 1:4.3 + __ashlhq3@GCC_4.3.0 1:4.3 + __ashlqq3@GCC_4.3.0 1:4.3 + __ashlsa3@GCC_4.3.0 1:4.3 + __ashlsq3@GCC_4.3.0 1:4.3 + __ashluda3@GCC_4.3.0 1:4.3 + __ashludq3@GCC_4.3.0 1:4.3 + __ashluha3@GCC_4.3.0 1:4.3 + __ashluhq3@GCC_4.3.0 1:4.3 + __ashluqq3@GCC_4.3.0 1:4.3 + __ashlusa3@GCC_4.3.0 1:4.3 + __ashlusq3@GCC_4.3.0 1:4.3 + __ashrda3@GCC_4.3.0 1:4.3 + __ashrdi3@GCC_3.0 1:4.1.1 + __ashrdq3@GCC_4.3.0 1:4.3 + __ashrha3@GCC_4.3.0 1:4.3 + __ashrhq3@GCC_4.3.0 1:4.3 + __ashrqq3@GCC_4.3.0 1:4.3 + __ashrsa3@GCC_4.3.0 1:4.3 + __ashrsq3@GCC_4.3.0 1:4.3 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbsi2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzsi2@GCC_3.4 1:4.1.1 + __cmpda2@GCC_4.3.0 1:4.3 + __cmpdi2@GCC_3.0 1:4.1.1 + __cmpdq2@GCC_4.3.0 1:4.3 + __cmpha2@GCC_4.3.0 1:4.3 + __cmphq2@GCC_4.3.0 1:4.3 + __cmpqq2@GCC_4.3.0 1:4.3 + __cmpsa2@GCC_4.3.0 1:4.3 + __cmpsq2@GCC_4.3.0 1:4.3 + __cmpuda2@GCC_4.3.0 1:4.3 + __cmpudq2@GCC_4.3.0 1:4.3 + __cmpuha2@GCC_4.3.0 1:4.3 + __cmpuhq2@GCC_4.3.0 1:4.3 + __cmpuqq2@GCC_4.3.0 1:4.3 + __cmpusa2@GCC_4.3.0 1:4.3 + __cmpusq2@GCC_4.3.0 1:4.3 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzsi2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divda3@GCC_4.3.0 1:4.3 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdf3@GCC_3.0 1:4.1.1 + __divdi3@GLIBC_2.0 1:4.1.1 + __divdq3@GCC_4.3.0 1:4.3 + __divha3@GCC_4.3.0 1:4.3 + __divhq3@GCC_4.3.0 1:4.3 + __divqq3@GCC_4.3.0 1:4.3 + __divsa3@GCC_4.3.0 1:4.3 + __divsc3@GCC_4.0.0 1:4.1.1 + __divsf3@GCC_3.0 1:4.1.1 + __divsq3@GCC_4.3.0 1:4.3 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqdf2@GCC_3.0 1:4.1.1 + __eqsf2@GCC_3.0 1:4.1.1 + __extendsfdf2@GCC_3.0 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixdfsi@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixsfsi@GCC_3.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatsidf@GCC_3.0 1:4.1.1 + __floatsisf@GCC_3.0 1:4.1.1 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunsidf@GCC_4.2.0 1:4.2.1 + __floatunsisf@GCC_4.2.0 1:4.2.1 + __fractdadf@GCC_4.3.0 1:4.3 + __fractdadi@GCC_4.3.0 1:4.3 + __fractdadq@GCC_4.3.0 1:4.3 + __fractdaha2@GCC_4.3.0 1:4.3 + __fractdahi@GCC_4.3.0 1:4.3 + __fractdahq@GCC_4.3.0 1:4.3 + __fractdaqi@GCC_4.3.0 1:4.3 + __fractdaqq@GCC_4.3.0 1:4.3 + __fractdasa2@GCC_4.3.0 1:4.3 + __fractdasf@GCC_4.3.0 1:4.3 + __fractdasi@GCC_4.3.0 1:4.3 + __fractdasq@GCC_4.3.0 1:4.3 + __fractdauda@GCC_4.3.0 1:4.3 + __fractdaudq@GCC_4.3.0 1:4.3 + __fractdauha@GCC_4.3.0 1:4.3 + __fractdauhq@GCC_4.3.0 1:4.3 + __fractdauqq@GCC_4.3.0 1:4.3 + __fractdausa@GCC_4.3.0 1:4.3 + __fractdausq@GCC_4.3.0 1:4.3 + __fractdfda@GCC_4.3.0 1:4.3 + __fractdfdq@GCC_4.3.0 1:4.3 + __fractdfha@GCC_4.3.0 1:4.3 + __fractdfhq@GCC_4.3.0 1:4.3 + __fractdfqq@GCC_4.3.0 1:4.3 + __fractdfsa@GCC_4.3.0 1:4.3 + __fractdfsq@GCC_4.3.0 1:4.3 + __fractdfuda@GCC_4.3.0 1:4.3 + __fractdfudq@GCC_4.3.0 1:4.3 + __fractdfuha@GCC_4.3.0 1:4.3 + __fractdfuhq@GCC_4.3.0 1:4.3 + __fractdfuqq@GCC_4.3.0 1:4.3 + __fractdfusa@GCC_4.3.0 1:4.3 + __fractdfusq@GCC_4.3.0 1:4.3 + __fractdida@GCC_4.3.0 1:4.3 + __fractdidq@GCC_4.3.0 1:4.3 + __fractdiha@GCC_4.3.0 1:4.3 + __fractdihq@GCC_4.3.0 1:4.3 + __fractdiqq@GCC_4.3.0 1:4.3 + __fractdisa@GCC_4.3.0 1:4.3 + __fractdisq@GCC_4.3.0 1:4.3 + __fractdiuda@GCC_4.3.0 1:4.3 + __fractdiudq@GCC_4.3.0 1:4.3 + __fractdiuha@GCC_4.3.0 1:4.3 + __fractdiuhq@GCC_4.3.0 1:4.3 + __fractdiuqq@GCC_4.3.0 1:4.3 + __fractdiusa@GCC_4.3.0 1:4.3 + __fractdiusq@GCC_4.3.0 1:4.3 + __fractdqda@GCC_4.3.0 1:4.3 + __fractdqdf@GCC_4.3.0 1:4.3 + __fractdqdi@GCC_4.3.0 1:4.3 + __fractdqha@GCC_4.3.0 1:4.3 + __fractdqhi@GCC_4.3.0 1:4.3 + __fractdqhq2@GCC_4.3.0 1:4.3 + __fractdqqi@GCC_4.3.0 1:4.3 + __fractdqqq2@GCC_4.3.0 1:4.3 + __fractdqsa@GCC_4.3.0 1:4.3 + __fractdqsf@GCC_4.3.0 1:4.3 + __fractdqsi@GCC_4.3.0 1:4.3 + __fractdqsq2@GCC_4.3.0 1:4.3 + __fractdquda@GCC_4.3.0 1:4.3 + __fractdqudq@GCC_4.3.0 1:4.3 + __fractdquha@GCC_4.3.0 1:4.3 + __fractdquhq@GCC_4.3.0 1:4.3 + __fractdquqq@GCC_4.3.0 1:4.3 + __fractdqusa@GCC_4.3.0 1:4.3 + __fractdqusq@GCC_4.3.0 1:4.3 + __fracthada2@GCC_4.3.0 1:4.3 + __fracthadf@GCC_4.3.0 1:4.3 + __fracthadi@GCC_4.3.0 1:4.3 + __fracthadq@GCC_4.3.0 1:4.3 + __fracthahi@GCC_4.3.0 1:4.3 + __fracthahq@GCC_4.3.0 1:4.3 + __fracthaqi@GCC_4.3.0 1:4.3 + __fracthaqq@GCC_4.3.0 1:4.3 + __fracthasa2@GCC_4.3.0 1:4.3 + __fracthasf@GCC_4.3.0 1:4.3 + __fracthasi@GCC_4.3.0 1:4.3 + __fracthasq@GCC_4.3.0 1:4.3 + __fracthauda@GCC_4.3.0 1:4.3 + __fracthaudq@GCC_4.3.0 1:4.3 + __fracthauha@GCC_4.3.0 1:4.3 + __fracthauhq@GCC_4.3.0 1:4.3 + __fracthauqq@GCC_4.3.0 1:4.3 + __fracthausa@GCC_4.3.0 1:4.3 + __fracthausq@GCC_4.3.0 1:4.3 + __fracthida@GCC_4.3.0 1:4.3 + __fracthidq@GCC_4.3.0 1:4.3 + __fracthiha@GCC_4.3.0 1:4.3 + __fracthihq@GCC_4.3.0 1:4.3 + __fracthiqq@GCC_4.3.0 1:4.3 + __fracthisa@GCC_4.3.0 1:4.3 + __fracthisq@GCC_4.3.0 1:4.3 + __fracthiuda@GCC_4.3.0 1:4.3 + __fracthiudq@GCC_4.3.0 1:4.3 + __fracthiuha@GCC_4.3.0 1:4.3 + __fracthiuhq@GCC_4.3.0 1:4.3 + __fracthiuqq@GCC_4.3.0 1:4.3 + __fracthiusa@GCC_4.3.0 1:4.3 + __fracthiusq@GCC_4.3.0 1:4.3 + __fracthqda@GCC_4.3.0 1:4.3 + __fracthqdf@GCC_4.3.0 1:4.3 + __fracthqdi@GCC_4.3.0 1:4.3 + __fracthqdq2@GCC_4.3.0 1:4.3 + __fracthqha@GCC_4.3.0 1:4.3 + __fracthqhi@GCC_4.3.0 1:4.3 + __fracthqqi@GCC_4.3.0 1:4.3 + __fracthqqq2@GCC_4.3.0 1:4.3 + __fracthqsa@GCC_4.3.0 1:4.3 + __fracthqsf@GCC_4.3.0 1:4.3 + __fracthqsi@GCC_4.3.0 1:4.3 + __fracthqsq2@GCC_4.3.0 1:4.3 + __fracthquda@GCC_4.3.0 1:4.3 + __fracthqudq@GCC_4.3.0 1:4.3 + __fracthquha@GCC_4.3.0 1:4.3 + __fracthquhq@GCC_4.3.0 1:4.3 + __fracthquqq@GCC_4.3.0 1:4.3 + __fracthqusa@GCC_4.3.0 1:4.3 + __fracthqusq@GCC_4.3.0 1:4.3 + __fractqida@GCC_4.3.0 1:4.3 + __fractqidq@GCC_4.3.0 1:4.3 + __fractqiha@GCC_4.3.0 1:4.3 + __fractqihq@GCC_4.3.0 1:4.3 + __fractqiqq@GCC_4.3.0 1:4.3 + __fractqisa@GCC_4.3.0 1:4.3 + __fractqisq@GCC_4.3.0 1:4.3 + __fractqiuda@GCC_4.3.0 1:4.3 + __fractqiudq@GCC_4.3.0 1:4.3 + __fractqiuha@GCC_4.3.0 1:4.3 + __fractqiuhq@GCC_4.3.0 1:4.3 + __fractqiuqq@GCC_4.3.0 1:4.3 + __fractqiusa@GCC_4.3.0 1:4.3 + __fractqiusq@GCC_4.3.0 1:4.3 + __fractqqda@GCC_4.3.0 1:4.3 + __fractqqdf@GCC_4.3.0 1:4.3 + __fractqqdi@GCC_4.3.0 1:4.3 + __fractqqdq2@GCC_4.3.0 1:4.3 + __fractqqha@GCC_4.3.0 1:4.3 + __fractqqhi@GCC_4.3.0 1:4.3 + __fractqqhq2@GCC_4.3.0 1:4.3 + __fractqqqi@GCC_4.3.0 1:4.3 + __fractqqsa@GCC_4.3.0 1:4.3 + __fractqqsf@GCC_4.3.0 1:4.3 + __fractqqsi@GCC_4.3.0 1:4.3 + __fractqqsq2@GCC_4.3.0 1:4.3 + __fractqquda@GCC_4.3.0 1:4.3 + __fractqqudq@GCC_4.3.0 1:4.3 + __fractqquha@GCC_4.3.0 1:4.3 + __fractqquhq@GCC_4.3.0 1:4.3 + __fractqquqq@GCC_4.3.0 1:4.3 + __fractqqusa@GCC_4.3.0 1:4.3 + __fractqqusq@GCC_4.3.0 1:4.3 + __fractsada2@GCC_4.3.0 1:4.3 + __fractsadf@GCC_4.3.0 1:4.3 + __fractsadi@GCC_4.3.0 1:4.3 + __fractsadq@GCC_4.3.0 1:4.3 + __fractsaha2@GCC_4.3.0 1:4.3 + __fractsahi@GCC_4.3.0 1:4.3 + __fractsahq@GCC_4.3.0 1:4.3 + __fractsaqi@GCC_4.3.0 1:4.3 + __fractsaqq@GCC_4.3.0 1:4.3 + __fractsasf@GCC_4.3.0 1:4.3 + __fractsasi@GCC_4.3.0 1:4.3 + __fractsasq@GCC_4.3.0 1:4.3 + __fractsauda@GCC_4.3.0 1:4.3 + __fractsaudq@GCC_4.3.0 1:4.3 + __fractsauha@GCC_4.3.0 1:4.3 + __fractsauhq@GCC_4.3.0 1:4.3 + __fractsauqq@GCC_4.3.0 1:4.3 + __fractsausa@GCC_4.3.0 1:4.3 + __fractsausq@GCC_4.3.0 1:4.3 + __fractsfda@GCC_4.3.0 1:4.3 + __fractsfdq@GCC_4.3.0 1:4.3 + __fractsfha@GCC_4.3.0 1:4.3 + __fractsfhq@GCC_4.3.0 1:4.3 + __fractsfqq@GCC_4.3.0 1:4.3 + __fractsfsa@GCC_4.3.0 1:4.3 + __fractsfsq@GCC_4.3.0 1:4.3 + __fractsfuda@GCC_4.3.0 1:4.3 + __fractsfudq@GCC_4.3.0 1:4.3 + __fractsfuha@GCC_4.3.0 1:4.3 + __fractsfuhq@GCC_4.3.0 1:4.3 + __fractsfuqq@GCC_4.3.0 1:4.3 + __fractsfusa@GCC_4.3.0 1:4.3 + __fractsfusq@GCC_4.3.0 1:4.3 + __fractsida@GCC_4.3.0 1:4.3 + __fractsidq@GCC_4.3.0 1:4.3 + __fractsiha@GCC_4.3.0 1:4.3 + __fractsihq@GCC_4.3.0 1:4.3 + __fractsiqq@GCC_4.3.0 1:4.3 + __fractsisa@GCC_4.3.0 1:4.3 + __fractsisq@GCC_4.3.0 1:4.3 + __fractsiuda@GCC_4.3.0 1:4.3 + __fractsiudq@GCC_4.3.0 1:4.3 + __fractsiuha@GCC_4.3.0 1:4.3 + __fractsiuhq@GCC_4.3.0 1:4.3 + __fractsiuqq@GCC_4.3.0 1:4.3 + __fractsiusa@GCC_4.3.0 1:4.3 + __fractsiusq@GCC_4.3.0 1:4.3 + __fractsqda@GCC_4.3.0 1:4.3 + __fractsqdf@GCC_4.3.0 1:4.3 + __fractsqdi@GCC_4.3.0 1:4.3 + __fractsqdq2@GCC_4.3.0 1:4.3 + __fractsqha@GCC_4.3.0 1:4.3 + __fractsqhi@GCC_4.3.0 1:4.3 + __fractsqhq2@GCC_4.3.0 1:4.3 + __fractsqqi@GCC_4.3.0 1:4.3 + __fractsqqq2@GCC_4.3.0 1:4.3 + __fractsqsa@GCC_4.3.0 1:4.3 + __fractsqsf@GCC_4.3.0 1:4.3 + __fractsqsi@GCC_4.3.0 1:4.3 + __fractsquda@GCC_4.3.0 1:4.3 + __fractsqudq@GCC_4.3.0 1:4.3 + __fractsquha@GCC_4.3.0 1:4.3 + __fractsquhq@GCC_4.3.0 1:4.3 + __fractsquqq@GCC_4.3.0 1:4.3 + __fractsqusa@GCC_4.3.0 1:4.3 + __fractsqusq@GCC_4.3.0 1:4.3 + __fractudada@GCC_4.3.0 1:4.3 + __fractudadf@GCC_4.3.0 1:4.3 + __fractudadi@GCC_4.3.0 1:4.3 + __fractudadq@GCC_4.3.0 1:4.3 + __fractudaha@GCC_4.3.0 1:4.3 + __fractudahi@GCC_4.3.0 1:4.3 + __fractudahq@GCC_4.3.0 1:4.3 + __fractudaqi@GCC_4.3.0 1:4.3 + __fractudaqq@GCC_4.3.0 1:4.3 + __fractudasa@GCC_4.3.0 1:4.3 + __fractudasf@GCC_4.3.0 1:4.3 + __fractudasi@GCC_4.3.0 1:4.3 + __fractudasq@GCC_4.3.0 1:4.3 + __fractudaudq@GCC_4.3.0 1:4.3 + __fractudauha2@GCC_4.3.0 1:4.3 + __fractudauhq@GCC_4.3.0 1:4.3 + __fractudauqq@GCC_4.3.0 1:4.3 + __fractudausa2@GCC_4.3.0 1:4.3 + __fractudausq@GCC_4.3.0 1:4.3 + __fractudqda@GCC_4.3.0 1:4.3 + __fractudqdf@GCC_4.3.0 1:4.3 + __fractudqdi@GCC_4.3.0 1:4.3 + __fractudqdq@GCC_4.3.0 1:4.3 + __fractudqha@GCC_4.3.0 1:4.3 + __fractudqhi@GCC_4.3.0 1:4.3 + __fractudqhq@GCC_4.3.0 1:4.3 + __fractudqqi@GCC_4.3.0 1:4.3 + __fractudqqq@GCC_4.3.0 1:4.3 + __fractudqsa@GCC_4.3.0 1:4.3 + __fractudqsf@GCC_4.3.0 1:4.3 + __fractudqsi@GCC_4.3.0 1:4.3 + __fractudqsq@GCC_4.3.0 1:4.3 + __fractudquda@GCC_4.3.0 1:4.3 + __fractudquha@GCC_4.3.0 1:4.3 + __fractudquhq2@GCC_4.3.0 1:4.3 + __fractudquqq2@GCC_4.3.0 1:4.3 + __fractudqusa@GCC_4.3.0 1:4.3 + __fractudqusq2@GCC_4.3.0 1:4.3 + __fractuhada@GCC_4.3.0 1:4.3 + __fractuhadf@GCC_4.3.0 1:4.3 + __fractuhadi@GCC_4.3.0 1:4.3 + __fractuhadq@GCC_4.3.0 1:4.3 + __fractuhaha@GCC_4.3.0 1:4.3 + __fractuhahi@GCC_4.3.0 1:4.3 + __fractuhahq@GCC_4.3.0 1:4.3 + __fractuhaqi@GCC_4.3.0 1:4.3 + __fractuhaqq@GCC_4.3.0 1:4.3 + __fractuhasa@GCC_4.3.0 1:4.3 + __fractuhasf@GCC_4.3.0 1:4.3 + __fractuhasi@GCC_4.3.0 1:4.3 + __fractuhasq@GCC_4.3.0 1:4.3 + __fractuhauda2@GCC_4.3.0 1:4.3 + __fractuhaudq@GCC_4.3.0 1:4.3 + __fractuhauhq@GCC_4.3.0 1:4.3 + __fractuhauqq@GCC_4.3.0 1:4.3 + __fractuhausa2@GCC_4.3.0 1:4.3 + __fractuhausq@GCC_4.3.0 1:4.3 + __fractuhqda@GCC_4.3.0 1:4.3 + __fractuhqdf@GCC_4.3.0 1:4.3 + __fractuhqdi@GCC_4.3.0 1:4.3 + __fractuhqdq@GCC_4.3.0 1:4.3 + __fractuhqha@GCC_4.3.0 1:4.3 + __fractuhqhi@GCC_4.3.0 1:4.3 + __fractuhqhq@GCC_4.3.0 1:4.3 + __fractuhqqi@GCC_4.3.0 1:4.3 + __fractuhqqq@GCC_4.3.0 1:4.3 + __fractuhqsa@GCC_4.3.0 1:4.3 + __fractuhqsf@GCC_4.3.0 1:4.3 + __fractuhqsi@GCC_4.3.0 1:4.3 + __fractuhqsq@GCC_4.3.0 1:4.3 + __fractuhquda@GCC_4.3.0 1:4.3 + __fractuhqudq2@GCC_4.3.0 1:4.3 + __fractuhquha@GCC_4.3.0 1:4.3 + __fractuhquqq2@GCC_4.3.0 1:4.3 + __fractuhqusa@GCC_4.3.0 1:4.3 + __fractuhqusq2@GCC_4.3.0 1:4.3 + __fractunsdadi@GCC_4.3.0 1:4.3 + __fractunsdahi@GCC_4.3.0 1:4.3 + __fractunsdaqi@GCC_4.3.0 1:4.3 + __fractunsdasi@GCC_4.3.0 1:4.3 + __fractunsdida@GCC_4.3.0 1:4.3 + __fractunsdidq@GCC_4.3.0 1:4.3 + __fractunsdiha@GCC_4.3.0 1:4.3 + __fractunsdihq@GCC_4.3.0 1:4.3 + __fractunsdiqq@GCC_4.3.0 1:4.3 + __fractunsdisa@GCC_4.3.0 1:4.3 + __fractunsdisq@GCC_4.3.0 1:4.3 + __fractunsdiuda@GCC_4.3.0 1:4.3 + __fractunsdiudq@GCC_4.3.0 1:4.3 + __fractunsdiuha@GCC_4.3.0 1:4.3 + __fractunsdiuhq@GCC_4.3.0 1:4.3 + __fractunsdiuqq@GCC_4.3.0 1:4.3 + __fractunsdiusa@GCC_4.3.0 1:4.3 + __fractunsdiusq@GCC_4.3.0 1:4.3 + __fractunsdqdi@GCC_4.3.0 1:4.3 + __fractunsdqhi@GCC_4.3.0 1:4.3 + __fractunsdqqi@GCC_4.3.0 1:4.3 + __fractunsdqsi@GCC_4.3.0 1:4.3 + __fractunshadi@GCC_4.3.0 1:4.3 + __fractunshahi@GCC_4.3.0 1:4.3 + __fractunshaqi@GCC_4.3.0 1:4.3 + __fractunshasi@GCC_4.3.0 1:4.3 + __fractunshida@GCC_4.3.0 1:4.3 + __fractunshidq@GCC_4.3.0 1:4.3 + __fractunshiha@GCC_4.3.0 1:4.3 + __fractunshihq@GCC_4.3.0 1:4.3 + __fractunshiqq@GCC_4.3.0 1:4.3 + __fractunshisa@GCC_4.3.0 1:4.3 + __fractunshisq@GCC_4.3.0 1:4.3 + __fractunshiuda@GCC_4.3.0 1:4.3 + __fractunshiudq@GCC_4.3.0 1:4.3 + __fractunshiuha@GCC_4.3.0 1:4.3 + __fractunshiuhq@GCC_4.3.0 1:4.3 + __fractunshiuqq@GCC_4.3.0 1:4.3 + __fractunshiusa@GCC_4.3.0 1:4.3 + __fractunshiusq@GCC_4.3.0 1:4.3 + __fractunshqdi@GCC_4.3.0 1:4.3 + __fractunshqhi@GCC_4.3.0 1:4.3 + __fractunshqqi@GCC_4.3.0 1:4.3 + __fractunshqsi@GCC_4.3.0 1:4.3 + __fractunsqida@GCC_4.3.0 1:4.3 + __fractunsqidq@GCC_4.3.0 1:4.3 + __fractunsqiha@GCC_4.3.0 1:4.3 + __fractunsqihq@GCC_4.3.0 1:4.3 + __fractunsqiqq@GCC_4.3.0 1:4.3 + __fractunsqisa@GCC_4.3.0 1:4.3 + __fractunsqisq@GCC_4.3.0 1:4.3 + __fractunsqiuda@GCC_4.3.0 1:4.3 + __fractunsqiudq@GCC_4.3.0 1:4.3 + __fractunsqiuha@GCC_4.3.0 1:4.3 + __fractunsqiuhq@GCC_4.3.0 1:4.3 + __fractunsqiuqq@GCC_4.3.0 1:4.3 + __fractunsqiusa@GCC_4.3.0 1:4.3 + __fractunsqiusq@GCC_4.3.0 1:4.3 + __fractunsqqdi@GCC_4.3.0 1:4.3 + __fractunsqqhi@GCC_4.3.0 1:4.3 + __fractunsqqqi@GCC_4.3.0 1:4.3 + __fractunsqqsi@GCC_4.3.0 1:4.3 + __fractunssadi@GCC_4.3.0 1:4.3 + __fractunssahi@GCC_4.3.0 1:4.3 + __fractunssaqi@GCC_4.3.0 1:4.3 + __fractunssasi@GCC_4.3.0 1:4.3 + __fractunssida@GCC_4.3.0 1:4.3 + __fractunssidq@GCC_4.3.0 1:4.3 + __fractunssiha@GCC_4.3.0 1:4.3 + __fractunssihq@GCC_4.3.0 1:4.3 + __fractunssiqq@GCC_4.3.0 1:4.3 + __fractunssisa@GCC_4.3.0 1:4.3 + __fractunssisq@GCC_4.3.0 1:4.3 + __fractunssiuda@GCC_4.3.0 1:4.3 + __fractunssiudq@GCC_4.3.0 1:4.3 + __fractunssiuha@GCC_4.3.0 1:4.3 + __fractunssiuhq@GCC_4.3.0 1:4.3 + __fractunssiuqq@GCC_4.3.0 1:4.3 + __fractunssiusa@GCC_4.3.0 1:4.3 + __fractunssiusq@GCC_4.3.0 1:4.3 + __fractunssqdi@GCC_4.3.0 1:4.3 + __fractunssqhi@GCC_4.3.0 1:4.3 + __fractunssqqi@GCC_4.3.0 1:4.3 + __fractunssqsi@GCC_4.3.0 1:4.3 + __fractunsudadi@GCC_4.3.0 1:4.3 + __fractunsudahi@GCC_4.3.0 1:4.3 + __fractunsudaqi@GCC_4.3.0 1:4.3 + __fractunsudasi@GCC_4.3.0 1:4.3 + __fractunsudqdi@GCC_4.3.0 1:4.3 + __fractunsudqhi@GCC_4.3.0 1:4.3 + __fractunsudqqi@GCC_4.3.0 1:4.3 + __fractunsudqsi@GCC_4.3.0 1:4.3 + __fractunsuhadi@GCC_4.3.0 1:4.3 + __fractunsuhahi@GCC_4.3.0 1:4.3 + __fractunsuhaqi@GCC_4.3.0 1:4.3 + __fractunsuhasi@GCC_4.3.0 1:4.3 + __fractunsuhqdi@GCC_4.3.0 1:4.3 + __fractunsuhqhi@GCC_4.3.0 1:4.3 + __fractunsuhqqi@GCC_4.3.0 1:4.3 + __fractunsuhqsi@GCC_4.3.0 1:4.3 + __fractunsuqqdi@GCC_4.3.0 1:4.3 + __fractunsuqqhi@GCC_4.3.0 1:4.3 + __fractunsuqqqi@GCC_4.3.0 1:4.3 + __fractunsuqqsi@GCC_4.3.0 1:4.3 + __fractunsusadi@GCC_4.3.0 1:4.3 + __fractunsusahi@GCC_4.3.0 1:4.3 + __fractunsusaqi@GCC_4.3.0 1:4.3 + __fractunsusasi@GCC_4.3.0 1:4.3 + __fractunsusqdi@GCC_4.3.0 1:4.3 + __fractunsusqhi@GCC_4.3.0 1:4.3 + __fractunsusqqi@GCC_4.3.0 1:4.3 + __fractunsusqsi@GCC_4.3.0 1:4.3 + __fractuqqda@GCC_4.3.0 1:4.3 + __fractuqqdf@GCC_4.3.0 1:4.3 + __fractuqqdi@GCC_4.3.0 1:4.3 + __fractuqqdq@GCC_4.3.0 1:4.3 + __fractuqqha@GCC_4.3.0 1:4.3 + __fractuqqhi@GCC_4.3.0 1:4.3 + __fractuqqhq@GCC_4.3.0 1:4.3 + __fractuqqqi@GCC_4.3.0 1:4.3 + __fractuqqqq@GCC_4.3.0 1:4.3 + __fractuqqsa@GCC_4.3.0 1:4.3 + __fractuqqsf@GCC_4.3.0 1:4.3 + __fractuqqsi@GCC_4.3.0 1:4.3 + __fractuqqsq@GCC_4.3.0 1:4.3 + __fractuqquda@GCC_4.3.0 1:4.3 + __fractuqqudq2@GCC_4.3.0 1:4.3 + __fractuqquha@GCC_4.3.0 1:4.3 + __fractuqquhq2@GCC_4.3.0 1:4.3 + __fractuqqusa@GCC_4.3.0 1:4.3 + __fractuqqusq2@GCC_4.3.0 1:4.3 + __fractusada@GCC_4.3.0 1:4.3 + __fractusadf@GCC_4.3.0 1:4.3 + __fractusadi@GCC_4.3.0 1:4.3 + __fractusadq@GCC_4.3.0 1:4.3 + __fractusaha@GCC_4.3.0 1:4.3 + __fractusahi@GCC_4.3.0 1:4.3 + __fractusahq@GCC_4.3.0 1:4.3 + __fractusaqi@GCC_4.3.0 1:4.3 + __fractusaqq@GCC_4.3.0 1:4.3 + __fractusasa@GCC_4.3.0 1:4.3 + __fractusasf@GCC_4.3.0 1:4.3 + __fractusasi@GCC_4.3.0 1:4.3 + __fractusasq@GCC_4.3.0 1:4.3 + __fractusauda2@GCC_4.3.0 1:4.3 + __fractusaudq@GCC_4.3.0 1:4.3 + __fractusauha2@GCC_4.3.0 1:4.3 + __fractusauhq@GCC_4.3.0 1:4.3 + __fractusauqq@GCC_4.3.0 1:4.3 + __fractusausq@GCC_4.3.0 1:4.3 + __fractusqda@GCC_4.3.0 1:4.3 + __fractusqdf@GCC_4.3.0 1:4.3 + __fractusqdi@GCC_4.3.0 1:4.3 + __fractusqdq@GCC_4.3.0 1:4.3 + __fractusqha@GCC_4.3.0 1:4.3 + __fractusqhi@GCC_4.3.0 1:4.3 + __fractusqhq@GCC_4.3.0 1:4.3 + __fractusqqi@GCC_4.3.0 1:4.3 + __fractusqqq@GCC_4.3.0 1:4.3 + __fractusqsa@GCC_4.3.0 1:4.3 + __fractusqsf@GCC_4.3.0 1:4.3 + __fractusqsi@GCC_4.3.0 1:4.3 + __fractusqsq@GCC_4.3.0 1:4.3 + __fractusquda@GCC_4.3.0 1:4.3 + __fractusqudq2@GCC_4.3.0 1:4.3 + __fractusquha@GCC_4.3.0 1:4.3 + __fractusquhq2@GCC_4.3.0 1:4.3 + __fractusquqq2@GCC_4.3.0 1:4.3 + __fractusqusa@GCC_4.3.0 1:4.3 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __gedf2@GCC_3.0 1:4.1.1 + __gesf2@GCC_3.0 1:4.1.1 + __gtdf2@GCC_3.0 1:4.1.1 + __gtsf2@GCC_3.0 1:4.1.1 + __ledf2@GCC_3.0 1:4.1.1 + __lesf2@GCC_3.0 1:4.1.1 + __lshrdi3@GCC_3.0 1:4.1.1 + __lshruda3@GCC_4.3.0 1:4.3 + __lshrudq3@GCC_4.3.0 1:4.3 + __lshruha3@GCC_4.3.0 1:4.3 + __lshruhq3@GCC_4.3.0 1:4.3 + __lshruqq3@GCC_4.3.0 1:4.3 + __lshrusa3@GCC_4.3.0 1:4.3 + __lshrusq3@GCC_4.3.0 1:4.3 + __ltdf2@GCC_3.0 1:4.1.1 + __ltsf2@GCC_3.0 1:4.1.1 + __mips16_adddf3@GCC_4.4.0 1:4.4.0 + __mips16_addsf3@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_10@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_1@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_2@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_5@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_6@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_9@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_0@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_10@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_1@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_2@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_5@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_6@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_9@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_0@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_10@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_1@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_2@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_5@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_6@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_9@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_0@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_10@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_1@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_2@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_5@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_6@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_9@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_0@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_10@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_1@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_2@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_5@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_6@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_9@GCC_4.4.0 1:4.4.0 + __mips16_divdf3@GCC_4.4.0 1:4.4.0 + __mips16_divsf3@GCC_4.4.0 1:4.4.0 + __mips16_eqdf2@GCC_4.4.0 1:4.4.0 + __mips16_eqsf2@GCC_4.4.0 1:4.4.0 + __mips16_extendsfdf2@GCC_4.4.0 1:4.4.0 + __mips16_fix_truncdfsi@GCC_4.4.0 1:4.4.0 + __mips16_fix_truncsfsi@GCC_4.4.0 1:4.4.0 + __mips16_floatsidf@GCC_4.4.0 1:4.4.0 + __mips16_floatsisf@GCC_4.4.0 1:4.4.0 + __mips16_floatunsidf@GCC_4.4.0 1:4.4.0 + __mips16_floatunsisf@GCC_4.4.0 1:4.4.0 + __mips16_gedf2@GCC_4.4.0 1:4.4.0 + __mips16_gesf2@GCC_4.4.0 1:4.4.0 + __mips16_gtdf2@GCC_4.4.0 1:4.4.0 + __mips16_gtsf2@GCC_4.4.0 1:4.4.0 + __mips16_ledf2@GCC_4.4.0 1:4.4.0 + __mips16_lesf2@GCC_4.4.0 1:4.4.0 + __mips16_ltdf2@GCC_4.4.0 1:4.4.0 + __mips16_ltsf2@GCC_4.4.0 1:4.4.0 + __mips16_muldf3@GCC_4.4.0 1:4.4.0 + __mips16_mulsf3@GCC_4.4.0 1:4.4.0 + __mips16_nedf2@GCC_4.4.0 1:4.4.0 + __mips16_nesf2@GCC_4.4.0 1:4.4.0 + __mips16_ret_dc@GCC_4.4.0 1:4.4.0 + __mips16_ret_df@GCC_4.4.0 1:4.4.0 + __mips16_ret_sc@GCC_4.4.0 1:4.4.0 + __mips16_ret_sf@GCC_4.4.0 1:4.4.0 + __mips16_subdf3@GCC_4.4.0 1:4.4.0 + __mips16_subsf3@GCC_4.4.0 1:4.4.0 + __mips16_truncdfsf2@GCC_4.4.0 1:4.4.0 + __moddi3@GLIBC_2.0 1:4.1.1 + __mulda3@GCC_4.3.0 1:4.3 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldf3@GCC_3.0 1:4.1.1 + __muldi3@GCC_3.0 1:4.1.1 + __muldq3@GCC_4.3.0 1:4.3 + __mulha3@GCC_4.3.0 1:4.3 + __mulhq3@GCC_4.3.0 1:4.3 + __mulqq3@GCC_4.3.0 1:4.3 + __mulsa3@GCC_4.3.0 1:4.3 + __mulsc3@GCC_4.0.0 1:4.1.1 + __mulsf3@GCC_3.0 1:4.1.1 + __mulsq3@GCC_4.3.0 1:4.3 + __muluda3@GCC_4.3.0 1:4.3 + __muludq3@GCC_4.3.0 1:4.3 + __muluha3@GCC_4.3.0 1:4.3 + __muluhq3@GCC_4.3.0 1:4.3 + __muluqq3@GCC_4.3.0 1:4.3 + __mulusa3@GCC_4.3.0 1:4.3 + __mulusq3@GCC_4.3.0 1:4.3 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __nedf2@GCC_3.0 1:4.1.1 + __negda2@GCC_4.3.0 1:4.3 + __negdf2@GCC_3.0 1:4.1.1 + __negdi2@GCC_3.0 1:4.1.1 + __negdq2@GCC_4.3.0 1:4.3 + __negha2@GCC_4.3.0 1:4.3 + __neghq2@GCC_4.3.0 1:4.3 + __negqq2@GCC_4.3.0 1:4.3 + __negsa2@GCC_4.3.0 1:4.3 + __negsf2@GCC_3.0 1:4.1.1 + __negsq2@GCC_4.3.0 1:4.3 + __neguda2@GCC_4.3.0 1:4.3 + __negudq2@GCC_4.3.0 1:4.3 + __neguha2@GCC_4.3.0 1:4.3 + __neguhq2@GCC_4.3.0 1:4.3 + __neguqq2@GCC_4.3.0 1:4.3 + __negusa2@GCC_4.3.0 1:4.3 + __negusq2@GCC_4.3.0 1:4.3 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __nesf2@GCC_3.0 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __paritysi2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountsi2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __satfractdadq@GCC_4.3.0 1:4.3 + __satfractdaha2@GCC_4.3.0 1:4.3 + __satfractdahq@GCC_4.3.0 1:4.3 + __satfractdaqq@GCC_4.3.0 1:4.3 + __satfractdasa2@GCC_4.3.0 1:4.3 + __satfractdasq@GCC_4.3.0 1:4.3 + __satfractdauda@GCC_4.3.0 1:4.3 + __satfractdaudq@GCC_4.3.0 1:4.3 + __satfractdauha@GCC_4.3.0 1:4.3 + __satfractdauhq@GCC_4.3.0 1:4.3 + __satfractdauqq@GCC_4.3.0 1:4.3 + __satfractdausa@GCC_4.3.0 1:4.3 + __satfractdausq@GCC_4.3.0 1:4.3 + __satfractdfda@GCC_4.3.0 1:4.3 + __satfractdfdq@GCC_4.3.0 1:4.3 + __satfractdfha@GCC_4.3.0 1:4.3 + __satfractdfhq@GCC_4.3.0 1:4.3 + __satfractdfqq@GCC_4.3.0 1:4.3 + __satfractdfsa@GCC_4.3.0 1:4.3 + __satfractdfsq@GCC_4.3.0 1:4.3 + __satfractdfuda@GCC_4.3.0 1:4.3 + __satfractdfudq@GCC_4.3.0 1:4.3 + __satfractdfuha@GCC_4.3.0 1:4.3 + __satfractdfuhq@GCC_4.3.0 1:4.3 + __satfractdfuqq@GCC_4.3.0 1:4.3 + __satfractdfusa@GCC_4.3.0 1:4.3 + __satfractdfusq@GCC_4.3.0 1:4.3 + __satfractdida@GCC_4.3.0 1:4.3 + __satfractdidq@GCC_4.3.0 1:4.3 + __satfractdiha@GCC_4.3.0 1:4.3 + __satfractdihq@GCC_4.3.0 1:4.3 + __satfractdiqq@GCC_4.3.0 1:4.3 + __satfractdisa@GCC_4.3.0 1:4.3 + __satfractdisq@GCC_4.3.0 1:4.3 + __satfractdiuda@GCC_4.3.0 1:4.3 + __satfractdiudq@GCC_4.3.0 1:4.3 + __satfractdiuha@GCC_4.3.0 1:4.3 + __satfractdiuhq@GCC_4.3.0 1:4.3 + __satfractdiuqq@GCC_4.3.0 1:4.3 + __satfractdiusa@GCC_4.3.0 1:4.3 + __satfractdiusq@GCC_4.3.0 1:4.3 + __satfractdqda@GCC_4.3.0 1:4.3 + __satfractdqha@GCC_4.3.0 1:4.3 + __satfractdqhq2@GCC_4.3.0 1:4.3 + __satfractdqqq2@GCC_4.3.0 1:4.3 + __satfractdqsa@GCC_4.3.0 1:4.3 + __satfractdqsq2@GCC_4.3.0 1:4.3 + __satfractdquda@GCC_4.3.0 1:4.3 + __satfractdqudq@GCC_4.3.0 1:4.3 + __satfractdquha@GCC_4.3.0 1:4.3 + __satfractdquhq@GCC_4.3.0 1:4.3 + __satfractdquqq@GCC_4.3.0 1:4.3 + __satfractdqusa@GCC_4.3.0 1:4.3 + __satfractdqusq@GCC_4.3.0 1:4.3 + __satfracthada2@GCC_4.3.0 1:4.3 + __satfracthadq@GCC_4.3.0 1:4.3 + __satfracthahq@GCC_4.3.0 1:4.3 + __satfracthaqq@GCC_4.3.0 1:4.3 + __satfracthasa2@GCC_4.3.0 1:4.3 + __satfracthasq@GCC_4.3.0 1:4.3 + __satfracthauda@GCC_4.3.0 1:4.3 + __satfracthaudq@GCC_4.3.0 1:4.3 + __satfracthauha@GCC_4.3.0 1:4.3 + __satfracthauhq@GCC_4.3.0 1:4.3 + __satfracthauqq@GCC_4.3.0 1:4.3 + __satfracthausa@GCC_4.3.0 1:4.3 + __satfracthausq@GCC_4.3.0 1:4.3 + __satfracthida@GCC_4.3.0 1:4.3 + __satfracthidq@GCC_4.3.0 1:4.3 + __satfracthiha@GCC_4.3.0 1:4.3 + __satfracthihq@GCC_4.3.0 1:4.3 + __satfracthiqq@GCC_4.3.0 1:4.3 + __satfracthisa@GCC_4.3.0 1:4.3 + __satfracthisq@GCC_4.3.0 1:4.3 + __satfracthiuda@GCC_4.3.0 1:4.3 + __satfracthiudq@GCC_4.3.0 1:4.3 + __satfracthiuha@GCC_4.3.0 1:4.3 + __satfracthiuhq@GCC_4.3.0 1:4.3 + __satfracthiuqq@GCC_4.3.0 1:4.3 + __satfracthiusa@GCC_4.3.0 1:4.3 + __satfracthiusq@GCC_4.3.0 1:4.3 + __satfracthqda@GCC_4.3.0 1:4.3 + __satfracthqdq2@GCC_4.3.0 1:4.3 + __satfracthqha@GCC_4.3.0 1:4.3 + __satfracthqqq2@GCC_4.3.0 1:4.3 + __satfracthqsa@GCC_4.3.0 1:4.3 + __satfracthqsq2@GCC_4.3.0 1:4.3 + __satfracthquda@GCC_4.3.0 1:4.3 + __satfracthqudq@GCC_4.3.0 1:4.3 + __satfracthquha@GCC_4.3.0 1:4.3 + __satfracthquhq@GCC_4.3.0 1:4.3 + __satfracthquqq@GCC_4.3.0 1:4.3 + __satfracthqusa@GCC_4.3.0 1:4.3 + __satfracthqusq@GCC_4.3.0 1:4.3 + __satfractqida@GCC_4.3.0 1:4.3 + __satfractqidq@GCC_4.3.0 1:4.3 + __satfractqiha@GCC_4.3.0 1:4.3 + __satfractqihq@GCC_4.3.0 1:4.3 + __satfractqiqq@GCC_4.3.0 1:4.3 + __satfractqisa@GCC_4.3.0 1:4.3 + __satfractqisq@GCC_4.3.0 1:4.3 + __satfractqiuda@GCC_4.3.0 1:4.3 + __satfractqiudq@GCC_4.3.0 1:4.3 + __satfractqiuha@GCC_4.3.0 1:4.3 + __satfractqiuhq@GCC_4.3.0 1:4.3 + __satfractqiuqq@GCC_4.3.0 1:4.3 + __satfractqiusa@GCC_4.3.0 1:4.3 + __satfractqiusq@GCC_4.3.0 1:4.3 + __satfractqqda@GCC_4.3.0 1:4.3 + __satfractqqdq2@GCC_4.3.0 1:4.3 + __satfractqqha@GCC_4.3.0 1:4.3 + __satfractqqhq2@GCC_4.3.0 1:4.3 + __satfractqqsa@GCC_4.3.0 1:4.3 + __satfractqqsq2@GCC_4.3.0 1:4.3 + __satfractqquda@GCC_4.3.0 1:4.3 + __satfractqqudq@GCC_4.3.0 1:4.3 + __satfractqquha@GCC_4.3.0 1:4.3 + __satfractqquhq@GCC_4.3.0 1:4.3 + __satfractqquqq@GCC_4.3.0 1:4.3 + __satfractqqusa@GCC_4.3.0 1:4.3 + __satfractqqusq@GCC_4.3.0 1:4.3 + __satfractsada2@GCC_4.3.0 1:4.3 + __satfractsadq@GCC_4.3.0 1:4.3 + __satfractsaha2@GCC_4.3.0 1:4.3 + __satfractsahq@GCC_4.3.0 1:4.3 + __satfractsaqq@GCC_4.3.0 1:4.3 + __satfractsasq@GCC_4.3.0 1:4.3 + __satfractsauda@GCC_4.3.0 1:4.3 + __satfractsaudq@GCC_4.3.0 1:4.3 + __satfractsauha@GCC_4.3.0 1:4.3 + __satfractsauhq@GCC_4.3.0 1:4.3 + __satfractsauqq@GCC_4.3.0 1:4.3 + __satfractsausa@GCC_4.3.0 1:4.3 + __satfractsausq@GCC_4.3.0 1:4.3 + __satfractsfda@GCC_4.3.0 1:4.3 + __satfractsfdq@GCC_4.3.0 1:4.3 + __satfractsfha@GCC_4.3.0 1:4.3 + __satfractsfhq@GCC_4.3.0 1:4.3 + __satfractsfqq@GCC_4.3.0 1:4.3 + __satfractsfsa@GCC_4.3.0 1:4.3 + __satfractsfsq@GCC_4.3.0 1:4.3 + __satfractsfuda@GCC_4.3.0 1:4.3 + __satfractsfudq@GCC_4.3.0 1:4.3 + __satfractsfuha@GCC_4.3.0 1:4.3 + __satfractsfuhq@GCC_4.3.0 1:4.3 + __satfractsfuqq@GCC_4.3.0 1:4.3 + __satfractsfusa@GCC_4.3.0 1:4.3 + __satfractsfusq@GCC_4.3.0 1:4.3 + __satfractsida@GCC_4.3.0 1:4.3 + __satfractsidq@GCC_4.3.0 1:4.3 + __satfractsiha@GCC_4.3.0 1:4.3 + __satfractsihq@GCC_4.3.0 1:4.3 + __satfractsiqq@GCC_4.3.0 1:4.3 + __satfractsisa@GCC_4.3.0 1:4.3 + __satfractsisq@GCC_4.3.0 1:4.3 + __satfractsiuda@GCC_4.3.0 1:4.3 + __satfractsiudq@GCC_4.3.0 1:4.3 + __satfractsiuha@GCC_4.3.0 1:4.3 + __satfractsiuhq@GCC_4.3.0 1:4.3 + __satfractsiuqq@GCC_4.3.0 1:4.3 + __satfractsiusa@GCC_4.3.0 1:4.3 + __satfractsiusq@GCC_4.3.0 1:4.3 + __satfractsqda@GCC_4.3.0 1:4.3 + __satfractsqdq2@GCC_4.3.0 1:4.3 + __satfractsqha@GCC_4.3.0 1:4.3 + __satfractsqhq2@GCC_4.3.0 1:4.3 + __satfractsqqq2@GCC_4.3.0 1:4.3 + __satfractsqsa@GCC_4.3.0 1:4.3 + __satfractsquda@GCC_4.3.0 1:4.3 + __satfractsqudq@GCC_4.3.0 1:4.3 + __satfractsquha@GCC_4.3.0 1:4.3 + __satfractsquhq@GCC_4.3.0 1:4.3 + __satfractsquqq@GCC_4.3.0 1:4.3 + __satfractsqusa@GCC_4.3.0 1:4.3 + __satfractsqusq@GCC_4.3.0 1:4.3 + __satfractudada@GCC_4.3.0 1:4.3 + __satfractudadq@GCC_4.3.0 1:4.3 + __satfractudaha@GCC_4.3.0 1:4.3 + __satfractudahq@GCC_4.3.0 1:4.3 + __satfractudaqq@GCC_4.3.0 1:4.3 + __satfractudasa@GCC_4.3.0 1:4.3 + __satfractudasq@GCC_4.3.0 1:4.3 + __satfractudaudq@GCC_4.3.0 1:4.3 + __satfractudauha2@GCC_4.3.0 1:4.3 + __satfractudauhq@GCC_4.3.0 1:4.3 + __satfractudauqq@GCC_4.3.0 1:4.3 + __satfractudausa2@GCC_4.3.0 1:4.3 + __satfractudausq@GCC_4.3.0 1:4.3 + __satfractudqda@GCC_4.3.0 1:4.3 + __satfractudqdq@GCC_4.3.0 1:4.3 + __satfractudqha@GCC_4.3.0 1:4.3 + __satfractudqhq@GCC_4.3.0 1:4.3 + __satfractudqqq@GCC_4.3.0 1:4.3 + __satfractudqsa@GCC_4.3.0 1:4.3 + __satfractudqsq@GCC_4.3.0 1:4.3 + __satfractudquda@GCC_4.3.0 1:4.3 + __satfractudquha@GCC_4.3.0 1:4.3 + __satfractudquhq2@GCC_4.3.0 1:4.3 + __satfractudquqq2@GCC_4.3.0 1:4.3 + __satfractudqusa@GCC_4.3.0 1:4.3 + __satfractudqusq2@GCC_4.3.0 1:4.3 + __satfractuhada@GCC_4.3.0 1:4.3 + __satfractuhadq@GCC_4.3.0 1:4.3 + __satfractuhaha@GCC_4.3.0 1:4.3 + __satfractuhahq@GCC_4.3.0 1:4.3 + __satfractuhaqq@GCC_4.3.0 1:4.3 + __satfractuhasa@GCC_4.3.0 1:4.3 + __satfractuhasq@GCC_4.3.0 1:4.3 + __satfractuhauda2@GCC_4.3.0 1:4.3 + __satfractuhaudq@GCC_4.3.0 1:4.3 + __satfractuhauhq@GCC_4.3.0 1:4.3 + __satfractuhauqq@GCC_4.3.0 1:4.3 + __satfractuhausa2@GCC_4.3.0 1:4.3 + __satfractuhausq@GCC_4.3.0 1:4.3 + __satfractuhqda@GCC_4.3.0 1:4.3 + __satfractuhqdq@GCC_4.3.0 1:4.3 + __satfractuhqha@GCC_4.3.0 1:4.3 + __satfractuhqhq@GCC_4.3.0 1:4.3 + __satfractuhqqq@GCC_4.3.0 1:4.3 + __satfractuhqsa@GCC_4.3.0 1:4.3 + __satfractuhqsq@GCC_4.3.0 1:4.3 + __satfractuhquda@GCC_4.3.0 1:4.3 + __satfractuhqudq2@GCC_4.3.0 1:4.3 + __satfractuhquha@GCC_4.3.0 1:4.3 + __satfractuhquqq2@GCC_4.3.0 1:4.3 + __satfractuhqusa@GCC_4.3.0 1:4.3 + __satfractuhqusq2@GCC_4.3.0 1:4.3 + __satfractunsdida@GCC_4.3.0 1:4.3 + __satfractunsdidq@GCC_4.3.0 1:4.3 + __satfractunsdiha@GCC_4.3.0 1:4.3 + __satfractunsdihq@GCC_4.3.0 1:4.3 + __satfractunsdiqq@GCC_4.3.0 1:4.3 + __satfractunsdisa@GCC_4.3.0 1:4.3 + __satfractunsdisq@GCC_4.3.0 1:4.3 + __satfractunsdiuda@GCC_4.3.0 1:4.3 + __satfractunsdiudq@GCC_4.3.0 1:4.3 + __satfractunsdiuha@GCC_4.3.0 1:4.3 + __satfractunsdiuhq@GCC_4.3.0 1:4.3 + __satfractunsdiuqq@GCC_4.3.0 1:4.3 + __satfractunsdiusa@GCC_4.3.0 1:4.3 + __satfractunsdiusq@GCC_4.3.0 1:4.3 + __satfractunshida@GCC_4.3.0 1:4.3 + __satfractunshidq@GCC_4.3.0 1:4.3 + __satfractunshiha@GCC_4.3.0 1:4.3 + __satfractunshihq@GCC_4.3.0 1:4.3 + __satfractunshiqq@GCC_4.3.0 1:4.3 + __satfractunshisa@GCC_4.3.0 1:4.3 + __satfractunshisq@GCC_4.3.0 1:4.3 + __satfractunshiuda@GCC_4.3.0 1:4.3 + __satfractunshiudq@GCC_4.3.0 1:4.3 + __satfractunshiuha@GCC_4.3.0 1:4.3 + __satfractunshiuhq@GCC_4.3.0 1:4.3 + __satfractunshiuqq@GCC_4.3.0 1:4.3 + __satfractunshiusa@GCC_4.3.0 1:4.3 + __satfractunshiusq@GCC_4.3.0 1:4.3 + __satfractunsqida@GCC_4.3.0 1:4.3 + __satfractunsqidq@GCC_4.3.0 1:4.3 + __satfractunsqiha@GCC_4.3.0 1:4.3 + __satfractunsqihq@GCC_4.3.0 1:4.3 + __satfractunsqiqq@GCC_4.3.0 1:4.3 + __satfractunsqisa@GCC_4.3.0 1:4.3 + __satfractunsqisq@GCC_4.3.0 1:4.3 + __satfractunsqiuda@GCC_4.3.0 1:4.3 + __satfractunsqiudq@GCC_4.3.0 1:4.3 + __satfractunsqiuha@GCC_4.3.0 1:4.3 + __satfractunsqiuhq@GCC_4.3.0 1:4.3 + __satfractunsqiuqq@GCC_4.3.0 1:4.3 + __satfractunsqiusa@GCC_4.3.0 1:4.3 + __satfractunsqiusq@GCC_4.3.0 1:4.3 + __satfractunssida@GCC_4.3.0 1:4.3 + __satfractunssidq@GCC_4.3.0 1:4.3 + __satfractunssiha@GCC_4.3.0 1:4.3 + __satfractunssihq@GCC_4.3.0 1:4.3 + __satfractunssiqq@GCC_4.3.0 1:4.3 + __satfractunssisa@GCC_4.3.0 1:4.3 + __satfractunssisq@GCC_4.3.0 1:4.3 + __satfractunssiuda@GCC_4.3.0 1:4.3 + __satfractunssiudq@GCC_4.3.0 1:4.3 + __satfractunssiuha@GCC_4.3.0 1:4.3 + __satfractunssiuhq@GCC_4.3.0 1:4.3 + __satfractunssiuqq@GCC_4.3.0 1:4.3 + __satfractunssiusa@GCC_4.3.0 1:4.3 + __satfractunssiusq@GCC_4.3.0 1:4.3 + __satfractuqqda@GCC_4.3.0 1:4.3 + __satfractuqqdq@GCC_4.3.0 1:4.3 + __satfractuqqha@GCC_4.3.0 1:4.3 + __satfractuqqhq@GCC_4.3.0 1:4.3 + __satfractuqqqq@GCC_4.3.0 1:4.3 + __satfractuqqsa@GCC_4.3.0 1:4.3 + __satfractuqqsq@GCC_4.3.0 1:4.3 + __satfractuqquda@GCC_4.3.0 1:4.3 + __satfractuqqudq2@GCC_4.3.0 1:4.3 + __satfractuqquha@GCC_4.3.0 1:4.3 + __satfractuqquhq2@GCC_4.3.0 1:4.3 + __satfractuqqusa@GCC_4.3.0 1:4.3 + __satfractuqqusq2@GCC_4.3.0 1:4.3 + __satfractusada@GCC_4.3.0 1:4.3 + __satfractusadq@GCC_4.3.0 1:4.3 + __satfractusaha@GCC_4.3.0 1:4.3 + __satfractusahq@GCC_4.3.0 1:4.3 + __satfractusaqq@GCC_4.3.0 1:4.3 + __satfractusasa@GCC_4.3.0 1:4.3 + __satfractusasq@GCC_4.3.0 1:4.3 + __satfractusauda2@GCC_4.3.0 1:4.3 + __satfractusaudq@GCC_4.3.0 1:4.3 + __satfractusauha2@GCC_4.3.0 1:4.3 + __satfractusauhq@GCC_4.3.0 1:4.3 + __satfractusauqq@GCC_4.3.0 1:4.3 + __satfractusausq@GCC_4.3.0 1:4.3 + __satfractusqda@GCC_4.3.0 1:4.3 + __satfractusqdq@GCC_4.3.0 1:4.3 + __satfractusqha@GCC_4.3.0 1:4.3 + __satfractusqhq@GCC_4.3.0 1:4.3 + __satfractusqqq@GCC_4.3.0 1:4.3 + __satfractusqsa@GCC_4.3.0 1:4.3 + __satfractusqsq@GCC_4.3.0 1:4.3 + __satfractusquda@GCC_4.3.0 1:4.3 + __satfractusqudq2@GCC_4.3.0 1:4.3 + __satfractusquha@GCC_4.3.0 1:4.3 + __satfractusquhq2@GCC_4.3.0 1:4.3 + __satfractusquqq2@GCC_4.3.0 1:4.3 + __satfractusqusa@GCC_4.3.0 1:4.3 + __ssaddda3@GCC_4.3.0 1:4.3 + __ssadddq3@GCC_4.3.0 1:4.3 + __ssaddha3@GCC_4.3.0 1:4.3 + __ssaddhq3@GCC_4.3.0 1:4.3 + __ssaddqq3@GCC_4.3.0 1:4.3 + __ssaddsa3@GCC_4.3.0 1:4.3 + __ssaddsq3@GCC_4.3.0 1:4.3 + __ssashlda3@GCC_4.3.0 1:4.3 + __ssashldq3@GCC_4.3.0 1:4.3 + __ssashlha3@GCC_4.3.0 1:4.3 + __ssashlhq3@GCC_4.3.0 1:4.3 + __ssashlqq3@GCC_4.3.0 1:4.3 + __ssashlsa3@GCC_4.3.0 1:4.3 + __ssashlsq3@GCC_4.3.0 1:4.3 + __ssdivda3@GCC_4.3.0 1:4.3 + __ssdivdq3@GCC_4.3.0 1:4.3 + __ssdivha3@GCC_4.3.0 1:4.3 + __ssdivhq3@GCC_4.3.0 1:4.3 + __ssdivqq3@GCC_4.3.0 1:4.3 + __ssdivsa3@GCC_4.3.0 1:4.3 + __ssdivsq3@GCC_4.3.0 1:4.3 + __ssmulda3@GCC_4.3.0 1:4.3 + __ssmuldq3@GCC_4.3.0 1:4.3 + __ssmulha3@GCC_4.3.0 1:4.3 + __ssmulhq3@GCC_4.3.0 1:4.3 + __ssmulqq3@GCC_4.3.0 1:4.3 + __ssmulsa3@GCC_4.3.0 1:4.3 + __ssmulsq3@GCC_4.3.0 1:4.3 + __ssnegda2@GCC_4.3.0 1:4.3 + __ssnegdq2@GCC_4.3.0 1:4.3 + __ssnegha2@GCC_4.3.0 1:4.3 + __ssneghq2@GCC_4.3.0 1:4.3 + __ssnegqq2@GCC_4.3.0 1:4.3 + __ssnegsa2@GCC_4.3.0 1:4.3 + __ssnegsq2@GCC_4.3.0 1:4.3 + __sssubda3@GCC_4.3.0 1:4.3 + __sssubdq3@GCC_4.3.0 1:4.3 + __sssubha3@GCC_4.3.0 1:4.3 + __sssubhq3@GCC_4.3.0 1:4.3 + __sssubqq3@GCC_4.3.0 1:4.3 + __sssubsa3@GCC_4.3.0 1:4.3 + __sssubsq3@GCC_4.3.0 1:4.3 + __subda3@GCC_4.3.0 1:4.3 + __subdf3@GCC_3.0 1:4.1.1 + __subdq3@GCC_4.3.0 1:4.3 + __subha3@GCC_4.3.0 1:4.3 + __subhq3@GCC_4.3.0 1:4.3 + __subqq3@GCC_4.3.0 1:4.3 + __subsa3@GCC_4.3.0 1:4.3 + __subsf3@GCC_3.0 1:4.1.1 + __subsq3@GCC_4.3.0 1:4.3 + __subuda3@GCC_4.3.0 1:4.3 + __subudq3@GCC_4.3.0 1:4.3 + __subuha3@GCC_4.3.0 1:4.3 + __subuhq3@GCC_4.3.0 1:4.3 + __subuqq3@GCC_4.3.0 1:4.3 + __subusa3@GCC_4.3.0 1:4.3 + __subusq3@GCC_4.3.0 1:4.3 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __sync_add_and_fetch_1@GCC_4.4.0 1:4.4.0 + __sync_add_and_fetch_2@GCC_4.4.0 1:4.4.0 + __sync_add_and_fetch_4@GCC_4.4.0 1:4.4.0 + __sync_and_and_fetch_1@GCC_4.4.0 1:4.4.0 + __sync_and_and_fetch_2@GCC_4.4.0 1:4.4.0 + __sync_and_and_fetch_4@GCC_4.4.0 1:4.4.0 + __sync_bool_compare_and_swap_1@GCC_4.4.0 1:4.4.0 + __sync_bool_compare_and_swap_2@GCC_4.4.0 1:4.4.0 + __sync_bool_compare_and_swap_4@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_add_1@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_add_2@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_add_4@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_and_1@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_and_2@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_and_4@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_nand_1@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_nand_2@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_nand_4@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_or_1@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_or_2@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_or_4@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_sub_1@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_sub_2@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_sub_4@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_xor_1@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_xor_2@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_xor_4@GCC_4.4.0 1:4.4.0 + __sync_lock_test_and_set_1@GCC_4.4.0 1:4.4.0 + __sync_lock_test_and_set_2@GCC_4.4.0 1:4.4.0 + __sync_lock_test_and_set_4@GCC_4.4.0 1:4.4.0 + __sync_nand_and_fetch_1@GCC_4.4.0 1:4.4.0 + __sync_nand_and_fetch_2@GCC_4.4.0 1:4.4.0 + __sync_nand_and_fetch_4@GCC_4.4.0 1:4.4.0 + __sync_or_and_fetch_1@GCC_4.4.0 1:4.4.0 + __sync_or_and_fetch_2@GCC_4.4.0 1:4.4.0 + __sync_or_and_fetch_4@GCC_4.4.0 1:4.4.0 + __sync_sub_and_fetch_1@GCC_4.4.0 1:4.4.0 + __sync_sub_and_fetch_2@GCC_4.4.0 1:4.4.0 + __sync_sub_and_fetch_4@GCC_4.4.0 1:4.4.0 + __sync_synchronize@GCC_4.4.0 1:4.4.0 + __sync_val_compare_and_swap_1@GCC_4.4.0 1:4.4.0 + __sync_val_compare_and_swap_2@GCC_4.4.0 1:4.4.0 + __sync_val_compare_and_swap_4@GCC_4.4.0 1:4.4.0 + __sync_xor_and_fetch_1@GCC_4.4.0 1:4.4.0 + __sync_xor_and_fetch_2@GCC_4.4.0 1:4.4.0 + __sync_xor_and_fetch_4@GCC_4.4.0 1:4.4.0 + __truncdfsf2@GCC_3.0 1:4.1.1 + __ucmpdi2@GCC_3.0 1:4.1.1 + __udivdi3@GLIBC_2.0 1:4.1.1 + __udivmoddi4@GCC_3.0 1:4.1.1 + __udivuda3@GCC_4.3.0 1:4.3 + __udivudq3@GCC_4.3.0 1:4.3 + __udivuha3@GCC_4.3.0 1:4.3 + __udivuhq3@GCC_4.3.0 1:4.3 + __udivuqq3@GCC_4.3.0 1:4.3 + __udivusa3@GCC_4.3.0 1:4.3 + __udivusq3@GCC_4.3.0 1:4.3 + __umoddi3@GLIBC_2.0 1:4.1.1 + __unorddf2@GCC_3.3.4 1:4.1.1 + __unordsf2@GCC_3.3.4 1:4.1.1 + __usadduda3@GCC_4.3.0 1:4.3 + __usaddudq3@GCC_4.3.0 1:4.3 + __usadduha3@GCC_4.3.0 1:4.3 + __usadduhq3@GCC_4.3.0 1:4.3 + __usadduqq3@GCC_4.3.0 1:4.3 + __usaddusa3@GCC_4.3.0 1:4.3 + __usaddusq3@GCC_4.3.0 1:4.3 + __usashluda3@GCC_4.3.0 1:4.3 + __usashludq3@GCC_4.3.0 1:4.3 + __usashluha3@GCC_4.3.0 1:4.3 + __usashluhq3@GCC_4.3.0 1:4.3 + __usashluqq3@GCC_4.3.0 1:4.3 + __usashlusa3@GCC_4.3.0 1:4.3 + __usashlusq3@GCC_4.3.0 1:4.3 + __usdivuda3@GCC_4.3.0 1:4.3 + __usdivudq3@GCC_4.3.0 1:4.3 + __usdivuha3@GCC_4.3.0 1:4.3 + __usdivuhq3@GCC_4.3.0 1:4.3 + __usdivuqq3@GCC_4.3.0 1:4.3 + __usdivusa3@GCC_4.3.0 1:4.3 + __usdivusq3@GCC_4.3.0 1:4.3 + __usmuluda3@GCC_4.3.0 1:4.3 + __usmuludq3@GCC_4.3.0 1:4.3 + __usmuluha3@GCC_4.3.0 1:4.3 + __usmuluhq3@GCC_4.3.0 1:4.3 + __usmuluqq3@GCC_4.3.0 1:4.3 + __usmulusa3@GCC_4.3.0 1:4.3 + __usmulusq3@GCC_4.3.0 1:4.3 + __usneguda2@GCC_4.3.0 1:4.3 + __usnegudq2@GCC_4.3.0 1:4.3 + __usneguha2@GCC_4.3.0 1:4.3 + __usneguhq2@GCC_4.3.0 1:4.3 + __usneguqq2@GCC_4.3.0 1:4.3 + __usnegusa2@GCC_4.3.0 1:4.3 + __usnegusq2@GCC_4.3.0 1:4.3 + __ussubuda3@GCC_4.3.0 1:4.3 + __ussubudq3@GCC_4.3.0 1:4.3 + __ussubuha3@GCC_4.3.0 1:4.3 + __ussubuhq3@GCC_4.3.0 1:4.3 + __ussubuqq3@GCC_4.3.0 1:4.3 + __ussubusa3@GCC_4.3.0 1:4.3 + __ussubusq3@GCC_4.3.0 1:4.3 --- gcc-4.9-4.9.2.orig/debian/libgcc1.symbols.mipsel +++ gcc-4.9-4.9.2/debian/libgcc1.symbols.mipsel @@ -0,0 +1,1222 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3.4@GCC_3.3.4 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.4.0@GCC_4.4.0 1:4.4.0 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __addda3@GCC_4.3.0 1:4.3 + __adddf3@GCC_3.0 1:4.1.1 + __adddq3@GCC_4.3.0 1:4.3 + __addha3@GCC_4.3.0 1:4.3 + __addhq3@GCC_4.3.0 1:4.3 + __addqq3@GCC_4.3.0 1:4.3 + __addsa3@GCC_4.3.0 1:4.3 + __addsf3@GCC_3.0 1:4.1.1 + __addsq3@GCC_4.3.0 1:4.3 + __adduda3@GCC_4.3.0 1:4.3 + __addudq3@GCC_4.3.0 1:4.3 + __adduha3@GCC_4.3.0 1:4.3 + __adduhq3@GCC_4.3.0 1:4.3 + __adduqq3@GCC_4.3.0 1:4.3 + __addusa3@GCC_4.3.0 1:4.3 + __addusq3@GCC_4.3.0 1:4.3 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __ashlda3@GCC_4.3.0 1:4.3 + __ashldi3@GCC_3.0 1:4.1.1 + __ashldq3@GCC_4.3.0 1:4.3 + __ashlha3@GCC_4.3.0 1:4.3 + __ashlhq3@GCC_4.3.0 1:4.3 + __ashlqq3@GCC_4.3.0 1:4.3 + __ashlsa3@GCC_4.3.0 1:4.3 + __ashlsq3@GCC_4.3.0 1:4.3 + __ashluda3@GCC_4.3.0 1:4.3 + __ashludq3@GCC_4.3.0 1:4.3 + __ashluha3@GCC_4.3.0 1:4.3 + __ashluhq3@GCC_4.3.0 1:4.3 + __ashluqq3@GCC_4.3.0 1:4.3 + __ashlusa3@GCC_4.3.0 1:4.3 + __ashlusq3@GCC_4.3.0 1:4.3 + __ashrda3@GCC_4.3.0 1:4.3 + __ashrdi3@GCC_3.0 1:4.1.1 + __ashrdq3@GCC_4.3.0 1:4.3 + __ashrha3@GCC_4.3.0 1:4.3 + __ashrhq3@GCC_4.3.0 1:4.3 + __ashrqq3@GCC_4.3.0 1:4.3 + __ashrsa3@GCC_4.3.0 1:4.3 + __ashrsq3@GCC_4.3.0 1:4.3 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbsi2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzsi2@GCC_3.4 1:4.1.1 + __cmpda2@GCC_4.3.0 1:4.3 + __cmpdi2@GCC_3.0 1:4.1.1 + __cmpdq2@GCC_4.3.0 1:4.3 + __cmpha2@GCC_4.3.0 1:4.3 + __cmphq2@GCC_4.3.0 1:4.3 + __cmpqq2@GCC_4.3.0 1:4.3 + __cmpsa2@GCC_4.3.0 1:4.3 + __cmpsq2@GCC_4.3.0 1:4.3 + __cmpuda2@GCC_4.3.0 1:4.3 + __cmpudq2@GCC_4.3.0 1:4.3 + __cmpuha2@GCC_4.3.0 1:4.3 + __cmpuhq2@GCC_4.3.0 1:4.3 + __cmpuqq2@GCC_4.3.0 1:4.3 + __cmpusa2@GCC_4.3.0 1:4.3 + __cmpusq2@GCC_4.3.0 1:4.3 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzsi2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divda3@GCC_4.3.0 1:4.3 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdf3@GCC_3.0 1:4.1.1 + __divdi3@GLIBC_2.0 1:4.1.1 + __divdq3@GCC_4.3.0 1:4.3 + __divha3@GCC_4.3.0 1:4.3 + __divhq3@GCC_4.3.0 1:4.3 + __divqq3@GCC_4.3.0 1:4.3 + __divsa3@GCC_4.3.0 1:4.3 + __divsc3@GCC_4.0.0 1:4.1.1 + __divsf3@GCC_3.0 1:4.1.1 + __divsq3@GCC_4.3.0 1:4.3 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqdf2@GCC_3.0 1:4.1.1 + __eqsf2@GCC_3.0 1:4.1.1 + __extendsfdf2@GCC_3.0 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixdfsi@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixsfsi@GCC_3.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatsidf@GCC_3.0 1:4.1.1 + __floatsisf@GCC_3.0 1:4.1.1 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunsidf@GCC_4.2.0 1:4.2.1 + __floatunsisf@GCC_4.2.0 1:4.2.1 + __fractdadf@GCC_4.3.0 1:4.3 + __fractdadi@GCC_4.3.0 1:4.3 + __fractdadq@GCC_4.3.0 1:4.3 + __fractdaha2@GCC_4.3.0 1:4.3 + __fractdahi@GCC_4.3.0 1:4.3 + __fractdahq@GCC_4.3.0 1:4.3 + __fractdaqi@GCC_4.3.0 1:4.3 + __fractdaqq@GCC_4.3.0 1:4.3 + __fractdasa2@GCC_4.3.0 1:4.3 + __fractdasf@GCC_4.3.0 1:4.3 + __fractdasi@GCC_4.3.0 1:4.3 + __fractdasq@GCC_4.3.0 1:4.3 + __fractdauda@GCC_4.3.0 1:4.3 + __fractdaudq@GCC_4.3.0 1:4.3 + __fractdauha@GCC_4.3.0 1:4.3 + __fractdauhq@GCC_4.3.0 1:4.3 + __fractdauqq@GCC_4.3.0 1:4.3 + __fractdausa@GCC_4.3.0 1:4.3 + __fractdausq@GCC_4.3.0 1:4.3 + __fractdfda@GCC_4.3.0 1:4.3 + __fractdfdq@GCC_4.3.0 1:4.3 + __fractdfha@GCC_4.3.0 1:4.3 + __fractdfhq@GCC_4.3.0 1:4.3 + __fractdfqq@GCC_4.3.0 1:4.3 + __fractdfsa@GCC_4.3.0 1:4.3 + __fractdfsq@GCC_4.3.0 1:4.3 + __fractdfuda@GCC_4.3.0 1:4.3 + __fractdfudq@GCC_4.3.0 1:4.3 + __fractdfuha@GCC_4.3.0 1:4.3 + __fractdfuhq@GCC_4.3.0 1:4.3 + __fractdfuqq@GCC_4.3.0 1:4.3 + __fractdfusa@GCC_4.3.0 1:4.3 + __fractdfusq@GCC_4.3.0 1:4.3 + __fractdida@GCC_4.3.0 1:4.3 + __fractdidq@GCC_4.3.0 1:4.3 + __fractdiha@GCC_4.3.0 1:4.3 + __fractdihq@GCC_4.3.0 1:4.3 + __fractdiqq@GCC_4.3.0 1:4.3 + __fractdisa@GCC_4.3.0 1:4.3 + __fractdisq@GCC_4.3.0 1:4.3 + __fractdiuda@GCC_4.3.0 1:4.3 + __fractdiudq@GCC_4.3.0 1:4.3 + __fractdiuha@GCC_4.3.0 1:4.3 + __fractdiuhq@GCC_4.3.0 1:4.3 + __fractdiuqq@GCC_4.3.0 1:4.3 + __fractdiusa@GCC_4.3.0 1:4.3 + __fractdiusq@GCC_4.3.0 1:4.3 + __fractdqda@GCC_4.3.0 1:4.3 + __fractdqdf@GCC_4.3.0 1:4.3 + __fractdqdi@GCC_4.3.0 1:4.3 + __fractdqha@GCC_4.3.0 1:4.3 + __fractdqhi@GCC_4.3.0 1:4.3 + __fractdqhq2@GCC_4.3.0 1:4.3 + __fractdqqi@GCC_4.3.0 1:4.3 + __fractdqqq2@GCC_4.3.0 1:4.3 + __fractdqsa@GCC_4.3.0 1:4.3 + __fractdqsf@GCC_4.3.0 1:4.3 + __fractdqsi@GCC_4.3.0 1:4.3 + __fractdqsq2@GCC_4.3.0 1:4.3 + __fractdquda@GCC_4.3.0 1:4.3 + __fractdqudq@GCC_4.3.0 1:4.3 + __fractdquha@GCC_4.3.0 1:4.3 + __fractdquhq@GCC_4.3.0 1:4.3 + __fractdquqq@GCC_4.3.0 1:4.3 + __fractdqusa@GCC_4.3.0 1:4.3 + __fractdqusq@GCC_4.3.0 1:4.3 + __fracthada2@GCC_4.3.0 1:4.3 + __fracthadf@GCC_4.3.0 1:4.3 + __fracthadi@GCC_4.3.0 1:4.3 + __fracthadq@GCC_4.3.0 1:4.3 + __fracthahi@GCC_4.3.0 1:4.3 + __fracthahq@GCC_4.3.0 1:4.3 + __fracthaqi@GCC_4.3.0 1:4.3 + __fracthaqq@GCC_4.3.0 1:4.3 + __fracthasa2@GCC_4.3.0 1:4.3 + __fracthasf@GCC_4.3.0 1:4.3 + __fracthasi@GCC_4.3.0 1:4.3 + __fracthasq@GCC_4.3.0 1:4.3 + __fracthauda@GCC_4.3.0 1:4.3 + __fracthaudq@GCC_4.3.0 1:4.3 + __fracthauha@GCC_4.3.0 1:4.3 + __fracthauhq@GCC_4.3.0 1:4.3 + __fracthauqq@GCC_4.3.0 1:4.3 + __fracthausa@GCC_4.3.0 1:4.3 + __fracthausq@GCC_4.3.0 1:4.3 + __fracthida@GCC_4.3.0 1:4.3 + __fracthidq@GCC_4.3.0 1:4.3 + __fracthiha@GCC_4.3.0 1:4.3 + __fracthihq@GCC_4.3.0 1:4.3 + __fracthiqq@GCC_4.3.0 1:4.3 + __fracthisa@GCC_4.3.0 1:4.3 + __fracthisq@GCC_4.3.0 1:4.3 + __fracthiuda@GCC_4.3.0 1:4.3 + __fracthiudq@GCC_4.3.0 1:4.3 + __fracthiuha@GCC_4.3.0 1:4.3 + __fracthiuhq@GCC_4.3.0 1:4.3 + __fracthiuqq@GCC_4.3.0 1:4.3 + __fracthiusa@GCC_4.3.0 1:4.3 + __fracthiusq@GCC_4.3.0 1:4.3 + __fracthqda@GCC_4.3.0 1:4.3 + __fracthqdf@GCC_4.3.0 1:4.3 + __fracthqdi@GCC_4.3.0 1:4.3 + __fracthqdq2@GCC_4.3.0 1:4.3 + __fracthqha@GCC_4.3.0 1:4.3 + __fracthqhi@GCC_4.3.0 1:4.3 + __fracthqqi@GCC_4.3.0 1:4.3 + __fracthqqq2@GCC_4.3.0 1:4.3 + __fracthqsa@GCC_4.3.0 1:4.3 + __fracthqsf@GCC_4.3.0 1:4.3 + __fracthqsi@GCC_4.3.0 1:4.3 + __fracthqsq2@GCC_4.3.0 1:4.3 + __fracthquda@GCC_4.3.0 1:4.3 + __fracthqudq@GCC_4.3.0 1:4.3 + __fracthquha@GCC_4.3.0 1:4.3 + __fracthquhq@GCC_4.3.0 1:4.3 + __fracthquqq@GCC_4.3.0 1:4.3 + __fracthqusa@GCC_4.3.0 1:4.3 + __fracthqusq@GCC_4.3.0 1:4.3 + __fractqida@GCC_4.3.0 1:4.3 + __fractqidq@GCC_4.3.0 1:4.3 + __fractqiha@GCC_4.3.0 1:4.3 + __fractqihq@GCC_4.3.0 1:4.3 + __fractqiqq@GCC_4.3.0 1:4.3 + __fractqisa@GCC_4.3.0 1:4.3 + __fractqisq@GCC_4.3.0 1:4.3 + __fractqiuda@GCC_4.3.0 1:4.3 + __fractqiudq@GCC_4.3.0 1:4.3 + __fractqiuha@GCC_4.3.0 1:4.3 + __fractqiuhq@GCC_4.3.0 1:4.3 + __fractqiuqq@GCC_4.3.0 1:4.3 + __fractqiusa@GCC_4.3.0 1:4.3 + __fractqiusq@GCC_4.3.0 1:4.3 + __fractqqda@GCC_4.3.0 1:4.3 + __fractqqdf@GCC_4.3.0 1:4.3 + __fractqqdi@GCC_4.3.0 1:4.3 + __fractqqdq2@GCC_4.3.0 1:4.3 + __fractqqha@GCC_4.3.0 1:4.3 + __fractqqhi@GCC_4.3.0 1:4.3 + __fractqqhq2@GCC_4.3.0 1:4.3 + __fractqqqi@GCC_4.3.0 1:4.3 + __fractqqsa@GCC_4.3.0 1:4.3 + __fractqqsf@GCC_4.3.0 1:4.3 + __fractqqsi@GCC_4.3.0 1:4.3 + __fractqqsq2@GCC_4.3.0 1:4.3 + __fractqquda@GCC_4.3.0 1:4.3 + __fractqqudq@GCC_4.3.0 1:4.3 + __fractqquha@GCC_4.3.0 1:4.3 + __fractqquhq@GCC_4.3.0 1:4.3 + __fractqquqq@GCC_4.3.0 1:4.3 + __fractqqusa@GCC_4.3.0 1:4.3 + __fractqqusq@GCC_4.3.0 1:4.3 + __fractsada2@GCC_4.3.0 1:4.3 + __fractsadf@GCC_4.3.0 1:4.3 + __fractsadi@GCC_4.3.0 1:4.3 + __fractsadq@GCC_4.3.0 1:4.3 + __fractsaha2@GCC_4.3.0 1:4.3 + __fractsahi@GCC_4.3.0 1:4.3 + __fractsahq@GCC_4.3.0 1:4.3 + __fractsaqi@GCC_4.3.0 1:4.3 + __fractsaqq@GCC_4.3.0 1:4.3 + __fractsasf@GCC_4.3.0 1:4.3 + __fractsasi@GCC_4.3.0 1:4.3 + __fractsasq@GCC_4.3.0 1:4.3 + __fractsauda@GCC_4.3.0 1:4.3 + __fractsaudq@GCC_4.3.0 1:4.3 + __fractsauha@GCC_4.3.0 1:4.3 + __fractsauhq@GCC_4.3.0 1:4.3 + __fractsauqq@GCC_4.3.0 1:4.3 + __fractsausa@GCC_4.3.0 1:4.3 + __fractsausq@GCC_4.3.0 1:4.3 + __fractsfda@GCC_4.3.0 1:4.3 + __fractsfdq@GCC_4.3.0 1:4.3 + __fractsfha@GCC_4.3.0 1:4.3 + __fractsfhq@GCC_4.3.0 1:4.3 + __fractsfqq@GCC_4.3.0 1:4.3 + __fractsfsa@GCC_4.3.0 1:4.3 + __fractsfsq@GCC_4.3.0 1:4.3 + __fractsfuda@GCC_4.3.0 1:4.3 + __fractsfudq@GCC_4.3.0 1:4.3 + __fractsfuha@GCC_4.3.0 1:4.3 + __fractsfuhq@GCC_4.3.0 1:4.3 + __fractsfuqq@GCC_4.3.0 1:4.3 + __fractsfusa@GCC_4.3.0 1:4.3 + __fractsfusq@GCC_4.3.0 1:4.3 + __fractsida@GCC_4.3.0 1:4.3 + __fractsidq@GCC_4.3.0 1:4.3 + __fractsiha@GCC_4.3.0 1:4.3 + __fractsihq@GCC_4.3.0 1:4.3 + __fractsiqq@GCC_4.3.0 1:4.3 + __fractsisa@GCC_4.3.0 1:4.3 + __fractsisq@GCC_4.3.0 1:4.3 + __fractsiuda@GCC_4.3.0 1:4.3 + __fractsiudq@GCC_4.3.0 1:4.3 + __fractsiuha@GCC_4.3.0 1:4.3 + __fractsiuhq@GCC_4.3.0 1:4.3 + __fractsiuqq@GCC_4.3.0 1:4.3 + __fractsiusa@GCC_4.3.0 1:4.3 + __fractsiusq@GCC_4.3.0 1:4.3 + __fractsqda@GCC_4.3.0 1:4.3 + __fractsqdf@GCC_4.3.0 1:4.3 + __fractsqdi@GCC_4.3.0 1:4.3 + __fractsqdq2@GCC_4.3.0 1:4.3 + __fractsqha@GCC_4.3.0 1:4.3 + __fractsqhi@GCC_4.3.0 1:4.3 + __fractsqhq2@GCC_4.3.0 1:4.3 + __fractsqqi@GCC_4.3.0 1:4.3 + __fractsqqq2@GCC_4.3.0 1:4.3 + __fractsqsa@GCC_4.3.0 1:4.3 + __fractsqsf@GCC_4.3.0 1:4.3 + __fractsqsi@GCC_4.3.0 1:4.3 + __fractsquda@GCC_4.3.0 1:4.3 + __fractsqudq@GCC_4.3.0 1:4.3 + __fractsquha@GCC_4.3.0 1:4.3 + __fractsquhq@GCC_4.3.0 1:4.3 + __fractsquqq@GCC_4.3.0 1:4.3 + __fractsqusa@GCC_4.3.0 1:4.3 + __fractsqusq@GCC_4.3.0 1:4.3 + __fractudada@GCC_4.3.0 1:4.3 + __fractudadf@GCC_4.3.0 1:4.3 + __fractudadi@GCC_4.3.0 1:4.3 + __fractudadq@GCC_4.3.0 1:4.3 + __fractudaha@GCC_4.3.0 1:4.3 + __fractudahi@GCC_4.3.0 1:4.3 + __fractudahq@GCC_4.3.0 1:4.3 + __fractudaqi@GCC_4.3.0 1:4.3 + __fractudaqq@GCC_4.3.0 1:4.3 + __fractudasa@GCC_4.3.0 1:4.3 + __fractudasf@GCC_4.3.0 1:4.3 + __fractudasi@GCC_4.3.0 1:4.3 + __fractudasq@GCC_4.3.0 1:4.3 + __fractudaudq@GCC_4.3.0 1:4.3 + __fractudauha2@GCC_4.3.0 1:4.3 + __fractudauhq@GCC_4.3.0 1:4.3 + __fractudauqq@GCC_4.3.0 1:4.3 + __fractudausa2@GCC_4.3.0 1:4.3 + __fractudausq@GCC_4.3.0 1:4.3 + __fractudqda@GCC_4.3.0 1:4.3 + __fractudqdf@GCC_4.3.0 1:4.3 + __fractudqdi@GCC_4.3.0 1:4.3 + __fractudqdq@GCC_4.3.0 1:4.3 + __fractudqha@GCC_4.3.0 1:4.3 + __fractudqhi@GCC_4.3.0 1:4.3 + __fractudqhq@GCC_4.3.0 1:4.3 + __fractudqqi@GCC_4.3.0 1:4.3 + __fractudqqq@GCC_4.3.0 1:4.3 + __fractudqsa@GCC_4.3.0 1:4.3 + __fractudqsf@GCC_4.3.0 1:4.3 + __fractudqsi@GCC_4.3.0 1:4.3 + __fractudqsq@GCC_4.3.0 1:4.3 + __fractudquda@GCC_4.3.0 1:4.3 + __fractudquha@GCC_4.3.0 1:4.3 + __fractudquhq2@GCC_4.3.0 1:4.3 + __fractudquqq2@GCC_4.3.0 1:4.3 + __fractudqusa@GCC_4.3.0 1:4.3 + __fractudqusq2@GCC_4.3.0 1:4.3 + __fractuhada@GCC_4.3.0 1:4.3 + __fractuhadf@GCC_4.3.0 1:4.3 + __fractuhadi@GCC_4.3.0 1:4.3 + __fractuhadq@GCC_4.3.0 1:4.3 + __fractuhaha@GCC_4.3.0 1:4.3 + __fractuhahi@GCC_4.3.0 1:4.3 + __fractuhahq@GCC_4.3.0 1:4.3 + __fractuhaqi@GCC_4.3.0 1:4.3 + __fractuhaqq@GCC_4.3.0 1:4.3 + __fractuhasa@GCC_4.3.0 1:4.3 + __fractuhasf@GCC_4.3.0 1:4.3 + __fractuhasi@GCC_4.3.0 1:4.3 + __fractuhasq@GCC_4.3.0 1:4.3 + __fractuhauda2@GCC_4.3.0 1:4.3 + __fractuhaudq@GCC_4.3.0 1:4.3 + __fractuhauhq@GCC_4.3.0 1:4.3 + __fractuhauqq@GCC_4.3.0 1:4.3 + __fractuhausa2@GCC_4.3.0 1:4.3 + __fractuhausq@GCC_4.3.0 1:4.3 + __fractuhqda@GCC_4.3.0 1:4.3 + __fractuhqdf@GCC_4.3.0 1:4.3 + __fractuhqdi@GCC_4.3.0 1:4.3 + __fractuhqdq@GCC_4.3.0 1:4.3 + __fractuhqha@GCC_4.3.0 1:4.3 + __fractuhqhi@GCC_4.3.0 1:4.3 + __fractuhqhq@GCC_4.3.0 1:4.3 + __fractuhqqi@GCC_4.3.0 1:4.3 + __fractuhqqq@GCC_4.3.0 1:4.3 + __fractuhqsa@GCC_4.3.0 1:4.3 + __fractuhqsf@GCC_4.3.0 1:4.3 + __fractuhqsi@GCC_4.3.0 1:4.3 + __fractuhqsq@GCC_4.3.0 1:4.3 + __fractuhquda@GCC_4.3.0 1:4.3 + __fractuhqudq2@GCC_4.3.0 1:4.3 + __fractuhquha@GCC_4.3.0 1:4.3 + __fractuhquqq2@GCC_4.3.0 1:4.3 + __fractuhqusa@GCC_4.3.0 1:4.3 + __fractuhqusq2@GCC_4.3.0 1:4.3 + __fractunsdadi@GCC_4.3.0 1:4.3 + __fractunsdahi@GCC_4.3.0 1:4.3 + __fractunsdaqi@GCC_4.3.0 1:4.3 + __fractunsdasi@GCC_4.3.0 1:4.3 + __fractunsdida@GCC_4.3.0 1:4.3 + __fractunsdidq@GCC_4.3.0 1:4.3 + __fractunsdiha@GCC_4.3.0 1:4.3 + __fractunsdihq@GCC_4.3.0 1:4.3 + __fractunsdiqq@GCC_4.3.0 1:4.3 + __fractunsdisa@GCC_4.3.0 1:4.3 + __fractunsdisq@GCC_4.3.0 1:4.3 + __fractunsdiuda@GCC_4.3.0 1:4.3 + __fractunsdiudq@GCC_4.3.0 1:4.3 + __fractunsdiuha@GCC_4.3.0 1:4.3 + __fractunsdiuhq@GCC_4.3.0 1:4.3 + __fractunsdiuqq@GCC_4.3.0 1:4.3 + __fractunsdiusa@GCC_4.3.0 1:4.3 + __fractunsdiusq@GCC_4.3.0 1:4.3 + __fractunsdqdi@GCC_4.3.0 1:4.3 + __fractunsdqhi@GCC_4.3.0 1:4.3 + __fractunsdqqi@GCC_4.3.0 1:4.3 + __fractunsdqsi@GCC_4.3.0 1:4.3 + __fractunshadi@GCC_4.3.0 1:4.3 + __fractunshahi@GCC_4.3.0 1:4.3 + __fractunshaqi@GCC_4.3.0 1:4.3 + __fractunshasi@GCC_4.3.0 1:4.3 + __fractunshida@GCC_4.3.0 1:4.3 + __fractunshidq@GCC_4.3.0 1:4.3 + __fractunshiha@GCC_4.3.0 1:4.3 + __fractunshihq@GCC_4.3.0 1:4.3 + __fractunshiqq@GCC_4.3.0 1:4.3 + __fractunshisa@GCC_4.3.0 1:4.3 + __fractunshisq@GCC_4.3.0 1:4.3 + __fractunshiuda@GCC_4.3.0 1:4.3 + __fractunshiudq@GCC_4.3.0 1:4.3 + __fractunshiuha@GCC_4.3.0 1:4.3 + __fractunshiuhq@GCC_4.3.0 1:4.3 + __fractunshiuqq@GCC_4.3.0 1:4.3 + __fractunshiusa@GCC_4.3.0 1:4.3 + __fractunshiusq@GCC_4.3.0 1:4.3 + __fractunshqdi@GCC_4.3.0 1:4.3 + __fractunshqhi@GCC_4.3.0 1:4.3 + __fractunshqqi@GCC_4.3.0 1:4.3 + __fractunshqsi@GCC_4.3.0 1:4.3 + __fractunsqida@GCC_4.3.0 1:4.3 + __fractunsqidq@GCC_4.3.0 1:4.3 + __fractunsqiha@GCC_4.3.0 1:4.3 + __fractunsqihq@GCC_4.3.0 1:4.3 + __fractunsqiqq@GCC_4.3.0 1:4.3 + __fractunsqisa@GCC_4.3.0 1:4.3 + __fractunsqisq@GCC_4.3.0 1:4.3 + __fractunsqiuda@GCC_4.3.0 1:4.3 + __fractunsqiudq@GCC_4.3.0 1:4.3 + __fractunsqiuha@GCC_4.3.0 1:4.3 + __fractunsqiuhq@GCC_4.3.0 1:4.3 + __fractunsqiuqq@GCC_4.3.0 1:4.3 + __fractunsqiusa@GCC_4.3.0 1:4.3 + __fractunsqiusq@GCC_4.3.0 1:4.3 + __fractunsqqdi@GCC_4.3.0 1:4.3 + __fractunsqqhi@GCC_4.3.0 1:4.3 + __fractunsqqqi@GCC_4.3.0 1:4.3 + __fractunsqqsi@GCC_4.3.0 1:4.3 + __fractunssadi@GCC_4.3.0 1:4.3 + __fractunssahi@GCC_4.3.0 1:4.3 + __fractunssaqi@GCC_4.3.0 1:4.3 + __fractunssasi@GCC_4.3.0 1:4.3 + __fractunssida@GCC_4.3.0 1:4.3 + __fractunssidq@GCC_4.3.0 1:4.3 + __fractunssiha@GCC_4.3.0 1:4.3 + __fractunssihq@GCC_4.3.0 1:4.3 + __fractunssiqq@GCC_4.3.0 1:4.3 + __fractunssisa@GCC_4.3.0 1:4.3 + __fractunssisq@GCC_4.3.0 1:4.3 + __fractunssiuda@GCC_4.3.0 1:4.3 + __fractunssiudq@GCC_4.3.0 1:4.3 + __fractunssiuha@GCC_4.3.0 1:4.3 + __fractunssiuhq@GCC_4.3.0 1:4.3 + __fractunssiuqq@GCC_4.3.0 1:4.3 + __fractunssiusa@GCC_4.3.0 1:4.3 + __fractunssiusq@GCC_4.3.0 1:4.3 + __fractunssqdi@GCC_4.3.0 1:4.3 + __fractunssqhi@GCC_4.3.0 1:4.3 + __fractunssqqi@GCC_4.3.0 1:4.3 + __fractunssqsi@GCC_4.3.0 1:4.3 + __fractunsudadi@GCC_4.3.0 1:4.3 + __fractunsudahi@GCC_4.3.0 1:4.3 + __fractunsudaqi@GCC_4.3.0 1:4.3 + __fractunsudasi@GCC_4.3.0 1:4.3 + __fractunsudqdi@GCC_4.3.0 1:4.3 + __fractunsudqhi@GCC_4.3.0 1:4.3 + __fractunsudqqi@GCC_4.3.0 1:4.3 + __fractunsudqsi@GCC_4.3.0 1:4.3 + __fractunsuhadi@GCC_4.3.0 1:4.3 + __fractunsuhahi@GCC_4.3.0 1:4.3 + __fractunsuhaqi@GCC_4.3.0 1:4.3 + __fractunsuhasi@GCC_4.3.0 1:4.3 + __fractunsuhqdi@GCC_4.3.0 1:4.3 + __fractunsuhqhi@GCC_4.3.0 1:4.3 + __fractunsuhqqi@GCC_4.3.0 1:4.3 + __fractunsuhqsi@GCC_4.3.0 1:4.3 + __fractunsuqqdi@GCC_4.3.0 1:4.3 + __fractunsuqqhi@GCC_4.3.0 1:4.3 + __fractunsuqqqi@GCC_4.3.0 1:4.3 + __fractunsuqqsi@GCC_4.3.0 1:4.3 + __fractunsusadi@GCC_4.3.0 1:4.3 + __fractunsusahi@GCC_4.3.0 1:4.3 + __fractunsusaqi@GCC_4.3.0 1:4.3 + __fractunsusasi@GCC_4.3.0 1:4.3 + __fractunsusqdi@GCC_4.3.0 1:4.3 + __fractunsusqhi@GCC_4.3.0 1:4.3 + __fractunsusqqi@GCC_4.3.0 1:4.3 + __fractunsusqsi@GCC_4.3.0 1:4.3 + __fractuqqda@GCC_4.3.0 1:4.3 + __fractuqqdf@GCC_4.3.0 1:4.3 + __fractuqqdi@GCC_4.3.0 1:4.3 + __fractuqqdq@GCC_4.3.0 1:4.3 + __fractuqqha@GCC_4.3.0 1:4.3 + __fractuqqhi@GCC_4.3.0 1:4.3 + __fractuqqhq@GCC_4.3.0 1:4.3 + __fractuqqqi@GCC_4.3.0 1:4.3 + __fractuqqqq@GCC_4.3.0 1:4.3 + __fractuqqsa@GCC_4.3.0 1:4.3 + __fractuqqsf@GCC_4.3.0 1:4.3 + __fractuqqsi@GCC_4.3.0 1:4.3 + __fractuqqsq@GCC_4.3.0 1:4.3 + __fractuqquda@GCC_4.3.0 1:4.3 + __fractuqqudq2@GCC_4.3.0 1:4.3 + __fractuqquha@GCC_4.3.0 1:4.3 + __fractuqquhq2@GCC_4.3.0 1:4.3 + __fractuqqusa@GCC_4.3.0 1:4.3 + __fractuqqusq2@GCC_4.3.0 1:4.3 + __fractusada@GCC_4.3.0 1:4.3 + __fractusadf@GCC_4.3.0 1:4.3 + __fractusadi@GCC_4.3.0 1:4.3 + __fractusadq@GCC_4.3.0 1:4.3 + __fractusaha@GCC_4.3.0 1:4.3 + __fractusahi@GCC_4.3.0 1:4.3 + __fractusahq@GCC_4.3.0 1:4.3 + __fractusaqi@GCC_4.3.0 1:4.3 + __fractusaqq@GCC_4.3.0 1:4.3 + __fractusasa@GCC_4.3.0 1:4.3 + __fractusasf@GCC_4.3.0 1:4.3 + __fractusasi@GCC_4.3.0 1:4.3 + __fractusasq@GCC_4.3.0 1:4.3 + __fractusauda2@GCC_4.3.0 1:4.3 + __fractusaudq@GCC_4.3.0 1:4.3 + __fractusauha2@GCC_4.3.0 1:4.3 + __fractusauhq@GCC_4.3.0 1:4.3 + __fractusauqq@GCC_4.3.0 1:4.3 + __fractusausq@GCC_4.3.0 1:4.3 + __fractusqda@GCC_4.3.0 1:4.3 + __fractusqdf@GCC_4.3.0 1:4.3 + __fractusqdi@GCC_4.3.0 1:4.3 + __fractusqdq@GCC_4.3.0 1:4.3 + __fractusqha@GCC_4.3.0 1:4.3 + __fractusqhi@GCC_4.3.0 1:4.3 + __fractusqhq@GCC_4.3.0 1:4.3 + __fractusqqi@GCC_4.3.0 1:4.3 + __fractusqqq@GCC_4.3.0 1:4.3 + __fractusqsa@GCC_4.3.0 1:4.3 + __fractusqsf@GCC_4.3.0 1:4.3 + __fractusqsi@GCC_4.3.0 1:4.3 + __fractusqsq@GCC_4.3.0 1:4.3 + __fractusquda@GCC_4.3.0 1:4.3 + __fractusqudq2@GCC_4.3.0 1:4.3 + __fractusquha@GCC_4.3.0 1:4.3 + __fractusquhq2@GCC_4.3.0 1:4.3 + __fractusquqq2@GCC_4.3.0 1:4.3 + __fractusqusa@GCC_4.3.0 1:4.3 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __gedf2@GCC_3.0 1:4.1.1 + __gesf2@GCC_3.0 1:4.1.1 + __gtdf2@GCC_3.0 1:4.1.1 + __gtsf2@GCC_3.0 1:4.1.1 + __ledf2@GCC_3.0 1:4.1.1 + __lesf2@GCC_3.0 1:4.1.1 + __lshrdi3@GCC_3.0 1:4.1.1 + __lshruda3@GCC_4.3.0 1:4.3 + __lshrudq3@GCC_4.3.0 1:4.3 + __lshruha3@GCC_4.3.0 1:4.3 + __lshruhq3@GCC_4.3.0 1:4.3 + __lshruqq3@GCC_4.3.0 1:4.3 + __lshrusa3@GCC_4.3.0 1:4.3 + __lshrusq3@GCC_4.3.0 1:4.3 + __ltdf2@GCC_3.0 1:4.1.1 + __ltsf2@GCC_3.0 1:4.1.1 + __mips16_adddf3@GCC_4.4.0 1:4.4.0 + __mips16_addsf3@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_10@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_1@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_2@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_5@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_6@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_9@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_0@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_10@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_1@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_2@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_5@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_6@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_9@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_0@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_10@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_1@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_2@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_5@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_6@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_9@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_0@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_10@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_1@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_2@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_5@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_6@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_9@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_0@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_10@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_1@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_2@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_5@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_6@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_9@GCC_4.4.0 1:4.4.0 + __mips16_divdf3@GCC_4.4.0 1:4.4.0 + __mips16_divsf3@GCC_4.4.0 1:4.4.0 + __mips16_eqdf2@GCC_4.4.0 1:4.4.0 + __mips16_eqsf2@GCC_4.4.0 1:4.4.0 + __mips16_extendsfdf2@GCC_4.4.0 1:4.4.0 + __mips16_fix_truncdfsi@GCC_4.4.0 1:4.4.0 + __mips16_fix_truncsfsi@GCC_4.4.0 1:4.4.0 + __mips16_floatsidf@GCC_4.4.0 1:4.4.0 + __mips16_floatsisf@GCC_4.4.0 1:4.4.0 + __mips16_floatunsidf@GCC_4.4.0 1:4.4.0 + __mips16_floatunsisf@GCC_4.4.0 1:4.4.0 + __mips16_gedf2@GCC_4.4.0 1:4.4.0 + __mips16_gesf2@GCC_4.4.0 1:4.4.0 + __mips16_gtdf2@GCC_4.4.0 1:4.4.0 + __mips16_gtsf2@GCC_4.4.0 1:4.4.0 + __mips16_ledf2@GCC_4.4.0 1:4.4.0 + __mips16_lesf2@GCC_4.4.0 1:4.4.0 + __mips16_ltdf2@GCC_4.4.0 1:4.4.0 + __mips16_ltsf2@GCC_4.4.0 1:4.4.0 + __mips16_muldf3@GCC_4.4.0 1:4.4.0 + __mips16_mulsf3@GCC_4.4.0 1:4.4.0 + __mips16_nedf2@GCC_4.4.0 1:4.4.0 + __mips16_nesf2@GCC_4.4.0 1:4.4.0 + __mips16_ret_dc@GCC_4.4.0 1:4.4.0 + __mips16_ret_df@GCC_4.4.0 1:4.4.0 + __mips16_ret_sc@GCC_4.4.0 1:4.4.0 + __mips16_ret_sf@GCC_4.4.0 1:4.4.0 + __mips16_subdf3@GCC_4.4.0 1:4.4.0 + __mips16_subsf3@GCC_4.4.0 1:4.4.0 + __mips16_truncdfsf2@GCC_4.4.0 1:4.4.0 + __moddi3@GLIBC_2.0 1:4.1.1 + __mulda3@GCC_4.3.0 1:4.3 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldf3@GCC_3.0 1:4.1.1 + __muldi3@GCC_3.0 1:4.1.1 + __muldq3@GCC_4.3.0 1:4.3 + __mulha3@GCC_4.3.0 1:4.3 + __mulhq3@GCC_4.3.0 1:4.3 + __mulqq3@GCC_4.3.0 1:4.3 + __mulsa3@GCC_4.3.0 1:4.3 + __mulsc3@GCC_4.0.0 1:4.1.1 + __mulsf3@GCC_3.0 1:4.1.1 + __mulsq3@GCC_4.3.0 1:4.3 + __muluda3@GCC_4.3.0 1:4.3 + __muludq3@GCC_4.3.0 1:4.3 + __muluha3@GCC_4.3.0 1:4.3 + __muluhq3@GCC_4.3.0 1:4.3 + __muluqq3@GCC_4.3.0 1:4.3 + __mulusa3@GCC_4.3.0 1:4.3 + __mulusq3@GCC_4.3.0 1:4.3 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __nedf2@GCC_3.0 1:4.1.1 + __negda2@GCC_4.3.0 1:4.3 + __negdf2@GCC_3.0 1:4.1.1 + __negdi2@GCC_3.0 1:4.1.1 + __negdq2@GCC_4.3.0 1:4.3 + __negha2@GCC_4.3.0 1:4.3 + __neghq2@GCC_4.3.0 1:4.3 + __negqq2@GCC_4.3.0 1:4.3 + __negsa2@GCC_4.3.0 1:4.3 + __negsf2@GCC_3.0 1:4.1.1 + __negsq2@GCC_4.3.0 1:4.3 + __neguda2@GCC_4.3.0 1:4.3 + __negudq2@GCC_4.3.0 1:4.3 + __neguha2@GCC_4.3.0 1:4.3 + __neguhq2@GCC_4.3.0 1:4.3 + __neguqq2@GCC_4.3.0 1:4.3 + __negusa2@GCC_4.3.0 1:4.3 + __negusq2@GCC_4.3.0 1:4.3 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __nesf2@GCC_3.0 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __paritysi2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountsi2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __satfractdadq@GCC_4.3.0 1:4.3 + __satfractdaha2@GCC_4.3.0 1:4.3 + __satfractdahq@GCC_4.3.0 1:4.3 + __satfractdaqq@GCC_4.3.0 1:4.3 + __satfractdasa2@GCC_4.3.0 1:4.3 + __satfractdasq@GCC_4.3.0 1:4.3 + __satfractdauda@GCC_4.3.0 1:4.3 + __satfractdaudq@GCC_4.3.0 1:4.3 + __satfractdauha@GCC_4.3.0 1:4.3 + __satfractdauhq@GCC_4.3.0 1:4.3 + __satfractdauqq@GCC_4.3.0 1:4.3 + __satfractdausa@GCC_4.3.0 1:4.3 + __satfractdausq@GCC_4.3.0 1:4.3 + __satfractdfda@GCC_4.3.0 1:4.3 + __satfractdfdq@GCC_4.3.0 1:4.3 + __satfractdfha@GCC_4.3.0 1:4.3 + __satfractdfhq@GCC_4.3.0 1:4.3 + __satfractdfqq@GCC_4.3.0 1:4.3 + __satfractdfsa@GCC_4.3.0 1:4.3 + __satfractdfsq@GCC_4.3.0 1:4.3 + __satfractdfuda@GCC_4.3.0 1:4.3 + __satfractdfudq@GCC_4.3.0 1:4.3 + __satfractdfuha@GCC_4.3.0 1:4.3 + __satfractdfuhq@GCC_4.3.0 1:4.3 + __satfractdfuqq@GCC_4.3.0 1:4.3 + __satfractdfusa@GCC_4.3.0 1:4.3 + __satfractdfusq@GCC_4.3.0 1:4.3 + __satfractdida@GCC_4.3.0 1:4.3 + __satfractdidq@GCC_4.3.0 1:4.3 + __satfractdiha@GCC_4.3.0 1:4.3 + __satfractdihq@GCC_4.3.0 1:4.3 + __satfractdiqq@GCC_4.3.0 1:4.3 + __satfractdisa@GCC_4.3.0 1:4.3 + __satfractdisq@GCC_4.3.0 1:4.3 + __satfractdiuda@GCC_4.3.0 1:4.3 + __satfractdiudq@GCC_4.3.0 1:4.3 + __satfractdiuha@GCC_4.3.0 1:4.3 + __satfractdiuhq@GCC_4.3.0 1:4.3 + __satfractdiuqq@GCC_4.3.0 1:4.3 + __satfractdiusa@GCC_4.3.0 1:4.3 + __satfractdiusq@GCC_4.3.0 1:4.3 + __satfractdqda@GCC_4.3.0 1:4.3 + __satfractdqha@GCC_4.3.0 1:4.3 + __satfractdqhq2@GCC_4.3.0 1:4.3 + __satfractdqqq2@GCC_4.3.0 1:4.3 + __satfractdqsa@GCC_4.3.0 1:4.3 + __satfractdqsq2@GCC_4.3.0 1:4.3 + __satfractdquda@GCC_4.3.0 1:4.3 + __satfractdqudq@GCC_4.3.0 1:4.3 + __satfractdquha@GCC_4.3.0 1:4.3 + __satfractdquhq@GCC_4.3.0 1:4.3 + __satfractdquqq@GCC_4.3.0 1:4.3 + __satfractdqusa@GCC_4.3.0 1:4.3 + __satfractdqusq@GCC_4.3.0 1:4.3 + __satfracthada2@GCC_4.3.0 1:4.3 + __satfracthadq@GCC_4.3.0 1:4.3 + __satfracthahq@GCC_4.3.0 1:4.3 + __satfracthaqq@GCC_4.3.0 1:4.3 + __satfracthasa2@GCC_4.3.0 1:4.3 + __satfracthasq@GCC_4.3.0 1:4.3 + __satfracthauda@GCC_4.3.0 1:4.3 + __satfracthaudq@GCC_4.3.0 1:4.3 + __satfracthauha@GCC_4.3.0 1:4.3 + __satfracthauhq@GCC_4.3.0 1:4.3 + __satfracthauqq@GCC_4.3.0 1:4.3 + __satfracthausa@GCC_4.3.0 1:4.3 + __satfracthausq@GCC_4.3.0 1:4.3 + __satfracthida@GCC_4.3.0 1:4.3 + __satfracthidq@GCC_4.3.0 1:4.3 + __satfracthiha@GCC_4.3.0 1:4.3 + __satfracthihq@GCC_4.3.0 1:4.3 + __satfracthiqq@GCC_4.3.0 1:4.3 + __satfracthisa@GCC_4.3.0 1:4.3 + __satfracthisq@GCC_4.3.0 1:4.3 + __satfracthiuda@GCC_4.3.0 1:4.3 + __satfracthiudq@GCC_4.3.0 1:4.3 + __satfracthiuha@GCC_4.3.0 1:4.3 + __satfracthiuhq@GCC_4.3.0 1:4.3 + __satfracthiuqq@GCC_4.3.0 1:4.3 + __satfracthiusa@GCC_4.3.0 1:4.3 + __satfracthiusq@GCC_4.3.0 1:4.3 + __satfracthqda@GCC_4.3.0 1:4.3 + __satfracthqdq2@GCC_4.3.0 1:4.3 + __satfracthqha@GCC_4.3.0 1:4.3 + __satfracthqqq2@GCC_4.3.0 1:4.3 + __satfracthqsa@GCC_4.3.0 1:4.3 + __satfracthqsq2@GCC_4.3.0 1:4.3 + __satfracthquda@GCC_4.3.0 1:4.3 + __satfracthqudq@GCC_4.3.0 1:4.3 + __satfracthquha@GCC_4.3.0 1:4.3 + __satfracthquhq@GCC_4.3.0 1:4.3 + __satfracthquqq@GCC_4.3.0 1:4.3 + __satfracthqusa@GCC_4.3.0 1:4.3 + __satfracthqusq@GCC_4.3.0 1:4.3 + __satfractqida@GCC_4.3.0 1:4.3 + __satfractqidq@GCC_4.3.0 1:4.3 + __satfractqiha@GCC_4.3.0 1:4.3 + __satfractqihq@GCC_4.3.0 1:4.3 + __satfractqiqq@GCC_4.3.0 1:4.3 + __satfractqisa@GCC_4.3.0 1:4.3 + __satfractqisq@GCC_4.3.0 1:4.3 + __satfractqiuda@GCC_4.3.0 1:4.3 + __satfractqiudq@GCC_4.3.0 1:4.3 + __satfractqiuha@GCC_4.3.0 1:4.3 + __satfractqiuhq@GCC_4.3.0 1:4.3 + __satfractqiuqq@GCC_4.3.0 1:4.3 + __satfractqiusa@GCC_4.3.0 1:4.3 + __satfractqiusq@GCC_4.3.0 1:4.3 + __satfractqqda@GCC_4.3.0 1:4.3 + __satfractqqdq2@GCC_4.3.0 1:4.3 + __satfractqqha@GCC_4.3.0 1:4.3 + __satfractqqhq2@GCC_4.3.0 1:4.3 + __satfractqqsa@GCC_4.3.0 1:4.3 + __satfractqqsq2@GCC_4.3.0 1:4.3 + __satfractqquda@GCC_4.3.0 1:4.3 + __satfractqqudq@GCC_4.3.0 1:4.3 + __satfractqquha@GCC_4.3.0 1:4.3 + __satfractqquhq@GCC_4.3.0 1:4.3 + __satfractqquqq@GCC_4.3.0 1:4.3 + __satfractqqusa@GCC_4.3.0 1:4.3 + __satfractqqusq@GCC_4.3.0 1:4.3 + __satfractsada2@GCC_4.3.0 1:4.3 + __satfractsadq@GCC_4.3.0 1:4.3 + __satfractsaha2@GCC_4.3.0 1:4.3 + __satfractsahq@GCC_4.3.0 1:4.3 + __satfractsaqq@GCC_4.3.0 1:4.3 + __satfractsasq@GCC_4.3.0 1:4.3 + __satfractsauda@GCC_4.3.0 1:4.3 + __satfractsaudq@GCC_4.3.0 1:4.3 + __satfractsauha@GCC_4.3.0 1:4.3 + __satfractsauhq@GCC_4.3.0 1:4.3 + __satfractsauqq@GCC_4.3.0 1:4.3 + __satfractsausa@GCC_4.3.0 1:4.3 + __satfractsausq@GCC_4.3.0 1:4.3 + __satfractsfda@GCC_4.3.0 1:4.3 + __satfractsfdq@GCC_4.3.0 1:4.3 + __satfractsfha@GCC_4.3.0 1:4.3 + __satfractsfhq@GCC_4.3.0 1:4.3 + __satfractsfqq@GCC_4.3.0 1:4.3 + __satfractsfsa@GCC_4.3.0 1:4.3 + __satfractsfsq@GCC_4.3.0 1:4.3 + __satfractsfuda@GCC_4.3.0 1:4.3 + __satfractsfudq@GCC_4.3.0 1:4.3 + __satfractsfuha@GCC_4.3.0 1:4.3 + __satfractsfuhq@GCC_4.3.0 1:4.3 + __satfractsfuqq@GCC_4.3.0 1:4.3 + __satfractsfusa@GCC_4.3.0 1:4.3 + __satfractsfusq@GCC_4.3.0 1:4.3 + __satfractsida@GCC_4.3.0 1:4.3 + __satfractsidq@GCC_4.3.0 1:4.3 + __satfractsiha@GCC_4.3.0 1:4.3 + __satfractsihq@GCC_4.3.0 1:4.3 + __satfractsiqq@GCC_4.3.0 1:4.3 + __satfractsisa@GCC_4.3.0 1:4.3 + __satfractsisq@GCC_4.3.0 1:4.3 + __satfractsiuda@GCC_4.3.0 1:4.3 + __satfractsiudq@GCC_4.3.0 1:4.3 + __satfractsiuha@GCC_4.3.0 1:4.3 + __satfractsiuhq@GCC_4.3.0 1:4.3 + __satfractsiuqq@GCC_4.3.0 1:4.3 + __satfractsiusa@GCC_4.3.0 1:4.3 + __satfractsiusq@GCC_4.3.0 1:4.3 + __satfractsqda@GCC_4.3.0 1:4.3 + __satfractsqdq2@GCC_4.3.0 1:4.3 + __satfractsqha@GCC_4.3.0 1:4.3 + __satfractsqhq2@GCC_4.3.0 1:4.3 + __satfractsqqq2@GCC_4.3.0 1:4.3 + __satfractsqsa@GCC_4.3.0 1:4.3 + __satfractsquda@GCC_4.3.0 1:4.3 + __satfractsqudq@GCC_4.3.0 1:4.3 + __satfractsquha@GCC_4.3.0 1:4.3 + __satfractsquhq@GCC_4.3.0 1:4.3 + __satfractsquqq@GCC_4.3.0 1:4.3 + __satfractsqusa@GCC_4.3.0 1:4.3 + __satfractsqusq@GCC_4.3.0 1:4.3 + __satfractudada@GCC_4.3.0 1:4.3 + __satfractudadq@GCC_4.3.0 1:4.3 + __satfractudaha@GCC_4.3.0 1:4.3 + __satfractudahq@GCC_4.3.0 1:4.3 + __satfractudaqq@GCC_4.3.0 1:4.3 + __satfractudasa@GCC_4.3.0 1:4.3 + __satfractudasq@GCC_4.3.0 1:4.3 + __satfractudaudq@GCC_4.3.0 1:4.3 + __satfractudauha2@GCC_4.3.0 1:4.3 + __satfractudauhq@GCC_4.3.0 1:4.3 + __satfractudauqq@GCC_4.3.0 1:4.3 + __satfractudausa2@GCC_4.3.0 1:4.3 + __satfractudausq@GCC_4.3.0 1:4.3 + __satfractudqda@GCC_4.3.0 1:4.3 + __satfractudqdq@GCC_4.3.0 1:4.3 + __satfractudqha@GCC_4.3.0 1:4.3 + __satfractudqhq@GCC_4.3.0 1:4.3 + __satfractudqqq@GCC_4.3.0 1:4.3 + __satfractudqsa@GCC_4.3.0 1:4.3 + __satfractudqsq@GCC_4.3.0 1:4.3 + __satfractudquda@GCC_4.3.0 1:4.3 + __satfractudquha@GCC_4.3.0 1:4.3 + __satfractudquhq2@GCC_4.3.0 1:4.3 + __satfractudquqq2@GCC_4.3.0 1:4.3 + __satfractudqusa@GCC_4.3.0 1:4.3 + __satfractudqusq2@GCC_4.3.0 1:4.3 + __satfractuhada@GCC_4.3.0 1:4.3 + __satfractuhadq@GCC_4.3.0 1:4.3 + __satfractuhaha@GCC_4.3.0 1:4.3 + __satfractuhahq@GCC_4.3.0 1:4.3 + __satfractuhaqq@GCC_4.3.0 1:4.3 + __satfractuhasa@GCC_4.3.0 1:4.3 + __satfractuhasq@GCC_4.3.0 1:4.3 + __satfractuhauda2@GCC_4.3.0 1:4.3 + __satfractuhaudq@GCC_4.3.0 1:4.3 + __satfractuhauhq@GCC_4.3.0 1:4.3 + __satfractuhauqq@GCC_4.3.0 1:4.3 + __satfractuhausa2@GCC_4.3.0 1:4.3 + __satfractuhausq@GCC_4.3.0 1:4.3 + __satfractuhqda@GCC_4.3.0 1:4.3 + __satfractuhqdq@GCC_4.3.0 1:4.3 + __satfractuhqha@GCC_4.3.0 1:4.3 + __satfractuhqhq@GCC_4.3.0 1:4.3 + __satfractuhqqq@GCC_4.3.0 1:4.3 + __satfractuhqsa@GCC_4.3.0 1:4.3 + __satfractuhqsq@GCC_4.3.0 1:4.3 + __satfractuhquda@GCC_4.3.0 1:4.3 + __satfractuhqudq2@GCC_4.3.0 1:4.3 + __satfractuhquha@GCC_4.3.0 1:4.3 + __satfractuhquqq2@GCC_4.3.0 1:4.3 + __satfractuhqusa@GCC_4.3.0 1:4.3 + __satfractuhqusq2@GCC_4.3.0 1:4.3 + __satfractunsdida@GCC_4.3.0 1:4.3 + __satfractunsdidq@GCC_4.3.0 1:4.3 + __satfractunsdiha@GCC_4.3.0 1:4.3 + __satfractunsdihq@GCC_4.3.0 1:4.3 + __satfractunsdiqq@GCC_4.3.0 1:4.3 + __satfractunsdisa@GCC_4.3.0 1:4.3 + __satfractunsdisq@GCC_4.3.0 1:4.3 + __satfractunsdiuda@GCC_4.3.0 1:4.3 + __satfractunsdiudq@GCC_4.3.0 1:4.3 + __satfractunsdiuha@GCC_4.3.0 1:4.3 + __satfractunsdiuhq@GCC_4.3.0 1:4.3 + __satfractunsdiuqq@GCC_4.3.0 1:4.3 + __satfractunsdiusa@GCC_4.3.0 1:4.3 + __satfractunsdiusq@GCC_4.3.0 1:4.3 + __satfractunshida@GCC_4.3.0 1:4.3 + __satfractunshidq@GCC_4.3.0 1:4.3 + __satfractunshiha@GCC_4.3.0 1:4.3 + __satfractunshihq@GCC_4.3.0 1:4.3 + __satfractunshiqq@GCC_4.3.0 1:4.3 + __satfractunshisa@GCC_4.3.0 1:4.3 + __satfractunshisq@GCC_4.3.0 1:4.3 + __satfractunshiuda@GCC_4.3.0 1:4.3 + __satfractunshiudq@GCC_4.3.0 1:4.3 + __satfractunshiuha@GCC_4.3.0 1:4.3 + __satfractunshiuhq@GCC_4.3.0 1:4.3 + __satfractunshiuqq@GCC_4.3.0 1:4.3 + __satfractunshiusa@GCC_4.3.0 1:4.3 + __satfractunshiusq@GCC_4.3.0 1:4.3 + __satfractunsqida@GCC_4.3.0 1:4.3 + __satfractunsqidq@GCC_4.3.0 1:4.3 + __satfractunsqiha@GCC_4.3.0 1:4.3 + __satfractunsqihq@GCC_4.3.0 1:4.3 + __satfractunsqiqq@GCC_4.3.0 1:4.3 + __satfractunsqisa@GCC_4.3.0 1:4.3 + __satfractunsqisq@GCC_4.3.0 1:4.3 + __satfractunsqiuda@GCC_4.3.0 1:4.3 + __satfractunsqiudq@GCC_4.3.0 1:4.3 + __satfractunsqiuha@GCC_4.3.0 1:4.3 + __satfractunsqiuhq@GCC_4.3.0 1:4.3 + __satfractunsqiuqq@GCC_4.3.0 1:4.3 + __satfractunsqiusa@GCC_4.3.0 1:4.3 + __satfractunsqiusq@GCC_4.3.0 1:4.3 + __satfractunssida@GCC_4.3.0 1:4.3 + __satfractunssidq@GCC_4.3.0 1:4.3 + __satfractunssiha@GCC_4.3.0 1:4.3 + __satfractunssihq@GCC_4.3.0 1:4.3 + __satfractunssiqq@GCC_4.3.0 1:4.3 + __satfractunssisa@GCC_4.3.0 1:4.3 + __satfractunssisq@GCC_4.3.0 1:4.3 + __satfractunssiuda@GCC_4.3.0 1:4.3 + __satfractunssiudq@GCC_4.3.0 1:4.3 + __satfractunssiuha@GCC_4.3.0 1:4.3 + __satfractunssiuhq@GCC_4.3.0 1:4.3 + __satfractunssiuqq@GCC_4.3.0 1:4.3 + __satfractunssiusa@GCC_4.3.0 1:4.3 + __satfractunssiusq@GCC_4.3.0 1:4.3 + __satfractuqqda@GCC_4.3.0 1:4.3 + __satfractuqqdq@GCC_4.3.0 1:4.3 + __satfractuqqha@GCC_4.3.0 1:4.3 + __satfractuqqhq@GCC_4.3.0 1:4.3 + __satfractuqqqq@GCC_4.3.0 1:4.3 + __satfractuqqsa@GCC_4.3.0 1:4.3 + __satfractuqqsq@GCC_4.3.0 1:4.3 + __satfractuqquda@GCC_4.3.0 1:4.3 + __satfractuqqudq2@GCC_4.3.0 1:4.3 + __satfractuqquha@GCC_4.3.0 1:4.3 + __satfractuqquhq2@GCC_4.3.0 1:4.3 + __satfractuqqusa@GCC_4.3.0 1:4.3 + __satfractuqqusq2@GCC_4.3.0 1:4.3 + __satfractusada@GCC_4.3.0 1:4.3 + __satfractusadq@GCC_4.3.0 1:4.3 + __satfractusaha@GCC_4.3.0 1:4.3 + __satfractusahq@GCC_4.3.0 1:4.3 + __satfractusaqq@GCC_4.3.0 1:4.3 + __satfractusasa@GCC_4.3.0 1:4.3 + __satfractusasq@GCC_4.3.0 1:4.3 + __satfractusauda2@GCC_4.3.0 1:4.3 + __satfractusaudq@GCC_4.3.0 1:4.3 + __satfractusauha2@GCC_4.3.0 1:4.3 + __satfractusauhq@GCC_4.3.0 1:4.3 + __satfractusauqq@GCC_4.3.0 1:4.3 + __satfractusausq@GCC_4.3.0 1:4.3 + __satfractusqda@GCC_4.3.0 1:4.3 + __satfractusqdq@GCC_4.3.0 1:4.3 + __satfractusqha@GCC_4.3.0 1:4.3 + __satfractusqhq@GCC_4.3.0 1:4.3 + __satfractusqqq@GCC_4.3.0 1:4.3 + __satfractusqsa@GCC_4.3.0 1:4.3 + __satfractusqsq@GCC_4.3.0 1:4.3 + __satfractusquda@GCC_4.3.0 1:4.3 + __satfractusqudq2@GCC_4.3.0 1:4.3 + __satfractusquha@GCC_4.3.0 1:4.3 + __satfractusquhq2@GCC_4.3.0 1:4.3 + __satfractusquqq2@GCC_4.3.0 1:4.3 + __satfractusqusa@GCC_4.3.0 1:4.3 + __ssaddda3@GCC_4.3.0 1:4.3 + __ssadddq3@GCC_4.3.0 1:4.3 + __ssaddha3@GCC_4.3.0 1:4.3 + __ssaddhq3@GCC_4.3.0 1:4.3 + __ssaddqq3@GCC_4.3.0 1:4.3 + __ssaddsa3@GCC_4.3.0 1:4.3 + __ssaddsq3@GCC_4.3.0 1:4.3 + __ssashlda3@GCC_4.3.0 1:4.3 + __ssashldq3@GCC_4.3.0 1:4.3 + __ssashlha3@GCC_4.3.0 1:4.3 + __ssashlhq3@GCC_4.3.0 1:4.3 + __ssashlqq3@GCC_4.3.0 1:4.3 + __ssashlsa3@GCC_4.3.0 1:4.3 + __ssashlsq3@GCC_4.3.0 1:4.3 + __ssdivda3@GCC_4.3.0 1:4.3 + __ssdivdq3@GCC_4.3.0 1:4.3 + __ssdivha3@GCC_4.3.0 1:4.3 + __ssdivhq3@GCC_4.3.0 1:4.3 + __ssdivqq3@GCC_4.3.0 1:4.3 + __ssdivsa3@GCC_4.3.0 1:4.3 + __ssdivsq3@GCC_4.3.0 1:4.3 + __ssmulda3@GCC_4.3.0 1:4.3 + __ssmuldq3@GCC_4.3.0 1:4.3 + __ssmulha3@GCC_4.3.0 1:4.3 + __ssmulhq3@GCC_4.3.0 1:4.3 + __ssmulqq3@GCC_4.3.0 1:4.3 + __ssmulsa3@GCC_4.3.0 1:4.3 + __ssmulsq3@GCC_4.3.0 1:4.3 + __ssnegda2@GCC_4.3.0 1:4.3 + __ssnegdq2@GCC_4.3.0 1:4.3 + __ssnegha2@GCC_4.3.0 1:4.3 + __ssneghq2@GCC_4.3.0 1:4.3 + __ssnegqq2@GCC_4.3.0 1:4.3 + __ssnegsa2@GCC_4.3.0 1:4.3 + __ssnegsq2@GCC_4.3.0 1:4.3 + __sssubda3@GCC_4.3.0 1:4.3 + __sssubdq3@GCC_4.3.0 1:4.3 + __sssubha3@GCC_4.3.0 1:4.3 + __sssubhq3@GCC_4.3.0 1:4.3 + __sssubqq3@GCC_4.3.0 1:4.3 + __sssubsa3@GCC_4.3.0 1:4.3 + __sssubsq3@GCC_4.3.0 1:4.3 + __subda3@GCC_4.3.0 1:4.3 + __subdf3@GCC_3.0 1:4.1.1 + __subdq3@GCC_4.3.0 1:4.3 + __subha3@GCC_4.3.0 1:4.3 + __subhq3@GCC_4.3.0 1:4.3 + __subqq3@GCC_4.3.0 1:4.3 + __subsa3@GCC_4.3.0 1:4.3 + __subsf3@GCC_3.0 1:4.1.1 + __subsq3@GCC_4.3.0 1:4.3 + __subuda3@GCC_4.3.0 1:4.3 + __subudq3@GCC_4.3.0 1:4.3 + __subuha3@GCC_4.3.0 1:4.3 + __subuhq3@GCC_4.3.0 1:4.3 + __subuqq3@GCC_4.3.0 1:4.3 + __subusa3@GCC_4.3.0 1:4.3 + __subusq3@GCC_4.3.0 1:4.3 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __sync_add_and_fetch_1@GCC_4.4.0 1:4.4.0 + __sync_add_and_fetch_2@GCC_4.4.0 1:4.4.0 + __sync_add_and_fetch_4@GCC_4.4.0 1:4.4.0 + __sync_and_and_fetch_1@GCC_4.4.0 1:4.4.0 + __sync_and_and_fetch_2@GCC_4.4.0 1:4.4.0 + __sync_and_and_fetch_4@GCC_4.4.0 1:4.4.0 + __sync_bool_compare_and_swap_1@GCC_4.4.0 1:4.4.0 + __sync_bool_compare_and_swap_2@GCC_4.4.0 1:4.4.0 + __sync_bool_compare_and_swap_4@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_add_1@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_add_2@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_add_4@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_and_1@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_and_2@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_and_4@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_nand_1@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_nand_2@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_nand_4@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_or_1@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_or_2@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_or_4@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_sub_1@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_sub_2@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_sub_4@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_xor_1@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_xor_2@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_xor_4@GCC_4.4.0 1:4.4.0 + __sync_lock_test_and_set_1@GCC_4.4.0 1:4.4.0 + __sync_lock_test_and_set_2@GCC_4.4.0 1:4.4.0 + __sync_lock_test_and_set_4@GCC_4.4.0 1:4.4.0 + __sync_nand_and_fetch_1@GCC_4.4.0 1:4.4.0 + __sync_nand_and_fetch_2@GCC_4.4.0 1:4.4.0 + __sync_nand_and_fetch_4@GCC_4.4.0 1:4.4.0 + __sync_or_and_fetch_1@GCC_4.4.0 1:4.4.0 + __sync_or_and_fetch_2@GCC_4.4.0 1:4.4.0 + __sync_or_and_fetch_4@GCC_4.4.0 1:4.4.0 + __sync_sub_and_fetch_1@GCC_4.4.0 1:4.4.0 + __sync_sub_and_fetch_2@GCC_4.4.0 1:4.4.0 + __sync_sub_and_fetch_4@GCC_4.4.0 1:4.4.0 + __sync_synchronize@GCC_4.4.0 1:4.4.0 + __sync_val_compare_and_swap_1@GCC_4.4.0 1:4.4.0 + __sync_val_compare_and_swap_2@GCC_4.4.0 1:4.4.0 + __sync_val_compare_and_swap_4@GCC_4.4.0 1:4.4.0 + __sync_xor_and_fetch_1@GCC_4.4.0 1:4.4.0 + __sync_xor_and_fetch_2@GCC_4.4.0 1:4.4.0 + __sync_xor_and_fetch_4@GCC_4.4.0 1:4.4.0 + __truncdfsf2@GCC_3.0 1:4.1.1 + __ucmpdi2@GCC_3.0 1:4.1.1 + __udivdi3@GLIBC_2.0 1:4.1.1 + __udivmoddi4@GCC_3.0 1:4.1.1 + __udivuda3@GCC_4.3.0 1:4.3 + __udivudq3@GCC_4.3.0 1:4.3 + __udivuha3@GCC_4.3.0 1:4.3 + __udivuhq3@GCC_4.3.0 1:4.3 + __udivuqq3@GCC_4.3.0 1:4.3 + __udivusa3@GCC_4.3.0 1:4.3 + __udivusq3@GCC_4.3.0 1:4.3 + __umoddi3@GLIBC_2.0 1:4.1.1 + __unorddf2@GCC_3.3.4 1:4.1.1 + __unordsf2@GCC_3.3.4 1:4.1.1 + __usadduda3@GCC_4.3.0 1:4.3 + __usaddudq3@GCC_4.3.0 1:4.3 + __usadduha3@GCC_4.3.0 1:4.3 + __usadduhq3@GCC_4.3.0 1:4.3 + __usadduqq3@GCC_4.3.0 1:4.3 + __usaddusa3@GCC_4.3.0 1:4.3 + __usaddusq3@GCC_4.3.0 1:4.3 + __usashluda3@GCC_4.3.0 1:4.3 + __usashludq3@GCC_4.3.0 1:4.3 + __usashluha3@GCC_4.3.0 1:4.3 + __usashluhq3@GCC_4.3.0 1:4.3 + __usashluqq3@GCC_4.3.0 1:4.3 + __usashlusa3@GCC_4.3.0 1:4.3 + __usashlusq3@GCC_4.3.0 1:4.3 + __usdivuda3@GCC_4.3.0 1:4.3 + __usdivudq3@GCC_4.3.0 1:4.3 + __usdivuha3@GCC_4.3.0 1:4.3 + __usdivuhq3@GCC_4.3.0 1:4.3 + __usdivuqq3@GCC_4.3.0 1:4.3 + __usdivusa3@GCC_4.3.0 1:4.3 + __usdivusq3@GCC_4.3.0 1:4.3 + __usmuluda3@GCC_4.3.0 1:4.3 + __usmuludq3@GCC_4.3.0 1:4.3 + __usmuluha3@GCC_4.3.0 1:4.3 + __usmuluhq3@GCC_4.3.0 1:4.3 + __usmuluqq3@GCC_4.3.0 1:4.3 + __usmulusa3@GCC_4.3.0 1:4.3 + __usmulusq3@GCC_4.3.0 1:4.3 + __usneguda2@GCC_4.3.0 1:4.3 + __usnegudq2@GCC_4.3.0 1:4.3 + __usneguha2@GCC_4.3.0 1:4.3 + __usneguhq2@GCC_4.3.0 1:4.3 + __usneguqq2@GCC_4.3.0 1:4.3 + __usnegusa2@GCC_4.3.0 1:4.3 + __usnegusq2@GCC_4.3.0 1:4.3 + __ussubuda3@GCC_4.3.0 1:4.3 + __ussubudq3@GCC_4.3.0 1:4.3 + __ussubuha3@GCC_4.3.0 1:4.3 + __ussubuhq3@GCC_4.3.0 1:4.3 + __ussubuqq3@GCC_4.3.0 1:4.3 + __ussubusa3@GCC_4.3.0 1:4.3 + __ussubusq3@GCC_4.3.0 1:4.3 --- gcc-4.9-4.9.2.orig/debian/libgcc1.symbols.powerpc +++ gcc-4.9-4.9.2/debian/libgcc1.symbols.powerpc @@ -0,0 +1,142 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3.4@GCC_3.3.4 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.1.0@GCC_4.1.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __adddf3@GCC_3.0 1:4.1.1 + __addsf3@GCC_3.0 1:4.1.1 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __ashldi3@GCC_3.0 1:4.1.1 + __ashrdi3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbsi2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzsi2@GCC_3.4 1:4.1.1 + __cmpdi2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzsi2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdf3@GCC_3.0 1:4.1.1 + __divdi3@GLIBC_2.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divsf3@GCC_3.0 1:4.1.1 + __divtc3@GCC_4.1.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqdf2@GCC_3.0 1:4.1.1 + __eqsf2@GCC_3.0 1:4.1.1 + __extendsfdf2@GCC_3.0 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixdfsi@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixsfsi@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_4.1.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_4.1.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_4.1.0 1:4.1.1 + __floatsidf@GCC_3.0 1:4.1.1 + __floatsisf@GCC_3.0 1:4.1.1 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.2.0 1:4.2.1 + __floatunsidf@GCC_4.2.0 1:4.2.1 + __floatunsisf@GCC_4.2.0 1:4.2.1 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __gcc_qadd@GCC_4.1.0 1:4.1.1 + __gcc_qdiv@GCC_4.1.0 1:4.1.1 + __gcc_qmul@GCC_4.1.0 1:4.1.1 + __gcc_qsub@GCC_4.1.0 1:4.1.1 + __gedf2@GCC_3.0 1:4.1.1 + __gesf2@GCC_3.0 1:4.1.1 + __gtdf2@GCC_3.0 1:4.1.1 + __gtsf2@GCC_3.0 1:4.1.1 + __ledf2@GCC_3.0 1:4.1.1 + __lesf2@GCC_3.0 1:4.1.1 + __lshrdi3@GCC_3.0 1:4.1.1 + __ltdf2@GCC_3.0 1:4.1.1 + __ltsf2@GCC_3.0 1:4.1.1 + __moddi3@GLIBC_2.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldf3@GCC_3.0 1:4.1.1 + __muldi3@GCC_3.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __mulsf3@GCC_3.0 1:4.1.1 + __multc3@GCC_4.1.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __nedf2@GCC_3.0 1:4.1.1 + __negdf2@GCC_3.0 1:4.1.1 + __negdi2@GCC_3.0 1:4.1.1 + __negsf2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __nesf2@GCC_3.0 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __paritysi2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountsi2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.1.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __subdf3@GCC_3.0 1:4.1.1 + __subsf3@GCC_3.0 1:4.1.1 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __trampoline_setup@GCC_3.4.2 1:4.1.1 + __truncdfsf2@GCC_3.0 1:4.1.1 + __ucmpdi2@GCC_3.0 1:4.1.1 + __udivdi3@GLIBC_2.0 1:4.1.1 + __udivmoddi4@GCC_3.0 1:4.1.1 + __umoddi3@GLIBC_2.0 1:4.1.1 + __unorddf2@GCC_3.3.4 1:4.1.1 + __unordsf2@GCC_3.3.4 1:4.1.1 --- gcc-4.9-4.9.2.orig/debian/libgcc1.symbols.powerpcspe +++ gcc-4.9-4.9.2/debian/libgcc1.symbols.powerpcspe @@ -0,0 +1,142 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3.4@GCC_3.3.4 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.1.0@GCC_4.1.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __adddf3@GCC_3.0 1:4.1.1 + __addsf3@GCC_3.0 1:4.1.1 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __ashldi3@GCC_3.0 1:4.1.1 + __ashrdi3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbsi2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzsi2@GCC_3.4 1:4.1.1 + __cmpdi2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzsi2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdf3@GCC_3.0 1:4.1.1 + __divdi3@GLIBC_2.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divsf3@GCC_3.0 1:4.1.1 + __divtc3@GCC_4.1.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqdf2@GCC_3.0 1:4.1.1 + __eqsf2@GCC_3.0 1:4.1.1 + __extendsfdf2@GCC_3.0 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixdfsi@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixsfsi@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_4.1.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_4.1.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_4.1.0 1:4.1.1 + __floatsidf@GCC_3.0 1:4.1.1 + __floatsisf@GCC_3.0 1:4.1.1 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.2.0 1:4.2.1 + __floatunsidf@GCC_4.2.0 1:4.2.1 + __floatunsisf@GCC_4.2.0 1:4.2.1 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __gcc_qadd@GCC_4.1.0 1:4.1.1 + __gcc_qdiv@GCC_4.1.0 1:4.1.1 + __gcc_qmul@GCC_4.1.0 1:4.1.1 + __gcc_qsub@GCC_4.1.0 1:4.1.1 + __gedf2@GCC_3.0 1:4.1.1 + __gesf2@GCC_3.0 1:4.1.1 + __gtdf2@GCC_3.0 1:4.1.1 + __gtsf2@GCC_3.0 1:4.1.1 + __ledf2@GCC_3.0 1:4.1.1 + __lesf2@GCC_3.0 1:4.1.1 + __lshrdi3@GCC_3.0 1:4.1.1 + __ltdf2@GCC_3.0 1:4.1.1 + __ltsf2@GCC_3.0 1:4.1.1 + __moddi3@GLIBC_2.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldf3@GCC_3.0 1:4.1.1 + __muldi3@GCC_3.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __mulsf3@GCC_3.0 1:4.1.1 + __multc3@GCC_4.1.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __nedf2@GCC_3.0 1:4.1.1 + __negdf2@GCC_3.0 1:4.1.1 + __negdi2@GCC_3.0 1:4.1.1 + __negsf2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __nesf2@GCC_3.0 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __paritysi2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountsi2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.1.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __subdf3@GCC_3.0 1:4.1.1 + __subsf3@GCC_3.0 1:4.1.1 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __trampoline_setup@GCC_3.4.2 1:4.1.1 + __truncdfsf2@GCC_3.0 1:4.1.1 + __ucmpdi2@GCC_3.0 1:4.1.1 + __udivdi3@GLIBC_2.0 1:4.1.1 + __udivmoddi4@GCC_3.0 1:4.1.1 + __umoddi3@GLIBC_2.0 1:4.1.1 + __unorddf2@GCC_3.3.4 1:4.1.1 + __unordsf2@GCC_3.3.4 1:4.1.1 --- gcc-4.9-4.9.2.orig/debian/libgcc1.symbols.ppc64 +++ gcc-4.9-4.9.2/debian/libgcc1.symbols.ppc64 @@ -0,0 +1,129 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4.4@GCC_3.4.4 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __absvti2@GCC_3.4.4 1:4.1.1 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __addvti3@GCC_3.4.4 1:4.1.1 + __ashlti3@GCC_3.0 1:4.1.1 + __ashrti3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbti2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzti2@GCC_3.4 1:4.1.1 + __cmpti2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzti2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.0.0 1:4.1.1 + __divti3@GCC_3.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffsti2@GCC_3.0 1:4.1.1 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixdfti@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixsfti@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_3.0 1:4.1.1 + __fixtfti@GCC_3.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunsdfti@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunssfti@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_3.0 1:4.1.1 + __fixunstfti@GCC_3.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_3.0 1:4.1.1 + __floattidf@GCC_3.0 1:4.1.1 + __floattisf@GCC_3.0 1:4.1.1 + __floattitf@GCC_3.0 1:4.1.1 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.2.0 1:4.2.1 + __floatuntidf@GCC_4.2.0 1:4.2.1 + __floatuntisf@GCC_4.2.0 1:4.2.1 + __floatuntitf@GCC_4.2.0 1:4.2.1 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __gcc_qadd@GCC_3.4.4 1:4.1.1 + __gcc_qdiv@GCC_3.4.4 1:4.1.1 + __gcc_qmul@GCC_3.4.4 1:4.1.1 + __gcc_qsub@GCC_3.4.4 1:4.1.1 + __lshrti3@GCC_3.0 1:4.1.1 + __modti3@GCC_3.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.0.0 1:4.1.1 + __multi3@GCC_3.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulvti3@GCC_3.4.4 1:4.1.1 + __negti2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __negvti2@GCC_3.4.4 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __parityti2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountti2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.0.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __subvti3@GCC_3.4.4 1:4.1.1 + __ucmpti2@GCC_3.0 1:4.1.1 + __udivmodti4@GCC_3.0 1:4.1.1 + __udivti3@GCC_3.0 1:4.1.1 + __umodti3@GCC_3.0 1:4.1.1 + _xlqadd@GCC_3.4 1:4.1.1 + _xlqdiv@GCC_3.4 1:4.1.1 + _xlqmul@GCC_3.4 1:4.1.1 + _xlqsub@GCC_3.4 1:4.1.1 --- gcc-4.9-4.9.2.orig/debian/libgcc1.symbols.ppc64el +++ gcc-4.9-4.9.2/debian/libgcc1.symbols.ppc64el @@ -0,0 +1,130 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4.4@GCC_3.4.4 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __absvti2@GCC_3.4.4 1:4.1.1 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __addvti3@GCC_3.4.4 1:4.1.1 + __ashlti3@GCC_3.0 1:4.1.1 + __ashrti3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbti2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzti2@GCC_3.4 1:4.1.1 + __cmpti2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzti2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.0.0 1:4.1.1 + __divti3@GCC_3.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffsti2@GCC_3.0 1:4.1.1 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixdfti@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixsfti@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_3.0 1:4.1.1 + __fixtfti@GCC_3.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunsdfti@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunssfti@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_3.0 1:4.1.1 + __fixunstfti@GCC_3.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_3.0 1:4.1.1 + __floattidf@GCC_3.0 1:4.1.1 + __floattisf@GCC_3.0 1:4.1.1 + __floattitf@GCC_3.0 1:4.1.1 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.2.0 1:4.2.1 + __floatuntidf@GCC_4.2.0 1:4.2.1 + __floatuntisf@GCC_4.2.0 1:4.2.1 + __floatuntitf@GCC_4.2.0 1:4.2.1 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __gcc_qadd@GCC_3.4.4 1:4.1.1 + __gcc_qdiv@GCC_3.4.4 1:4.1.1 + __gcc_qmul@GCC_3.4.4 1:4.1.1 + __gcc_qsub@GCC_3.4.4 1:4.1.1 + __lshrti3@GCC_3.0 1:4.1.1 + __modti3@GCC_3.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.0.0 1:4.1.1 + __multi3@GCC_3.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulvti3@GCC_3.4.4 1:4.1.1 + __negti2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __negvti2@GCC_3.4.4 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __parityti2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountti2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.0.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __subvti3@GCC_3.4.4 1:4.1.1 + __trampoline_setup@GCC_3.4.2 1:4.8 + __ucmpti2@GCC_3.0 1:4.1.1 + __udivmodti4@GCC_3.0 1:4.1.1 + __udivti3@GCC_3.0 1:4.1.1 + __umodti3@GCC_3.0 1:4.1.1 + _xlqadd@GCC_3.4 1:4.1.1 + _xlqdiv@GCC_3.4 1:4.1.1 + _xlqmul@GCC_3.4 1:4.1.1 + _xlqsub@GCC_3.4 1:4.1.1 --- gcc-4.9-4.9.2.orig/debian/libgcc1.symbols.s390 +++ gcc-4.9-4.9.2/debian/libgcc1.symbols.s390 @@ -0,0 +1,104 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.1.0@GCC_4.1.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __ashldi3@GCC_3.0 1:4.1.1 + __ashrdi3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbsi2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzsi2@GCC_3.4 1:4.1.1 + __cmpdi2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzsi2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdi3@GLIBC_2.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.1.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_4.1.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_4.1.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_4.1.0 1:4.1.1 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.2.0 1:4.2.1 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __lshrdi3@GCC_3.0 1:4.1.1 + __moddi3@GLIBC_2.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldi3@GCC_3.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.1.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __negdi2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __paritysi2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountsi2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.1.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __ucmpdi2@GCC_3.0 1:4.1.1 + __udivdi3@GLIBC_2.0 1:4.1.1 + __udivmoddi4@GCC_3.0 1:4.1.1 + __umoddi3@GLIBC_2.0 1:4.1.1 --- gcc-4.9-4.9.2.orig/debian/libgcc1.symbols.s390x +++ gcc-4.9-4.9.2/debian/libgcc1.symbols.s390x @@ -0,0 +1,110 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4.4@GCC_3.4.4 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.1.0@GCC_4.1.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.2@GLIBC_2.2 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __absvti2@GCC_3.4.4 1:4.1.1 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __addvti3@GCC_3.4.4 1:4.1.1 + __ashlti3@GCC_3.0 1:4.1.1 + __ashrti3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbti2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzti2@GCC_3.4 1:4.1.1 + __cmpti2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzti2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.2 1:4.1.1 + __deregister_frame_info@GLIBC_2.2 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.1.0 1:4.1.1 + __divti3@GCC_3.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffsti2@GCC_3.0 1:4.1.1 + __fixdfti@GCC_3.0 1:4.1.1 + __fixsfti@GCC_3.0 1:4.1.1 + __fixtfti@GCC_4.1.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfti@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfti@GCC_3.0 1:4.1.1 + __fixunstfti@GCC_4.1.0 1:4.1.1 + __floattidf@GCC_3.0 1:4.1.1 + __floattisf@GCC_3.0 1:4.1.1 + __floattitf@GCC_4.1.0 1:4.1.1 + __floatuntidf@GCC_4.2.0 1:4.2.1 + __floatuntisf@GCC_4.2.0 1:4.2.1 + __floatuntitf@GCC_4.2.0 1:4.2.1 + __frame_state_for@GLIBC_2.2 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __lshrti3@GCC_3.0 1:4.1.1 + __modti3@GCC_3.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.1.0 1:4.1.1 + __multi3@GCC_3.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulvti3@GCC_3.4.4 1:4.1.1 + __negti2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __negvti2@GCC_3.4.4 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __parityti2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountti2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.1.0 1:4.1.1 + __register_frame@GLIBC_2.2 1:4.1.1 + __register_frame_info@GLIBC_2.2 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.2 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.2 1:4.1.1 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __subvti3@GCC_3.4.4 1:4.1.1 + __ucmpti2@GCC_3.0 1:4.1.1 + __udivmodti4@GCC_3.0 1:4.1.1 + __udivti3@GCC_3.0 1:4.1.1 + __umodti3@GCC_3.0 1:4.1.1 --- gcc-4.9-4.9.2.orig/debian/libgcc1.symbols.sh4 +++ gcc-4.9-4.9.2/debian/libgcc1.symbols.sh4 @@ -0,0 +1,130 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3.4@GCC_3.3.4 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.4.0@GCC_4.4.0 1:4.4.0 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.2@GLIBC_2.2 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __adddf3@GCC_3.0 1:4.1.1 + __addsf3@GCC_3.0 1:4.1.1 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __ashldi3@GCC_3.0 1:4.1.1 + __ashrdi3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.9.0 + __clrsbsi2@GCC_4.7.0 1:4.9.0 + __clzdi2@GCC_3.4 1:4.1.1 + __clzsi2@GCC_3.4 1:4.1.1 + __cmpdi2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzsi2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.2 1:4.1.1 + __deregister_frame_info@GLIBC_2.2 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdf3@GCC_3.0 1:4.1.1 + __divdi3@GCC_3.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divsf3@GCC_3.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqdf2@GCC_3.0 1:4.1.1 + __eqsf2@GCC_3.0 1:4.1.1 + __extendsfdf2@GCC_3.0 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixdfsi@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixsfsi@GCC_3.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatsidf@GCC_3.0 1:4.1.1 + __floatsisf@GCC_3.0 1:4.1.1 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunsidf@GCC_4.2.0 1:4.2.1 + __floatunsisf@GCC_4.2.0 1:4.2.1 + __frame_state_for@GLIBC_2.2 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __gedf2@GCC_3.0 1:4.1.1 + __gesf2@GCC_3.0 1:4.1.1 + __gtdf2@GCC_3.0 1:4.1.1 + __gtsf2@GCC_3.0 1:4.1.1 + __ledf2@GCC_3.0 1:4.1.1 + __lesf2@GCC_3.0 1:4.1.1 + __lshrdi3@GCC_3.0 1:4.1.1 + __ltdf2@GCC_3.0 1:4.1.1 + __ltsf2@GCC_3.0 1:4.1.1 + __moddi3@GCC_3.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldf3@GCC_3.0 1:4.1.1 + __muldi3@GCC_3.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __mulsf3@GCC_3.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __nedf2@GCC_3.0 1:4.1.1 + __negdf2@GCC_3.0 1:4.1.1 + __negdi2@GCC_3.0 1:4.1.1 + __negsf2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __nesf2@GCC_3.0 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __paritysi2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountsi2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __register_frame@GLIBC_2.2 1:4.1.1 + __register_frame_info@GLIBC_2.2 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.2 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.2 1:4.1.1 + __subdf3@GCC_3.0 1:4.1.1 + __subsf3@GCC_3.0 1:4.1.1 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __truncdfsf2@GCC_3.0 1:4.1.1 + __ucmpdi2@GCC_3.0 1:4.1.1 + __udivdi3@GCC_3.0 1:4.1.1 + __udivmoddi4@GCC_3.0 1:4.1.1 + __umoddi3@GCC_3.0 1:4.1.1 + __unorddf2@GCC_3.3.4 1:4.1.1 + __unordsf2@GCC_3.3.4 1:4.1.1 --- gcc-4.9-4.9.2.orig/debian/libgcc1.symbols.sparc +++ gcc-4.9-4.9.2/debian/libgcc1.symbols.sparc @@ -0,0 +1,105 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GCC_LDBL_3.0@GCC_LDBL_3.0 1:4.2.1 + GCC_LDBL_4.0.0@GCC_LDBL_4.0.0 1:4.2.1 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __ashldi3@GCC_3.0 1:4.1.1 + __ashrdi3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbsi2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzsi2@GCC_3.4 1:4.1.1 + __cmpdi2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzsi2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdi3@GLIBC_2.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_LDBL_4.0.0 1:4.2.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_LDBL_3.0 1:4.2.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_LDBL_3.0 1:4.2.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_LDBL_3.0 1:4.2.1 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.2.0 1:4.2.1 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __lshrdi3@GCC_3.0 1:4.1.1 + __moddi3@GLIBC_2.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldi3@GCC_3.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_LDBL_4.0.0 1:4.2.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __negdi2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __paritysi2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountsi2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_LDBL_4.0.0 1:4.2.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __ucmpdi2@GCC_3.0 1:4.1.1 + __udivdi3@GLIBC_2.0 1:4.1.1 + __udivmoddi4@GCC_3.0 1:4.1.1 + __umoddi3@GLIBC_2.0 1:4.1.1 --- gcc-4.9-4.9.2.orig/debian/libgcc1.symbols.sparc64 +++ gcc-4.9-4.9.2/debian/libgcc1.symbols.sparc64 @@ -0,0 +1,109 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4.4@GCC_3.4.4 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.2@GLIBC_2.2 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __absvti2@GCC_3.4.4 1:4.1.1 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __addvti3@GCC_3.4.4 1:4.1.1 + __ashlti3@GCC_3.0 1:4.1.1 + __ashrti3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbti2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzti2@GCC_3.4 1:4.1.1 + __cmpti2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzti2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.2 1:4.1.1 + __deregister_frame_info@GLIBC_2.2 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.0.0 1:4.1.1 + __divti3@GCC_3.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffsti2@GCC_3.0 1:4.1.1 + __fixdfti@GCC_3.0 1:4.1.1 + __fixsfti@GCC_3.0 1:4.1.1 + __fixtfti@GCC_3.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfti@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfti@GCC_3.0 1:4.1.1 + __fixunstfti@GCC_3.0 1:4.1.1 + __floattidf@GCC_3.0 1:4.1.1 + __floattisf@GCC_3.0 1:4.1.1 + __floattitf@GCC_3.0 1:4.1.1 + __floatuntidf@GCC_4.2.0 1:4.2.1 + __floatuntisf@GCC_4.2.0 1:4.2.1 + __floatuntitf@GCC_4.2.0 1:4.2.1 + __frame_state_for@GLIBC_2.2 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __lshrti3@GCC_3.0 1:4.1.1 + __modti3@GCC_3.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.0.0 1:4.1.1 + __multi3@GCC_3.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulvti3@GCC_3.4.4 1:4.1.1 + __negti2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __negvti2@GCC_3.4.4 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __parityti2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountti2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.0.0 1:4.1.1 + __register_frame@GLIBC_2.2 1:4.1.1 + __register_frame_info@GLIBC_2.2 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.2 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.2 1:4.1.1 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __subvti3@GCC_3.4.4 1:4.1.1 + __ucmpti2@GCC_3.0 1:4.1.1 + __udivmodti4@GCC_3.0 1:4.1.1 + __udivti3@GCC_3.0 1:4.1.1 + __umodti3@GCC_3.0 1:4.1.1 --- gcc-4.9-4.9.2.orig/debian/libgcc2.symbols.m68k +++ gcc-4.9-4.9.2/debian/libgcc2.symbols.m68k @@ -0,0 +1,158 @@ +libgcc_s.so.2 libgcc2 #MINVER# + GCC_3.0@GCC_3.0 4.2.1 + GCC_3.3.1@GCC_3.3.1 4.2.1 + GCC_3.3.4@GCC_3.3.4 4.4.5 + GCC_3.3@GCC_3.3 4.2.1 + GCC_3.4.2@GCC_3.4.2 4.2.1 + GCC_3.4@GCC_3.4 4.2.1 + GCC_4.0.0@GCC_4.0.0 4.2.1 + GCC_4.2.0@GCC_4.2.0 4.2.1 + GCC_4.3.0@GCC_4.3.0 4.3.0 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.0@GLIBC_2.0 4.2.1 + _Unwind_Backtrace@GCC_3.3 4.2.1 + _Unwind_DeleteException@GCC_3.0 4.2.1 + _Unwind_FindEnclosingFunction@GCC_3.3 4.2.1 + _Unwind_Find_FDE@GCC_3.0 4.2.1 + _Unwind_ForcedUnwind@GCC_3.0 4.2.1 + _Unwind_GetCFA@GCC_3.3 4.2.1 + _Unwind_GetDataRelBase@GCC_3.0 4.2.1 + _Unwind_GetGR@GCC_3.0 4.2.1 + _Unwind_GetIP@GCC_3.0 4.2.1 + _Unwind_GetIPInfo@GCC_4.2.0 4.2.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 4.2.1 + _Unwind_GetRegionStart@GCC_3.0 4.2.1 + _Unwind_GetTextRelBase@GCC_3.0 4.2.1 + _Unwind_RaiseException@GCC_3.0 4.2.1 + _Unwind_Resume@GCC_3.0 4.2.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 4.2.1 + _Unwind_SetGR@GCC_3.0 4.2.1 + _Unwind_SetIP@GCC_3.0 4.2.1 + __absvdi2@GCC_3.0 4.2.1 + __absvsi2@GCC_3.0 4.2.1 + __adddf3@GCC_3.0 4.4.5 + __addsf3@GCC_3.0 4.4.5 + __addvdi3@GCC_3.0 4.2.1 + __addvsi3@GCC_3.0 4.2.1 + __addxf3@GCC_3.0 4.4.5 + __ashldi3@GCC_3.0 4.2.1 + __ashrdi3@GCC_3.0 4.2.1 + __bswapdi2@GCC_4.3.0 4.3.0 + __bswapsi2@GCC_4.3.0 4.3.0 + __clear_cache@GCC_3.0 4.2.1 + __clzdi2@GCC_3.4 4.2.1 + __clzsi2@GCC_3.4 4.2.1 + __cmpdi2@GCC_3.0 4.2.1 + __ctzdi2@GCC_3.4 4.2.1 + __ctzsi2@GCC_3.4 4.2.1 + __deregister_frame@GLIBC_2.0 4.2.1 + __deregister_frame_info@GLIBC_2.0 4.2.1 + __deregister_frame_info_bases@GCC_3.0 4.2.1 + __divdc3@GCC_4.0.0 4.2.1 + __divdf3@GCC_3.0 4.4.5 + __divdi3@GLIBC_2.0 4.2.1 + __divsc3@GCC_4.0.0 4.2.1 + __divsf3@GCC_3.0 4.4.5 + __divsi3@GCC_3.0 4.4.5 + __divxc3@GCC_4.0.0 4.2.1 + __divxf3@GCC_3.0 4.4.5 + __emutls_get_address@GCC_4.3.0 4.3.0 + __emutls_register_common@GCC_4.3.0 4.3.0 + __enable_execute_stack@GCC_3.4.2 4.2.1 + __eqdf2@GCC_3.0 4.4.5 + __eqsf2@GCC_3.0 4.4.5 + __eqxf2@GCC_3.0 4.4.5 + __extenddfxf2@GCC_3.0 4.4.5 + __extendsfdf2@GCC_3.0 4.4.5 + __extendsfxf2@GCC_3.0 4.4.5 + __ffsdi2@GCC_3.0 4.2.1 + __ffssi2@GCC_4.3.0 4.3.0 + __fixdfdi@GCC_3.0 4.2.1 + __fixdfsi@GCC_3.0 4.4.5 + __fixsfdi@GCC_3.0 4.2.1 + __fixsfsi@GCC_3.0 4.4.5 + __fixunsdfdi@GCC_3.0 4.2.1 + __fixunsdfsi@GCC_3.0 4.2.1 + __fixunssfdi@GCC_3.0 4.2.1 + __fixunssfsi@GCC_3.0 4.2.1 + __fixunsxfdi@GCC_3.0 4.2.1 + __fixunsxfsi@GCC_3.0 4.2.1 + __fixxfdi@GCC_3.0 4.2.1 + __fixxfsi@GCC_3.0 4.4.5 + __floatdidf@GCC_3.0 4.2.1 + __floatdisf@GCC_3.0 4.2.1 + __floatdixf@GCC_3.0 4.2.1 + __floatsidf@GCC_3.0 4.4.5 + __floatsisf@GCC_3.0 4.4.5 + __floatsixf@GCC_3.0 4.4.5 + __floatundidf@GCC_4.2.0 4.2.1 + __floatundisf@GCC_4.2.0 4.2.1 + __floatundixf@GCC_4.2.0 4.2.1 + __floatunsidf@GCC_4.2.0 4.4.5 + __floatunsisf@GCC_4.2.0 4.4.5 + __floatunsixf@GCC_4.2.0 4.4.5 + __frame_state_for@GLIBC_2.0 4.2.1 + __gcc_personality_v0@GCC_3.3.1 4.2.1 + __gedf2@GCC_3.0 4.4.5 + __gesf2@GCC_3.0 4.4.5 + __gexf2@GCC_3.0 4.4.5 + __gtdf2@GCC_3.0 4.4.5 + __gtsf2@GCC_3.0 4.4.5 + __gtxf2@GCC_3.0 4.4.5 + __ledf2@GCC_3.0 4.4.5 + __lesf2@GCC_3.0 4.4.5 + __lexf2@GCC_3.0 4.4.5 + __lshrdi3@GCC_3.0 4.2.1 + __ltdf2@GCC_3.0 4.4.5 + __ltsf2@GCC_3.0 4.4.5 + __ltxf2@GCC_3.0 4.4.5 + __moddi3@GLIBC_2.0 4.2.1 + __modsi3@GCC_3.0 4.4.5 + __muldc3@GCC_4.0.0 4.2.1 + __muldf3@GCC_3.0 4.4.5 + __muldi3@GCC_3.0 4.2.1 + __mulsc3@GCC_4.0.0 4.2.1 + __mulsf3@GCC_3.0 4.4.5 + __mulsi3@GCC_3.0 4.4.5 + __mulvdi3@GCC_3.0 4.2.1 + __mulvsi3@GCC_3.0 4.2.1 + __mulxc3@GCC_4.0.0 4.2.1 + __mulxf3@GCC_3.0 4.4.5 + __nedf2@GCC_3.0 4.4.5 + __negdf2@GCC_3.0 4.4.5 + __negdi2@GCC_3.0 4.2.1 + __negsf2@GCC_3.0 4.4.5 + __negvdi2@GCC_3.0 4.2.1 + __negvsi2@GCC_3.0 4.2.1 + __negxf2@GCC_3.0 4.4.5 + __nesf2@GCC_3.0 4.4.5 + __nexf2@GCC_3.0 4.4.5 + __paritydi2@GCC_3.4 4.2.1 + __paritysi2@GCC_3.4 4.2.1 + __popcountdi2@GCC_3.4 4.2.1 + __popcountsi2@GCC_3.4 4.2.1 + __powidf2@GCC_4.0.0 4.2.1 + __powisf2@GCC_4.0.0 4.2.1 + __powixf2@GCC_4.0.0 4.2.1 + __register_frame@GLIBC_2.0 4.2.1 + __register_frame_info@GLIBC_2.0 4.2.1 + __register_frame_info_bases@GCC_3.0 4.2.1 + __register_frame_info_table@GLIBC_2.0 4.2.1 + __register_frame_info_table_bases@GCC_3.0 4.2.1 + __register_frame_table@GLIBC_2.0 4.2.1 + __subdf3@GCC_3.0 4.4.5 + __subsf3@GCC_3.0 4.4.5 + __subvdi3@GCC_3.0 4.2.1 + __subvsi3@GCC_3.0 4.2.1 + __subxf3@GCC_3.0 4.4.5 + __truncdfsf2@GCC_3.0 4.4.5 + __truncxfdf2@GCC_3.0 4.4.5 + __truncxfsf2@GCC_3.0 4.4.5 + __ucmpdi2@GCC_3.0 4.2.1 + __udivdi3@GLIBC_2.0 4.2.1 + __udivmoddi4@GCC_3.0 4.2.1 + __udivsi3@GCC_3.0 4.4.5 + __umoddi3@GLIBC_2.0 4.2.1 + __umodsi3@GCC_3.0 4.4.5 + __unorddf2@GCC_3.3.4 4.4.5 + __unordsf2@GCC_3.3.4 4.4.5 --- gcc-4.9-4.9.2.orig/debian/libgcc4.symbols.hppa +++ gcc-4.9-4.9.2/debian/libgcc4.symbols.hppa @@ -0,0 +1,94 @@ +libgcc_s.so.4 libgcc4 #MINVER# + GCC_3.0@GCC_3.0 4.1.1 + GCC_3.3.1@GCC_3.3.1 4.1.1 + GCC_3.3@GCC_3.3 4.1.1 + GCC_3.4.2@GCC_3.4.2 4.1.1 + GCC_3.4@GCC_3.4 4.1.1 + GCC_4.0.0@GCC_4.0.0 4.1.1 + GCC_4.2.0@GCC_4.2.0 4.1.1 + GCC_4.3.0@GCC_4.3.0 4.3 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.0@GLIBC_2.0 4.1.1 + _Unwind_Backtrace@GCC_3.3 4.1.1 + _Unwind_DeleteException@GCC_3.0 4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 4.1.1 + _Unwind_Find_FDE@GCC_3.0 4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 4.1.1 + _Unwind_GetCFA@GCC_3.3 4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 4.1.1 + _Unwind_GetGR@GCC_3.0 4.1.1 + _Unwind_GetIP@GCC_3.0 4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 4.1.1 + _Unwind_GetRegionStart@GCC_3.0 4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 4.1.1 + _Unwind_RaiseException@GCC_3.0 4.1.1 + _Unwind_Resume@GCC_3.0 4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 4.1.1 + _Unwind_SetGR@GCC_3.0 4.1.1 + _Unwind_SetIP@GCC_3.0 4.1.1 + __absvdi2@GCC_3.0 4.1.1 + __absvsi2@GCC_3.0 4.1.1 + __addvdi3@GCC_3.0 4.1.1 + __addvsi3@GCC_3.0 4.1.1 + __ashldi3@GCC_3.0 4.1.1 + __ashrdi3@GCC_3.0 4.1.1 + __bswapdi2@GCC_4.3.0 4.3 + __bswapsi2@GCC_4.3.0 4.3 + __clear_cache@GCC_3.0 4.1.1 + __clzdi2@GCC_3.4 4.1.1 + __clzsi2@GCC_3.4 4.1.1 + __cmpdi2@GCC_3.0 4.1.1 + __ctzdi2@GCC_3.4 4.1.1 + __ctzsi2@GCC_3.4 4.1.1 + __deregister_frame@GLIBC_2.0 4.1.1 + __deregister_frame_info@GLIBC_2.0 4.1.1 + __deregister_frame_info_bases@GCC_3.0 4.1.1 + __divdc3@GCC_4.0.0 4.1.1 + __divdi3@GLIBC_2.0 4.1.1 + __divsc3@GCC_4.0.0 4.1.1 + __emutls_get_address@GCC_4.3.0 4.3 + __emutls_register_common@GCC_4.3.0 4.3 + __enable_execute_stack@GCC_3.4.2 4.1.1 + __ffsdi2@GCC_3.0 4.1.1 + __ffssi2@GCC_4.3.0 4.3 + __fixdfdi@GCC_3.0 4.1.1 + __fixsfdi@GCC_3.0 4.1.1 + __fixunsdfdi@GCC_3.0 4.1.1 + __fixunsdfsi@GCC_3.0 4.1.1 + __fixunssfdi@GCC_3.0 4.1.1 + __fixunssfsi@GCC_3.0 4.1.1 + __floatdidf@GCC_3.0 4.1.1 + __floatdisf@GCC_3.0 4.1.1 + __floatundidf@GCC_4.2.0 4.2.1 + __floatundisf@GCC_4.2.0 4.2.1 + __frame_state_for@GLIBC_2.0 4.1.1 + __gcc_personality_v0@GCC_3.3.1 4.1.1 + __lshrdi3@GCC_3.0 4.1.1 + __moddi3@GLIBC_2.0 4.1.1 + __muldc3@GCC_4.0.0 4.1.1 + __muldi3@GCC_3.0 4.1.1 + __mulsc3@GCC_4.0.0 4.1.1 + __mulvdi3@GCC_3.0 4.1.1 + __mulvsi3@GCC_3.0 4.1.1 + __negdi2@GCC_3.0 4.1.1 + __negvdi2@GCC_3.0 4.1.1 + __negvsi2@GCC_3.0 4.1.1 + __paritydi2@GCC_3.4 4.1.1 + __paritysi2@GCC_3.4 4.1.1 + __popcountdi2@GCC_3.4 4.1.1 + __popcountsi2@GCC_3.4 4.1.1 + __powidf2@GCC_4.0.0 4.1.1 + __powisf2@GCC_4.0.0 4.1.1 + __register_frame@GLIBC_2.0 4.1.1 + __register_frame_info@GLIBC_2.0 4.1.1 + __register_frame_info_bases@GCC_3.0 4.1.1 + __register_frame_info_table@GLIBC_2.0 4.1.1 + __register_frame_info_table_bases@GCC_3.0 4.1.1 + __register_frame_table@GLIBC_2.0 4.1.1 + __subvdi3@GCC_3.0 4.1.1 + __subvsi3@GCC_3.0 4.1.1 + __ucmpdi2@GCC_3.0 4.1.1 + __udivdi3@GLIBC_2.0 4.1.1 + __udivmoddi4@GCC_3.0 4.1.1 + __umoddi3@GLIBC_2.0 4.1.1 --- gcc-4.9-4.9.2.orig/debian/libgccLC.postinst +++ gcc-4.9-4.9.2/debian/libgccLC.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/libgcc@LC@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi +esac + +#DEBHELPER# --- gcc-4.9-4.9.2.orig/debian/libgcj-common.postinst +++ gcc-4.9-4.9.2/debian/libgcj-common.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/libgcj-common + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcj-@BV@-base $docdir + fi +esac + +#DEBHELPER# --- gcc-4.9-4.9.2.orig/debian/libgcj-common.preinst +++ gcc-4.9-4.9.2/debian/libgcj-common.preinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + upgrade|install) + if [ -n "$2" ] && [ -h /usr/share/doc/libgcj-common ] \ + && dpkg --compare-versions "$2" lt 1:4.0.2-10 + then + rm -f /usr/share/doc/libgcj-common + fi +esac + +#DEBHELPER# --- gcc-4.9-4.9.2.orig/debian/libgcj-doc.doc-base +++ gcc-4.9-4.9.2/debian/libgcj-doc.doc-base @@ -0,0 +1,10 @@ +Document: libgcj-doc +Title: The GNU LibGCJ Classpath library +Author: Various +Abstract: Autogenerated documentation describing the libgcj + library (GCC 4.9), based on the classpath library. +Section: Programming/Java + +Format: html +Index: /usr/share/doc/gcc-4.9-base/api/index.html +Files: /usr/share/doc/gcc-4.9-base/api/*.html --- gcc-4.9-4.9.2.orig/debian/libgcjGCJ-awt.overrides +++ gcc-4.9-4.9.2/debian/libgcjGCJ-awt.overrides @@ -0,0 +1,2 @@ +# pick up the exact version, in case another gcj version is installed +libgcj@GCJ@-awt binary: binary-or-shlib-defines-rpath --- gcc-4.9-4.9.2.orig/debian/libgcjGCJ-dev.overrides +++ gcc-4.9-4.9.2/debian/libgcjGCJ-dev.overrides @@ -0,0 +1 @@ +libgcj@GCJ@-dev binary: library-not-linked-against-libc --- gcc-4.9-4.9.2.orig/debian/libgcjGCJ.overrides +++ gcc-4.9-4.9.2/debian/libgcjGCJ.overrides @@ -0,0 +1,9 @@ +# pick up the exact version, in case another gcj version is installed +libgcj@GCJ@ binary: binary-or-shlib-defines-rpath + +# intended +libgcj@GCJ@ binary: unused-shlib-entry-in-control-file +libgcj@GCJ@ binary: shlibs-declares-dependency-on-other-package + +# keep patched ltdl copy +libgcj@GCJ@ binary: embedded-library --- gcc-4.9-4.9.2.orig/debian/libgcjLGCJ.postinst +++ gcc-4.9-4.9.2/debian/libgcjLGCJ.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/libgcj@GCJ@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf /usr/share/doc/libgcj@GCJ@ + ln -s gcj-@BV@-base /usr/share/doc/libgcj@GCJ@ + fi +esac + +#DEBHELPER# --- gcc-4.9-4.9.2.orig/debian/libgcjLGCJ.postrm +++ gcc-4.9-4.9.2/debian/libgcjLGCJ.postrm @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + remove|purge) + # only purge if no other library is installed. + if [ -z "$(ls /usr/lib/libgcj.so.@GCJ@* 2>/dev/null)" ]; then + rm -f /var/lib/gcj-@BV@/classmap.db + rmdir --ignore-fail-on-non-empty /var/lib/gcj-@BV@ 2>/dev/null || true + fi +esac + +#DEBHELPER# --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.10 +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.10 @@ -0,0 +1,98 @@ + __iso_c_binding_c_f_pointer_c10@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_r10@GFORTRAN_1.0 4.3 + _gfortran_arandom_r10@GFORTRAN_1.0 4.3 + _gfortran_bessel_jn_r10@GFORTRAN_1.4 4.6 + _gfortran_bessel_yn_r10@GFORTRAN_1.4 4.6 + _gfortran_cpu_time_10@GFORTRAN_1.0 4.3 + _gfortran_erfc_scaled_r10@GFORTRAN_1.1 4.4.0 + _gfortran_exponent_r10@GFORTRAN_1.0 4.3 + _gfortran_fraction_r10@GFORTRAN_1.0 4.3 + _gfortran_matmul_c10@GFORTRAN_1.0 4.3 + _gfortran_matmul_r10@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_4_r10@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_8_r10@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_4_r10@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_8_r10@GFORTRAN_1.0 4.3 + _gfortran_maxval_r10@GFORTRAN_1.0 4.3 + _gfortran_minloc0_4_r10@GFORTRAN_1.0 4.3 + _gfortran_minloc0_8_r10@GFORTRAN_1.0 4.3 + _gfortran_minloc1_4_r10@GFORTRAN_1.0 4.3 + _gfortran_minloc1_8_r10@GFORTRAN_1.0 4.3 + _gfortran_minval_r10@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_4_r10@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_8_r10@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_4_r10@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_8_r10@GFORTRAN_1.0 4.3 + _gfortran_mmaxval_r10@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_4_r10@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_8_r10@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_4_r10@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_8_r10@GFORTRAN_1.0 4.3 + _gfortran_mminval_r10@GFORTRAN_1.0 4.3 + _gfortran_mproduct_c10@GFORTRAN_1.0 4.3 + _gfortran_mproduct_r10@GFORTRAN_1.0 4.3 + _gfortran_msum_c10@GFORTRAN_1.0 4.3 + _gfortran_msum_r10@GFORTRAN_1.0 4.3 + _gfortran_nearest_r10@GFORTRAN_1.0 4.3 + _gfortran_pow_c10_i4@GFORTRAN_1.0 4.3 + _gfortran_pow_c10_i8@GFORTRAN_1.0 4.3 + _gfortran_pow_r10_i8@GFORTRAN_1.0 4.3 + _gfortran_product_c10@GFORTRAN_1.0 4.3 + _gfortran_product_r10@GFORTRAN_1.0 4.3 + _gfortran_random_r10@GFORTRAN_1.0 4.3 + _gfortran_reshape_c10@GFORTRAN_1.0 4.3 + _gfortran_reshape_r10@GFORTRAN_1.0 4.3 + _gfortran_rrspacing_r10@GFORTRAN_1.0 4.3 + _gfortran_set_exponent_r10@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_4_r10@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_8_r10@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_4_r10@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_8_r10@GFORTRAN_1.0 4.3 + _gfortran_smaxval_r10@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_4_r10@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_8_r10@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_4_r10@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_8_r10@GFORTRAN_1.0 4.3 + _gfortran_sminval_r10@GFORTRAN_1.0 4.3 + _gfortran_spacing_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__abs_c10@GFORTRAN_1.0 4.3 + _gfortran_specific__abs_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__acos_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__acosh_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__aimag_c10@GFORTRAN_1.0 4.3 + _gfortran_specific__aint_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__anint_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__asin_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__asinh_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__atan2_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__atan_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__atanh_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__conjg_10@GFORTRAN_1.0 4.3 + _gfortran_specific__cos_c10@GFORTRAN_1.0 4.3 + _gfortran_specific__cos_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__cosh_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__dim_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__exp_c10@GFORTRAN_1.0 4.3 + _gfortran_specific__exp_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__log10_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__log_c10@GFORTRAN_1.0 4.3 + _gfortran_specific__log_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__mod_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_4_10@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_8_10@GFORTRAN_1.0 4.3 + _gfortran_specific__sign_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__sin_c10@GFORTRAN_1.0 4.3 + _gfortran_specific__sin_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__sinh_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__sqrt_c10@GFORTRAN_1.0 4.3 + _gfortran_specific__sqrt_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__tan_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__tanh_r10@GFORTRAN_1.0 4.3 + _gfortran_sproduct_c10@GFORTRAN_1.0 4.3 + _gfortran_sproduct_r10@GFORTRAN_1.0 4.3 + _gfortran_ssum_c10@GFORTRAN_1.0 4.3 + _gfortran_ssum_r10@GFORTRAN_1.0 4.3 + _gfortran_sum_c10@GFORTRAN_1.0 4.3 + _gfortran_sum_r10@GFORTRAN_1.0 4.3 + _gfortran_transpose_c10@GFORTRAN_1.0 4.3 + _gfortran_transpose_r10@GFORTRAN_1.0 4.3 --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.16 +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.16 @@ -0,0 +1,199 @@ + __iso_c_binding_c_f_pointer_i16@GFORTRAN_1.0 4.3 + _gfortran_all_l16@GFORTRAN_1.0 4.3 + _gfortran_any_l16@GFORTRAN_1.0 4.3 + _gfortran_count_16_l@GFORTRAN_1.0 4.3 + _gfortran_cshift0_16@GFORTRAN_1.1 4.4.0 + _gfortran_cshift0_16_char4@GFORTRAN_1.4 4.6 + _gfortran_cshift0_16_char@GFORTRAN_1.1 4.4.0 + _gfortran_cshift1_16@GFORTRAN_1.0 4.3 + _gfortran_cshift1_16_char4@GFORTRAN_1.1 4.4.0 + _gfortran_cshift1_16_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift0_16@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift0_16_char4@GFORTRAN_1.4 4.6 + _gfortran_eoshift0_16_char@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift1_16@GFORTRAN_1.0 4.3 + _gfortran_eoshift1_16_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift1_16_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift2_16@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift2_16_char4@GFORTRAN_1.4 4.6 + _gfortran_eoshift2_16_char@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift3_16@GFORTRAN_1.0 4.3 + _gfortran_eoshift3_16_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift3_16_char@GFORTRAN_1.0 4.3 + _gfortran_iall_i16@GFORTRAN_1.4 4.6 + _gfortran_iany_i16@GFORTRAN_1.4 4.6 + _gfortran_iparity_i16@GFORTRAN_1.4 4.6 + _gfortran_ishftc16@GFORTRAN_1.0 4.3 + _gfortran_matmul_i16@GFORTRAN_1.0 4.3 + _gfortran_matmul_l16@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_i16@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_i1@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_i2@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_i4@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_i8@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_r10@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_r4@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_r8@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_4_i16@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_8_i16@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_i16@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_i1@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_i2@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_i4@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_i8@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_r10@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_r4@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_r8@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_4_i16@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_8_i16@GFORTRAN_1.0 4.3 + _gfortran_maxval_i16@GFORTRAN_1.0 4.3 + _gfortran_miall_i16@GFORTRAN_1.4 4.6 + _gfortran_miany_i16@GFORTRAN_1.4 4.6 + _gfortran_minloc0_16_i16@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_i1@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_i2@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_i4@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_i8@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_r10@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_r4@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_r8@GFORTRAN_1.0 4.3 + _gfortran_minloc0_4_i16@GFORTRAN_1.0 4.3 + _gfortran_minloc0_8_i16@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_i16@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_i1@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_i2@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_i4@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_i8@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_r10@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_r4@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_r8@GFORTRAN_1.0 4.3 + _gfortran_minloc1_4_i16@GFORTRAN_1.0 4.3 + _gfortran_minloc1_8_i16@GFORTRAN_1.0 4.3 + _gfortran_minval_i16@GFORTRAN_1.0 4.3 + _gfortran_miparity_i16@GFORTRAN_1.4 4.6 + _gfortran_mmaxloc0_16_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_i1@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_i2@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_i4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_i8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_r10@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_r4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_r8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_4_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_8_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_i1@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_i2@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_i4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_i8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_r10@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_r4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_r8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_4_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_8_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxval_i16@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_i16@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_i1@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_i2@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_i4@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_i8@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_r10@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_r4@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_r8@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_4_i16@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_8_i16@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_i16@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_i1@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_i2@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_i4@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_i8@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_r10@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_r4@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_r8@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_4_i16@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_8_i16@GFORTRAN_1.0 4.3 + _gfortran_mminval_i16@GFORTRAN_1.0 4.3 + _gfortran_mproduct_i16@GFORTRAN_1.0 4.3 + _gfortran_msum_i16@GFORTRAN_1.0 4.3 + _gfortran_norm2_r10@GFORTRAN_1.4 4.6 + _gfortran_parity_l16@GFORTRAN_1.4 4.6 + _gfortran_pow_c10_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_c16_i16@GFORTRAN_1.0 4.6 + _gfortran_pow_c16_i4@GFORTRAN_1.0 4.6 + _gfortran_pow_c16_i8@GFORTRAN_1.0 4.6 + _gfortran_pow_c4_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_c8_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_i16_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_i16_i4@GFORTRAN_1.0 4.3 + _gfortran_pow_i16_i8@GFORTRAN_1.0 4.3 + _gfortran_pow_i4_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_i8_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_r10_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_r16_i16@GFORTRAN_1.0 4.6 + _gfortran_pow_r16_i4@GFORTRAN_1.0 4.6 + _gfortran_pow_r16_i8@GFORTRAN_1.0 4.6 + _gfortran_pow_r4_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_r8_i16@GFORTRAN_1.0 4.3 + _gfortran_product_i16@GFORTRAN_1.0 4.3 + _gfortran_reshape_16@GFORTRAN_1.0 4.3 + _gfortran_shape_16@GFORTRAN_1.0 4.3 + _gfortran_siall_i16@GFORTRAN_1.4 4.6 + _gfortran_siany_i16@GFORTRAN_1.4 4.6 + _gfortran_siparity_i16@GFORTRAN_1.4 4.6 + _gfortran_smaxloc0_16_i16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_i1@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_i2@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_i4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_i8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_r10@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_r4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_r8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_4_i16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_8_i16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_i16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_i1@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_i2@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_i4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_i8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_r10@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_r4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_r8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_4_i16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_8_i16@GFORTRAN_1.0 4.3 + _gfortran_smaxval_i16@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_i16@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_i1@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_i2@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_i4@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_i8@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_r10@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_r4@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_r8@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_4_i16@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_8_i16@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_i16@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_i1@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_i2@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_i4@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_i8@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_r10@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_r4@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_r8@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_4_i16@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_8_i16@GFORTRAN_1.0 4.3 + _gfortran_sminval_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__abs_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__char_1_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__dim_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__index_1_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__len_1_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__mod_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_16_10@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_16_16@GFORTRAN_1.0 4.6 + _gfortran_specific__nint_16_4@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_16_8@GFORTRAN_1.0 4.3 + _gfortran_specific__sign_i16@GFORTRAN_1.0 4.3 + _gfortran_sproduct_i16@GFORTRAN_1.0 4.3 + _gfortran_ssum_i16@GFORTRAN_1.0 4.3 + _gfortran_sum_i16@GFORTRAN_1.0 4.3 + _gfortran_transpose_i16@GFORTRAN_1.0 4.3 --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.16.powerpc +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.16.powerpc @@ -0,0 +1,100 @@ + __iso_c_binding_c_f_pointer_c16@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_r16@GFORTRAN_1.0 4.3 + _gfortran_arandom_r16@GFORTRAN_1.0 4.3 + _gfortran_bessel_jn_r16@GFORTRAN_1.4 4.6 + _gfortran_bessel_yn_r16@GFORTRAN_1.4 4.6 + _gfortran_cpu_time_16@GFORTRAN_1.0 4.3 + _gfortran_erfc_scaled_r16@GFORTRAN_1.1 4.4.0 + _gfortran_exponent_r16@GFORTRAN_1.0 4.3 + _gfortran_fraction_r16@GFORTRAN_1.0 4.3 + _gfortran_matmul_c16@GFORTRAN_1.0 4.3 + _gfortran_matmul_r16@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_4_r16@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_8_r16@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_4_r16@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_8_r16@GFORTRAN_1.0 4.3 + _gfortran_maxval_r16@GFORTRAN_1.0 4.3 + _gfortran_minloc0_4_r16@GFORTRAN_1.0 4.3 + _gfortran_minloc0_8_r16@GFORTRAN_1.0 4.3 + _gfortran_minloc1_4_r16@GFORTRAN_1.0 4.3 + _gfortran_minloc1_8_r16@GFORTRAN_1.0 4.3 + _gfortran_minval_r16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_4_r16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_8_r16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_4_r16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_8_r16@GFORTRAN_1.0 4.3 + _gfortran_mmaxval_r16@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_4_r16@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_8_r16@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_4_r16@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_8_r16@GFORTRAN_1.0 4.3 + _gfortran_mminval_r16@GFORTRAN_1.0 4.3 + _gfortran_mproduct_c16@GFORTRAN_1.0 4.3 + _gfortran_mproduct_r16@GFORTRAN_1.0 4.3 + _gfortran_msum_c16@GFORTRAN_1.0 4.3 + _gfortran_msum_r16@GFORTRAN_1.0 4.3 + _gfortran_nearest_r16@GFORTRAN_1.0 4.3 + _gfortran_norm2_r16@GFORTRAN_1.4 4.6 + _gfortran_pow_c16_i4@GFORTRAN_1.0 4.3 + _gfortran_pow_c16_i8@GFORTRAN_1.0 4.3 + _gfortran_pow_r16_i4@GFORTRAN_1.0 4.6 + _gfortran_pow_r16_i8@GFORTRAN_1.0 4.3 + _gfortran_product_c16@GFORTRAN_1.0 4.3 + _gfortran_product_r16@GFORTRAN_1.0 4.3 + _gfortran_random_r16@GFORTRAN_1.0 4.3 + _gfortran_reshape_c16@GFORTRAN_1.0 4.3 + _gfortran_reshape_r16@GFORTRAN_1.0 4.3 + _gfortran_rrspacing_r16@GFORTRAN_1.0 4.3 + _gfortran_set_exponent_r16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_4_r16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_8_r16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_4_r16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_8_r16@GFORTRAN_1.0 4.3 + _gfortran_smaxval_r16@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_4_r16@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_8_r16@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_4_r16@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_8_r16@GFORTRAN_1.0 4.3 + _gfortran_sminval_r16@GFORTRAN_1.0 4.3 + _gfortran_spacing_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__abs_c16@GFORTRAN_1.0 4.3 + _gfortran_specific__abs_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__acos_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__acosh_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__aimag_c16@GFORTRAN_1.0 4.3 + _gfortran_specific__aint_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__anint_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__asin_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__asinh_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__atan2_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__atan_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__atanh_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__conjg_16@GFORTRAN_1.0 4.3 + _gfortran_specific__cos_c16@GFORTRAN_1.0 4.3 + _gfortran_specific__cos_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__cosh_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__dim_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__exp_c16@GFORTRAN_1.0 4.3 + _gfortran_specific__exp_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__log10_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__log_c16@GFORTRAN_1.0 4.3 + _gfortran_specific__log_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__mod_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_4_16@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_8_16@GFORTRAN_1.0 4.3 + _gfortran_specific__sign_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__sin_c16@GFORTRAN_1.0 4.3 + _gfortran_specific__sin_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__sinh_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__sqrt_c16@GFORTRAN_1.0 4.3 + _gfortran_specific__sqrt_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__tan_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__tanh_r16@GFORTRAN_1.0 4.3 + _gfortran_sproduct_c16@GFORTRAN_1.0 4.3 + _gfortran_sproduct_r16@GFORTRAN_1.0 4.3 + _gfortran_ssum_c16@GFORTRAN_1.0 4.3 + _gfortran_ssum_r16@GFORTRAN_1.0 4.3 + _gfortran_sum_c16@GFORTRAN_1.0 4.3 + _gfortran_sum_r16@GFORTRAN_1.0 4.3 + _gfortran_transpose_c16@GFORTRAN_1.0 4.3 + _gfortran_transpose_r16@GFORTRAN_1.0 4.3 --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.16.powerpc64 +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.16.powerpc64 @@ -0,0 +1,191 @@ + __iso_c_binding_c_f_pointer_i16@GFORTRAN_1.0 4.3 + _gfortran_all_l16@GFORTRAN_1.0 4.3 + _gfortran_any_l16@GFORTRAN_1.0 4.3 + _gfortran_count_16_l@GFORTRAN_1.0 4.3 + _gfortran_cshift0_16@GFORTRAN_1.1 4.4.0 + _gfortran_cshift0_16_char4@GFORTRAN_1.4 4.6 + _gfortran_cshift0_16_char@GFORTRAN_1.1 4.4.0 + _gfortran_cshift1_16@GFORTRAN_1.0 4.3 + _gfortran_cshift1_16_char4@GFORTRAN_1.1 4.4.0 + _gfortran_cshift1_16_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift0_16@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift0_16_char4@GFORTRAN_1.4 4.6 + _gfortran_eoshift0_16_char@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift1_16@GFORTRAN_1.0 4.3 + _gfortran_eoshift1_16_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift1_16_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift2_16@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift2_16_char4@GFORTRAN_1.4 4.6 + _gfortran_eoshift2_16_char@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift3_16@GFORTRAN_1.0 4.3 + _gfortran_eoshift3_16_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift3_16_char@GFORTRAN_1.0 4.3 + _gfortran_iall_i16@GFORTRAN_1.4 4.6 + _gfortran_iany_i16@GFORTRAN_1.4 4.6 + _gfortran_iparity_i16@GFORTRAN_1.4 4.6 + _gfortran_ishftc16@GFORTRAN_1.0 4.3 + _gfortran_matmul_i16@GFORTRAN_1.0 4.3 + _gfortran_matmul_l16@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_i16@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_i1@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_i2@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_i4@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_i8@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_r16@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_r4@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_r8@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_4_i16@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_8_i16@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_i16@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_i1@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_i2@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_i4@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_i8@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_r16@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_r4@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_r8@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_4_i16@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_8_i16@GFORTRAN_1.0 4.3 + _gfortran_maxval_i16@GFORTRAN_1.0 4.3 + _gfortran_miall_i16@GFORTRAN_1.4 4.6 + _gfortran_miany_i16@GFORTRAN_1.4 4.6 + _gfortran_minloc0_16_i16@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_i1@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_i2@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_i4@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_i8@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_r16@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_r4@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_r8@GFORTRAN_1.0 4.3 + _gfortran_minloc0_4_i16@GFORTRAN_1.0 4.3 + _gfortran_minloc0_8_i16@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_i16@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_i1@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_i2@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_i4@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_i8@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_r16@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_r4@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_r8@GFORTRAN_1.0 4.3 + _gfortran_minloc1_4_i16@GFORTRAN_1.0 4.3 + _gfortran_minloc1_8_i16@GFORTRAN_1.0 4.3 + _gfortran_minval_i16@GFORTRAN_1.0 4.3 + _gfortran_miparity_i16@GFORTRAN_1.4 4.6 + _gfortran_mmaxloc0_16_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_i1@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_i2@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_i4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_i8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_r16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_r4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_r8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_4_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_8_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_i1@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_i2@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_i4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_i8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_r16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_r4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_r8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_4_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_8_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxval_i16@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_i16@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_i1@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_i2@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_i4@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_i8@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_r16@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_r4@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_r8@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_4_i16@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_8_i16@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_i16@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_i1@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_i2@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_i4@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_i8@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_r16@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_r4@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_r8@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_4_i16@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_8_i16@GFORTRAN_1.0 4.3 + _gfortran_mminval_i16@GFORTRAN_1.0 4.3 + _gfortran_mproduct_i16@GFORTRAN_1.0 4.3 + _gfortran_msum_i16@GFORTRAN_1.0 4.3 + _gfortran_parity_l16@GFORTRAN_1.4 4.6 + _gfortran_pow_c16_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_c4_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_c8_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_i16_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_i16_i4@GFORTRAN_1.0 4.3 + _gfortran_pow_i16_i8@GFORTRAN_1.0 4.3 + _gfortran_pow_i4_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_i8_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_r16_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_r4_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_r8_i16@GFORTRAN_1.0 4.3 + _gfortran_product_i16@GFORTRAN_1.0 4.3 + _gfortran_reshape_16@GFORTRAN_1.0 4.3 + _gfortran_shape_16@GFORTRAN_1.0 4.3 + _gfortran_siall_i16@GFORTRAN_1.4 4.6 + _gfortran_siany_i16@GFORTRAN_1.4 4.6 + _gfortran_siparity_i16@GFORTRAN_1.4 4.6 + _gfortran_smaxloc0_16_i16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_i1@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_i2@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_i4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_i8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_r16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_r4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_r8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_4_i16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_8_i16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_i16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_i1@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_i2@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_i4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_i8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_r16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_r4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_r8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_4_i16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_8_i16@GFORTRAN_1.0 4.3 + _gfortran_smaxval_i16@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_i16@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_i1@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_i2@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_i4@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_i8@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_r16@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_r4@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_r8@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_4_i16@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_8_i16@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_i16@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_i1@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_i2@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_i4@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_i8@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_r16@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_r4@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_r8@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_4_i16@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_8_i16@GFORTRAN_1.0 4.3 + _gfortran_sminval_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__abs_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__char_1_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__dim_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__index_1_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__len_1_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__mod_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_16_16@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_16_4@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_16_8@GFORTRAN_1.0 4.3 + _gfortran_specific__sign_i16@GFORTRAN_1.0 4.3 + _gfortran_sproduct_i16@GFORTRAN_1.0 4.3 + _gfortran_ssum_i16@GFORTRAN_1.0 4.3 + _gfortran_sum_i16@GFORTRAN_1.0 4.3 + _gfortran_transpose_i16@GFORTRAN_1.0 4.3 --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.64 +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.64 @@ -0,0 +1,2 @@ + _gfortran_clz128@GFORTRAN_1.2 4.4.0 + _gfortran_ctz128@GFORTRAN_1.2 4.4.0 --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.alpha +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.alpha @@ -0,0 +1,5 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.16.powerpc" +#include "libgfortran3.symbols.16.powerpc64" +#include "libgfortran3.symbols.64" --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.amd64 +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.amd64 @@ -0,0 +1,7 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.10" +#include "libgfortran3.symbols.16" +#include "libgfortran3.symbols.16.powerpc" +#include "libgfortran3.symbols.qf" +#include "libgfortran3.symbols.64" --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.arm64 +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.arm64 @@ -0,0 +1,5 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.64" +#include "libgfortran3.symbols.16.powerpc" +#include "libgfortran3.symbols.16.powerpc64" --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.armel +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.armel @@ -0,0 +1,2 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.armhf +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.armhf @@ -0,0 +1,2 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.common +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.common @@ -0,0 +1,806 @@ + F2C_1.0@F2C_1.0 4.3 + GFORTRAN_1.0@GFORTRAN_1.0 4.3 + GFORTRAN_1.1@GFORTRAN_1.1 4.4.0 + GFORTRAN_1.2@GFORTRAN_1.2 4.4.0 + GFORTRAN_1.3@GFORTRAN_1.3 4.6 + GFORTRAN_1.4@GFORTRAN_1.4 4.6 + GFORTRAN_1.5@GFORTRAN_1.5 4.8 + GFORTRAN_C99_1.0@GFORTRAN_C99_1.0 4.3 + GFORTRAN_C99_1.1@GFORTRAN_C99_1.1 4.5 + __iso_c_binding_c_f_pointer@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_c4@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_c8@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_d0@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_i1@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_i2@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_i4@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_i8@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_l1@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_l2@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_l4@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_l8@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_r4@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_r8@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_s0@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_u0@GFORTRAN_1.0 4.3 + _gfortran_abort@GFORTRAN_1.0 4.3 + _gfortran_access_func@GFORTRAN_1.0 4.3 + _gfortran_adjustl@GFORTRAN_1.0 4.3 + _gfortran_adjustl_char4@GFORTRAN_1.1 4.4.0 + _gfortran_adjustr@GFORTRAN_1.0 4.3 + _gfortran_adjustr_char4@GFORTRAN_1.1 4.4.0 + _gfortran_alarm_sub_i4@GFORTRAN_1.0 4.3 + _gfortran_alarm_sub_i8@GFORTRAN_1.0 4.3 + _gfortran_alarm_sub_int_i4@GFORTRAN_1.0 4.3 + _gfortran_alarm_sub_int_i8@GFORTRAN_1.0 4.3 + _gfortran_all_l1@GFORTRAN_1.0 4.3 + _gfortran_all_l2@GFORTRAN_1.0 4.3 + _gfortran_all_l4@GFORTRAN_1.0 4.3 + _gfortran_all_l8@GFORTRAN_1.0 4.3 + _gfortran_any_l1@GFORTRAN_1.0 4.3 + _gfortran_any_l2@GFORTRAN_1.0 4.3 + _gfortran_any_l4@GFORTRAN_1.0 4.3 + _gfortran_any_l8@GFORTRAN_1.0 4.3 + _gfortran_arandom_r4@GFORTRAN_1.0 4.3 + _gfortran_arandom_r8@GFORTRAN_1.0 4.3 + _gfortran_associated@GFORTRAN_1.0 4.3 + _gfortran_backtrace@GFORTRAN_1.5 4.8 + _gfortran_bessel_jn_r4@GFORTRAN_1.4 4.6 + _gfortran_bessel_jn_r8@GFORTRAN_1.4 4.6 + _gfortran_bessel_yn_r4@GFORTRAN_1.4 4.6 + _gfortran_bessel_yn_r8@GFORTRAN_1.4 4.6 + _gfortran_chdir_i4@GFORTRAN_1.0 4.3 + _gfortran_chdir_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_chdir_i8@GFORTRAN_1.0 4.3 + _gfortran_chdir_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_chmod_func@GFORTRAN_1.0 4.3 + _gfortran_chmod_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_chmod_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_compare_string@GFORTRAN_1.0 4.3 + _gfortran_compare_string_char4@GFORTRAN_1.1 4.4.0 + _gfortran_concat_string@GFORTRAN_1.0 4.3 + _gfortran_concat_string_char4@GFORTRAN_1.1 4.4.0 + _gfortran_convert_char1_to_char4@GFORTRAN_1.1 4.4.0 + _gfortran_convert_char4_to_char1@GFORTRAN_1.1 4.4.0 + _gfortran_count_1_l@GFORTRAN_1.0 4.3 + _gfortran_count_2_l@GFORTRAN_1.0 4.3 + _gfortran_count_4_l@GFORTRAN_1.0 4.3 + _gfortran_count_8_l@GFORTRAN_1.0 4.3 + _gfortran_cpu_time_4@GFORTRAN_1.0 4.3 + _gfortran_cpu_time_8@GFORTRAN_1.0 4.3 + _gfortran_cshift0_1@GFORTRAN_1.0 4.3 + _gfortran_cshift0_1_char4@GFORTRAN_1.1 4.4.0 + _gfortran_cshift0_1_char@GFORTRAN_1.0 4.3 + _gfortran_cshift0_2@GFORTRAN_1.0 4.3 + _gfortran_cshift0_2_char4@GFORTRAN_1.1 4.4.0 + _gfortran_cshift0_2_char@GFORTRAN_1.0 4.3 + _gfortran_cshift0_4@GFORTRAN_1.0 4.3 + _gfortran_cshift0_4_char4@GFORTRAN_1.1 4.4.0 + _gfortran_cshift0_4_char@GFORTRAN_1.0 4.3 + _gfortran_cshift0_8@GFORTRAN_1.0 4.3 + _gfortran_cshift0_8_char4@GFORTRAN_1.1 4.4.0 + _gfortran_cshift0_8_char@GFORTRAN_1.0 4.3 + _gfortran_cshift1_4@GFORTRAN_1.0 4.3 + _gfortran_cshift1_4_char4@GFORTRAN_1.1 4.4.0 + _gfortran_cshift1_4_char@GFORTRAN_1.0 4.3 + _gfortran_cshift1_8@GFORTRAN_1.0 4.3 + _gfortran_cshift1_8_char4@GFORTRAN_1.1 4.4.0 + _gfortran_cshift1_8_char@GFORTRAN_1.0 4.3 + _gfortran_ctime@GFORTRAN_1.0 4.3 + _gfortran_ctime_sub@GFORTRAN_1.0 4.3 + _gfortran_date_and_time@GFORTRAN_1.0 4.3 + _gfortran_dtime@GFORTRAN_1.0 4.3 + _gfortran_dtime_sub@GFORTRAN_1.0 4.3 + _gfortran_eoshift0_1@GFORTRAN_1.0 4.3 + _gfortran_eoshift0_1_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift0_1_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift0_2@GFORTRAN_1.0 4.3 + _gfortran_eoshift0_2_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift0_2_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift0_4@GFORTRAN_1.0 4.3 + _gfortran_eoshift0_4_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift0_4_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift0_8@GFORTRAN_1.0 4.3 + _gfortran_eoshift0_8_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift0_8_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift1_4@GFORTRAN_1.0 4.3 + _gfortran_eoshift1_4_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift1_4_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift1_8@GFORTRAN_1.0 4.3 + _gfortran_eoshift1_8_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift1_8_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift2_1@GFORTRAN_1.0 4.3 + _gfortran_eoshift2_1_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift2_1_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift2_2@GFORTRAN_1.0 4.3 + _gfortran_eoshift2_2_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift2_2_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift2_4@GFORTRAN_1.0 4.3 + _gfortran_eoshift2_4_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift2_4_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift2_8@GFORTRAN_1.0 4.3 + _gfortran_eoshift2_8_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift2_8_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift3_4@GFORTRAN_1.0 4.3 + _gfortran_eoshift3_4_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift3_4_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift3_8@GFORTRAN_1.0 4.3 + _gfortran_eoshift3_8_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift3_8_char@GFORTRAN_1.0 4.3 + _gfortran_erfc_scaled_r4@GFORTRAN_1.1 4.4.0 + _gfortran_erfc_scaled_r8@GFORTRAN_1.1 4.4.0 + _gfortran_error_stop_numeric@GFORTRAN_1.4 4.6 + _gfortran_error_stop_string@GFORTRAN_1.3 4.6 + _gfortran_etime@GFORTRAN_1.0 4.3 + _gfortran_etime_sub@GFORTRAN_1.0 4.3 + _gfortran_execute_command_line_i4@GFORTRAN_1.1 4.6 + _gfortran_execute_command_line_i8@GFORTRAN_1.1 4.6 + _gfortran_exit_i4@GFORTRAN_1.0 4.3 + _gfortran_exit_i8@GFORTRAN_1.0 4.3 + _gfortran_exponent_r4@GFORTRAN_1.0 4.3 + _gfortran_exponent_r8@GFORTRAN_1.0 4.3 + _gfortran_f2c_specific__abs_c4@F2C_1.0 4.3 + _gfortran_f2c_specific__abs_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__acos_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__acosh_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__aimag_c4@F2C_1.0 4.3 + _gfortran_f2c_specific__aimag_c8@F2C_1.0 4.3 + _gfortran_f2c_specific__aint_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__anint_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__asin_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__asinh_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__atan2_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__atan_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__atanh_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__conjg_4@F2C_1.0 4.3 + _gfortran_f2c_specific__conjg_8@F2C_1.0 4.3 + _gfortran_f2c_specific__cos_c4@F2C_1.0 4.3 + _gfortran_f2c_specific__cos_c8@F2C_1.0 4.3 + _gfortran_f2c_specific__cos_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__cosh_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__dim_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__exp_c4@F2C_1.0 4.3 + _gfortran_f2c_specific__exp_c8@F2C_1.0 4.3 + _gfortran_f2c_specific__exp_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__log10_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__log_c4@F2C_1.0 4.3 + _gfortran_f2c_specific__log_c8@F2C_1.0 4.3 + _gfortran_f2c_specific__log_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__mod_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__sign_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__sin_c4@F2C_1.0 4.3 + _gfortran_f2c_specific__sin_c8@F2C_1.0 4.3 + _gfortran_f2c_specific__sin_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__sinh_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__sqrt_c4@F2C_1.0 4.3 + _gfortran_f2c_specific__sqrt_c8@F2C_1.0 4.3 + _gfortran_f2c_specific__sqrt_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__tan_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__tanh_r4@F2C_1.0 4.3 + _gfortran_fdate@GFORTRAN_1.0 4.3 + _gfortran_fdate_sub@GFORTRAN_1.0 4.3 + _gfortran_fget@GFORTRAN_1.0 4.3 + _gfortran_fget_i1_sub@GFORTRAN_1.0 4.3 + _gfortran_fget_i2_sub@GFORTRAN_1.0 4.3 + _gfortran_fget_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_fget_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_fgetc@GFORTRAN_1.0 4.3 + _gfortran_fgetc_i1_sub@GFORTRAN_1.0 4.3 + _gfortran_fgetc_i2_sub@GFORTRAN_1.0 4.3 + _gfortran_fgetc_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_fgetc_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_flush_i4@GFORTRAN_1.0 4.3 + _gfortran_flush_i8@GFORTRAN_1.0 4.3 + _gfortran_fnum_i4@GFORTRAN_1.0 4.3 + _gfortran_fnum_i8@GFORTRAN_1.0 4.3 + _gfortran_fput@GFORTRAN_1.0 4.3 + _gfortran_fput_i1_sub@GFORTRAN_1.0 4.3 + _gfortran_fput_i2_sub@GFORTRAN_1.0 4.3 + _gfortran_fput_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_fput_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_fputc@GFORTRAN_1.0 4.3 + _gfortran_fputc_i1_sub@GFORTRAN_1.0 4.3 + _gfortran_fputc_i2_sub@GFORTRAN_1.0 4.3 + _gfortran_fputc_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_fputc_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_fraction_r4@GFORTRAN_1.0 4.3 + _gfortran_fraction_r8@GFORTRAN_1.0 4.3 + _gfortran_free@GFORTRAN_1.0 4.3 + _gfortran_fseek_sub@GFORTRAN_1.0 4.3 + _gfortran_fstat_i4@GFORTRAN_1.0 4.3 + _gfortran_fstat_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_fstat_i8@GFORTRAN_1.0 4.3 + _gfortran_fstat_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_ftell2@GFORTRAN_1.5 4.8 + _gfortran_ftell@GFORTRAN_1.0 4.3 + _gfortran_ftell_i1_sub@GFORTRAN_1.0 4.3 + _gfortran_ftell_i2_sub@GFORTRAN_1.0 4.3 + _gfortran_ftell_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_ftell_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_generate_error@GFORTRAN_1.0 4.3 + _gfortran_gerror@GFORTRAN_1.0 4.3 + _gfortran_get_command_argument_i4@GFORTRAN_1.0 4.3 + _gfortran_get_command_argument_i8@GFORTRAN_1.0 4.3 + _gfortran_get_command_i4@GFORTRAN_1.0 4.3 + _gfortran_get_command_i8@GFORTRAN_1.0 4.3 + _gfortran_get_environment_variable_i4@GFORTRAN_1.0 4.3 + _gfortran_get_environment_variable_i8@GFORTRAN_1.0 4.3 + _gfortran_getarg_i4@GFORTRAN_1.0 4.3 + _gfortran_getarg_i8@GFORTRAN_1.0 4.3 + _gfortran_getcwd@GFORTRAN_1.0 4.3 + _gfortran_getcwd_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_getcwd_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_getenv@GFORTRAN_1.0 4.3 + _gfortran_getgid@GFORTRAN_1.0 4.3 + _gfortran_getlog@GFORTRAN_1.0 4.3 + _gfortran_getpid@GFORTRAN_1.0 4.3 + _gfortran_getuid@GFORTRAN_1.0 4.3 + _gfortran_gmtime_i4@GFORTRAN_1.0 4.3 + _gfortran_gmtime_i8@GFORTRAN_1.0 4.3 + _gfortran_hostnm@GFORTRAN_1.0 4.3 + _gfortran_hostnm_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_hostnm_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_iall_i1@GFORTRAN_1.4 4.6 + _gfortran_iall_i2@GFORTRAN_1.4 4.6 + _gfortran_iall_i4@GFORTRAN_1.4 4.6 + _gfortran_iall_i8@GFORTRAN_1.4 4.6 + _gfortran_iany_i1@GFORTRAN_1.4 4.6 + _gfortran_iany_i2@GFORTRAN_1.4 4.6 + _gfortran_iany_i4@GFORTRAN_1.4 4.6 + _gfortran_iany_i8@GFORTRAN_1.4 4.6 + _gfortran_iargc@GFORTRAN_1.0 4.3 + _gfortran_idate_i4@GFORTRAN_1.0 4.3 + _gfortran_idate_i8@GFORTRAN_1.0 4.3 + _gfortran_ierrno_i4@GFORTRAN_1.0 4.3 + _gfortran_ierrno_i8@GFORTRAN_1.0 4.3 + _gfortran_internal_pack@GFORTRAN_1.0 4.3 + _gfortran_internal_unpack@GFORTRAN_1.0 4.3 + _gfortran_iparity_i1@GFORTRAN_1.4 4.6 + _gfortran_iparity_i2@GFORTRAN_1.4 4.6 + _gfortran_iparity_i4@GFORTRAN_1.4 4.6 + _gfortran_iparity_i8@GFORTRAN_1.4 4.6 + _gfortran_irand@GFORTRAN_1.0 4.3 + _gfortran_is_extension_of@GFORTRAN_1.2 4.5 + _gfortran_isatty_l4@GFORTRAN_1.0 4.3 + _gfortran_isatty_l8@GFORTRAN_1.0 4.3 + _gfortran_ishftc4@GFORTRAN_1.0 4.3 + _gfortran_ishftc8@GFORTRAN_1.0 4.3 + _gfortran_itime_i4@GFORTRAN_1.0 4.3 + _gfortran_itime_i8@GFORTRAN_1.0 4.3 + _gfortran_kill_i4@GFORTRAN_1.0 4.3 + _gfortran_kill_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_kill_i8@GFORTRAN_1.0 4.3 + _gfortran_kill_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_link_i4@GFORTRAN_1.0 4.3 + _gfortran_link_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_link_i8@GFORTRAN_1.0 4.3 + _gfortran_link_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_lstat_i4@GFORTRAN_1.0 4.3 + _gfortran_lstat_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_lstat_i8@GFORTRAN_1.0 4.3 + _gfortran_lstat_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_ltime_i4@GFORTRAN_1.0 4.3 + _gfortran_ltime_i8@GFORTRAN_1.0 4.3 + _gfortran_malloc@GFORTRAN_1.0 4.3 + _gfortran_matmul_c4@GFORTRAN_1.0 4.3 + _gfortran_matmul_c8@GFORTRAN_1.0 4.3 + _gfortran_matmul_i1@GFORTRAN_1.0 4.3 + _gfortran_matmul_i2@GFORTRAN_1.0 4.3 + _gfortran_matmul_i4@GFORTRAN_1.0 4.3 + _gfortran_matmul_i8@GFORTRAN_1.0 4.3 + _gfortran_matmul_l4@GFORTRAN_1.0 4.3 + _gfortran_matmul_l8@GFORTRAN_1.0 4.3 + _gfortran_matmul_r4@GFORTRAN_1.0 4.3 + _gfortran_matmul_r8@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_4_i1@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_4_i2@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_4_i4@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_4_i8@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_4_r4@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_4_r8@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_8_i1@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_8_i2@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_8_i4@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_8_i8@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_8_r4@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_8_r8@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_4_i1@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_4_i2@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_4_i4@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_4_i8@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_4_r4@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_4_r8@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_8_i1@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_8_i2@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_8_i4@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_8_i8@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_8_r4@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_8_r8@GFORTRAN_1.0 4.3 + _gfortran_maxval_i1@GFORTRAN_1.0 4.3 + _gfortran_maxval_i2@GFORTRAN_1.0 4.3 + _gfortran_maxval_i4@GFORTRAN_1.0 4.3 + _gfortran_maxval_i8@GFORTRAN_1.0 4.3 + _gfortran_maxval_r4@GFORTRAN_1.0 4.3 + _gfortran_maxval_r8@GFORTRAN_1.0 4.3 + _gfortran_mclock8@GFORTRAN_1.0 4.3 + _gfortran_mclock@GFORTRAN_1.0 4.3 + _gfortran_miall_i1@GFORTRAN_1.4 4.6 + _gfortran_miall_i2@GFORTRAN_1.4 4.6 + _gfortran_miall_i4@GFORTRAN_1.4 4.6 + _gfortran_miall_i8@GFORTRAN_1.4 4.6 + _gfortran_miany_i1@GFORTRAN_1.4 4.6 + _gfortran_miany_i2@GFORTRAN_1.4 4.6 + _gfortran_miany_i4@GFORTRAN_1.4 4.6 + _gfortran_miany_i8@GFORTRAN_1.4 4.6 + _gfortran_minloc0_4_i1@GFORTRAN_1.0 4.3 + _gfortran_minloc0_4_i2@GFORTRAN_1.0 4.3 + _gfortran_minloc0_4_i4@GFORTRAN_1.0 4.3 + _gfortran_minloc0_4_i8@GFORTRAN_1.0 4.3 + _gfortran_minloc0_4_r4@GFORTRAN_1.0 4.3 + _gfortran_minloc0_4_r8@GFORTRAN_1.0 4.3 + _gfortran_minloc0_8_i1@GFORTRAN_1.0 4.3 + _gfortran_minloc0_8_i2@GFORTRAN_1.0 4.3 + _gfortran_minloc0_8_i4@GFORTRAN_1.0 4.3 + _gfortran_minloc0_8_i8@GFORTRAN_1.0 4.3 + _gfortran_minloc0_8_r4@GFORTRAN_1.0 4.3 + _gfortran_minloc0_8_r8@GFORTRAN_1.0 4.3 + _gfortran_minloc1_4_i1@GFORTRAN_1.0 4.3 + _gfortran_minloc1_4_i2@GFORTRAN_1.0 4.3 + _gfortran_minloc1_4_i4@GFORTRAN_1.0 4.3 + _gfortran_minloc1_4_i8@GFORTRAN_1.0 4.3 + _gfortran_minloc1_4_r4@GFORTRAN_1.0 4.3 + _gfortran_minloc1_4_r8@GFORTRAN_1.0 4.3 + _gfortran_minloc1_8_i1@GFORTRAN_1.0 4.3 + _gfortran_minloc1_8_i2@GFORTRAN_1.0 4.3 + _gfortran_minloc1_8_i4@GFORTRAN_1.0 4.3 + _gfortran_minloc1_8_i8@GFORTRAN_1.0 4.3 + _gfortran_minloc1_8_r4@GFORTRAN_1.0 4.3 + _gfortran_minloc1_8_r8@GFORTRAN_1.0 4.3 + _gfortran_minval_i1@GFORTRAN_1.0 4.3 + _gfortran_minval_i2@GFORTRAN_1.0 4.3 + _gfortran_minval_i4@GFORTRAN_1.0 4.3 + _gfortran_minval_i8@GFORTRAN_1.0 4.3 + _gfortran_minval_r4@GFORTRAN_1.0 4.3 + _gfortran_minval_r8@GFORTRAN_1.0 4.3 + _gfortran_miparity_i1@GFORTRAN_1.4 4.6 + _gfortran_miparity_i2@GFORTRAN_1.4 4.6 + _gfortran_miparity_i4@GFORTRAN_1.4 4.6 + _gfortran_miparity_i8@GFORTRAN_1.4 4.6 + _gfortran_mmaxloc0_4_i1@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_4_i2@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_4_i4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_4_i8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_4_r4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_4_r8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_8_i1@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_8_i2@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_8_i4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_8_i8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_8_r4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_8_r8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_4_i1@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_4_i2@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_4_i4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_4_i8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_4_r4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_4_r8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_8_i1@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_8_i2@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_8_i4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_8_i8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_8_r4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_8_r8@GFORTRAN_1.0 4.3 + _gfortran_mmaxval_i1@GFORTRAN_1.0 4.3 + _gfortran_mmaxval_i2@GFORTRAN_1.0 4.3 + _gfortran_mmaxval_i4@GFORTRAN_1.0 4.3 + _gfortran_mmaxval_i8@GFORTRAN_1.0 4.3 + _gfortran_mmaxval_r4@GFORTRAN_1.0 4.3 + _gfortran_mmaxval_r8@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_4_i1@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_4_i2@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_4_i4@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_4_i8@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_4_r4@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_4_r8@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_8_i1@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_8_i2@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_8_i4@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_8_i8@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_8_r4@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_8_r8@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_4_i1@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_4_i2@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_4_i4@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_4_i8@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_4_r4@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_4_r8@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_8_i1@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_8_i2@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_8_i4@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_8_i8@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_8_r4@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_8_r8@GFORTRAN_1.0 4.3 + _gfortran_mminval_i1@GFORTRAN_1.0 4.3 + _gfortran_mminval_i2@GFORTRAN_1.0 4.3 + _gfortran_mminval_i4@GFORTRAN_1.0 4.3 + _gfortran_mminval_i8@GFORTRAN_1.0 4.3 + _gfortran_mminval_r4@GFORTRAN_1.0 4.3 + _gfortran_mminval_r8@GFORTRAN_1.0 4.3 + _gfortran_move_alloc@GFORTRAN_1.0 4.3 + _gfortran_move_alloc_c@GFORTRAN_1.0 4.3 + _gfortran_mproduct_c4@GFORTRAN_1.0 4.3 + _gfortran_mproduct_c8@GFORTRAN_1.0 4.3 + _gfortran_mproduct_i1@GFORTRAN_1.0 4.3 + _gfortran_mproduct_i2@GFORTRAN_1.0 4.3 + _gfortran_mproduct_i4@GFORTRAN_1.0 4.3 + _gfortran_mproduct_i8@GFORTRAN_1.0 4.3 + _gfortran_mproduct_r4@GFORTRAN_1.0 4.3 + _gfortran_mproduct_r8@GFORTRAN_1.0 4.3 + _gfortran_msum_c4@GFORTRAN_1.0 4.3 + _gfortran_msum_c8@GFORTRAN_1.0 4.3 + _gfortran_msum_i1@GFORTRAN_1.0 4.3 + _gfortran_msum_i2@GFORTRAN_1.0 4.3 + _gfortran_msum_i4@GFORTRAN_1.0 4.3 + _gfortran_msum_i8@GFORTRAN_1.0 4.3 + _gfortran_msum_r4@GFORTRAN_1.0 4.3 + _gfortran_msum_r8@GFORTRAN_1.0 4.3 + _gfortran_mvbits_i1@GFORTRAN_1.0 4.3 + _gfortran_mvbits_i2@GFORTRAN_1.0 4.3 + _gfortran_mvbits_i4@GFORTRAN_1.0 4.3 + _gfortran_mvbits_i8@GFORTRAN_1.0 4.3 + _gfortran_nearest_r4@GFORTRAN_1.0 4.3 + _gfortran_nearest_r8@GFORTRAN_1.0 4.3 + _gfortran_norm2_r4@GFORTRAN_1.4 4.6 + _gfortran_norm2_r8@GFORTRAN_1.4 4.6 + _gfortran_os_error@GFORTRAN_1.0 4.3 + _gfortran_pack@GFORTRAN_1.0 4.3 + _gfortran_pack_char4@GFORTRAN_1.1 4.4.0 + _gfortran_pack_char@GFORTRAN_1.0 4.3 + _gfortran_pack_s@GFORTRAN_1.0 4.3 + _gfortran_pack_s_char4@GFORTRAN_1.1 4.4.0 + _gfortran_pack_s_char@GFORTRAN_1.0 4.3 + _gfortran_parity_l1@GFORTRAN_1.4 4.6 + _gfortran_parity_l2@GFORTRAN_1.4 4.6 + _gfortran_parity_l4@GFORTRAN_1.4 4.6 + _gfortran_parity_l8@GFORTRAN_1.4 4.6 + _gfortran_pause_numeric@GFORTRAN_1.0 4.3 + _gfortran_pause_string@GFORTRAN_1.0 4.3 + _gfortran_perror_sub@GFORTRAN_1.0 4.3 + _gfortran_pow_c4_i4@GFORTRAN_1.0 4.3 + _gfortran_pow_c4_i8@GFORTRAN_1.0 4.3 + _gfortran_pow_c8_i4@GFORTRAN_1.0 4.3 + _gfortran_pow_c8_i8@GFORTRAN_1.0 4.3 + _gfortran_pow_i4_i4@GFORTRAN_1.0 4.3 + _gfortran_pow_i4_i8@GFORTRAN_1.0 4.3 + _gfortran_pow_i8_i4@GFORTRAN_1.0 4.3 + _gfortran_pow_i8_i8@GFORTRAN_1.0 4.3 + _gfortran_pow_r4_i8@GFORTRAN_1.0 4.3 + _gfortran_pow_r8_i8@GFORTRAN_1.0 4.3 + _gfortran_product_c4@GFORTRAN_1.0 4.3 + _gfortran_product_c8@GFORTRAN_1.0 4.3 + _gfortran_product_i1@GFORTRAN_1.0 4.3 + _gfortran_product_i2@GFORTRAN_1.0 4.3 + _gfortran_product_i4@GFORTRAN_1.0 4.3 + _gfortran_product_i8@GFORTRAN_1.0 4.3 + _gfortran_product_r4@GFORTRAN_1.0 4.3 + _gfortran_product_r8@GFORTRAN_1.0 4.3 + _gfortran_rand@GFORTRAN_1.0 4.3 + _gfortran_random_r4@GFORTRAN_1.0 4.3 + _gfortran_random_r8@GFORTRAN_1.0 4.3 + _gfortran_random_seed_i4@GFORTRAN_1.0 4.3 + _gfortran_random_seed_i8@GFORTRAN_1.0 4.3 + _gfortran_rename_i4@GFORTRAN_1.0 4.3 + _gfortran_rename_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_rename_i8@GFORTRAN_1.0 4.3 + _gfortran_rename_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_reshape@GFORTRAN_1.0 4.3 + _gfortran_reshape_4@GFORTRAN_1.0 4.3 + _gfortran_reshape_8@GFORTRAN_1.0 4.3 + _gfortran_reshape_c4@GFORTRAN_1.0 4.3 + _gfortran_reshape_c8@GFORTRAN_1.0 4.3 + _gfortran_reshape_char4@GFORTRAN_1.1 4.4.0 + _gfortran_reshape_char@GFORTRAN_1.0 4.3 + _gfortran_reshape_r4@GFORTRAN_1.0 4.3 + _gfortran_reshape_r8@GFORTRAN_1.0 4.3 + _gfortran_rrspacing_r4@GFORTRAN_1.0 4.3 + _gfortran_rrspacing_r8@GFORTRAN_1.0 4.3 + _gfortran_runtime_error@GFORTRAN_1.0 4.3 + _gfortran_runtime_error_at@GFORTRAN_1.0 4.3 + _gfortran_runtime_warning_at@GFORTRAN_1.1 4.4.0 + _gfortran_secnds@GFORTRAN_1.0 4.3 + _gfortran_second@GFORTRAN_1.0 4.3 + _gfortran_second_sub@GFORTRAN_1.0 4.3 + _gfortran_select_string@GFORTRAN_1.0 4.3 + _gfortran_select_string_char4@GFORTRAN_1.1 4.4.0 + _gfortran_selected_char_kind@GFORTRAN_1.1 4.4.0 + _gfortran_selected_int_kind@GFORTRAN_1.0 4.3 + _gfortran_selected_real_kind2008@GFORTRAN_1.4 4.6 + _gfortran_selected_real_kind@GFORTRAN_1.0 4.3 + _gfortran_set_args@GFORTRAN_1.0 4.3 + _gfortran_set_convert@GFORTRAN_1.0 4.3 + _gfortran_set_exponent_r4@GFORTRAN_1.0 4.3 + _gfortran_set_exponent_r8@GFORTRAN_1.0 4.3 + _gfortran_set_fpe@GFORTRAN_1.0 4.3 + _gfortran_set_max_subrecord_length@GFORTRAN_1.0 4.3 + _gfortran_set_options@GFORTRAN_1.0 4.3 + _gfortran_set_record_marker@GFORTRAN_1.0 4.3 + _gfortran_shape_4@GFORTRAN_1.0 4.3 + _gfortran_shape_8@GFORTRAN_1.0 4.3 + _gfortran_siall_i1@GFORTRAN_1.4 4.6 + _gfortran_siall_i2@GFORTRAN_1.4 4.6 + _gfortran_siall_i4@GFORTRAN_1.4 4.6 + _gfortran_siall_i8@GFORTRAN_1.4 4.6 + _gfortran_siany_i1@GFORTRAN_1.4 4.6 + _gfortran_siany_i2@GFORTRAN_1.4 4.6 + _gfortran_siany_i4@GFORTRAN_1.4 4.6 + _gfortran_siany_i8@GFORTRAN_1.4 4.6 + _gfortran_signal_func@GFORTRAN_1.0 4.3 + _gfortran_signal_func_int@GFORTRAN_1.0 4.3 + _gfortran_signal_sub@GFORTRAN_1.0 4.3 + _gfortran_signal_sub_int@GFORTRAN_1.0 4.3 + _gfortran_siparity_i1@GFORTRAN_1.4 4.6 + _gfortran_siparity_i2@GFORTRAN_1.4 4.6 + _gfortran_siparity_i4@GFORTRAN_1.4 4.6 + _gfortran_siparity_i8@GFORTRAN_1.4 4.6 + _gfortran_size0@GFORTRAN_1.0 4.3 + _gfortran_size1@GFORTRAN_1.0 4.3 + _gfortran_sleep_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_sleep_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_4_i1@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_4_i2@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_4_i4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_4_i8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_4_r4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_4_r8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_8_i1@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_8_i2@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_8_i4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_8_i8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_8_r4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_8_r8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_4_i1@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_4_i2@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_4_i4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_4_i8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_4_r4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_4_r8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_8_i1@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_8_i2@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_8_i4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_8_i8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_8_r4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_8_r8@GFORTRAN_1.0 4.3 + _gfortran_smaxval_i1@GFORTRAN_1.0 4.3 + _gfortran_smaxval_i2@GFORTRAN_1.0 4.3 + _gfortran_smaxval_i4@GFORTRAN_1.0 4.3 + _gfortran_smaxval_i8@GFORTRAN_1.0 4.3 + _gfortran_smaxval_r4@GFORTRAN_1.0 4.3 + _gfortran_smaxval_r8@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_4_i1@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_4_i2@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_4_i4@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_4_i8@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_4_r4@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_4_r8@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_8_i1@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_8_i2@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_8_i4@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_8_i8@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_8_r4@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_8_r8@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_4_i1@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_4_i2@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_4_i4@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_4_i8@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_4_r4@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_4_r8@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_8_i1@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_8_i2@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_8_i4@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_8_i8@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_8_r4@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_8_r8@GFORTRAN_1.0 4.3 + _gfortran_sminval_i1@GFORTRAN_1.0 4.3 + _gfortran_sminval_i2@GFORTRAN_1.0 4.3 + _gfortran_sminval_i4@GFORTRAN_1.0 4.3 + _gfortran_sminval_i8@GFORTRAN_1.0 4.3 + _gfortran_sminval_r4@GFORTRAN_1.0 4.3 + _gfortran_sminval_r8@GFORTRAN_1.0 4.3 + _gfortran_spacing_r4@GFORTRAN_1.0 4.3 + _gfortran_spacing_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__abs_c4@GFORTRAN_1.0 4.3 + _gfortran_specific__abs_c8@GFORTRAN_1.0 4.3 + _gfortran_specific__abs_i4@GFORTRAN_1.0 4.3 + _gfortran_specific__abs_i8@GFORTRAN_1.0 4.3 + _gfortran_specific__abs_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__abs_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__acos_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__acos_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__acosh_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__acosh_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__aimag_c4@GFORTRAN_1.0 4.3 + _gfortran_specific__aimag_c8@GFORTRAN_1.0 4.3 + _gfortran_specific__aint_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__aint_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__anint_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__anint_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__asin_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__asin_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__asinh_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__asinh_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__atan2_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__atan2_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__atan_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__atan_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__atanh_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__atanh_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__char_1_i4@GFORTRAN_1.0 4.3 + _gfortran_specific__char_1_i8@GFORTRAN_1.0 4.3 + _gfortran_specific__conjg_4@GFORTRAN_1.0 4.3 + _gfortran_specific__conjg_8@GFORTRAN_1.0 4.3 + _gfortran_specific__cos_c4@GFORTRAN_1.0 4.3 + _gfortran_specific__cos_c8@GFORTRAN_1.0 4.3 + _gfortran_specific__cos_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__cos_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__cosh_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__cosh_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__dim_i4@GFORTRAN_1.0 4.3 + _gfortran_specific__dim_i8@GFORTRAN_1.0 4.3 + _gfortran_specific__dim_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__dim_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__dprod_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__exp_c4@GFORTRAN_1.0 4.3 + _gfortran_specific__exp_c8@GFORTRAN_1.0 4.3 + _gfortran_specific__exp_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__exp_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__index_1_i4@GFORTRAN_1.0 4.3 + _gfortran_specific__index_1_i8@GFORTRAN_1.0 4.3 + _gfortran_specific__len_1_i4@GFORTRAN_1.0 4.3 + _gfortran_specific__len_1_i8@GFORTRAN_1.0 4.3 + _gfortran_specific__log10_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__log10_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__log_c4@GFORTRAN_1.0 4.3 + _gfortran_specific__log_c8@GFORTRAN_1.0 4.3 + _gfortran_specific__log_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__log_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__mod_i4@GFORTRAN_1.0 4.3 + _gfortran_specific__mod_i8@GFORTRAN_1.0 4.3 + _gfortran_specific__mod_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__mod_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_4_4@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_4_8@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_8_4@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_8_8@GFORTRAN_1.0 4.3 + _gfortran_specific__sign_i4@GFORTRAN_1.0 4.3 + _gfortran_specific__sign_i8@GFORTRAN_1.0 4.3 + _gfortran_specific__sign_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__sign_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__sin_c4@GFORTRAN_1.0 4.3 + _gfortran_specific__sin_c8@GFORTRAN_1.0 4.3 + _gfortran_specific__sin_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__sin_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__sinh_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__sinh_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__sqrt_c4@GFORTRAN_1.0 4.3 + _gfortran_specific__sqrt_c8@GFORTRAN_1.0 4.3 + _gfortran_specific__sqrt_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__sqrt_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__tan_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__tan_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__tanh_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__tanh_r8@GFORTRAN_1.0 4.3 + _gfortran_spread@GFORTRAN_1.0 4.3 + _gfortran_spread_char4@GFORTRAN_1.1 4.4.0 + _gfortran_spread_char4_scalar@GFORTRAN_1.1 4.4.0 + _gfortran_spread_char@GFORTRAN_1.0 4.3 + _gfortran_spread_char_scalar@GFORTRAN_1.0 4.3 + _gfortran_spread_scalar@GFORTRAN_1.0 4.3 + _gfortran_sproduct_c4@GFORTRAN_1.0 4.3 + _gfortran_sproduct_c8@GFORTRAN_1.0 4.3 + _gfortran_sproduct_i1@GFORTRAN_1.0 4.3 + _gfortran_sproduct_i2@GFORTRAN_1.0 4.3 + _gfortran_sproduct_i4@GFORTRAN_1.0 4.3 + _gfortran_sproduct_i8@GFORTRAN_1.0 4.3 + _gfortran_sproduct_r4@GFORTRAN_1.0 4.3 + _gfortran_sproduct_r8@GFORTRAN_1.0 4.3 + _gfortran_srand@GFORTRAN_1.0 4.3 + _gfortran_ssum_c4@GFORTRAN_1.0 4.3 + _gfortran_ssum_c8@GFORTRAN_1.0 4.3 + _gfortran_ssum_i1@GFORTRAN_1.0 4.3 + _gfortran_ssum_i2@GFORTRAN_1.0 4.3 + _gfortran_ssum_i4@GFORTRAN_1.0 4.3 + _gfortran_ssum_i8@GFORTRAN_1.0 4.3 + _gfortran_ssum_r4@GFORTRAN_1.0 4.3 + _gfortran_ssum_r8@GFORTRAN_1.0 4.3 + _gfortran_st_backspace@GFORTRAN_1.0 4.3 + _gfortran_st_close@GFORTRAN_1.0 4.3 + _gfortran_st_endfile@GFORTRAN_1.0 4.3 + _gfortran_st_flush@GFORTRAN_1.0 4.3 + _gfortran_st_inquire@GFORTRAN_1.0 4.3 + _gfortran_st_iolength@GFORTRAN_1.0 4.3 + _gfortran_st_iolength_done@GFORTRAN_1.0 4.3 + _gfortran_st_open@GFORTRAN_1.0 4.3 + _gfortran_st_read@GFORTRAN_1.0 4.3 + _gfortran_st_read_done@GFORTRAN_1.0 4.3 + _gfortran_st_rewind@GFORTRAN_1.0 4.3 + _gfortran_st_set_nml_var@GFORTRAN_1.0 4.3 + _gfortran_st_set_nml_var_dim@GFORTRAN_1.0 4.3 + _gfortran_st_wait@GFORTRAN_1.1 4.4.0 + _gfortran_st_write@GFORTRAN_1.0 4.3 + _gfortran_st_write_done@GFORTRAN_1.0 4.3 + _gfortran_stat_i4@GFORTRAN_1.0 4.3 + _gfortran_stat_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_stat_i8@GFORTRAN_1.0 4.3 + _gfortran_stat_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_stop_numeric@GFORTRAN_1.0 4.3 + _gfortran_stop_numeric_f08@GFORTRAN_1.4 4.6 + _gfortran_stop_string@GFORTRAN_1.0 4.3 + _gfortran_store_exe_path@GFORTRAN_1.0 4.3 + _gfortran_string_index@GFORTRAN_1.0 4.3 + _gfortran_string_index_char4@GFORTRAN_1.1 4.4.0 + _gfortran_string_len_trim@GFORTRAN_1.0 4.3 + _gfortran_string_len_trim_char4@GFORTRAN_1.1 4.4.0 + _gfortran_string_minmax@GFORTRAN_1.0 4.3 + _gfortran_string_minmax_char4@GFORTRAN_1.1 4.4.0 + _gfortran_string_scan@GFORTRAN_1.0 4.3 + _gfortran_string_scan_char4@GFORTRAN_1.1 4.4.0 + _gfortran_string_trim@GFORTRAN_1.0 4.3 + _gfortran_string_trim_char4@GFORTRAN_1.1 4.4.0 + _gfortran_string_verify@GFORTRAN_1.0 4.3 + _gfortran_string_verify_char4@GFORTRAN_1.1 4.4.0 + _gfortran_sum_c4@GFORTRAN_1.0 4.3 + _gfortran_sum_c8@GFORTRAN_1.0 4.3 + _gfortran_sum_i1@GFORTRAN_1.0 4.3 + _gfortran_sum_i2@GFORTRAN_1.0 4.3 + _gfortran_sum_i4@GFORTRAN_1.0 4.3 + _gfortran_sum_i8@GFORTRAN_1.0 4.3 + _gfortran_sum_r4@GFORTRAN_1.0 4.3 + _gfortran_sum_r8@GFORTRAN_1.0 4.3 + _gfortran_symlnk_i4@GFORTRAN_1.0 4.3 + _gfortran_symlnk_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_symlnk_i8@GFORTRAN_1.0 4.3 + _gfortran_symlnk_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_system@GFORTRAN_1.0 4.3 + _gfortran_system_clock_4@GFORTRAN_1.0 4.3 + _gfortran_system_clock_8@GFORTRAN_1.0 4.3 + _gfortran_system_sub@GFORTRAN_1.0 4.3 + _gfortran_time8_func@GFORTRAN_1.0 4.3 + _gfortran_time_func@GFORTRAN_1.0 4.3 + _gfortran_transfer_array@GFORTRAN_1.0 4.3 + _gfortran_transfer_array_write@GFORTRAN_1.4 4.6 + _gfortran_transfer_character@GFORTRAN_1.0 4.3 + _gfortran_transfer_character_wide@GFORTRAN_1.1 4.4.0 + _gfortran_transfer_character_wide_write@GFORTRAN_1.4 4.6 + _gfortran_transfer_character_write@GFORTRAN_1.4 4.6 + _gfortran_transfer_complex@GFORTRAN_1.0 4.3 + _gfortran_transfer_complex_write@GFORTRAN_1.4 4.6 + _gfortran_transfer_integer@GFORTRAN_1.0 4.3 + _gfortran_transfer_integer_write@GFORTRAN_1.4 4.6 + _gfortran_transfer_logical@GFORTRAN_1.0 4.3 + _gfortran_transfer_logical_write@GFORTRAN_1.4 4.6 + _gfortran_transfer_real@GFORTRAN_1.0 4.3 + _gfortran_transfer_real_write@GFORTRAN_1.4 4.6 + _gfortran_transpose@GFORTRAN_1.0 4.3 + _gfortran_transpose_c4@GFORTRAN_1.0 4.3 + _gfortran_transpose_c8@GFORTRAN_1.0 4.3 + _gfortran_transpose_char4@GFORTRAN_1.1 4.4.0 + _gfortran_transpose_char@GFORTRAN_1.0 4.3 + _gfortran_transpose_i4@GFORTRAN_1.0 4.3 + _gfortran_transpose_i8@GFORTRAN_1.0 4.3 + _gfortran_transpose_r4@GFORTRAN_1.0 4.3 + _gfortran_transpose_r8@GFORTRAN_1.0 4.3 + _gfortran_ttynam@GFORTRAN_1.0 4.3 + _gfortran_ttynam_sub@GFORTRAN_1.0 4.3 + _gfortran_umask_i4@GFORTRAN_1.0 4.3 + _gfortran_umask_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_umask_i8@GFORTRAN_1.0 4.3 + _gfortran_umask_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_unlink@GFORTRAN_1.0 4.3 + _gfortran_unlink_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_unlink_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_unpack0@GFORTRAN_1.0 4.3 + _gfortran_unpack0_char4@GFORTRAN_1.1 4.4.0 + _gfortran_unpack0_char@GFORTRAN_1.0 4.3 + _gfortran_unpack1@GFORTRAN_1.0 4.3 + _gfortran_unpack1_char4@GFORTRAN_1.1 4.4.0 + _gfortran_unpack1_char@GFORTRAN_1.0 4.3 --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.hurd-i386 +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.hurd-i386 @@ -0,0 +1,3 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.10" --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.i386 +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.i386 @@ -0,0 +1,9 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.10" +#include "libgfortran3.symbols.16.powerpc" + _gfortran_norm2_r10@GFORTRAN_1.4 4.6 + _gfortran_transfer_complex128@GFORTRAN_1.4 4.6 + _gfortran_transfer_complex128_write@GFORTRAN_1.4 4.6 + _gfortran_transfer_real128@GFORTRAN_1.4 4.6 + _gfortran_transfer_real128_write@GFORTRAN_1.4 4.6 --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.ia64 +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.ia64 @@ -0,0 +1,7 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.10" +#include "libgfortran3.symbols.16" +#include "libgfortran3.symbols.16.powerpc" +#include "libgfortran3.symbols.64" +#include "libgfortran3.symbols.qf" --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.kfreebsd-amd64 +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.kfreebsd-amd64 @@ -0,0 +1,5 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.10" +#include "libgfortran3.symbols.16" +#include "libgfortran3.symbols.64" --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.kfreebsd-i386 +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.kfreebsd-i386 @@ -0,0 +1,3 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.10" --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.lpia +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.lpia @@ -0,0 +1,3 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.10" --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.mips +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.mips @@ -0,0 +1,2 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.mipsel +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.mipsel @@ -0,0 +1,2 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.powerpc +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.powerpc @@ -0,0 +1,3 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.16.powerpc" --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.powerpcspe +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.powerpcspe @@ -0,0 +1,2 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.ppc64 +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.ppc64 @@ -0,0 +1,5 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.16.powerpc" +#include "libgfortran3.symbols.16.powerpc64" +#include "libgfortran3.symbols.64" --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.ppc64el +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.ppc64el @@ -0,0 +1,5 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.16.powerpc" +#include "libgfortran3.symbols.16.powerpc64" +#include "libgfortran3.symbols.64" --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.qf +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.qf @@ -0,0 +1,16 @@ + _gfortran_maxloc0_16_r16@GFORTRAN_1.0 4.6 + _gfortran_maxloc1_16_r16@GFORTRAN_1.0 4.6 + _gfortran_minloc0_16_r16@GFORTRAN_1.0 4.6 + _gfortran_minloc1_16_r16@GFORTRAN_1.0 4.6 + _gfortran_mmaxloc0_16_r16@GFORTRAN_1.0 4.6 + _gfortran_mmaxloc1_16_r16@GFORTRAN_1.0 4.6 + _gfortran_mminloc0_16_r16@GFORTRAN_1.0 4.6 + _gfortran_mminloc1_16_r16@GFORTRAN_1.0 4.6 + _gfortran_smaxloc0_16_r16@GFORTRAN_1.0 4.6 + _gfortran_smaxloc1_16_r16@GFORTRAN_1.0 4.6 + _gfortran_sminloc0_16_r16@GFORTRAN_1.0 4.6 + _gfortran_sminloc1_16_r16@GFORTRAN_1.0 4.6 + _gfortran_transfer_complex128@GFORTRAN_1.4 4.6 + _gfortran_transfer_complex128_write@GFORTRAN_1.4 4.6 + _gfortran_transfer_real128@GFORTRAN_1.4 4.6 + _gfortran_transfer_real128_write@GFORTRAN_1.4 4.6 --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.s390 +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.s390 @@ -0,0 +1,3 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.16.powerpc" --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.s390x +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.s390x @@ -0,0 +1,5 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.16.powerpc" +#include "libgfortran3.symbols.16.powerpc64" +#include "libgfortran3.symbols.64" --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.sh4 +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.sh4 @@ -0,0 +1,2 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.sparc +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.sparc @@ -0,0 +1,3 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.16.powerpc" --- gcc-4.9-4.9.2.orig/debian/libgfortran3.symbols.sparc64 +++ gcc-4.9-4.9.2/debian/libgfortran3.symbols.sparc64 @@ -0,0 +1,5 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.16.powerpc" +#include "libgfortran3.symbols.16.powerpc64" +#include "libgfortran3.symbols.64" --- gcc-4.9-4.9.2.orig/debian/libgnat-BV.overrides +++ gcc-4.9-4.9.2/debian/libgnat-BV.overrides @@ -0,0 +1 @@ +libgnat-@BV@ binary: package-name-doesnt-match-sonames --- gcc-4.9-4.9.2.orig/debian/libgnatprjBV.overrides +++ gcc-4.9-4.9.2/debian/libgnatprjBV.overrides @@ -0,0 +1 @@ +libgnatprj@BV@ binary: missing-dependency-on-libc --- gcc-4.9-4.9.2.orig/debian/libgnatvsnBV.overrides +++ gcc-4.9-4.9.2/debian/libgnatvsnBV.overrides @@ -0,0 +1 @@ +libgnatvsn@BV@ binary: missing-dependency-on-libc --- gcc-4.9-4.9.2.orig/debian/libgomp1.symbols +++ gcc-4.9-4.9.2/debian/libgomp1.symbols @@ -0,0 +1,4 @@ +libgomp.so.1 libgomp1 #MINVER# +#include "libgomp1.symbols.common" + GOMP_atomic_end@GOMP_1.0 4.2.1 + GOMP_atomic_start@GOMP_1.0 4.2.1 --- gcc-4.9-4.9.2.orig/debian/libgomp1.symbols.common +++ gcc-4.9-4.9.2/debian/libgomp1.symbols.common @@ -0,0 +1,196 @@ + GOMP_1.0@GOMP_1.0 4.2.1 + GOMP_2.0@GOMP_2.0 4.4 + GOMP_3.0@GOMP_3.0 4.7 + GOMP_4.0@GOMP_4.0 4.9 + GOMP_atomic_end@GOMP_1.0 4.2.1 + GOMP_atomic_start@GOMP_1.0 4.2.1 + GOMP_barrier@GOMP_1.0 4.2.1 + GOMP_barrier_cancel@GOMP_4.0 4.9 + GOMP_cancel@GOMP_4.0 4.9 + GOMP_cancellation_point@GOMP_4.0 4.9 + GOMP_critical_end@GOMP_1.0 4.2.1 + GOMP_critical_name_end@GOMP_1.0 4.2.1 + GOMP_critical_name_start@GOMP_1.0 4.2.1 + GOMP_critical_start@GOMP_1.0 4.2.1 + GOMP_loop_dynamic_next@GOMP_1.0 4.2.1 + GOMP_loop_dynamic_start@GOMP_1.0 4.2.1 + GOMP_loop_end@GOMP_1.0 4.2.1 + GOMP_loop_end_cancel@GOMP_4.0 4.9 + GOMP_loop_end_nowait@GOMP_1.0 4.2.1 + GOMP_loop_guided_next@GOMP_1.0 4.2.1 + GOMP_loop_guided_start@GOMP_1.0 4.2.1 + GOMP_loop_ordered_dynamic_next@GOMP_1.0 4.2.1 + GOMP_loop_ordered_dynamic_start@GOMP_1.0 4.2.1 + GOMP_loop_ordered_guided_next@GOMP_1.0 4.2.1 + GOMP_loop_ordered_guided_start@GOMP_1.0 4.2.1 + GOMP_loop_ordered_runtime_next@GOMP_1.0 4.2.1 + GOMP_loop_ordered_runtime_start@GOMP_1.0 4.2.1 + GOMP_loop_ordered_static_next@GOMP_1.0 4.2.1 + GOMP_loop_ordered_static_start@GOMP_1.0 4.2.1 + GOMP_loop_runtime_next@GOMP_1.0 4.2.1 + GOMP_loop_runtime_start@GOMP_1.0 4.2.1 + GOMP_loop_static_next@GOMP_1.0 4.2.1 + GOMP_loop_static_start@GOMP_1.0 4.2.1 + GOMP_loop_ull_dynamic_next@GOMP_2.0 4.4 + GOMP_loop_ull_dynamic_start@GOMP_2.0 4.4 + GOMP_loop_ull_guided_next@GOMP_2.0 4.4 + GOMP_loop_ull_guided_start@GOMP_2.0 4.4 + GOMP_loop_ull_ordered_dynamic_next@GOMP_2.0 4.4 + GOMP_loop_ull_ordered_dynamic_start@GOMP_2.0 4.4 + GOMP_loop_ull_ordered_guided_next@GOMP_2.0 4.4 + GOMP_loop_ull_ordered_guided_start@GOMP_2.0 4.4 + GOMP_loop_ull_ordered_runtime_next@GOMP_2.0 4.4 + GOMP_loop_ull_ordered_runtime_start@GOMP_2.0 4.4 + GOMP_loop_ull_ordered_static_next@GOMP_2.0 4.4 + GOMP_loop_ull_ordered_static_start@GOMP_2.0 4.4 + GOMP_loop_ull_runtime_next@GOMP_2.0 4.4 + GOMP_loop_ull_runtime_start@GOMP_2.0 4.4 + GOMP_loop_ull_static_next@GOMP_2.0 4.4 + GOMP_loop_ull_static_start@GOMP_2.0 4.4 + GOMP_ordered_end@GOMP_1.0 4.2.1 + GOMP_ordered_start@GOMP_1.0 4.2.1 + GOMP_parallel@GOMP_4.0 4.9 + GOMP_parallel_end@GOMP_1.0 4.2.1 + GOMP_parallel_loop_dynamic@GOMP_4.0 4.9 + GOMP_parallel_loop_dynamic_start@GOMP_1.0 4.2.1 + GOMP_parallel_loop_guided@GOMP_4.0 4.9 + GOMP_parallel_loop_guided_start@GOMP_1.0 4.2.1 + GOMP_parallel_loop_runtime@GOMP_4.0 4.9 + GOMP_parallel_loop_runtime_start@GOMP_1.0 4.2.1 + GOMP_parallel_loop_static@GOMP_4.0 4.9 + GOMP_parallel_loop_static_start@GOMP_1.0 4.2.1 + GOMP_parallel_sections@GOMP_4.0 4.9 + GOMP_parallel_sections_start@GOMP_1.0 4.2.1 + GOMP_parallel_start@GOMP_1.0 4.2.1 + GOMP_sections_end@GOMP_1.0 4.2.1 + GOMP_sections_end_cancel@GOMP_4.0 4.9 + GOMP_sections_end_nowait@GOMP_1.0 4.2.1 + GOMP_sections_next@GOMP_1.0 4.2.1 + GOMP_sections_start@GOMP_1.0 4.2.1 + GOMP_single_copy_end@GOMP_1.0 4.2.1 + GOMP_single_copy_start@GOMP_1.0 4.2.1 + GOMP_single_start@GOMP_1.0 4.2.1 + GOMP_target@GOMP_4.0 4.9 + GOMP_target_data@GOMP_4.0 4.9 + GOMP_target_end_data@GOMP_4.0 4.9 + GOMP_target_update@GOMP_4.0 4.9 + GOMP_task@GOMP_2.0 4.4 + GOMP_taskgroup_end@GOMP_4.0 4.9 + GOMP_taskgroup_start@GOMP_4.0 4.9 + GOMP_taskwait@GOMP_2.0 4.4 + GOMP_taskyield@GOMP_3.0 4.7 + GOMP_teams@GOMP_4.0 4.9 + OMP_1.0@OMP_1.0 4.2.1 + OMP_2.0@OMP_2.0 4.2.1 + OMP_3.0@OMP_3.0 4.4 + OMP_3.1@OMP_3.1 4.7 + OMP_4.0@OMP_4.0 4.9 + omp_destroy_lock@OMP_1.0 4.2.1 + omp_destroy_lock@OMP_3.0 4.4 + omp_destroy_lock_@OMP_1.0 4.2.1 + omp_destroy_lock_@OMP_3.0 4.4 + omp_destroy_nest_lock@OMP_1.0 4.2.1 + omp_destroy_nest_lock@OMP_3.0 4.4 + omp_destroy_nest_lock_@OMP_1.0 4.2.1 + omp_destroy_nest_lock_@OMP_3.0 4.4 + omp_get_active_level@OMP_3.0 4.4 + omp_get_active_level_@OMP_3.0 4.4 + omp_get_ancestor_thread_num@OMP_3.0 4.4 + omp_get_ancestor_thread_num_8_@OMP_3.0 4.4 + omp_get_ancestor_thread_num_@OMP_3.0 4.4 + omp_get_cancellation@OMP_4.0 4.9 + omp_get_cancellation_@OMP_4.0 4.9 + omp_get_default_device@OMP_4.0 4.9 + omp_get_default_device_@OMP_4.0 4.9 + omp_get_dynamic@OMP_1.0 4.2.1 + omp_get_dynamic_@OMP_1.0 4.2.1 + omp_get_level@OMP_3.0 4.4 + omp_get_level_@OMP_3.0 4.4 + omp_get_max_active_levels@OMP_3.0 4.4 + omp_get_max_active_levels_@OMP_3.0 4.4 + omp_get_max_threads@OMP_1.0 4.2.1 + omp_get_max_threads_@OMP_1.0 4.2.1 + omp_get_nested@OMP_1.0 4.2.1 + omp_get_nested_@OMP_1.0 4.2.1 + omp_get_num_devices@OMP_4.0 4.9 + omp_get_num_devices_@OMP_4.0 4.9 + omp_get_num_procs@OMP_1.0 4.2.1 + omp_get_num_procs_@OMP_1.0 4.2.1 + omp_get_num_teams@OMP_4.0 4.9 + omp_get_num_teams_@OMP_4.0 4.9 + omp_get_num_threads@OMP_1.0 4.2.1 + omp_get_num_threads_@OMP_1.0 4.2.1 + omp_get_proc_bind@OMP_4.0 4.9 + omp_get_proc_bind_@OMP_4.0 4.9 + omp_get_schedule@OMP_3.0 4.4 + omp_get_schedule_8_@OMP_3.0 4.4 + omp_get_schedule_@OMP_3.0 4.4 + omp_get_team_num@OMP_4.0 4.9 + omp_get_team_num_@OMP_4.0 4.9 + omp_get_team_size@OMP_3.0 4.4 + omp_get_team_size_8_@OMP_3.0 4.4 + omp_get_team_size_@OMP_3.0 4.4 + omp_get_thread_limit@OMP_3.0 4.4 + omp_get_thread_limit_@OMP_3.0 4.4 + omp_get_thread_num@OMP_1.0 4.2.1 + omp_get_thread_num_@OMP_1.0 4.2.1 + omp_get_wtick@OMP_2.0 4.2.1 + omp_get_wtick_@OMP_2.0 4.2.1 + omp_get_wtime@OMP_2.0 4.2.1 + omp_get_wtime_@OMP_2.0 4.2.1 + omp_in_final@OMP_3.1 4.7 + omp_in_final_@OMP_3.1 4.7 + omp_in_parallel@OMP_1.0 4.2.1 + omp_in_parallel_@OMP_1.0 4.2.1 + omp_init_lock@OMP_1.0 4.2.1 + omp_init_lock@OMP_3.0 4.4 + omp_init_lock_@OMP_1.0 4.2.1 + omp_init_lock_@OMP_3.0 4.4 + omp_init_nest_lock@OMP_1.0 4.2.1 + omp_init_nest_lock@OMP_3.0 4.4 + omp_init_nest_lock_@OMP_1.0 4.2.1 + omp_init_nest_lock_@OMP_3.0 4.4 + omp_is_initial_device@OMP_4.0 4.9 + omp_is_initial_device_@OMP_4.0 4.9 + omp_set_default_device@OMP_4.0 4.9 + omp_set_default_device_8_@OMP_4.0 4.9 + omp_set_default_device_@OMP_4.0 4.9 + omp_set_dynamic@OMP_1.0 4.2.1 + omp_set_dynamic_8_@OMP_1.0 4.2.1 + omp_set_dynamic_@OMP_1.0 4.2.1 + omp_set_lock@OMP_1.0 4.2.1 + omp_set_lock@OMP_3.0 4.4 + omp_set_lock_@OMP_1.0 4.2.1 + omp_set_lock_@OMP_3.0 4.4 + omp_set_max_active_levels@OMP_3.0 4.4 + omp_set_max_active_levels_8_@OMP_3.0 4.4 + omp_set_max_active_levels_@OMP_3.0 4.4 + omp_set_nest_lock@OMP_1.0 4.2.1 + omp_set_nest_lock@OMP_3.0 4.4 + omp_set_nest_lock_@OMP_1.0 4.2.1 + omp_set_nest_lock_@OMP_3.0 4.4 + omp_set_nested@OMP_1.0 4.2.1 + omp_set_nested_8_@OMP_1.0 4.2.1 + omp_set_nested_@OMP_1.0 4.2.1 + omp_set_num_threads@OMP_1.0 4.2.1 + omp_set_num_threads_8_@OMP_1.0 4.2.1 + omp_set_num_threads_@OMP_1.0 4.2.1 + omp_set_schedule@OMP_3.0 4.4 + omp_set_schedule_8_@OMP_3.0 4.4 + omp_set_schedule_@OMP_3.0 4.4 + omp_test_lock@OMP_1.0 4.2.1 + omp_test_lock@OMP_3.0 4.4 + omp_test_lock_@OMP_1.0 4.2.1 + omp_test_lock_@OMP_3.0 4.4 + omp_test_nest_lock@OMP_1.0 4.2.1 + omp_test_nest_lock@OMP_3.0 4.4 + omp_test_nest_lock_@OMP_1.0 4.2.1 + omp_test_nest_lock_@OMP_3.0 4.4 + omp_unset_lock@OMP_1.0 4.2.1 + omp_unset_lock@OMP_3.0 4.4 + omp_unset_lock_@OMP_1.0 4.2.1 + omp_unset_lock_@OMP_3.0 4.4 + omp_unset_nest_lock@OMP_1.0 4.2.1 + omp_unset_nest_lock@OMP_3.0 4.4 + omp_unset_nest_lock_@OMP_1.0 4.2.1 + omp_unset_nest_lock_@OMP_3.0 4.4 --- gcc-4.9-4.9.2.orig/debian/libhfgcc1.symbols.armel +++ gcc-4.9-4.9.2/debian/libhfgcc1.symbols.armel @@ -0,0 +1,1103 @@ +libgcc_s.so.1 libhfgcc1 #MINVER# +(ignore-blacklist)#include "libgcc1.symbols.aeabi" + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3.4@GCC_3.3.4 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_3.5@GCC_3.5 1:4.3.0 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_4.3.0 1:4.3.0 + _Unwind_Complete@GCC_3.5 1:4.3.0 + _Unwind_DeleteException@GCC_3.0 1:4.3.0 + _Unwind_ForcedUnwind@GCC_3.0 1:4.3.0 + _Unwind_GetCFA@GCC_3.3 1:4.3.0 + _Unwind_GetDataRelBase@GCC_3.0 1:4.3.0 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.3.0 + _Unwind_GetRegionStart@GCC_3.0 1:4.3.0 + _Unwind_GetTextRelBase@GCC_3.0 1:4.3.0 + _Unwind_RaiseException@GCC_3.0 1:4.3.0 + _Unwind_Resume@GCC_3.0 1:4.3.0 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.3.0 + _Unwind_VRS_Get@GCC_3.5 1:4.3.0 + _Unwind_VRS_Pop@GCC_3.5 1:4.3.0 + _Unwind_VRS_Set@GCC_3.5 1:4.3.0 + __absvdi2@GCC_3.0 1:4.3.0 + __absvsi2@GCC_3.0 1:4.3.0 + __adddf3@GCC_3.0 1:4.3.0 + __addsf3@GCC_3.0 1:4.3.0 + __addvdi3@GCC_3.0 1:4.3.0 + __addvsi3@GCC_3.0 1:4.3.0 + __ashldi3@GCC_3.0 1:4.3.0 + __ashrdi3@GCC_3.0 1:4.3.0 + __bswapdi2@GCC_4.3.0 1:4.3.0 + __bswapsi2@GCC_4.3.0 1:4.3.0 + __clear_cache@GCC_3.0 1:4.3.0 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbsi2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.3.0 + __clzsi2@GCC_3.4 1:4.3.0 + __cmpdi2@GCC_3.0 1:4.3.0 + __ctzdi2@GCC_3.4 1:4.3.0 + __ctzsi2@GCC_3.4 1:4.3.0 + __divdc3@GCC_4.0.0 1:4.3.0 + __divdf3@GCC_3.0 1:4.3.0 + __divdi3@GLIBC_2.0 1:4.3.0 + __divsc3@GCC_4.0.0 1:4.3.0 + __divsf3@GCC_3.0 1:4.3.0 + __divsi3@GCC_3.0 1:4.3.0 + __emutls_get_address@GCC_4.3.0 1:4.3.0 + __emutls_register_common@GCC_4.3.0 1:4.3.0 + __enable_execute_stack@GCC_3.4.2 1:4.3.0 + __eqdf2@GCC_3.0 1:4.3.0 + __eqsf2@GCC_3.0 1:4.3.0 + __extendsfdf2@GCC_3.0 1:4.3.0 + __ffsdi2@GCC_3.0 1:4.3.0 + __ffssi2@GCC_4.3.0 1:4.3.0 + __fixdfdi@GCC_3.0 1:4.3.0 + __fixdfsi@GCC_3.0 1:4.3.0 + __fixsfdi@GCC_3.0 1:4.3.0 + __fixsfsi@GCC_3.0 1:4.3.0 + __fixunsdfdi@GCC_3.0 1:4.3.0 + __fixunsdfsi@GCC_3.0 1:4.3.0 + __fixunssfdi@GCC_3.0 1:4.3.0 + __fixunssfsi@GCC_3.0 1:4.3.0 + __floatdidf@GCC_3.0 1:4.3.0 + __floatdisf@GCC_3.0 1:4.3.0 + __floatsidf@GCC_3.0 1:4.3.0 + __floatsisf@GCC_3.0 1:4.3.0 + __floatundidf@GCC_4.2.0 1:4.3.0 + __floatundisf@GCC_4.2.0 1:4.3.0 + __floatunsidf@GCC_4.2.0 1:4.3.0 + __floatunsisf@GCC_4.2.0 1:4.3.0 + __gcc_personality_v0@GCC_3.3.1 1:4.3.0 + __gedf2@GCC_3.0 1:4.3.0 + __gesf2@GCC_3.0 1:4.3.0 + __gnu_addda3@GCC_4.3.0 1:4.3.0 + __gnu_adddq3@GCC_4.3.0 1:4.3.0 + __gnu_addha3@GCC_4.3.0 1:4.3.0 + __gnu_addhq3@GCC_4.3.0 1:4.3.0 + __gnu_addqq3@GCC_4.3.0 1:4.3.0 + __gnu_addsa3@GCC_4.3.0 1:4.3.0 + __gnu_addsq3@GCC_4.3.0 1:4.3.0 + __gnu_adduda3@GCC_4.3.0 1:4.3.0 + __gnu_addudq3@GCC_4.3.0 1:4.3.0 + __gnu_adduha3@GCC_4.3.0 1:4.3.0 + __gnu_adduhq3@GCC_4.3.0 1:4.3.0 + __gnu_adduqq3@GCC_4.3.0 1:4.3.0 + __gnu_addusa3@GCC_4.3.0 1:4.3.0 + __gnu_addusq3@GCC_4.3.0 1:4.3.0 + __gnu_ashlda3@GCC_4.3.0 1:4.3.0 + __gnu_ashldq3@GCC_4.3.0 1:4.3.0 + __gnu_ashlha3@GCC_4.3.0 1:4.3.0 + __gnu_ashlhq3@GCC_4.3.0 1:4.3.0 + __gnu_ashlqq3@GCC_4.3.0 1:4.3.0 + __gnu_ashlsa3@GCC_4.3.0 1:4.3.0 + __gnu_ashlsq3@GCC_4.3.0 1:4.3.0 + __gnu_ashluda3@GCC_4.3.0 1:4.3.0 + __gnu_ashludq3@GCC_4.3.0 1:4.3.0 + __gnu_ashluha3@GCC_4.3.0 1:4.3.0 + __gnu_ashluhq3@GCC_4.3.0 1:4.3.0 + __gnu_ashluqq3@GCC_4.3.0 1:4.3.0 + __gnu_ashlusa3@GCC_4.3.0 1:4.3.0 + __gnu_ashlusq3@GCC_4.3.0 1:4.3.0 + __gnu_ashrda3@GCC_4.3.0 1:4.3.0 + __gnu_ashrdq3@GCC_4.3.0 1:4.3.0 + __gnu_ashrha3@GCC_4.3.0 1:4.3.0 + __gnu_ashrhq3@GCC_4.3.0 1:4.3.0 + __gnu_ashrqq3@GCC_4.3.0 1:4.3.0 + __gnu_ashrsa3@GCC_4.3.0 1:4.3.0 + __gnu_ashrsq3@GCC_4.3.0 1:4.3.0 + __gnu_cmpda2@GCC_4.3.0 1:4.3.0 + __gnu_cmpdq2@GCC_4.3.0 1:4.3.0 + __gnu_cmpha2@GCC_4.3.0 1:4.3.0 + __gnu_cmphq2@GCC_4.3.0 1:4.3.0 + __gnu_cmpqq2@GCC_4.3.0 1:4.3.0 + __gnu_cmpsa2@GCC_4.3.0 1:4.3.0 + __gnu_cmpsq2@GCC_4.3.0 1:4.3.0 + __gnu_cmpuda2@GCC_4.3.0 1:4.3.0 + __gnu_cmpudq2@GCC_4.3.0 1:4.3.0 + __gnu_cmpuha2@GCC_4.3.0 1:4.3.0 + __gnu_cmpuhq2@GCC_4.3.0 1:4.3.0 + __gnu_cmpuqq2@GCC_4.3.0 1:4.3.0 + __gnu_cmpusa2@GCC_4.3.0 1:4.3.0 + __gnu_cmpusq2@GCC_4.3.0 1:4.3.0 + __gnu_divda3@GCC_4.3.0 1:4.3.0 + __gnu_divdq3@GCC_4.3.0 1:4.3.0 + __gnu_divha3@GCC_4.3.0 1:4.3.0 + __gnu_divhq3@GCC_4.3.0 1:4.3.0 + __gnu_divqq3@GCC_4.3.0 1:4.3.0 + __gnu_divsa3@GCC_4.3.0 1:4.3.0 + __gnu_divsq3@GCC_4.3.0 1:4.3.0 + __gnu_fractdadf@GCC_4.3.0 1:4.3.0 + __gnu_fractdadi@GCC_4.3.0 1:4.3.0 + __gnu_fractdadq@GCC_4.3.0 1:4.3.0 + __gnu_fractdaha2@GCC_4.3.0 1:4.3.0 + __gnu_fractdahi@GCC_4.3.0 1:4.3.0 + __gnu_fractdahq@GCC_4.3.0 1:4.3.0 + __gnu_fractdaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractdaqq@GCC_4.3.0 1:4.3.0 + __gnu_fractdasa2@GCC_4.3.0 1:4.3.0 + __gnu_fractdasf@GCC_4.3.0 1:4.3.0 + __gnu_fractdasi@GCC_4.3.0 1:4.3.0 + __gnu_fractdasq@GCC_4.3.0 1:4.3.0 + __gnu_fractdauda@GCC_4.3.0 1:4.3.0 + __gnu_fractdaudq@GCC_4.3.0 1:4.3.0 + __gnu_fractdauha@GCC_4.3.0 1:4.3.0 + __gnu_fractdauhq@GCC_4.3.0 1:4.3.0 + __gnu_fractdauqq@GCC_4.3.0 1:4.3.0 + __gnu_fractdausa@GCC_4.3.0 1:4.3.0 + __gnu_fractdausq@GCC_4.3.0 1:4.3.0 + __gnu_fractdfda@GCC_4.3.0 1:4.3.0 + __gnu_fractdfdq@GCC_4.3.0 1:4.3.0 + __gnu_fractdfha@GCC_4.3.0 1:4.3.0 + __gnu_fractdfhq@GCC_4.3.0 1:4.3.0 + __gnu_fractdfqq@GCC_4.3.0 1:4.3.0 + __gnu_fractdfsa@GCC_4.3.0 1:4.3.0 + __gnu_fractdfsq@GCC_4.3.0 1:4.3.0 + __gnu_fractdfuda@GCC_4.3.0 1:4.3.0 + __gnu_fractdfudq@GCC_4.3.0 1:4.3.0 + __gnu_fractdfuha@GCC_4.3.0 1:4.3.0 + __gnu_fractdfuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractdfuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractdfusa@GCC_4.3.0 1:4.3.0 + __gnu_fractdfusq@GCC_4.3.0 1:4.3.0 + __gnu_fractdida@GCC_4.3.0 1:4.3.0 + __gnu_fractdidq@GCC_4.3.0 1:4.3.0 + __gnu_fractdiha@GCC_4.3.0 1:4.3.0 + __gnu_fractdihq@GCC_4.3.0 1:4.3.0 + __gnu_fractdiqq@GCC_4.3.0 1:4.3.0 + __gnu_fractdisa@GCC_4.3.0 1:4.3.0 + __gnu_fractdisq@GCC_4.3.0 1:4.3.0 + __gnu_fractdiuda@GCC_4.3.0 1:4.3.0 + __gnu_fractdiudq@GCC_4.3.0 1:4.3.0 + __gnu_fractdiuha@GCC_4.3.0 1:4.3.0 + __gnu_fractdiuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractdiuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractdiusa@GCC_4.3.0 1:4.3.0 + __gnu_fractdiusq@GCC_4.3.0 1:4.3.0 + __gnu_fractdqda@GCC_4.3.0 1:4.3.0 + __gnu_fractdqdf@GCC_4.3.0 1:4.3.0 + __gnu_fractdqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractdqha@GCC_4.3.0 1:4.3.0 + __gnu_fractdqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractdqhq2@GCC_4.3.0 1:4.3.0 + __gnu_fractdqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractdqqq2@GCC_4.3.0 1:4.3.0 + __gnu_fractdqsa@GCC_4.3.0 1:4.3.0 + __gnu_fractdqsf@GCC_4.3.0 1:4.3.0 + __gnu_fractdqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractdqsq2@GCC_4.3.0 1:4.3.0 + __gnu_fractdquda@GCC_4.3.0 1:4.3.0 + __gnu_fractdqudq@GCC_4.3.0 1:4.3.0 + __gnu_fractdquha@GCC_4.3.0 1:4.3.0 + __gnu_fractdquhq@GCC_4.3.0 1:4.3.0 + __gnu_fractdquqq@GCC_4.3.0 1:4.3.0 + __gnu_fractdqusa@GCC_4.3.0 1:4.3.0 + __gnu_fractdqusq@GCC_4.3.0 1:4.3.0 + __gnu_fracthada2@GCC_4.3.0 1:4.3.0 + __gnu_fracthadf@GCC_4.3.0 1:4.3.0 + __gnu_fracthadi@GCC_4.3.0 1:4.3.0 + __gnu_fracthadq@GCC_4.3.0 1:4.3.0 + __gnu_fracthahi@GCC_4.3.0 1:4.3.0 + __gnu_fracthahq@GCC_4.3.0 1:4.3.0 + __gnu_fracthaqi@GCC_4.3.0 1:4.3.0 + __gnu_fracthaqq@GCC_4.3.0 1:4.3.0 + __gnu_fracthasa2@GCC_4.3.0 1:4.3.0 + __gnu_fracthasf@GCC_4.3.0 1:4.3.0 + __gnu_fracthasi@GCC_4.3.0 1:4.3.0 + __gnu_fracthasq@GCC_4.3.0 1:4.3.0 + __gnu_fracthauda@GCC_4.3.0 1:4.3.0 + __gnu_fracthaudq@GCC_4.3.0 1:4.3.0 + __gnu_fracthauha@GCC_4.3.0 1:4.3.0 + __gnu_fracthauhq@GCC_4.3.0 1:4.3.0 + __gnu_fracthauqq@GCC_4.3.0 1:4.3.0 + __gnu_fracthausa@GCC_4.3.0 1:4.3.0 + __gnu_fracthausq@GCC_4.3.0 1:4.3.0 + __gnu_fracthida@GCC_4.3.0 1:4.3.0 + __gnu_fracthidq@GCC_4.3.0 1:4.3.0 + __gnu_fracthiha@GCC_4.3.0 1:4.3.0 + __gnu_fracthihq@GCC_4.3.0 1:4.3.0 + __gnu_fracthiqq@GCC_4.3.0 1:4.3.0 + __gnu_fracthisa@GCC_4.3.0 1:4.3.0 + __gnu_fracthisq@GCC_4.3.0 1:4.3.0 + __gnu_fracthiuda@GCC_4.3.0 1:4.3.0 + __gnu_fracthiudq@GCC_4.3.0 1:4.3.0 + __gnu_fracthiuha@GCC_4.3.0 1:4.3.0 + __gnu_fracthiuhq@GCC_4.3.0 1:4.3.0 + __gnu_fracthiuqq@GCC_4.3.0 1:4.3.0 + __gnu_fracthiusa@GCC_4.3.0 1:4.3.0 + __gnu_fracthiusq@GCC_4.3.0 1:4.3.0 + __gnu_fracthqda@GCC_4.3.0 1:4.3.0 + __gnu_fracthqdf@GCC_4.3.0 1:4.3.0 + __gnu_fracthqdi@GCC_4.3.0 1:4.3.0 + __gnu_fracthqdq2@GCC_4.3.0 1:4.3.0 + __gnu_fracthqha@GCC_4.3.0 1:4.3.0 + __gnu_fracthqhi@GCC_4.3.0 1:4.3.0 + __gnu_fracthqqi@GCC_4.3.0 1:4.3.0 + __gnu_fracthqqq2@GCC_4.3.0 1:4.3.0 + __gnu_fracthqsa@GCC_4.3.0 1:4.3.0 + __gnu_fracthqsf@GCC_4.3.0 1:4.3.0 + __gnu_fracthqsi@GCC_4.3.0 1:4.3.0 + __gnu_fracthqsq2@GCC_4.3.0 1:4.3.0 + __gnu_fracthquda@GCC_4.3.0 1:4.3.0 + __gnu_fracthqudq@GCC_4.3.0 1:4.3.0 + __gnu_fracthquha@GCC_4.3.0 1:4.3.0 + __gnu_fracthquhq@GCC_4.3.0 1:4.3.0 + __gnu_fracthquqq@GCC_4.3.0 1:4.3.0 + __gnu_fracthqusa@GCC_4.3.0 1:4.3.0 + __gnu_fracthqusq@GCC_4.3.0 1:4.3.0 + __gnu_fractqida@GCC_4.3.0 1:4.3.0 + __gnu_fractqidq@GCC_4.3.0 1:4.3.0 + __gnu_fractqiha@GCC_4.3.0 1:4.3.0 + __gnu_fractqihq@GCC_4.3.0 1:4.3.0 + __gnu_fractqiqq@GCC_4.3.0 1:4.3.0 + __gnu_fractqisa@GCC_4.3.0 1:4.3.0 + __gnu_fractqisq@GCC_4.3.0 1:4.3.0 + __gnu_fractqiuda@GCC_4.3.0 1:4.3.0 + __gnu_fractqiudq@GCC_4.3.0 1:4.3.0 + __gnu_fractqiuha@GCC_4.3.0 1:4.3.0 + __gnu_fractqiuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractqiuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractqiusa@GCC_4.3.0 1:4.3.0 + __gnu_fractqiusq@GCC_4.3.0 1:4.3.0 + __gnu_fractqqda@GCC_4.3.0 1:4.3.0 + __gnu_fractqqdf@GCC_4.3.0 1:4.3.0 + __gnu_fractqqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractqqdq2@GCC_4.3.0 1:4.3.0 + __gnu_fractqqha@GCC_4.3.0 1:4.3.0 + __gnu_fractqqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractqqhq2@GCC_4.3.0 1:4.3.0 + __gnu_fractqqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractqqsa@GCC_4.3.0 1:4.3.0 + __gnu_fractqqsf@GCC_4.3.0 1:4.3.0 + __gnu_fractqqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractqqsq2@GCC_4.3.0 1:4.3.0 + __gnu_fractqquda@GCC_4.3.0 1:4.3.0 + __gnu_fractqqudq@GCC_4.3.0 1:4.3.0 + __gnu_fractqquha@GCC_4.3.0 1:4.3.0 + __gnu_fractqquhq@GCC_4.3.0 1:4.3.0 + __gnu_fractqquqq@GCC_4.3.0 1:4.3.0 + __gnu_fractqqusa@GCC_4.3.0 1:4.3.0 + __gnu_fractqqusq@GCC_4.3.0 1:4.3.0 + __gnu_fractsada2@GCC_4.3.0 1:4.3.0 + __gnu_fractsadf@GCC_4.3.0 1:4.3.0 + __gnu_fractsadi@GCC_4.3.0 1:4.3.0 + __gnu_fractsadq@GCC_4.3.0 1:4.3.0 + __gnu_fractsaha2@GCC_4.3.0 1:4.3.0 + __gnu_fractsahi@GCC_4.3.0 1:4.3.0 + __gnu_fractsahq@GCC_4.3.0 1:4.3.0 + __gnu_fractsaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractsaqq@GCC_4.3.0 1:4.3.0 + __gnu_fractsasf@GCC_4.3.0 1:4.3.0 + __gnu_fractsasi@GCC_4.3.0 1:4.3.0 + __gnu_fractsasq@GCC_4.3.0 1:4.3.0 + __gnu_fractsauda@GCC_4.3.0 1:4.3.0 + __gnu_fractsaudq@GCC_4.3.0 1:4.3.0 + __gnu_fractsauha@GCC_4.3.0 1:4.3.0 + __gnu_fractsauhq@GCC_4.3.0 1:4.3.0 + __gnu_fractsauqq@GCC_4.3.0 1:4.3.0 + __gnu_fractsausa@GCC_4.3.0 1:4.3.0 + __gnu_fractsausq@GCC_4.3.0 1:4.3.0 + __gnu_fractsfda@GCC_4.3.0 1:4.3.0 + __gnu_fractsfdq@GCC_4.3.0 1:4.3.0 + __gnu_fractsfha@GCC_4.3.0 1:4.3.0 + __gnu_fractsfhq@GCC_4.3.0 1:4.3.0 + __gnu_fractsfqq@GCC_4.3.0 1:4.3.0 + __gnu_fractsfsa@GCC_4.3.0 1:4.3.0 + __gnu_fractsfsq@GCC_4.3.0 1:4.3.0 + __gnu_fractsfuda@GCC_4.3.0 1:4.3.0 + __gnu_fractsfudq@GCC_4.3.0 1:4.3.0 + __gnu_fractsfuha@GCC_4.3.0 1:4.3.0 + __gnu_fractsfuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractsfuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractsfusa@GCC_4.3.0 1:4.3.0 + __gnu_fractsfusq@GCC_4.3.0 1:4.3.0 + __gnu_fractsida@GCC_4.3.0 1:4.3.0 + __gnu_fractsidq@GCC_4.3.0 1:4.3.0 + __gnu_fractsiha@GCC_4.3.0 1:4.3.0 + __gnu_fractsihq@GCC_4.3.0 1:4.3.0 + __gnu_fractsiqq@GCC_4.3.0 1:4.3.0 + __gnu_fractsisa@GCC_4.3.0 1:4.3.0 + __gnu_fractsisq@GCC_4.3.0 1:4.3.0 + __gnu_fractsiuda@GCC_4.3.0 1:4.3.0 + __gnu_fractsiudq@GCC_4.3.0 1:4.3.0 + __gnu_fractsiuha@GCC_4.3.0 1:4.3.0 + __gnu_fractsiuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractsiuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractsiusa@GCC_4.3.0 1:4.3.0 + __gnu_fractsiusq@GCC_4.3.0 1:4.3.0 + __gnu_fractsqda@GCC_4.3.0 1:4.3.0 + __gnu_fractsqdf@GCC_4.3.0 1:4.3.0 + __gnu_fractsqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractsqdq2@GCC_4.3.0 1:4.3.0 + __gnu_fractsqha@GCC_4.3.0 1:4.3.0 + __gnu_fractsqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractsqhq2@GCC_4.3.0 1:4.3.0 + __gnu_fractsqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractsqqq2@GCC_4.3.0 1:4.3.0 + __gnu_fractsqsa@GCC_4.3.0 1:4.3.0 + __gnu_fractsqsf@GCC_4.3.0 1:4.3.0 + __gnu_fractsqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractsquda@GCC_4.3.0 1:4.3.0 + __gnu_fractsqudq@GCC_4.3.0 1:4.3.0 + __gnu_fractsquha@GCC_4.3.0 1:4.3.0 + __gnu_fractsquhq@GCC_4.3.0 1:4.3.0 + __gnu_fractsquqq@GCC_4.3.0 1:4.3.0 + __gnu_fractsqusa@GCC_4.3.0 1:4.3.0 + __gnu_fractsqusq@GCC_4.3.0 1:4.3.0 + __gnu_fractudada@GCC_4.3.0 1:4.3.0 + __gnu_fractudadf@GCC_4.3.0 1:4.3.0 + __gnu_fractudadi@GCC_4.3.0 1:4.3.0 + __gnu_fractudadq@GCC_4.3.0 1:4.3.0 + __gnu_fractudaha@GCC_4.3.0 1:4.3.0 + __gnu_fractudahi@GCC_4.3.0 1:4.3.0 + __gnu_fractudahq@GCC_4.3.0 1:4.3.0 + __gnu_fractudaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractudaqq@GCC_4.3.0 1:4.3.0 + __gnu_fractudasa@GCC_4.3.0 1:4.3.0 + __gnu_fractudasf@GCC_4.3.0 1:4.3.0 + __gnu_fractudasi@GCC_4.3.0 1:4.3.0 + __gnu_fractudasq@GCC_4.3.0 1:4.3.0 + __gnu_fractudaudq@GCC_4.3.0 1:4.3.0 + __gnu_fractudauha2@GCC_4.3.0 1:4.3.0 + __gnu_fractudauhq@GCC_4.3.0 1:4.3.0 + __gnu_fractudauqq@GCC_4.3.0 1:4.3.0 + __gnu_fractudausa2@GCC_4.3.0 1:4.3.0 + __gnu_fractudausq@GCC_4.3.0 1:4.3.0 + __gnu_fractudqda@GCC_4.3.0 1:4.3.0 + __gnu_fractudqdf@GCC_4.3.0 1:4.3.0 + __gnu_fractudqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractudqdq@GCC_4.3.0 1:4.3.0 + __gnu_fractudqha@GCC_4.3.0 1:4.3.0 + __gnu_fractudqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractudqhq@GCC_4.3.0 1:4.3.0 + __gnu_fractudqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractudqqq@GCC_4.3.0 1:4.3.0 + __gnu_fractudqsa@GCC_4.3.0 1:4.3.0 + __gnu_fractudqsf@GCC_4.3.0 1:4.3.0 + __gnu_fractudqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractudqsq@GCC_4.3.0 1:4.3.0 + __gnu_fractudquda@GCC_4.3.0 1:4.3.0 + __gnu_fractudquha@GCC_4.3.0 1:4.3.0 + __gnu_fractudquhq2@GCC_4.3.0 1:4.3.0 + __gnu_fractudquqq2@GCC_4.3.0 1:4.3.0 + __gnu_fractudqusa@GCC_4.3.0 1:4.3.0 + __gnu_fractudqusq2@GCC_4.3.0 1:4.3.0 + __gnu_fractuhada@GCC_4.3.0 1:4.3.0 + __gnu_fractuhadf@GCC_4.3.0 1:4.3.0 + __gnu_fractuhadi@GCC_4.3.0 1:4.3.0 + __gnu_fractuhadq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhaha@GCC_4.3.0 1:4.3.0 + __gnu_fractuhahi@GCC_4.3.0 1:4.3.0 + __gnu_fractuhahq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractuhaqq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhasa@GCC_4.3.0 1:4.3.0 + __gnu_fractuhasf@GCC_4.3.0 1:4.3.0 + __gnu_fractuhasi@GCC_4.3.0 1:4.3.0 + __gnu_fractuhasq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhauda2@GCC_4.3.0 1:4.3.0 + __gnu_fractuhaudq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhauhq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhauqq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhausa2@GCC_4.3.0 1:4.3.0 + __gnu_fractuhausq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqda@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqdf@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqdq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqha@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqhq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqqq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqsa@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqsf@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqsq@GCC_4.3.0 1:4.3.0 + __gnu_fractuhquda@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqudq2@GCC_4.3.0 1:4.3.0 + __gnu_fractuhquha@GCC_4.3.0 1:4.3.0 + __gnu_fractuhquqq2@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqusa@GCC_4.3.0 1:4.3.0 + __gnu_fractuhqusq2@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdadi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdahi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdasi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdida@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdidq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiha@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdihq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiqq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdisa@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdisq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiuda@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiudq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiuha@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiusa@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdiusq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsdqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractunshadi@GCC_4.3.0 1:4.3.0 + __gnu_fractunshahi@GCC_4.3.0 1:4.3.0 + __gnu_fractunshaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunshasi@GCC_4.3.0 1:4.3.0 + __gnu_fractunshida@GCC_4.3.0 1:4.3.0 + __gnu_fractunshidq@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiha@GCC_4.3.0 1:4.3.0 + __gnu_fractunshihq@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiqq@GCC_4.3.0 1:4.3.0 + __gnu_fractunshisa@GCC_4.3.0 1:4.3.0 + __gnu_fractunshisq@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiuda@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiudq@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiuha@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiusa@GCC_4.3.0 1:4.3.0 + __gnu_fractunshiusq@GCC_4.3.0 1:4.3.0 + __gnu_fractunshqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractunshqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractunshqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunshqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqida@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqidq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiha@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqihq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiqq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqisa@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqisq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiuda@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiudq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiuha@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiusa@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqiusq@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsqqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractunssadi@GCC_4.3.0 1:4.3.0 + __gnu_fractunssahi@GCC_4.3.0 1:4.3.0 + __gnu_fractunssaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunssasi@GCC_4.3.0 1:4.3.0 + __gnu_fractunssida@GCC_4.3.0 1:4.3.0 + __gnu_fractunssidq@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiha@GCC_4.3.0 1:4.3.0 + __gnu_fractunssihq@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiqq@GCC_4.3.0 1:4.3.0 + __gnu_fractunssisa@GCC_4.3.0 1:4.3.0 + __gnu_fractunssisq@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiuda@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiudq@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiuha@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiuhq@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiuqq@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiusa@GCC_4.3.0 1:4.3.0 + __gnu_fractunssiusq@GCC_4.3.0 1:4.3.0 + __gnu_fractunssqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractunssqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractunssqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunssqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsudadi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsudahi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsudaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsudasi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsudqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsudqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsudqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsudqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuhadi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuhahi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuhaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuhasi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuhqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuhqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuhqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuhqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuqqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuqqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuqqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsuqqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsusadi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsusahi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsusaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsusasi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsusqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsusqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsusqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractunsusqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqda@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqdf@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqdq@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqha@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqhq@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqqq@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqsa@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqsf@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqsq@GCC_4.3.0 1:4.3.0 + __gnu_fractuqquda@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqudq2@GCC_4.3.0 1:4.3.0 + __gnu_fractuqquha@GCC_4.3.0 1:4.3.0 + __gnu_fractuqquhq2@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqusa@GCC_4.3.0 1:4.3.0 + __gnu_fractuqqusq2@GCC_4.3.0 1:4.3.0 + __gnu_fractusada@GCC_4.3.0 1:4.3.0 + __gnu_fractusadf@GCC_4.3.0 1:4.3.0 + __gnu_fractusadi@GCC_4.3.0 1:4.3.0 + __gnu_fractusadq@GCC_4.3.0 1:4.3.0 + __gnu_fractusaha@GCC_4.3.0 1:4.3.0 + __gnu_fractusahi@GCC_4.3.0 1:4.3.0 + __gnu_fractusahq@GCC_4.3.0 1:4.3.0 + __gnu_fractusaqi@GCC_4.3.0 1:4.3.0 + __gnu_fractusaqq@GCC_4.3.0 1:4.3.0 + __gnu_fractusasa@GCC_4.3.0 1:4.3.0 + __gnu_fractusasf@GCC_4.3.0 1:4.3.0 + __gnu_fractusasi@GCC_4.3.0 1:4.3.0 + __gnu_fractusasq@GCC_4.3.0 1:4.3.0 + __gnu_fractusauda2@GCC_4.3.0 1:4.3.0 + __gnu_fractusaudq@GCC_4.3.0 1:4.3.0 + __gnu_fractusauha2@GCC_4.3.0 1:4.3.0 + __gnu_fractusauhq@GCC_4.3.0 1:4.3.0 + __gnu_fractusauqq@GCC_4.3.0 1:4.3.0 + __gnu_fractusausq@GCC_4.3.0 1:4.3.0 + __gnu_fractusqda@GCC_4.3.0 1:4.3.0 + __gnu_fractusqdf@GCC_4.3.0 1:4.3.0 + __gnu_fractusqdi@GCC_4.3.0 1:4.3.0 + __gnu_fractusqdq@GCC_4.3.0 1:4.3.0 + __gnu_fractusqha@GCC_4.3.0 1:4.3.0 + __gnu_fractusqhi@GCC_4.3.0 1:4.3.0 + __gnu_fractusqhq@GCC_4.3.0 1:4.3.0 + __gnu_fractusqqi@GCC_4.3.0 1:4.3.0 + __gnu_fractusqqq@GCC_4.3.0 1:4.3.0 + __gnu_fractusqsa@GCC_4.3.0 1:4.3.0 + __gnu_fractusqsf@GCC_4.3.0 1:4.3.0 + __gnu_fractusqsi@GCC_4.3.0 1:4.3.0 + __gnu_fractusqsq@GCC_4.3.0 1:4.3.0 + __gnu_fractusquda@GCC_4.3.0 1:4.3.0 + __gnu_fractusqudq2@GCC_4.3.0 1:4.3.0 + __gnu_fractusquha@GCC_4.3.0 1:4.3.0 + __gnu_fractusquhq2@GCC_4.3.0 1:4.3.0 + __gnu_fractusquqq2@GCC_4.3.0 1:4.3.0 + __gnu_fractusqusa@GCC_4.3.0 1:4.3.0 + __gnu_lshruda3@GCC_4.3.0 1:4.3.0 + __gnu_lshrudq3@GCC_4.3.0 1:4.3.0 + __gnu_lshruha3@GCC_4.3.0 1:4.3.0 + __gnu_lshruhq3@GCC_4.3.0 1:4.3.0 + __gnu_lshruqq3@GCC_4.3.0 1:4.3.0 + __gnu_lshrusa3@GCC_4.3.0 1:4.3.0 + __gnu_lshrusq3@GCC_4.3.0 1:4.3.0 + __gnu_mulda3@GCC_4.3.0 1:4.3.0 + __gnu_muldq3@GCC_4.3.0 1:4.3.0 + __gnu_mulha3@GCC_4.3.0 1:4.3.0 + __gnu_mulhq3@GCC_4.3.0 1:4.3.0 + __gnu_mulqq3@GCC_4.3.0 1:4.3.0 + __gnu_mulsa3@GCC_4.3.0 1:4.3.0 + __gnu_mulsq3@GCC_4.3.0 1:4.3.0 + __gnu_muluda3@GCC_4.3.0 1:4.3.0 + __gnu_muludq3@GCC_4.3.0 1:4.3.0 + __gnu_muluha3@GCC_4.3.0 1:4.3.0 + __gnu_muluhq3@GCC_4.3.0 1:4.3.0 + __gnu_muluqq3@GCC_4.3.0 1:4.3.0 + __gnu_mulusa3@GCC_4.3.0 1:4.3.0 + __gnu_mulusq3@GCC_4.3.0 1:4.3.0 + __gnu_negda2@GCC_4.3.0 1:4.3.0 + __gnu_negdq2@GCC_4.3.0 1:4.3.0 + __gnu_negha2@GCC_4.3.0 1:4.3.0 + __gnu_neghq2@GCC_4.3.0 1:4.3.0 + __gnu_negqq2@GCC_4.3.0 1:4.3.0 + __gnu_negsa2@GCC_4.3.0 1:4.3.0 + __gnu_negsq2@GCC_4.3.0 1:4.3.0 + __gnu_neguda2@GCC_4.3.0 1:4.3.0 + __gnu_negudq2@GCC_4.3.0 1:4.3.0 + __gnu_neguha2@GCC_4.3.0 1:4.3.0 + __gnu_neguhq2@GCC_4.3.0 1:4.3.0 + __gnu_neguqq2@GCC_4.3.0 1:4.3.0 + __gnu_negusa2@GCC_4.3.0 1:4.3.0 + __gnu_negusq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractdadq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdaha2@GCC_4.3.0 1:4.3.0 + __gnu_satfractdahq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdaqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdasa2@GCC_4.3.0 1:4.3.0 + __gnu_satfractdasq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdauda@GCC_4.3.0 1:4.3.0 + __gnu_satfractdaudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdauha@GCC_4.3.0 1:4.3.0 + __gnu_satfractdauhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdauqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdausa@GCC_4.3.0 1:4.3.0 + __gnu_satfractdausq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfda@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfdq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfha@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfsq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractdfusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdida@GCC_4.3.0 1:4.3.0 + __gnu_satfractdidq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiha@GCC_4.3.0 1:4.3.0 + __gnu_satfractdihq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdisa@GCC_4.3.0 1:4.3.0 + __gnu_satfractdisq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractdiusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqda@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqha@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqhq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqqq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqsq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractdquda@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdquha@GCC_4.3.0 1:4.3.0 + __gnu_satfractdquhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdquqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractdqusq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthada2@GCC_4.3.0 1:4.3.0 + __gnu_satfracthadq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthahq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthaqq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthasa2@GCC_4.3.0 1:4.3.0 + __gnu_satfracthasq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthauda@GCC_4.3.0 1:4.3.0 + __gnu_satfracthaudq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthauha@GCC_4.3.0 1:4.3.0 + __gnu_satfracthauhq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthauqq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthausa@GCC_4.3.0 1:4.3.0 + __gnu_satfracthausq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthida@GCC_4.3.0 1:4.3.0 + __gnu_satfracthidq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiha@GCC_4.3.0 1:4.3.0 + __gnu_satfracthihq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiqq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthisa@GCC_4.3.0 1:4.3.0 + __gnu_satfracthisq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiuda@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiudq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiuha@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiusa@GCC_4.3.0 1:4.3.0 + __gnu_satfracthiusq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqda@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqdq2@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqha@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqqq2@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqsa@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqsq2@GCC_4.3.0 1:4.3.0 + __gnu_satfracthquda@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqudq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthquha@GCC_4.3.0 1:4.3.0 + __gnu_satfracthquhq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthquqq@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqusa@GCC_4.3.0 1:4.3.0 + __gnu_satfracthqusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqida@GCC_4.3.0 1:4.3.0 + __gnu_satfractqidq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiha@GCC_4.3.0 1:4.3.0 + __gnu_satfractqihq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqisa@GCC_4.3.0 1:4.3.0 + __gnu_satfractqisq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractqiusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqda@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqdq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqha@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqhq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqsq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractqquda@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqquha@GCC_4.3.0 1:4.3.0 + __gnu_satfractqquhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqquqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractqqusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsada2@GCC_4.3.0 1:4.3.0 + __gnu_satfractsadq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsaha2@GCC_4.3.0 1:4.3.0 + __gnu_satfractsahq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsaqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsasq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsauda@GCC_4.3.0 1:4.3.0 + __gnu_satfractsaudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsauha@GCC_4.3.0 1:4.3.0 + __gnu_satfractsauhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsauqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsausa@GCC_4.3.0 1:4.3.0 + __gnu_satfractsausq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfda@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfdq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfha@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfsq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractsfusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsida@GCC_4.3.0 1:4.3.0 + __gnu_satfractsidq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiha@GCC_4.3.0 1:4.3.0 + __gnu_satfractsihq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsisa@GCC_4.3.0 1:4.3.0 + __gnu_satfractsisq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractsiusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqda@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqdq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqha@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqhq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqqq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractsquda@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsquha@GCC_4.3.0 1:4.3.0 + __gnu_satfractsquhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsquqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractsqusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudada@GCC_4.3.0 1:4.3.0 + __gnu_satfractudadq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudaha@GCC_4.3.0 1:4.3.0 + __gnu_satfractudahq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudaqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudasa@GCC_4.3.0 1:4.3.0 + __gnu_satfractudasq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudaudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudauha2@GCC_4.3.0 1:4.3.0 + __gnu_satfractudauhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudauqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudausa2@GCC_4.3.0 1:4.3.0 + __gnu_satfractudausq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqda@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqdq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqha@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqsq@GCC_4.3.0 1:4.3.0 + __gnu_satfractudquda@GCC_4.3.0 1:4.3.0 + __gnu_satfractudquha@GCC_4.3.0 1:4.3.0 + __gnu_satfractudquhq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractudquqq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractudqusq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhada@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhadq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhaha@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhahq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhaqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhasa@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhasq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhauda2@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhaudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhauhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhauqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhausa2@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhausq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqda@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqdq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqha@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqsq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhquda@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqudq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhquha@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhquqq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractuhqusq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdida@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdidq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiha@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdihq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdisa@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdisq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsdiusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshida@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshidq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiha@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshihq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshisa@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshisq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractunshiusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqida@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqidq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiha@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqihq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqisa@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqisq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractunsqiusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssida@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssidq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiha@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssihq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssisa@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssisq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiuda@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiuha@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiuhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiuqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractunssiusq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqda@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqdq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqha@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqsq@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqquda@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqudq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqquha@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqquhq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqusa@GCC_4.3.0 1:4.3.0 + __gnu_satfractuqqusq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractusada@GCC_4.3.0 1:4.3.0 + __gnu_satfractusadq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusaha@GCC_4.3.0 1:4.3.0 + __gnu_satfractusahq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusaqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusasa@GCC_4.3.0 1:4.3.0 + __gnu_satfractusasq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusauda2@GCC_4.3.0 1:4.3.0 + __gnu_satfractusaudq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusauha2@GCC_4.3.0 1:4.3.0 + __gnu_satfractusauhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusauqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusausq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqda@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqdq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqha@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqhq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqqq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqsa@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqsq@GCC_4.3.0 1:4.3.0 + __gnu_satfractusquda@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqudq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractusquha@GCC_4.3.0 1:4.3.0 + __gnu_satfractusquhq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractusquqq2@GCC_4.3.0 1:4.3.0 + __gnu_satfractusqusa@GCC_4.3.0 1:4.3.0 + __gnu_ssaddda3@GCC_4.3.0 1:4.3.0 + __gnu_ssadddq3@GCC_4.3.0 1:4.3.0 + __gnu_ssaddha3@GCC_4.3.0 1:4.3.0 + __gnu_ssaddhq3@GCC_4.3.0 1:4.3.0 + __gnu_ssaddqq3@GCC_4.3.0 1:4.3.0 + __gnu_ssaddsa3@GCC_4.3.0 1:4.3.0 + __gnu_ssaddsq3@GCC_4.3.0 1:4.3.0 + __gnu_ssashlda3@GCC_4.3.0 1:4.3.0 + __gnu_ssashldq3@GCC_4.3.0 1:4.3.0 + __gnu_ssashlha3@GCC_4.3.0 1:4.3.0 + __gnu_ssashlhq3@GCC_4.3.0 1:4.3.0 + __gnu_ssashlqq3@GCC_4.3.0 1:4.3.0 + __gnu_ssashlsa3@GCC_4.3.0 1:4.3.0 + __gnu_ssashlsq3@GCC_4.3.0 1:4.3.0 + __gnu_ssdivda3@GCC_4.3.0 1:4.3.0 + __gnu_ssdivdq3@GCC_4.3.0 1:4.3.0 + __gnu_ssdivha3@GCC_4.3.0 1:4.3.0 + __gnu_ssdivhq3@GCC_4.3.0 1:4.3.0 + __gnu_ssdivqq3@GCC_4.3.0 1:4.3.0 + __gnu_ssdivsa3@GCC_4.3.0 1:4.3.0 + __gnu_ssdivsq3@GCC_4.3.0 1:4.3.0 + __gnu_ssmulda3@GCC_4.3.0 1:4.3.0 + __gnu_ssmuldq3@GCC_4.3.0 1:4.3.0 + __gnu_ssmulha3@GCC_4.3.0 1:4.3.0 + __gnu_ssmulhq3@GCC_4.3.0 1:4.3.0 + __gnu_ssmulqq3@GCC_4.3.0 1:4.3.0 + __gnu_ssmulsa3@GCC_4.3.0 1:4.3.0 + __gnu_ssmulsq3@GCC_4.3.0 1:4.3.0 + __gnu_ssnegda2@GCC_4.3.0 1:4.3.0 + __gnu_ssnegdq2@GCC_4.3.0 1:4.3.0 + __gnu_ssnegha2@GCC_4.3.0 1:4.3.0 + __gnu_ssneghq2@GCC_4.3.0 1:4.3.0 + __gnu_ssnegqq2@GCC_4.3.0 1:4.3.0 + __gnu_ssnegsa2@GCC_4.3.0 1:4.3.0 + __gnu_ssnegsq2@GCC_4.3.0 1:4.3.0 + __gnu_sssubda3@GCC_4.3.0 1:4.3.0 + __gnu_sssubdq3@GCC_4.3.0 1:4.3.0 + __gnu_sssubha3@GCC_4.3.0 1:4.3.0 + __gnu_sssubhq3@GCC_4.3.0 1:4.3.0 + __gnu_sssubqq3@GCC_4.3.0 1:4.3.0 + __gnu_sssubsa3@GCC_4.3.0 1:4.3.0 + __gnu_sssubsq3@GCC_4.3.0 1:4.3.0 + __gnu_subda3@GCC_4.3.0 1:4.3.0 + __gnu_subdq3@GCC_4.3.0 1:4.3.0 + __gnu_subha3@GCC_4.3.0 1:4.3.0 + __gnu_subhq3@GCC_4.3.0 1:4.3.0 + __gnu_subqq3@GCC_4.3.0 1:4.3.0 + __gnu_subsa3@GCC_4.3.0 1:4.3.0 + __gnu_subsq3@GCC_4.3.0 1:4.3.0 + __gnu_subuda3@GCC_4.3.0 1:4.3.0 + __gnu_subudq3@GCC_4.3.0 1:4.3.0 + __gnu_subuha3@GCC_4.3.0 1:4.3.0 + __gnu_subuhq3@GCC_4.3.0 1:4.3.0 + __gnu_subuqq3@GCC_4.3.0 1:4.3.0 + __gnu_subusa3@GCC_4.3.0 1:4.3.0 + __gnu_subusq3@GCC_4.3.0 1:4.3.0 + __gnu_udivuda3@GCC_4.3.0 1:4.3.0 + __gnu_udivudq3@GCC_4.3.0 1:4.3.0 + __gnu_udivuha3@GCC_4.3.0 1:4.3.0 + __gnu_udivuhq3@GCC_4.3.0 1:4.3.0 + __gnu_udivuqq3@GCC_4.3.0 1:4.3.0 + __gnu_udivusa3@GCC_4.3.0 1:4.3.0 + __gnu_udivusq3@GCC_4.3.0 1:4.3.0 + __gnu_unwind_frame@GCC_3.5 1:4.3.0 + __gnu_usadduda3@GCC_4.3.0 1:4.3.0 + __gnu_usaddudq3@GCC_4.3.0 1:4.3.0 + __gnu_usadduha3@GCC_4.3.0 1:4.3.0 + __gnu_usadduhq3@GCC_4.3.0 1:4.3.0 + __gnu_usadduqq3@GCC_4.3.0 1:4.3.0 + __gnu_usaddusa3@GCC_4.3.0 1:4.3.0 + __gnu_usaddusq3@GCC_4.3.0 1:4.3.0 + __gnu_usashluda3@GCC_4.3.0 1:4.3.0 + __gnu_usashludq3@GCC_4.3.0 1:4.3.0 + __gnu_usashluha3@GCC_4.3.0 1:4.3.0 + __gnu_usashluhq3@GCC_4.3.0 1:4.3.0 + __gnu_usashluqq3@GCC_4.3.0 1:4.3.0 + __gnu_usashlusa3@GCC_4.3.0 1:4.3.0 + __gnu_usashlusq3@GCC_4.3.0 1:4.3.0 + __gnu_usdivuda3@GCC_4.3.0 1:4.3.0 + __gnu_usdivudq3@GCC_4.3.0 1:4.3.0 + __gnu_usdivuha3@GCC_4.3.0 1:4.3.0 + __gnu_usdivuhq3@GCC_4.3.0 1:4.3.0 + __gnu_usdivuqq3@GCC_4.3.0 1:4.3.0 + __gnu_usdivusa3@GCC_4.3.0 1:4.3.0 + __gnu_usdivusq3@GCC_4.3.0 1:4.3.0 + __gnu_usmuluda3@GCC_4.3.0 1:4.3.0 + __gnu_usmuludq3@GCC_4.3.0 1:4.3.0 + __gnu_usmuluha3@GCC_4.3.0 1:4.3.0 + __gnu_usmuluhq3@GCC_4.3.0 1:4.3.0 + __gnu_usmuluqq3@GCC_4.3.0 1:4.3.0 + __gnu_usmulusa3@GCC_4.3.0 1:4.3.0 + __gnu_usmulusq3@GCC_4.3.0 1:4.3.0 + __gnu_usneguda2@GCC_4.3.0 1:4.3.0 + __gnu_usnegudq2@GCC_4.3.0 1:4.3.0 + __gnu_usneguha2@GCC_4.3.0 1:4.3.0 + __gnu_usneguhq2@GCC_4.3.0 1:4.3.0 + __gnu_usneguqq2@GCC_4.3.0 1:4.3.0 + __gnu_usnegusa2@GCC_4.3.0 1:4.3.0 + __gnu_usnegusq2@GCC_4.3.0 1:4.3.0 + __gnu_ussubuda3@GCC_4.3.0 1:4.3.0 + __gnu_ussubudq3@GCC_4.3.0 1:4.3.0 + __gnu_ussubuha3@GCC_4.3.0 1:4.3.0 + __gnu_ussubuhq3@GCC_4.3.0 1:4.3.0 + __gnu_ussubuqq3@GCC_4.3.0 1:4.3.0 + __gnu_ussubusa3@GCC_4.3.0 1:4.3.0 + __gnu_ussubusq3@GCC_4.3.0 1:4.3.0 + __gtdf2@GCC_3.0 1:4.3.0 + __gtsf2@GCC_3.0 1:4.3.0 + __ledf2@GCC_3.0 1:4.3.0 + __lesf2@GCC_3.0 1:4.3.0 + __lshrdi3@GCC_3.0 1:4.3.0 + __ltdf2@GCC_3.0 1:4.3.0 + __ltsf2@GCC_3.0 1:4.3.0 + __moddi3@GLIBC_2.0 1:4.3.0 + __modsi3@GCC_3.0 1:4.3.0 + __muldc3@GCC_4.0.0 1:4.3.0 + __muldf3@GCC_3.0 1:4.3.0 + __muldi3@GCC_3.0 1:4.3.0 + __mulsc3@GCC_4.0.0 1:4.3.0 + __mulsf3@GCC_3.0 1:4.3.0 + __mulvdi3@GCC_3.0 1:4.3.0 + __mulvsi3@GCC_3.0 1:4.3.0 + __nedf2@GCC_3.0 1:4.3.0 + __negdf2@GCC_3.0 1:4.3.0 + __negdi2@GCC_3.0 1:4.3.0 + __negsf2@GCC_3.0 1:4.3.0 + __negvdi2@GCC_3.0 1:4.3.0 + __negvsi2@GCC_3.0 1:4.3.0 + __nesf2@GCC_3.0 1:4.3.0 + __paritydi2@GCC_3.4 1:4.3.0 + __paritysi2@GCC_3.4 1:4.3.0 + __popcountdi2@GCC_3.4 1:4.3.0 + __popcountsi2@GCC_3.4 1:4.3.0 + __powidf2@GCC_4.0.0 1:4.3.0 + __powisf2@GCC_4.0.0 1:4.3.0 + __subdf3@GCC_3.0 1:4.3.0 + __subsf3@GCC_3.0 1:4.3.0 + __subvdi3@GCC_3.0 1:4.3.0 + __subvsi3@GCC_3.0 1:4.3.0 + __truncdfsf2@GCC_3.0 1:4.3.0 + __ucmpdi2@GCC_3.0 1:4.3.0 + __udivdi3@GLIBC_2.0 1:4.3.0 + __udivmoddi4@GCC_3.0 1:4.3.0 + __udivsi3@GCC_3.0 1:4.3.0 + __umoddi3@GLIBC_2.0 1:4.3.0 + __umodsi3@GCC_3.0 1:4.3.0 + __unorddf2@GCC_3.3.4 1:4.3.0 + __unordsf2@GCC_3.3.4 1:4.3.0 --- gcc-4.9-4.9.2.orig/debian/libitm1.symbols +++ gcc-4.9-4.9.2/debian/libitm1.symbols @@ -0,0 +1,5 @@ +libitm.so.1 libitm1 #MINVER# +#include "libitm1.symbols.common" +(arch=amd64 i386 x32)#include "libitm1.symbols.x86" +(arch=!alpha !amd64 !arm64 !ia64 !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)#include "libitm1.symbols.32bit" +(arch=alpha amd64 arm64 ia64 ppc64 ppc64el s390x sparc64 kfreebsd-amd64)#include "libitm1.symbols.64bit" --- gcc-4.9-4.9.2.orig/debian/libitm1.symbols.32bit +++ gcc-4.9-4.9.2/debian/libitm1.symbols.32bit @@ -0,0 +1,4 @@ + _ZGTtnaj@LIBITM_1.0 4.7 + _ZGTtnajRKSt9nothrow_t@LIBITM_1.0 4.7 + _ZGTtnwj@LIBITM_1.0 4.7 + _ZGTtnwjRKSt9nothrow_t@LIBITM_1.0 4.7 --- gcc-4.9-4.9.2.orig/debian/libitm1.symbols.64bit +++ gcc-4.9-4.9.2/debian/libitm1.symbols.64bit @@ -0,0 +1,4 @@ + _ZGTtnam@LIBITM_1.0 4.7 + _ZGTtnamRKSt9nothrow_t@LIBITM_1.0 4.7 + _ZGTtnwm@LIBITM_1.0 4.7 + _ZGTtnwmRKSt9nothrow_t@LIBITM_1.0 4.7 --- gcc-4.9-4.9.2.orig/debian/libitm1.symbols.common +++ gcc-4.9-4.9.2/debian/libitm1.symbols.common @@ -0,0 +1,143 @@ + LIBITM_1.0@LIBITM_1.0 4.7 + _ITM_LB@LIBITM_1.0 4.7 + _ITM_LCD@LIBITM_1.0 4.7 + _ITM_LCE@LIBITM_1.0 4.7 + _ITM_LCF@LIBITM_1.0 4.7 + _ITM_LD@LIBITM_1.0 4.7 + _ITM_LE@LIBITM_1.0 4.7 + _ITM_LF@LIBITM_1.0 4.7 + _ITM_LU1@LIBITM_1.0 4.7 + _ITM_LU2@LIBITM_1.0 4.7 + _ITM_LU4@LIBITM_1.0 4.7 + _ITM_LU8@LIBITM_1.0 4.7 + _ITM_RCD@LIBITM_1.0 4.7 + _ITM_RCE@LIBITM_1.0 4.7 + _ITM_RCF@LIBITM_1.0 4.7 + _ITM_RD@LIBITM_1.0 4.7 + _ITM_RE@LIBITM_1.0 4.7 + _ITM_RF@LIBITM_1.0 4.7 + _ITM_RU1@LIBITM_1.0 4.7 + _ITM_RU2@LIBITM_1.0 4.7 + _ITM_RU4@LIBITM_1.0 4.7 + _ITM_RU8@LIBITM_1.0 4.7 + _ITM_RaRCD@LIBITM_1.0 4.7 + _ITM_RaRCE@LIBITM_1.0 4.7 + _ITM_RaRCF@LIBITM_1.0 4.7 + _ITM_RaRD@LIBITM_1.0 4.7 + _ITM_RaRE@LIBITM_1.0 4.7 + _ITM_RaRF@LIBITM_1.0 4.7 + _ITM_RaRU1@LIBITM_1.0 4.7 + _ITM_RaRU2@LIBITM_1.0 4.7 + _ITM_RaRU4@LIBITM_1.0 4.7 + _ITM_RaRU8@LIBITM_1.0 4.7 + _ITM_RaWCD@LIBITM_1.0 4.7 + _ITM_RaWCE@LIBITM_1.0 4.7 + _ITM_RaWCF@LIBITM_1.0 4.7 + _ITM_RaWD@LIBITM_1.0 4.7 + _ITM_RaWE@LIBITM_1.0 4.7 + _ITM_RaWF@LIBITM_1.0 4.7 + _ITM_RaWU1@LIBITM_1.0 4.7 + _ITM_RaWU2@LIBITM_1.0 4.7 + _ITM_RaWU4@LIBITM_1.0 4.7 + _ITM_RaWU8@LIBITM_1.0 4.7 + _ITM_RfWCD@LIBITM_1.0 4.7 + _ITM_RfWCE@LIBITM_1.0 4.7 + _ITM_RfWCF@LIBITM_1.0 4.7 + _ITM_RfWD@LIBITM_1.0 4.7 + _ITM_RfWE@LIBITM_1.0 4.7 + _ITM_RfWF@LIBITM_1.0 4.7 + _ITM_RfWU1@LIBITM_1.0 4.7 + _ITM_RfWU2@LIBITM_1.0 4.7 + _ITM_RfWU4@LIBITM_1.0 4.7 + _ITM_RfWU8@LIBITM_1.0 4.7 + _ITM_WCD@LIBITM_1.0 4.7 + _ITM_WCE@LIBITM_1.0 4.7 + _ITM_WCF@LIBITM_1.0 4.7 + _ITM_WD@LIBITM_1.0 4.7 + _ITM_WE@LIBITM_1.0 4.7 + _ITM_WF@LIBITM_1.0 4.7 + _ITM_WU1@LIBITM_1.0 4.7 + _ITM_WU2@LIBITM_1.0 4.7 + _ITM_WU4@LIBITM_1.0 4.7 + _ITM_WU8@LIBITM_1.0 4.7 + _ITM_WaRCD@LIBITM_1.0 4.7 + _ITM_WaRCE@LIBITM_1.0 4.7 + _ITM_WaRCF@LIBITM_1.0 4.7 + _ITM_WaRD@LIBITM_1.0 4.7 + _ITM_WaRE@LIBITM_1.0 4.7 + _ITM_WaRF@LIBITM_1.0 4.7 + _ITM_WaRU1@LIBITM_1.0 4.7 + _ITM_WaRU2@LIBITM_1.0 4.7 + _ITM_WaRU4@LIBITM_1.0 4.7 + _ITM_WaRU8@LIBITM_1.0 4.7 + _ITM_WaWCD@LIBITM_1.0 4.7 + _ITM_WaWCE@LIBITM_1.0 4.7 + _ITM_WaWCF@LIBITM_1.0 4.7 + _ITM_WaWD@LIBITM_1.0 4.7 + _ITM_WaWE@LIBITM_1.0 4.7 + _ITM_WaWF@LIBITM_1.0 4.7 + _ITM_WaWU1@LIBITM_1.0 4.7 + _ITM_WaWU2@LIBITM_1.0 4.7 + _ITM_WaWU4@LIBITM_1.0 4.7 + _ITM_WaWU8@LIBITM_1.0 4.7 + _ITM_abortTransaction@LIBITM_1.0 4.7 + _ITM_addUserCommitAction@LIBITM_1.0 4.7 + _ITM_addUserUndoAction@LIBITM_1.0 4.7 + _ITM_beginTransaction@LIBITM_1.0 4.7 + _ITM_calloc@LIBITM_1.0 4.7 + _ITM_changeTransactionMode@LIBITM_1.0 4.7 + _ITM_commitTransaction@LIBITM_1.0 4.7 + _ITM_commitTransactionEH@LIBITM_1.0 4.7 + _ITM_cxa_allocate_exception@LIBITM_1.0 4.7 + _ITM_cxa_begin_catch@LIBITM_1.0 4.7 + _ITM_cxa_end_catch@LIBITM_1.0 4.7 + _ITM_cxa_throw@LIBITM_1.0 4.7 + _ITM_deregisterTMCloneTable@LIBITM_1.0 4.7 + _ITM_dropReferences@LIBITM_1.0 4.7 + _ITM_error@LIBITM_1.0 4.7 + _ITM_free@LIBITM_1.0 4.7 + _ITM_getTMCloneOrIrrevocable@LIBITM_1.0 4.7 + _ITM_getTMCloneSafe@LIBITM_1.0 4.7 + _ITM_getTransactionId@LIBITM_1.0 4.7 + _ITM_inTransaction@LIBITM_1.0 4.7 + _ITM_libraryVersion@LIBITM_1.0 4.7 + _ITM_malloc@LIBITM_1.0 4.7 + _ITM_memcpyRnWt@LIBITM_1.0 4.7 + _ITM_memcpyRnWtaR@LIBITM_1.0 4.7 + _ITM_memcpyRnWtaW@LIBITM_1.0 4.7 + _ITM_memcpyRtWn@LIBITM_1.0 4.7 + _ITM_memcpyRtWt@LIBITM_1.0 4.7 + _ITM_memcpyRtWtaR@LIBITM_1.0 4.7 + _ITM_memcpyRtWtaW@LIBITM_1.0 4.7 + _ITM_memcpyRtaRWn@LIBITM_1.0 4.7 + _ITM_memcpyRtaRWt@LIBITM_1.0 4.7 + _ITM_memcpyRtaRWtaR@LIBITM_1.0 4.7 + _ITM_memcpyRtaRWtaW@LIBITM_1.0 4.7 + _ITM_memcpyRtaWWn@LIBITM_1.0 4.7 + _ITM_memcpyRtaWWt@LIBITM_1.0 4.7 + _ITM_memcpyRtaWWtaR@LIBITM_1.0 4.7 + _ITM_memcpyRtaWWtaW@LIBITM_1.0 4.7 + _ITM_memmoveRnWt@LIBITM_1.0 4.7 + _ITM_memmoveRnWtaR@LIBITM_1.0 4.7 + _ITM_memmoveRnWtaW@LIBITM_1.0 4.7 + _ITM_memmoveRtWn@LIBITM_1.0 4.7 + _ITM_memmoveRtWt@LIBITM_1.0 4.7 + _ITM_memmoveRtWtaR@LIBITM_1.0 4.7 + _ITM_memmoveRtWtaW@LIBITM_1.0 4.7 + _ITM_memmoveRtaRWn@LIBITM_1.0 4.7 + _ITM_memmoveRtaRWt@LIBITM_1.0 4.7 + _ITM_memmoveRtaRWtaR@LIBITM_1.0 4.7 + _ITM_memmoveRtaRWtaW@LIBITM_1.0 4.7 + _ITM_memmoveRtaWWn@LIBITM_1.0 4.7 + _ITM_memmoveRtaWWt@LIBITM_1.0 4.7 + _ITM_memmoveRtaWWtaR@LIBITM_1.0 4.7 + _ITM_memmoveRtaWWtaW@LIBITM_1.0 4.7 + _ITM_memsetW@LIBITM_1.0 4.7 + _ITM_memsetWaR@LIBITM_1.0 4.7 + _ITM_memsetWaW@LIBITM_1.0 4.7 + _ITM_registerTMCloneTable@LIBITM_1.0 4.7 + _ITM_versionCompatible@LIBITM_1.0 4.7 + _ZGTtdaPv@LIBITM_1.0 4.7 + _ZGTtdaPvRKSt9nothrow_t@LIBITM_1.0 4.7 + _ZGTtdlPv@LIBITM_1.0 4.7 + _ZGTtdlPvRKSt9nothrow_t@LIBITM_1.0 4.7 --- gcc-4.9-4.9.2.orig/debian/libitm1.symbols.x86 +++ gcc-4.9-4.9.2/debian/libitm1.symbols.x86 @@ -0,0 +1,24 @@ + _ITM_LM128@LIBITM_1.0 4.7 + _ITM_LM256@LIBITM_1.0 4.7 + _ITM_LM64@LIBITM_1.0 4.7 + _ITM_RM128@LIBITM_1.0 4.7 + _ITM_RM256@LIBITM_1.0 4.7 + _ITM_RM64@LIBITM_1.0 4.7 + _ITM_RaRM128@LIBITM_1.0 4.7 + _ITM_RaRM256@LIBITM_1.0 4.7 + _ITM_RaRM64@LIBITM_1.0 4.7 + _ITM_RaWM128@LIBITM_1.0 4.7 + _ITM_RaWM256@LIBITM_1.0 4.7 + _ITM_RaWM64@LIBITM_1.0 4.7 + _ITM_RfWM128@LIBITM_1.0 4.7 + _ITM_RfWM256@LIBITM_1.0 4.7 + _ITM_RfWM64@LIBITM_1.0 4.7 + _ITM_WM128@LIBITM_1.0 4.7 + _ITM_WM256@LIBITM_1.0 4.7 + _ITM_WM64@LIBITM_1.0 4.7 + _ITM_WaRM128@LIBITM_1.0 4.7 + _ITM_WaRM256@LIBITM_1.0 4.7 + _ITM_WaRM64@LIBITM_1.0 4.7 + _ITM_WaWM128@LIBITM_1.0 4.7 + _ITM_WaWM256@LIBITM_1.0 4.7 + _ITM_WaWM64@LIBITM_1.0 4.7 --- gcc-4.9-4.9.2.orig/debian/liblsan0.symbols +++ gcc-4.9-4.9.2/debian/liblsan0.symbols @@ -0,0 +1,89 @@ +liblsan.so.0 liblsan0 #MINVER# + _ZN11__sanitizer11CheckFailedEPKciS1_yy@Base 4.9 + _ZN11__sanitizer7OnPrintEPKc@Base 4.9 + _ZdaPv@Base 4.9 + _ZdaPvRKSt9nothrow_t@Base 4.9 + _ZdlPv@Base 4.9 + _ZdlPvRKSt9nothrow_t@Base 4.9 + _Znam@Base 4.9 + _ZnamRKSt9nothrow_t@Base 4.9 + _Znwm@Base 4.9 + _ZnwmRKSt9nothrow_t@Base 4.9 + __asan_backtrace_alloc@Base 4.9 + __asan_backtrace_close@Base 4.9 + __asan_backtrace_create_state@Base 4.9 + __asan_backtrace_dwarf_add@Base 4.9 + __asan_backtrace_free@Base 4.9 + __asan_backtrace_get_view@Base 4.9 + __asan_backtrace_initialize@Base 4.9 + __asan_backtrace_open@Base 4.9 + __asan_backtrace_pcinfo@Base 4.9 + __asan_backtrace_qsort@Base 4.9 + __asan_backtrace_release_view@Base 4.9 + __asan_backtrace_syminfo@Base 4.9 + __asan_backtrace_vector_finish@Base 4.9 + __asan_backtrace_vector_grow@Base 4.9 + __asan_backtrace_vector_release@Base 4.9 + __asan_cplus_demangle_builtin_types@Base 4.9 + __asan_cplus_demangle_fill_ctor@Base 4.9 + __asan_cplus_demangle_fill_dtor@Base 4.9 + __asan_cplus_demangle_fill_extended_operator@Base 4.9 + __asan_cplus_demangle_fill_name@Base 4.9 + __asan_cplus_demangle_init_info@Base 4.9 + __asan_cplus_demangle_mangled_name@Base 4.9 + __asan_cplus_demangle_operators@Base 4.9 + __asan_cplus_demangle_print@Base 4.9 + __asan_cplus_demangle_print_callback@Base 4.9 + __asan_cplus_demangle_type@Base 4.9 + __asan_cplus_demangle_v3@Base 4.9 + __asan_cplus_demangle_v3_callback@Base 4.9 + __asan_internal_memcmp@Base 4.9 + __asan_internal_memcpy@Base 4.9 + __asan_internal_memset@Base 4.9 + __asan_internal_strcmp@Base 4.9 + __asan_internal_strlen@Base 4.9 + __asan_internal_strncmp@Base 4.9 + __asan_internal_strnlen@Base 4.9 + __asan_is_gnu_v3_mangled_ctor@Base 4.9 + __asan_is_gnu_v3_mangled_dtor@Base 4.9 + __asan_java_demangle_v3@Base 4.9 + __asan_java_demangle_v3_callback@Base 4.9 + __interceptor___libc_memalign@Base 4.9 + __interceptor_calloc@Base 4.9 + __interceptor_cfree@Base 4.9 + __interceptor_free@Base 4.9 + __interceptor_mallinfo@Base 4.9 + __interceptor_malloc@Base 4.9 + __interceptor_malloc_usable_size@Base 4.9 + __interceptor_mallopt@Base 4.9 + __interceptor_memalign@Base 4.9 + __interceptor_posix_memalign@Base 4.9 + __interceptor_pthread_create@Base 4.9 + __interceptor_pthread_join@Base 4.9 + __interceptor_pvalloc@Base 4.9 + __interceptor_realloc@Base 4.9 + __interceptor_valloc@Base 4.9 + __libc_memalign@Base 4.9 + __lsan_disable@Base 4.9 + __lsan_do_leak_check@Base 4.9 + __lsan_enable@Base 4.9 + __lsan_ignore_object@Base 4.9 + __sanitizer_cov@Base 4.9 + __sanitizer_cov_dump@Base 4.9 + __sanitizer_report_error_summary@Base 4.9 + __sanitizer_sandbox_on_notify@Base 4.9 + __sanitizer_set_report_path@Base 4.9 + calloc@Base 4.9 + cfree@Base 4.9 + free@Base 4.9 + mallinfo@Base 4.9 + malloc@Base 4.9 + malloc_usable_size@Base 4.9 + mallopt@Base 4.9 + memalign@Base 4.9 + posix_memalign@Base 4.9 + pthread_create@Base 4.9 + pthread_join@Base 4.9 + pvalloc@Base 4.9 + realloc@Base 4.9 + valloc@Base 4.9 --- gcc-4.9-4.9.2.orig/debian/libn32gcc1.symbols.mips +++ gcc-4.9-4.9.2/debian/libn32gcc1.symbols.mips @@ -0,0 +1,1749 @@ +libgcc_s.so.1 libn32gcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3.4@GCC_3.3.4 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4.4@GCC_3.4.4 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.2.0 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.4.0@GCC_4.4.0 1:4.4 + GCC_4.5.0@GCC_4.5.0 1:4.5 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __absvti2@GCC_3.4.4 1:4.1.1 + __addda3@GCC_4.3.0 1:4.3 + __adddf3@GCC_3.0 1:4.1.1 + __adddq3@GCC_4.3.0 1:4.3 + __addha3@GCC_4.3.0 1:4.3 + __addhq3@GCC_4.3.0 1:4.3 + __addqq3@GCC_4.3.0 1:4.3 + __addsa3@GCC_4.3.0 1:4.3 + __addsf3@GCC_3.0 1:4.1.1 + __addsq3@GCC_4.3.0 1:4.3 + __addta3@GCC_4.3.0 1:4.3 + __addtf3@GCC_3.0 1:4.1.1 + __addtq3@GCC_4.3.0 1:4.3 + __adduda3@GCC_4.3.0 1:4.3 + __addudq3@GCC_4.3.0 1:4.3 + __adduha3@GCC_4.3.0 1:4.3 + __adduhq3@GCC_4.3.0 1:4.3 + __adduqq3@GCC_4.3.0 1:4.3 + __addusa3@GCC_4.3.0 1:4.3 + __addusq3@GCC_4.3.0 1:4.3 + __adduta3@GCC_4.3.0 1:4.3 + __addutq3@GCC_4.3.0 1:4.3 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __addvti3@GCC_3.4.4 1:4.1.1 + __ashlda3@GCC_4.3.0 1:4.3 + __ashldq3@GCC_4.3.0 1:4.3 + __ashlha3@GCC_4.3.0 1:4.3 + __ashlhq3@GCC_4.3.0 1:4.3 + __ashlqq3@GCC_4.3.0 1:4.3 + __ashlsa3@GCC_4.3.0 1:4.3 + __ashlsq3@GCC_4.3.0 1:4.3 + __ashlta3@GCC_4.3.0 1:4.3 + __ashlti3@GCC_3.0 1:4.1.1 + __ashltq3@GCC_4.3.0 1:4.3 + __ashluda3@GCC_4.3.0 1:4.3 + __ashludq3@GCC_4.3.0 1:4.3 + __ashluha3@GCC_4.3.0 1:4.3 + __ashluhq3@GCC_4.3.0 1:4.3 + __ashluqq3@GCC_4.3.0 1:4.3 + __ashlusa3@GCC_4.3.0 1:4.3 + __ashlusq3@GCC_4.3.0 1:4.3 + __ashluta3@GCC_4.3.0 1:4.3 + __ashlutq3@GCC_4.3.0 1:4.3 + __ashrda3@GCC_4.3.0 1:4.3 + __ashrdq3@GCC_4.3.0 1:4.3 + __ashrha3@GCC_4.3.0 1:4.3 + __ashrhq3@GCC_4.3.0 1:4.3 + __ashrqq3@GCC_4.3.0 1:4.3 + __ashrsa3@GCC_4.3.0 1:4.3 + __ashrsq3@GCC_4.3.0 1:4.3 + __ashrta3@GCC_4.3.0 1:4.3 + __ashrti3@GCC_3.0 1:4.1.1 + __ashrtq3@GCC_4.3.0 1:4.3 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbti2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzti2@GCC_3.4 1:4.1.1 + __cmpda2@GCC_4.3.0 1:4.3 + __cmpdq2@GCC_4.3.0 1:4.3 + __cmpha2@GCC_4.3.0 1:4.3 + __cmphq2@GCC_4.3.0 1:4.3 + __cmpqq2@GCC_4.3.0 1:4.3 + __cmpsa2@GCC_4.3.0 1:4.3 + __cmpsq2@GCC_4.3.0 1:4.3 + __cmpta2@GCC_4.3.0 1:4.3 + __cmpti2@GCC_3.0 1:4.1.1 + __cmptq2@GCC_4.3.0 1:4.3 + __cmpuda2@GCC_4.3.0 1:4.3 + __cmpudq2@GCC_4.3.0 1:4.3 + __cmpuha2@GCC_4.3.0 1:4.3 + __cmpuhq2@GCC_4.3.0 1:4.3 + __cmpuqq2@GCC_4.3.0 1:4.3 + __cmpusa2@GCC_4.3.0 1:4.3 + __cmpusq2@GCC_4.3.0 1:4.3 + __cmputa2@GCC_4.3.0 1:4.3 + __cmputq2@GCC_4.3.0 1:4.3 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzti2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divda3@GCC_4.3.0 1:4.3 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdf3@GCC_3.0 1:4.1.1 + __divdq3@GCC_4.3.0 1:4.3 + __divha3@GCC_4.3.0 1:4.3 + __divhq3@GCC_4.3.0 1:4.3 + __divqq3@GCC_4.3.0 1:4.3 + __divsa3@GCC_4.3.0 1:4.3 + __divsc3@GCC_4.0.0 1:4.1.1 + __divsf3@GCC_3.0 1:4.1.1 + __divsq3@GCC_4.3.0 1:4.3 + __divta3@GCC_4.3.0 1:4.3 + __divtc3@GCC_4.0.0 1:4.1.1 + __divtf3@GCC_3.0 1:4.1.1 + __divti3@GCC_3.0 1:4.1.1 + __divtq3@GCC_4.3.0 1:4.3 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqdf2@GCC_3.0 1:4.1.1 + __eqsf2@GCC_3.0 1:4.1.1 + __eqtf2@GCC_3.0 1:4.1.1 + __extenddftf2@GCC_3.0 1:4.1.1 + __extendsfdf2@GCC_3.0 1:4.1.1 + __extendsftf2@GCC_3.0 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffsti2@GCC_3.0 1:4.1.1 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixdfsi@GCC_3.0 1:4.1.1 + __fixdfti@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixsfsi@GCC_3.0 1:4.1.1 + __fixsfti@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_3.0 1:4.1.1 + __fixtfsi@GCC_3.0 1:4.1.1 + __fixtfti@GCC_3.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunsdfti@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunssfti@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_3.0 1:4.1.1 + __fixunstfsi@GCC_3.0 1:4.1.1 + __fixunstfti@GCC_3.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_3.0 1:4.1.1 + __floatsidf@GCC_3.0 1:4.1.1 + __floatsisf@GCC_3.0 1:4.1.1 + __floatsitf@GCC_3.0 1:4.1.1 + __floattidf@GCC_3.0 1:4.1.1 + __floattisf@GCC_3.0 1:4.1.1 + __floattitf@GCC_3.0 1:4.1.1 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.2.0 1:4.2.1 + __floatunsidf@GCC_4.2.0 1:4.2.1 + __floatunsisf@GCC_4.2.0 1:4.2.1 + __floatunsitf@GCC_4.2.0 1:4.2.1 + __floatuntidf@GCC_4.2.0 1:4.2.1 + __floatuntisf@GCC_4.2.0 1:4.2.1 + __floatuntitf@GCC_4.2.0 1:4.2.1 + __fractdadf@GCC_4.3.0 1:4.3 + __fractdadi@GCC_4.3.0 1:4.3 + __fractdadq@GCC_4.3.0 1:4.3 + __fractdaha2@GCC_4.3.0 1:4.3 + __fractdahi@GCC_4.3.0 1:4.3 + __fractdahq@GCC_4.3.0 1:4.3 + __fractdaqi@GCC_4.3.0 1:4.3 + __fractdaqq@GCC_4.3.0 1:4.3 + __fractdasa2@GCC_4.3.0 1:4.3 + __fractdasf@GCC_4.3.0 1:4.3 + __fractdasi@GCC_4.3.0 1:4.3 + __fractdasq@GCC_4.3.0 1:4.3 + __fractdata2@GCC_4.3.0 1:4.3 + __fractdati@GCC_4.3.0 1:4.3 + __fractdatq@GCC_4.3.0 1:4.3 + __fractdauda@GCC_4.3.0 1:4.3 + __fractdaudq@GCC_4.3.0 1:4.3 + __fractdauha@GCC_4.3.0 1:4.3 + __fractdauhq@GCC_4.3.0 1:4.3 + __fractdauqq@GCC_4.3.0 1:4.3 + __fractdausa@GCC_4.3.0 1:4.3 + __fractdausq@GCC_4.3.0 1:4.3 + __fractdauta@GCC_4.3.0 1:4.3 + __fractdautq@GCC_4.3.0 1:4.3 + __fractdfda@GCC_4.3.0 1:4.3 + __fractdfdq@GCC_4.3.0 1:4.3 + __fractdfha@GCC_4.3.0 1:4.3 + __fractdfhq@GCC_4.3.0 1:4.3 + __fractdfqq@GCC_4.3.0 1:4.3 + __fractdfsa@GCC_4.3.0 1:4.3 + __fractdfsq@GCC_4.3.0 1:4.3 + __fractdfta@GCC_4.3.0 1:4.3 + __fractdftq@GCC_4.3.0 1:4.3 + __fractdfuda@GCC_4.3.0 1:4.3 + __fractdfudq@GCC_4.3.0 1:4.3 + __fractdfuha@GCC_4.3.0 1:4.3 + __fractdfuhq@GCC_4.3.0 1:4.3 + __fractdfuqq@GCC_4.3.0 1:4.3 + __fractdfusa@GCC_4.3.0 1:4.3 + __fractdfusq@GCC_4.3.0 1:4.3 + __fractdfuta@GCC_4.3.0 1:4.3 + __fractdfutq@GCC_4.3.0 1:4.3 + __fractdida@GCC_4.3.0 1:4.3 + __fractdidq@GCC_4.3.0 1:4.3 + __fractdiha@GCC_4.3.0 1:4.3 + __fractdihq@GCC_4.3.0 1:4.3 + __fractdiqq@GCC_4.3.0 1:4.3 + __fractdisa@GCC_4.3.0 1:4.3 + __fractdisq@GCC_4.3.0 1:4.3 + __fractdita@GCC_4.3.0 1:4.3 + __fractditq@GCC_4.3.0 1:4.3 + __fractdiuda@GCC_4.3.0 1:4.3 + __fractdiudq@GCC_4.3.0 1:4.3 + __fractdiuha@GCC_4.3.0 1:4.3 + __fractdiuhq@GCC_4.3.0 1:4.3 + __fractdiuqq@GCC_4.3.0 1:4.3 + __fractdiusa@GCC_4.3.0 1:4.3 + __fractdiusq@GCC_4.3.0 1:4.3 + __fractdiuta@GCC_4.3.0 1:4.3 + __fractdiutq@GCC_4.3.0 1:4.3 + __fractdqda@GCC_4.3.0 1:4.3 + __fractdqdf@GCC_4.3.0 1:4.3 + __fractdqdi@GCC_4.3.0 1:4.3 + __fractdqha@GCC_4.3.0 1:4.3 + __fractdqhi@GCC_4.3.0 1:4.3 + __fractdqhq2@GCC_4.3.0 1:4.3 + __fractdqqi@GCC_4.3.0 1:4.3 + __fractdqqq2@GCC_4.3.0 1:4.3 + __fractdqsa@GCC_4.3.0 1:4.3 + __fractdqsf@GCC_4.3.0 1:4.3 + __fractdqsi@GCC_4.3.0 1:4.3 + __fractdqsq2@GCC_4.3.0 1:4.3 + __fractdqta@GCC_4.3.0 1:4.3 + __fractdqti@GCC_4.3.0 1:4.3 + __fractdqtq2@GCC_4.3.0 1:4.3 + __fractdquda@GCC_4.3.0 1:4.3 + __fractdqudq@GCC_4.3.0 1:4.3 + __fractdquha@GCC_4.3.0 1:4.3 + __fractdquhq@GCC_4.3.0 1:4.3 + __fractdquqq@GCC_4.3.0 1:4.3 + __fractdqusa@GCC_4.3.0 1:4.3 + __fractdqusq@GCC_4.3.0 1:4.3 + __fractdquta@GCC_4.3.0 1:4.3 + __fractdqutq@GCC_4.3.0 1:4.3 + __fracthada2@GCC_4.3.0 1:4.3 + __fracthadf@GCC_4.3.0 1:4.3 + __fracthadi@GCC_4.3.0 1:4.3 + __fracthadq@GCC_4.3.0 1:4.3 + __fracthahi@GCC_4.3.0 1:4.3 + __fracthahq@GCC_4.3.0 1:4.3 + __fracthaqi@GCC_4.3.0 1:4.3 + __fracthaqq@GCC_4.3.0 1:4.3 + __fracthasa2@GCC_4.3.0 1:4.3 + __fracthasf@GCC_4.3.0 1:4.3 + __fracthasi@GCC_4.3.0 1:4.3 + __fracthasq@GCC_4.3.0 1:4.3 + __fracthata2@GCC_4.3.0 1:4.3 + __fracthati@GCC_4.3.0 1:4.3 + __fracthatq@GCC_4.3.0 1:4.3 + __fracthauda@GCC_4.3.0 1:4.3 + __fracthaudq@GCC_4.3.0 1:4.3 + __fracthauha@GCC_4.3.0 1:4.3 + __fracthauhq@GCC_4.3.0 1:4.3 + __fracthauqq@GCC_4.3.0 1:4.3 + __fracthausa@GCC_4.3.0 1:4.3 + __fracthausq@GCC_4.3.0 1:4.3 + __fracthauta@GCC_4.3.0 1:4.3 + __fracthautq@GCC_4.3.0 1:4.3 + __fracthida@GCC_4.3.0 1:4.3 + __fracthidq@GCC_4.3.0 1:4.3 + __fracthiha@GCC_4.3.0 1:4.3 + __fracthihq@GCC_4.3.0 1:4.3 + __fracthiqq@GCC_4.3.0 1:4.3 + __fracthisa@GCC_4.3.0 1:4.3 + __fracthisq@GCC_4.3.0 1:4.3 + __fracthita@GCC_4.3.0 1:4.3 + __fracthitq@GCC_4.3.0 1:4.3 + __fracthiuda@GCC_4.3.0 1:4.3 + __fracthiudq@GCC_4.3.0 1:4.3 + __fracthiuha@GCC_4.3.0 1:4.3 + __fracthiuhq@GCC_4.3.0 1:4.3 + __fracthiuqq@GCC_4.3.0 1:4.3 + __fracthiusa@GCC_4.3.0 1:4.3 + __fracthiusq@GCC_4.3.0 1:4.3 + __fracthiuta@GCC_4.3.0 1:4.3 + __fracthiutq@GCC_4.3.0 1:4.3 + __fracthqda@GCC_4.3.0 1:4.3 + __fracthqdf@GCC_4.3.0 1:4.3 + __fracthqdi@GCC_4.3.0 1:4.3 + __fracthqdq2@GCC_4.3.0 1:4.3 + __fracthqha@GCC_4.3.0 1:4.3 + __fracthqhi@GCC_4.3.0 1:4.3 + __fracthqqi@GCC_4.3.0 1:4.3 + __fracthqqq2@GCC_4.3.0 1:4.3 + __fracthqsa@GCC_4.3.0 1:4.3 + __fracthqsf@GCC_4.3.0 1:4.3 + __fracthqsi@GCC_4.3.0 1:4.3 + __fracthqsq2@GCC_4.3.0 1:4.3 + __fracthqta@GCC_4.3.0 1:4.3 + __fracthqti@GCC_4.3.0 1:4.3 + __fracthqtq2@GCC_4.3.0 1:4.3 + __fracthquda@GCC_4.3.0 1:4.3 + __fracthqudq@GCC_4.3.0 1:4.3 + __fracthquha@GCC_4.3.0 1:4.3 + __fracthquhq@GCC_4.3.0 1:4.3 + __fracthquqq@GCC_4.3.0 1:4.3 + __fracthqusa@GCC_4.3.0 1:4.3 + __fracthqusq@GCC_4.3.0 1:4.3 + __fracthquta@GCC_4.3.0 1:4.3 + __fracthqutq@GCC_4.3.0 1:4.3 + __fractqida@GCC_4.3.0 1:4.3 + __fractqidq@GCC_4.3.0 1:4.3 + __fractqiha@GCC_4.3.0 1:4.3 + __fractqihq@GCC_4.3.0 1:4.3 + __fractqiqq@GCC_4.3.0 1:4.3 + __fractqisa@GCC_4.3.0 1:4.3 + __fractqisq@GCC_4.3.0 1:4.3 + __fractqita@GCC_4.3.0 1:4.3 + __fractqitq@GCC_4.3.0 1:4.3 + __fractqiuda@GCC_4.3.0 1:4.3 + __fractqiudq@GCC_4.3.0 1:4.3 + __fractqiuha@GCC_4.3.0 1:4.3 + __fractqiuhq@GCC_4.3.0 1:4.3 + __fractqiuqq@GCC_4.3.0 1:4.3 + __fractqiusa@GCC_4.3.0 1:4.3 + __fractqiusq@GCC_4.3.0 1:4.3 + __fractqiuta@GCC_4.3.0 1:4.3 + __fractqiutq@GCC_4.3.0 1:4.3 + __fractqqda@GCC_4.3.0 1:4.3 + __fractqqdf@GCC_4.3.0 1:4.3 + __fractqqdi@GCC_4.3.0 1:4.3 + __fractqqdq2@GCC_4.3.0 1:4.3 + __fractqqha@GCC_4.3.0 1:4.3 + __fractqqhi@GCC_4.3.0 1:4.3 + __fractqqhq2@GCC_4.3.0 1:4.3 + __fractqqqi@GCC_4.3.0 1:4.3 + __fractqqsa@GCC_4.3.0 1:4.3 + __fractqqsf@GCC_4.3.0 1:4.3 + __fractqqsi@GCC_4.3.0 1:4.3 + __fractqqsq2@GCC_4.3.0 1:4.3 + __fractqqta@GCC_4.3.0 1:4.3 + __fractqqti@GCC_4.3.0 1:4.3 + __fractqqtq2@GCC_4.3.0 1:4.3 + __fractqquda@GCC_4.3.0 1:4.3 + __fractqqudq@GCC_4.3.0 1:4.3 + __fractqquha@GCC_4.3.0 1:4.3 + __fractqquhq@GCC_4.3.0 1:4.3 + __fractqquqq@GCC_4.3.0 1:4.3 + __fractqqusa@GCC_4.3.0 1:4.3 + __fractqqusq@GCC_4.3.0 1:4.3 + __fractqquta@GCC_4.3.0 1:4.3 + __fractqqutq@GCC_4.3.0 1:4.3 + __fractsada2@GCC_4.3.0 1:4.3 + __fractsadf@GCC_4.3.0 1:4.3 + __fractsadi@GCC_4.3.0 1:4.3 + __fractsadq@GCC_4.3.0 1:4.3 + __fractsaha2@GCC_4.3.0 1:4.3 + __fractsahi@GCC_4.3.0 1:4.3 + __fractsahq@GCC_4.3.0 1:4.3 + __fractsaqi@GCC_4.3.0 1:4.3 + __fractsaqq@GCC_4.3.0 1:4.3 + __fractsasf@GCC_4.3.0 1:4.3 + __fractsasi@GCC_4.3.0 1:4.3 + __fractsasq@GCC_4.3.0 1:4.3 + __fractsata2@GCC_4.3.0 1:4.3 + __fractsati@GCC_4.3.0 1:4.3 + __fractsatq@GCC_4.3.0 1:4.3 + __fractsauda@GCC_4.3.0 1:4.3 + __fractsaudq@GCC_4.3.0 1:4.3 + __fractsauha@GCC_4.3.0 1:4.3 + __fractsauhq@GCC_4.3.0 1:4.3 + __fractsauqq@GCC_4.3.0 1:4.3 + __fractsausa@GCC_4.3.0 1:4.3 + __fractsausq@GCC_4.3.0 1:4.3 + __fractsauta@GCC_4.3.0 1:4.3 + __fractsautq@GCC_4.3.0 1:4.3 + __fractsfda@GCC_4.3.0 1:4.3 + __fractsfdq@GCC_4.3.0 1:4.3 + __fractsfha@GCC_4.3.0 1:4.3 + __fractsfhq@GCC_4.3.0 1:4.3 + __fractsfqq@GCC_4.3.0 1:4.3 + __fractsfsa@GCC_4.3.0 1:4.3 + __fractsfsq@GCC_4.3.0 1:4.3 + __fractsfta@GCC_4.3.0 1:4.3 + __fractsftq@GCC_4.3.0 1:4.3 + __fractsfuda@GCC_4.3.0 1:4.3 + __fractsfudq@GCC_4.3.0 1:4.3 + __fractsfuha@GCC_4.3.0 1:4.3 + __fractsfuhq@GCC_4.3.0 1:4.3 + __fractsfuqq@GCC_4.3.0 1:4.3 + __fractsfusa@GCC_4.3.0 1:4.3 + __fractsfusq@GCC_4.3.0 1:4.3 + __fractsfuta@GCC_4.3.0 1:4.3 + __fractsfutq@GCC_4.3.0 1:4.3 + __fractsida@GCC_4.3.0 1:4.3 + __fractsidq@GCC_4.3.0 1:4.3 + __fractsiha@GCC_4.3.0 1:4.3 + __fractsihq@GCC_4.3.0 1:4.3 + __fractsiqq@GCC_4.3.0 1:4.3 + __fractsisa@GCC_4.3.0 1:4.3 + __fractsisq@GCC_4.3.0 1:4.3 + __fractsita@GCC_4.3.0 1:4.3 + __fractsitq@GCC_4.3.0 1:4.3 + __fractsiuda@GCC_4.3.0 1:4.3 + __fractsiudq@GCC_4.3.0 1:4.3 + __fractsiuha@GCC_4.3.0 1:4.3 + __fractsiuhq@GCC_4.3.0 1:4.3 + __fractsiuqq@GCC_4.3.0 1:4.3 + __fractsiusa@GCC_4.3.0 1:4.3 + __fractsiusq@GCC_4.3.0 1:4.3 + __fractsiuta@GCC_4.3.0 1:4.3 + __fractsiutq@GCC_4.3.0 1:4.3 + __fractsqda@GCC_4.3.0 1:4.3 + __fractsqdf@GCC_4.3.0 1:4.3 + __fractsqdi@GCC_4.3.0 1:4.3 + __fractsqdq2@GCC_4.3.0 1:4.3 + __fractsqha@GCC_4.3.0 1:4.3 + __fractsqhi@GCC_4.3.0 1:4.3 + __fractsqhq2@GCC_4.3.0 1:4.3 + __fractsqqi@GCC_4.3.0 1:4.3 + __fractsqqq2@GCC_4.3.0 1:4.3 + __fractsqsa@GCC_4.3.0 1:4.3 + __fractsqsf@GCC_4.3.0 1:4.3 + __fractsqsi@GCC_4.3.0 1:4.3 + __fractsqta@GCC_4.3.0 1:4.3 + __fractsqti@GCC_4.3.0 1:4.3 + __fractsqtq2@GCC_4.3.0 1:4.3 + __fractsquda@GCC_4.3.0 1:4.3 + __fractsqudq@GCC_4.3.0 1:4.3 + __fractsquha@GCC_4.3.0 1:4.3 + __fractsquhq@GCC_4.3.0 1:4.3 + __fractsquqq@GCC_4.3.0 1:4.3 + __fractsqusa@GCC_4.3.0 1:4.3 + __fractsqusq@GCC_4.3.0 1:4.3 + __fractsquta@GCC_4.3.0 1:4.3 + __fractsqutq@GCC_4.3.0 1:4.3 + __fracttada2@GCC_4.3.0 1:4.3 + __fracttadf@GCC_4.3.0 1:4.3 + __fracttadi@GCC_4.3.0 1:4.3 + __fracttadq@GCC_4.3.0 1:4.3 + __fracttaha2@GCC_4.3.0 1:4.3 + __fracttahi@GCC_4.3.0 1:4.3 + __fracttahq@GCC_4.3.0 1:4.3 + __fracttaqi@GCC_4.3.0 1:4.3 + __fracttaqq@GCC_4.3.0 1:4.3 + __fracttasa2@GCC_4.3.0 1:4.3 + __fracttasf@GCC_4.3.0 1:4.3 + __fracttasi@GCC_4.3.0 1:4.3 + __fracttasq@GCC_4.3.0 1:4.3 + __fracttati@GCC_4.3.0 1:4.3 + __fracttatq@GCC_4.3.0 1:4.3 + __fracttauda@GCC_4.3.0 1:4.3 + __fracttaudq@GCC_4.3.0 1:4.3 + __fracttauha@GCC_4.3.0 1:4.3 + __fracttauhq@GCC_4.3.0 1:4.3 + __fracttauqq@GCC_4.3.0 1:4.3 + __fracttausa@GCC_4.3.0 1:4.3 + __fracttausq@GCC_4.3.0 1:4.3 + __fracttauta@GCC_4.3.0 1:4.3 + __fracttautq@GCC_4.3.0 1:4.3 + __fracttida@GCC_4.3.0 1:4.3 + __fracttidq@GCC_4.3.0 1:4.3 + __fracttiha@GCC_4.3.0 1:4.3 + __fracttihq@GCC_4.3.0 1:4.3 + __fracttiqq@GCC_4.3.0 1:4.3 + __fracttisa@GCC_4.3.0 1:4.3 + __fracttisq@GCC_4.3.0 1:4.3 + __fracttita@GCC_4.3.0 1:4.3 + __fracttitq@GCC_4.3.0 1:4.3 + __fracttiuda@GCC_4.3.0 1:4.3 + __fracttiudq@GCC_4.3.0 1:4.3 + __fracttiuha@GCC_4.3.0 1:4.3 + __fracttiuhq@GCC_4.3.0 1:4.3 + __fracttiuqq@GCC_4.3.0 1:4.3 + __fracttiusa@GCC_4.3.0 1:4.3 + __fracttiusq@GCC_4.3.0 1:4.3 + __fracttiuta@GCC_4.3.0 1:4.3 + __fracttiutq@GCC_4.3.0 1:4.3 + __fracttqda@GCC_4.3.0 1:4.3 + __fracttqdf@GCC_4.3.0 1:4.3 + __fracttqdi@GCC_4.3.0 1:4.3 + __fracttqdq2@GCC_4.3.0 1:4.3 + __fracttqha@GCC_4.3.0 1:4.3 + __fracttqhi@GCC_4.3.0 1:4.3 + __fracttqhq2@GCC_4.3.0 1:4.3 + __fracttqqi@GCC_4.3.0 1:4.3 + __fracttqqq2@GCC_4.3.0 1:4.3 + __fracttqsa@GCC_4.3.0 1:4.3 + __fracttqsf@GCC_4.3.0 1:4.3 + __fracttqsi@GCC_4.3.0 1:4.3 + __fracttqsq2@GCC_4.3.0 1:4.3 + __fracttqta@GCC_4.3.0 1:4.3 + __fracttqti@GCC_4.3.0 1:4.3 + __fracttquda@GCC_4.3.0 1:4.3 + __fracttqudq@GCC_4.3.0 1:4.3 + __fracttquha@GCC_4.3.0 1:4.3 + __fracttquhq@GCC_4.3.0 1:4.3 + __fracttquqq@GCC_4.3.0 1:4.3 + __fracttqusa@GCC_4.3.0 1:4.3 + __fracttqusq@GCC_4.3.0 1:4.3 + __fracttquta@GCC_4.3.0 1:4.3 + __fracttqutq@GCC_4.3.0 1:4.3 + __fractudada@GCC_4.3.0 1:4.3 + __fractudadf@GCC_4.3.0 1:4.3 + __fractudadi@GCC_4.3.0 1:4.3 + __fractudadq@GCC_4.3.0 1:4.3 + __fractudaha@GCC_4.3.0 1:4.3 + __fractudahi@GCC_4.3.0 1:4.3 + __fractudahq@GCC_4.3.0 1:4.3 + __fractudaqi@GCC_4.3.0 1:4.3 + __fractudaqq@GCC_4.3.0 1:4.3 + __fractudasa@GCC_4.3.0 1:4.3 + __fractudasf@GCC_4.3.0 1:4.3 + __fractudasi@GCC_4.3.0 1:4.3 + __fractudasq@GCC_4.3.0 1:4.3 + __fractudata@GCC_4.3.0 1:4.3 + __fractudati@GCC_4.3.0 1:4.3 + __fractudatq@GCC_4.3.0 1:4.3 + __fractudaudq@GCC_4.3.0 1:4.3 + __fractudauha2@GCC_4.3.0 1:4.3 + __fractudauhq@GCC_4.3.0 1:4.3 + __fractudauqq@GCC_4.3.0 1:4.3 + __fractudausa2@GCC_4.3.0 1:4.3 + __fractudausq@GCC_4.3.0 1:4.3 + __fractudauta2@GCC_4.3.0 1:4.3 + __fractudautq@GCC_4.3.0 1:4.3 + __fractudqda@GCC_4.3.0 1:4.3 + __fractudqdf@GCC_4.3.0 1:4.3 + __fractudqdi@GCC_4.3.0 1:4.3 + __fractudqdq@GCC_4.3.0 1:4.3 + __fractudqha@GCC_4.3.0 1:4.3 + __fractudqhi@GCC_4.3.0 1:4.3 + __fractudqhq@GCC_4.3.0 1:4.3 + __fractudqqi@GCC_4.3.0 1:4.3 + __fractudqqq@GCC_4.3.0 1:4.3 + __fractudqsa@GCC_4.3.0 1:4.3 + __fractudqsf@GCC_4.3.0 1:4.3 + __fractudqsi@GCC_4.3.0 1:4.3 + __fractudqsq@GCC_4.3.0 1:4.3 + __fractudqta@GCC_4.3.0 1:4.3 + __fractudqti@GCC_4.3.0 1:4.3 + __fractudqtq@GCC_4.3.0 1:4.3 + __fractudquda@GCC_4.3.0 1:4.3 + __fractudquha@GCC_4.3.0 1:4.3 + __fractudquhq2@GCC_4.3.0 1:4.3 + __fractudquqq2@GCC_4.3.0 1:4.3 + __fractudqusa@GCC_4.3.0 1:4.3 + __fractudqusq2@GCC_4.3.0 1:4.3 + __fractudquta@GCC_4.3.0 1:4.3 + __fractudqutq2@GCC_4.3.0 1:4.3 + __fractuhada@GCC_4.3.0 1:4.3 + __fractuhadf@GCC_4.3.0 1:4.3 + __fractuhadi@GCC_4.3.0 1:4.3 + __fractuhadq@GCC_4.3.0 1:4.3 + __fractuhaha@GCC_4.3.0 1:4.3 + __fractuhahi@GCC_4.3.0 1:4.3 + __fractuhahq@GCC_4.3.0 1:4.3 + __fractuhaqi@GCC_4.3.0 1:4.3 + __fractuhaqq@GCC_4.3.0 1:4.3 + __fractuhasa@GCC_4.3.0 1:4.3 + __fractuhasf@GCC_4.3.0 1:4.3 + __fractuhasi@GCC_4.3.0 1:4.3 + __fractuhasq@GCC_4.3.0 1:4.3 + __fractuhata@GCC_4.3.0 1:4.3 + __fractuhati@GCC_4.3.0 1:4.3 + __fractuhatq@GCC_4.3.0 1:4.3 + __fractuhauda2@GCC_4.3.0 1:4.3 + __fractuhaudq@GCC_4.3.0 1:4.3 + __fractuhauhq@GCC_4.3.0 1:4.3 + __fractuhauqq@GCC_4.3.0 1:4.3 + __fractuhausa2@GCC_4.3.0 1:4.3 + __fractuhausq@GCC_4.3.0 1:4.3 + __fractuhauta2@GCC_4.3.0 1:4.3 + __fractuhautq@GCC_4.3.0 1:4.3 + __fractuhqda@GCC_4.3.0 1:4.3 + __fractuhqdf@GCC_4.3.0 1:4.3 + __fractuhqdi@GCC_4.3.0 1:4.3 + __fractuhqdq@GCC_4.3.0 1:4.3 + __fractuhqha@GCC_4.3.0 1:4.3 + __fractuhqhi@GCC_4.3.0 1:4.3 + __fractuhqhq@GCC_4.3.0 1:4.3 + __fractuhqqi@GCC_4.3.0 1:4.3 + __fractuhqqq@GCC_4.3.0 1:4.3 + __fractuhqsa@GCC_4.3.0 1:4.3 + __fractuhqsf@GCC_4.3.0 1:4.3 + __fractuhqsi@GCC_4.3.0 1:4.3 + __fractuhqsq@GCC_4.3.0 1:4.3 + __fractuhqta@GCC_4.3.0 1:4.3 + __fractuhqti@GCC_4.3.0 1:4.3 + __fractuhqtq@GCC_4.3.0 1:4.3 + __fractuhquda@GCC_4.3.0 1:4.3 + __fractuhqudq2@GCC_4.3.0 1:4.3 + __fractuhquha@GCC_4.3.0 1:4.3 + __fractuhquqq2@GCC_4.3.0 1:4.3 + __fractuhqusa@GCC_4.3.0 1:4.3 + __fractuhqusq2@GCC_4.3.0 1:4.3 + __fractuhquta@GCC_4.3.0 1:4.3 + __fractuhqutq2@GCC_4.3.0 1:4.3 + __fractunsdadi@GCC_4.3.0 1:4.3 + __fractunsdahi@GCC_4.3.0 1:4.3 + __fractunsdaqi@GCC_4.3.0 1:4.3 + __fractunsdasi@GCC_4.3.0 1:4.3 + __fractunsdati@GCC_4.3.0 1:4.3 + __fractunsdida@GCC_4.3.0 1:4.3 + __fractunsdidq@GCC_4.3.0 1:4.3 + __fractunsdiha@GCC_4.3.0 1:4.3 + __fractunsdihq@GCC_4.3.0 1:4.3 + __fractunsdiqq@GCC_4.3.0 1:4.3 + __fractunsdisa@GCC_4.3.0 1:4.3 + __fractunsdisq@GCC_4.3.0 1:4.3 + __fractunsdita@GCC_4.3.0 1:4.3 + __fractunsditq@GCC_4.3.0 1:4.3 + __fractunsdiuda@GCC_4.3.0 1:4.3 + __fractunsdiudq@GCC_4.3.0 1:4.3 + __fractunsdiuha@GCC_4.3.0 1:4.3 + __fractunsdiuhq@GCC_4.3.0 1:4.3 + __fractunsdiuqq@GCC_4.3.0 1:4.3 + __fractunsdiusa@GCC_4.3.0 1:4.3 + __fractunsdiusq@GCC_4.3.0 1:4.3 + __fractunsdiuta@GCC_4.3.0 1:4.3 + __fractunsdiutq@GCC_4.3.0 1:4.3 + __fractunsdqdi@GCC_4.3.0 1:4.3 + __fractunsdqhi@GCC_4.3.0 1:4.3 + __fractunsdqqi@GCC_4.3.0 1:4.3 + __fractunsdqsi@GCC_4.3.0 1:4.3 + __fractunsdqti@GCC_4.3.0 1:4.3 + __fractunshadi@GCC_4.3.0 1:4.3 + __fractunshahi@GCC_4.3.0 1:4.3 + __fractunshaqi@GCC_4.3.0 1:4.3 + __fractunshasi@GCC_4.3.0 1:4.3 + __fractunshati@GCC_4.3.0 1:4.3 + __fractunshida@GCC_4.3.0 1:4.3 + __fractunshidq@GCC_4.3.0 1:4.3 + __fractunshiha@GCC_4.3.0 1:4.3 + __fractunshihq@GCC_4.3.0 1:4.3 + __fractunshiqq@GCC_4.3.0 1:4.3 + __fractunshisa@GCC_4.3.0 1:4.3 + __fractunshisq@GCC_4.3.0 1:4.3 + __fractunshita@GCC_4.3.0 1:4.3 + __fractunshitq@GCC_4.3.0 1:4.3 + __fractunshiuda@GCC_4.3.0 1:4.3 + __fractunshiudq@GCC_4.3.0 1:4.3 + __fractunshiuha@GCC_4.3.0 1:4.3 + __fractunshiuhq@GCC_4.3.0 1:4.3 + __fractunshiuqq@GCC_4.3.0 1:4.3 + __fractunshiusa@GCC_4.3.0 1:4.3 + __fractunshiusq@GCC_4.3.0 1:4.3 + __fractunshiuta@GCC_4.3.0 1:4.3 + __fractunshiutq@GCC_4.3.0 1:4.3 + __fractunshqdi@GCC_4.3.0 1:4.3 + __fractunshqhi@GCC_4.3.0 1:4.3 + __fractunshqqi@GCC_4.3.0 1:4.3 + __fractunshqsi@GCC_4.3.0 1:4.3 + __fractunshqti@GCC_4.3.0 1:4.3 + __fractunsqida@GCC_4.3.0 1:4.3 + __fractunsqidq@GCC_4.3.0 1:4.3 + __fractunsqiha@GCC_4.3.0 1:4.3 + __fractunsqihq@GCC_4.3.0 1:4.3 + __fractunsqiqq@GCC_4.3.0 1:4.3 + __fractunsqisa@GCC_4.3.0 1:4.3 + __fractunsqisq@GCC_4.3.0 1:4.3 + __fractunsqita@GCC_4.3.0 1:4.3 + __fractunsqitq@GCC_4.3.0 1:4.3 + __fractunsqiuda@GCC_4.3.0 1:4.3 + __fractunsqiudq@GCC_4.3.0 1:4.3 + __fractunsqiuha@GCC_4.3.0 1:4.3 + __fractunsqiuhq@GCC_4.3.0 1:4.3 + __fractunsqiuqq@GCC_4.3.0 1:4.3 + __fractunsqiusa@GCC_4.3.0 1:4.3 + __fractunsqiusq@GCC_4.3.0 1:4.3 + __fractunsqiuta@GCC_4.3.0 1:4.3 + __fractunsqiutq@GCC_4.3.0 1:4.3 + __fractunsqqdi@GCC_4.3.0 1:4.3 + __fractunsqqhi@GCC_4.3.0 1:4.3 + __fractunsqqqi@GCC_4.3.0 1:4.3 + __fractunsqqsi@GCC_4.3.0 1:4.3 + __fractunsqqti@GCC_4.3.0 1:4.3 + __fractunssadi@GCC_4.3.0 1:4.3 + __fractunssahi@GCC_4.3.0 1:4.3 + __fractunssaqi@GCC_4.3.0 1:4.3 + __fractunssasi@GCC_4.3.0 1:4.3 + __fractunssati@GCC_4.3.0 1:4.3 + __fractunssida@GCC_4.3.0 1:4.3 + __fractunssidq@GCC_4.3.0 1:4.3 + __fractunssiha@GCC_4.3.0 1:4.3 + __fractunssihq@GCC_4.3.0 1:4.3 + __fractunssiqq@GCC_4.3.0 1:4.3 + __fractunssisa@GCC_4.3.0 1:4.3 + __fractunssisq@GCC_4.3.0 1:4.3 + __fractunssita@GCC_4.3.0 1:4.3 + __fractunssitq@GCC_4.3.0 1:4.3 + __fractunssiuda@GCC_4.3.0 1:4.3 + __fractunssiudq@GCC_4.3.0 1:4.3 + __fractunssiuha@GCC_4.3.0 1:4.3 + __fractunssiuhq@GCC_4.3.0 1:4.3 + __fractunssiuqq@GCC_4.3.0 1:4.3 + __fractunssiusa@GCC_4.3.0 1:4.3 + __fractunssiusq@GCC_4.3.0 1:4.3 + __fractunssiuta@GCC_4.3.0 1:4.3 + __fractunssiutq@GCC_4.3.0 1:4.3 + __fractunssqdi@GCC_4.3.0 1:4.3 + __fractunssqhi@GCC_4.3.0 1:4.3 + __fractunssqqi@GCC_4.3.0 1:4.3 + __fractunssqsi@GCC_4.3.0 1:4.3 + __fractunssqti@GCC_4.3.0 1:4.3 + __fractunstadi@GCC_4.3.0 1:4.3 + __fractunstahi@GCC_4.3.0 1:4.3 + __fractunstaqi@GCC_4.3.0 1:4.3 + __fractunstasi@GCC_4.3.0 1:4.3 + __fractunstati@GCC_4.3.0 1:4.3 + __fractunstida@GCC_4.3.0 1:4.3 + __fractunstidq@GCC_4.3.0 1:4.3 + __fractunstiha@GCC_4.3.0 1:4.3 + __fractunstihq@GCC_4.3.0 1:4.3 + __fractunstiqq@GCC_4.3.0 1:4.3 + __fractunstisa@GCC_4.3.0 1:4.3 + __fractunstisq@GCC_4.3.0 1:4.3 + __fractunstita@GCC_4.3.0 1:4.3 + __fractunstitq@GCC_4.3.0 1:4.3 + __fractunstiuda@GCC_4.3.0 1:4.3 + __fractunstiudq@GCC_4.3.0 1:4.3 + __fractunstiuha@GCC_4.3.0 1:4.3 + __fractunstiuhq@GCC_4.3.0 1:4.3 + __fractunstiuqq@GCC_4.3.0 1:4.3 + __fractunstiusa@GCC_4.3.0 1:4.3 + __fractunstiusq@GCC_4.3.0 1:4.3 + __fractunstiuta@GCC_4.3.0 1:4.3 + __fractunstiutq@GCC_4.3.0 1:4.3 + __fractunstqdi@GCC_4.3.0 1:4.3 + __fractunstqhi@GCC_4.3.0 1:4.3 + __fractunstqqi@GCC_4.3.0 1:4.3 + __fractunstqsi@GCC_4.3.0 1:4.3 + __fractunstqti@GCC_4.3.0 1:4.3 + __fractunsudadi@GCC_4.3.0 1:4.3 + __fractunsudahi@GCC_4.3.0 1:4.3 + __fractunsudaqi@GCC_4.3.0 1:4.3 + __fractunsudasi@GCC_4.3.0 1:4.3 + __fractunsudati@GCC_4.3.0 1:4.3 + __fractunsudqdi@GCC_4.3.0 1:4.3 + __fractunsudqhi@GCC_4.3.0 1:4.3 + __fractunsudqqi@GCC_4.3.0 1:4.3 + __fractunsudqsi@GCC_4.3.0 1:4.3 + __fractunsudqti@GCC_4.3.0 1:4.3 + __fractunsuhadi@GCC_4.3.0 1:4.3 + __fractunsuhahi@GCC_4.3.0 1:4.3 + __fractunsuhaqi@GCC_4.3.0 1:4.3 + __fractunsuhasi@GCC_4.3.0 1:4.3 + __fractunsuhati@GCC_4.3.0 1:4.3 + __fractunsuhqdi@GCC_4.3.0 1:4.3 + __fractunsuhqhi@GCC_4.3.0 1:4.3 + __fractunsuhqqi@GCC_4.3.0 1:4.3 + __fractunsuhqsi@GCC_4.3.0 1:4.3 + __fractunsuhqti@GCC_4.3.0 1:4.3 + __fractunsuqqdi@GCC_4.3.0 1:4.3 + __fractunsuqqhi@GCC_4.3.0 1:4.3 + __fractunsuqqqi@GCC_4.3.0 1:4.3 + __fractunsuqqsi@GCC_4.3.0 1:4.3 + __fractunsuqqti@GCC_4.3.0 1:4.3 + __fractunsusadi@GCC_4.3.0 1:4.3 + __fractunsusahi@GCC_4.3.0 1:4.3 + __fractunsusaqi@GCC_4.3.0 1:4.3 + __fractunsusasi@GCC_4.3.0 1:4.3 + __fractunsusati@GCC_4.3.0 1:4.3 + __fractunsusqdi@GCC_4.3.0 1:4.3 + __fractunsusqhi@GCC_4.3.0 1:4.3 + __fractunsusqqi@GCC_4.3.0 1:4.3 + __fractunsusqsi@GCC_4.3.0 1:4.3 + __fractunsusqti@GCC_4.3.0 1:4.3 + __fractunsutadi@GCC_4.3.0 1:4.3 + __fractunsutahi@GCC_4.3.0 1:4.3 + __fractunsutaqi@GCC_4.3.0 1:4.3 + __fractunsutasi@GCC_4.3.0 1:4.3 + __fractunsutati@GCC_4.3.0 1:4.3 + __fractunsutqdi@GCC_4.3.0 1:4.3 + __fractunsutqhi@GCC_4.3.0 1:4.3 + __fractunsutqqi@GCC_4.3.0 1:4.3 + __fractunsutqsi@GCC_4.3.0 1:4.3 + __fractunsutqti@GCC_4.3.0 1:4.3 + __fractuqqda@GCC_4.3.0 1:4.3 + __fractuqqdf@GCC_4.3.0 1:4.3 + __fractuqqdi@GCC_4.3.0 1:4.3 + __fractuqqdq@GCC_4.3.0 1:4.3 + __fractuqqha@GCC_4.3.0 1:4.3 + __fractuqqhi@GCC_4.3.0 1:4.3 + __fractuqqhq@GCC_4.3.0 1:4.3 + __fractuqqqi@GCC_4.3.0 1:4.3 + __fractuqqqq@GCC_4.3.0 1:4.3 + __fractuqqsa@GCC_4.3.0 1:4.3 + __fractuqqsf@GCC_4.3.0 1:4.3 + __fractuqqsi@GCC_4.3.0 1:4.3 + __fractuqqsq@GCC_4.3.0 1:4.3 + __fractuqqta@GCC_4.3.0 1:4.3 + __fractuqqti@GCC_4.3.0 1:4.3 + __fractuqqtq@GCC_4.3.0 1:4.3 + __fractuqquda@GCC_4.3.0 1:4.3 + __fractuqqudq2@GCC_4.3.0 1:4.3 + __fractuqquha@GCC_4.3.0 1:4.3 + __fractuqquhq2@GCC_4.3.0 1:4.3 + __fractuqqusa@GCC_4.3.0 1:4.3 + __fractuqqusq2@GCC_4.3.0 1:4.3 + __fractuqquta@GCC_4.3.0 1:4.3 + __fractuqqutq2@GCC_4.3.0 1:4.3 + __fractusada@GCC_4.3.0 1:4.3 + __fractusadf@GCC_4.3.0 1:4.3 + __fractusadi@GCC_4.3.0 1:4.3 + __fractusadq@GCC_4.3.0 1:4.3 + __fractusaha@GCC_4.3.0 1:4.3 + __fractusahi@GCC_4.3.0 1:4.3 + __fractusahq@GCC_4.3.0 1:4.3 + __fractusaqi@GCC_4.3.0 1:4.3 + __fractusaqq@GCC_4.3.0 1:4.3 + __fractusasa@GCC_4.3.0 1:4.3 + __fractusasf@GCC_4.3.0 1:4.3 + __fractusasi@GCC_4.3.0 1:4.3 + __fractusasq@GCC_4.3.0 1:4.3 + __fractusata@GCC_4.3.0 1:4.3 + __fractusati@GCC_4.3.0 1:4.3 + __fractusatq@GCC_4.3.0 1:4.3 + __fractusauda2@GCC_4.3.0 1:4.3 + __fractusaudq@GCC_4.3.0 1:4.3 + __fractusauha2@GCC_4.3.0 1:4.3 + __fractusauhq@GCC_4.3.0 1:4.3 + __fractusauqq@GCC_4.3.0 1:4.3 + __fractusausq@GCC_4.3.0 1:4.3 + __fractusauta2@GCC_4.3.0 1:4.3 + __fractusautq@GCC_4.3.0 1:4.3 + __fractusqda@GCC_4.3.0 1:4.3 + __fractusqdf@GCC_4.3.0 1:4.3 + __fractusqdi@GCC_4.3.0 1:4.3 + __fractusqdq@GCC_4.3.0 1:4.3 + __fractusqha@GCC_4.3.0 1:4.3 + __fractusqhi@GCC_4.3.0 1:4.3 + __fractusqhq@GCC_4.3.0 1:4.3 + __fractusqqi@GCC_4.3.0 1:4.3 + __fractusqqq@GCC_4.3.0 1:4.3 + __fractusqsa@GCC_4.3.0 1:4.3 + __fractusqsf@GCC_4.3.0 1:4.3 + __fractusqsi@GCC_4.3.0 1:4.3 + __fractusqsq@GCC_4.3.0 1:4.3 + __fractusqta@GCC_4.3.0 1:4.3 + __fractusqti@GCC_4.3.0 1:4.3 + __fractusqtq@GCC_4.3.0 1:4.3 + __fractusquda@GCC_4.3.0 1:4.3 + __fractusqudq2@GCC_4.3.0 1:4.3 + __fractusquha@GCC_4.3.0 1:4.3 + __fractusquhq2@GCC_4.3.0 1:4.3 + __fractusquqq2@GCC_4.3.0 1:4.3 + __fractusqusa@GCC_4.3.0 1:4.3 + __fractusquta@GCC_4.3.0 1:4.3 + __fractusqutq2@GCC_4.3.0 1:4.3 + __fractutada@GCC_4.3.0 1:4.3 + __fractutadf@GCC_4.3.0 1:4.3 + __fractutadi@GCC_4.3.0 1:4.3 + __fractutadq@GCC_4.3.0 1:4.3 + __fractutaha@GCC_4.3.0 1:4.3 + __fractutahi@GCC_4.3.0 1:4.3 + __fractutahq@GCC_4.3.0 1:4.3 + __fractutaqi@GCC_4.3.0 1:4.3 + __fractutaqq@GCC_4.3.0 1:4.3 + __fractutasa@GCC_4.3.0 1:4.3 + __fractutasf@GCC_4.3.0 1:4.3 + __fractutasi@GCC_4.3.0 1:4.3 + __fractutasq@GCC_4.3.0 1:4.3 + __fractutata@GCC_4.3.0 1:4.3 + __fractutati@GCC_4.3.0 1:4.3 + __fractutatq@GCC_4.3.0 1:4.3 + __fractutauda2@GCC_4.3.0 1:4.3 + __fractutaudq@GCC_4.3.0 1:4.3 + __fractutauha2@GCC_4.3.0 1:4.3 + __fractutauhq@GCC_4.3.0 1:4.3 + __fractutauqq@GCC_4.3.0 1:4.3 + __fractutausa2@GCC_4.3.0 1:4.3 + __fractutausq@GCC_4.3.0 1:4.3 + __fractutautq@GCC_4.3.0 1:4.3 + __fractutqda@GCC_4.3.0 1:4.3 + __fractutqdf@GCC_4.3.0 1:4.3 + __fractutqdi@GCC_4.3.0 1:4.3 + __fractutqdq@GCC_4.3.0 1:4.3 + __fractutqha@GCC_4.3.0 1:4.3 + __fractutqhi@GCC_4.3.0 1:4.3 + __fractutqhq@GCC_4.3.0 1:4.3 + __fractutqqi@GCC_4.3.0 1:4.3 + __fractutqqq@GCC_4.3.0 1:4.3 + __fractutqsa@GCC_4.3.0 1:4.3 + __fractutqsf@GCC_4.3.0 1:4.3 + __fractutqsi@GCC_4.3.0 1:4.3 + __fractutqsq@GCC_4.3.0 1:4.3 + __fractutqta@GCC_4.3.0 1:4.3 + __fractutqti@GCC_4.3.0 1:4.3 + __fractutqtq@GCC_4.3.0 1:4.3 + __fractutquda@GCC_4.3.0 1:4.3 + __fractutqudq2@GCC_4.3.0 1:4.3 + __fractutquha@GCC_4.3.0 1:4.3 + __fractutquhq2@GCC_4.3.0 1:4.3 + __fractutquqq2@GCC_4.3.0 1:4.3 + __fractutqusa@GCC_4.3.0 1:4.3 + __fractutqusq2@GCC_4.3.0 1:4.3 + __fractutquta@GCC_4.3.0 1:4.3 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __gedf2@GCC_3.0 1:4.1.1 + __gesf2@GCC_3.0 1:4.1.1 + __getf2@GCC_3.0 1:4.1.1 + __gtdf2@GCC_3.0 1:4.1.1 + __gtsf2@GCC_3.0 1:4.1.1 + __gttf2@GCC_3.0 1:4.1.1 + __ledf2@GCC_3.0 1:4.1.1 + __lesf2@GCC_3.0 1:4.1.1 + __letf2@GCC_3.0 1:4.1.1 + __lshrti3@GCC_3.0 1:4.1.1 + __lshruda3@GCC_4.3.0 1:4.3 + __lshrudq3@GCC_4.3.0 1:4.3 + __lshruha3@GCC_4.3.0 1:4.3 + __lshruhq3@GCC_4.3.0 1:4.3 + __lshruqq3@GCC_4.3.0 1:4.3 + __lshrusa3@GCC_4.3.0 1:4.3 + __lshrusq3@GCC_4.3.0 1:4.3 + __lshruta3@GCC_4.3.0 1:4.3 + __lshrutq3@GCC_4.3.0 1:4.3 + __ltdf2@GCC_3.0 1:4.1.1 + __ltsf2@GCC_3.0 1:4.1.1 + __lttf2@GCC_3.0 1:4.1.1 + __modti3@GCC_3.0 1:4.1.1 + __mulda3@GCC_4.3.0 1:4.3 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldf3@GCC_3.0 1:4.1.1 + __muldq3@GCC_4.3.0 1:4.3 + __mulha3@GCC_4.3.0 1:4.3 + __mulhq3@GCC_4.3.0 1:4.3 + __mulqq3@GCC_4.3.0 1:4.3 + __mulsa3@GCC_4.3.0 1:4.3 + __mulsc3@GCC_4.0.0 1:4.1.1 + __mulsf3@GCC_3.0 1:4.1.1 + __mulsq3@GCC_4.3.0 1:4.3 + __multa3@GCC_4.3.0 1:4.3 + __multc3@GCC_4.0.0 1:4.1.1 + __multf3@GCC_3.0 1:4.1.1 + __multi3@GCC_3.0 1:4.1.1 + __multq3@GCC_4.3.0 1:4.3 + __muluda3@GCC_4.3.0 1:4.3 + __muludq3@GCC_4.3.0 1:4.3 + __muluha3@GCC_4.3.0 1:4.3 + __muluhq3@GCC_4.3.0 1:4.3 + __muluqq3@GCC_4.3.0 1:4.3 + __mulusa3@GCC_4.3.0 1:4.3 + __mulusq3@GCC_4.3.0 1:4.3 + __muluta3@GCC_4.3.0 1:4.3 + __mulutq3@GCC_4.3.0 1:4.3 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulvti3@GCC_3.4.4 1:4.1.1 + __nedf2@GCC_3.0 1:4.1.1 + __negda2@GCC_4.3.0 1:4.3 + __negdf2@GCC_3.0 1:4.1.1 + __negdq2@GCC_4.3.0 1:4.3 + __negha2@GCC_4.3.0 1:4.3 + __neghq2@GCC_4.3.0 1:4.3 + __negqq2@GCC_4.3.0 1:4.3 + __negsa2@GCC_4.3.0 1:4.3 + __negsf2@GCC_3.0 1:4.1.1 + __negsq2@GCC_4.3.0 1:4.3 + __negta2@GCC_4.3.0 1:4.3 + __negtf2@GCC_3.0 1:4.1.1 + __negti2@GCC_3.0 1:4.1.1 + __negtq2@GCC_4.3.0 1:4.3 + __neguda2@GCC_4.3.0 1:4.3 + __negudq2@GCC_4.3.0 1:4.3 + __neguha2@GCC_4.3.0 1:4.3 + __neguhq2@GCC_4.3.0 1:4.3 + __neguqq2@GCC_4.3.0 1:4.3 + __negusa2@GCC_4.3.0 1:4.3 + __negusq2@GCC_4.3.0 1:4.3 + __neguta2@GCC_4.3.0 1:4.3 + __negutq2@GCC_4.3.0 1:4.3 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __negvti2@GCC_3.4.4 1:4.1.1 + __nesf2@GCC_3.0 1:4.1.1 + __netf2@GCC_3.0 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __parityti2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountti2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.0.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __satfractdadq@GCC_4.3.0 1:4.3 + __satfractdaha2@GCC_4.3.0 1:4.3 + __satfractdahq@GCC_4.3.0 1:4.3 + __satfractdaqq@GCC_4.3.0 1:4.3 + __satfractdasa2@GCC_4.3.0 1:4.3 + __satfractdasq@GCC_4.3.0 1:4.3 + __satfractdata2@GCC_4.3.0 1:4.3 + __satfractdatq@GCC_4.3.0 1:4.3 + __satfractdauda@GCC_4.3.0 1:4.3 + __satfractdaudq@GCC_4.3.0 1:4.3 + __satfractdauha@GCC_4.3.0 1:4.3 + __satfractdauhq@GCC_4.3.0 1:4.3 + __satfractdauqq@GCC_4.3.0 1:4.3 + __satfractdausa@GCC_4.3.0 1:4.3 + __satfractdausq@GCC_4.3.0 1:4.3 + __satfractdauta@GCC_4.3.0 1:4.3 + __satfractdautq@GCC_4.3.0 1:4.3 + __satfractdfda@GCC_4.3.0 1:4.3 + __satfractdfdq@GCC_4.3.0 1:4.3 + __satfractdfha@GCC_4.3.0 1:4.3 + __satfractdfhq@GCC_4.3.0 1:4.3 + __satfractdfqq@GCC_4.3.0 1:4.3 + __satfractdfsa@GCC_4.3.0 1:4.3 + __satfractdfsq@GCC_4.3.0 1:4.3 + __satfractdfta@GCC_4.3.0 1:4.3 + __satfractdftq@GCC_4.3.0 1:4.3 + __satfractdfuda@GCC_4.3.0 1:4.3 + __satfractdfudq@GCC_4.3.0 1:4.3 + __satfractdfuha@GCC_4.3.0 1:4.3 + __satfractdfuhq@GCC_4.3.0 1:4.3 + __satfractdfuqq@GCC_4.3.0 1:4.3 + __satfractdfusa@GCC_4.3.0 1:4.3 + __satfractdfusq@GCC_4.3.0 1:4.3 + __satfractdfuta@GCC_4.3.0 1:4.3 + __satfractdfutq@GCC_4.3.0 1:4.3 + __satfractdida@GCC_4.3.0 1:4.3 + __satfractdidq@GCC_4.3.0 1:4.3 + __satfractdiha@GCC_4.3.0 1:4.3 + __satfractdihq@GCC_4.3.0 1:4.3 + __satfractdiqq@GCC_4.3.0 1:4.3 + __satfractdisa@GCC_4.3.0 1:4.3 + __satfractdisq@GCC_4.3.0 1:4.3 + __satfractdita@GCC_4.3.0 1:4.3 + __satfractditq@GCC_4.3.0 1:4.3 + __satfractdiuda@GCC_4.3.0 1:4.3 + __satfractdiudq@GCC_4.3.0 1:4.3 + __satfractdiuha@GCC_4.3.0 1:4.3 + __satfractdiuhq@GCC_4.3.0 1:4.3 + __satfractdiuqq@GCC_4.3.0 1:4.3 + __satfractdiusa@GCC_4.3.0 1:4.3 + __satfractdiusq@GCC_4.3.0 1:4.3 + __satfractdiuta@GCC_4.3.0 1:4.3 + __satfractdiutq@GCC_4.3.0 1:4.3 + __satfractdqda@GCC_4.3.0 1:4.3 + __satfractdqha@GCC_4.3.0 1:4.3 + __satfractdqhq2@GCC_4.3.0 1:4.3 + __satfractdqqq2@GCC_4.3.0 1:4.3 + __satfractdqsa@GCC_4.3.0 1:4.3 + __satfractdqsq2@GCC_4.3.0 1:4.3 + __satfractdqta@GCC_4.3.0 1:4.3 + __satfractdqtq2@GCC_4.3.0 1:4.3 + __satfractdquda@GCC_4.3.0 1:4.3 + __satfractdqudq@GCC_4.3.0 1:4.3 + __satfractdquha@GCC_4.3.0 1:4.3 + __satfractdquhq@GCC_4.3.0 1:4.3 + __satfractdquqq@GCC_4.3.0 1:4.3 + __satfractdqusa@GCC_4.3.0 1:4.3 + __satfractdqusq@GCC_4.3.0 1:4.3 + __satfractdquta@GCC_4.3.0 1:4.3 + __satfractdqutq@GCC_4.3.0 1:4.3 + __satfracthada2@GCC_4.3.0 1:4.3 + __satfracthadq@GCC_4.3.0 1:4.3 + __satfracthahq@GCC_4.3.0 1:4.3 + __satfracthaqq@GCC_4.3.0 1:4.3 + __satfracthasa2@GCC_4.3.0 1:4.3 + __satfracthasq@GCC_4.3.0 1:4.3 + __satfracthata2@GCC_4.3.0 1:4.3 + __satfracthatq@GCC_4.3.0 1:4.3 + __satfracthauda@GCC_4.3.0 1:4.3 + __satfracthaudq@GCC_4.3.0 1:4.3 + __satfracthauha@GCC_4.3.0 1:4.3 + __satfracthauhq@GCC_4.3.0 1:4.3 + __satfracthauqq@GCC_4.3.0 1:4.3 + __satfracthausa@GCC_4.3.0 1:4.3 + __satfracthausq@GCC_4.3.0 1:4.3 + __satfracthauta@GCC_4.3.0 1:4.3 + __satfracthautq@GCC_4.3.0 1:4.3 + __satfracthida@GCC_4.3.0 1:4.3 + __satfracthidq@GCC_4.3.0 1:4.3 + __satfracthiha@GCC_4.3.0 1:4.3 + __satfracthihq@GCC_4.3.0 1:4.3 + __satfracthiqq@GCC_4.3.0 1:4.3 + __satfracthisa@GCC_4.3.0 1:4.3 + __satfracthisq@GCC_4.3.0 1:4.3 + __satfracthita@GCC_4.3.0 1:4.3 + __satfracthitq@GCC_4.3.0 1:4.3 + __satfracthiuda@GCC_4.3.0 1:4.3 + __satfracthiudq@GCC_4.3.0 1:4.3 + __satfracthiuha@GCC_4.3.0 1:4.3 + __satfracthiuhq@GCC_4.3.0 1:4.3 + __satfracthiuqq@GCC_4.3.0 1:4.3 + __satfracthiusa@GCC_4.3.0 1:4.3 + __satfracthiusq@GCC_4.3.0 1:4.3 + __satfracthiuta@GCC_4.3.0 1:4.3 + __satfracthiutq@GCC_4.3.0 1:4.3 + __satfracthqda@GCC_4.3.0 1:4.3 + __satfracthqdq2@GCC_4.3.0 1:4.3 + __satfracthqha@GCC_4.3.0 1:4.3 + __satfracthqqq2@GCC_4.3.0 1:4.3 + __satfracthqsa@GCC_4.3.0 1:4.3 + __satfracthqsq2@GCC_4.3.0 1:4.3 + __satfracthqta@GCC_4.3.0 1:4.3 + __satfracthqtq2@GCC_4.3.0 1:4.3 + __satfracthquda@GCC_4.3.0 1:4.3 + __satfracthqudq@GCC_4.3.0 1:4.3 + __satfracthquha@GCC_4.3.0 1:4.3 + __satfracthquhq@GCC_4.3.0 1:4.3 + __satfracthquqq@GCC_4.3.0 1:4.3 + __satfracthqusa@GCC_4.3.0 1:4.3 + __satfracthqusq@GCC_4.3.0 1:4.3 + __satfracthquta@GCC_4.3.0 1:4.3 + __satfracthqutq@GCC_4.3.0 1:4.3 + __satfractqida@GCC_4.3.0 1:4.3 + __satfractqidq@GCC_4.3.0 1:4.3 + __satfractqiha@GCC_4.3.0 1:4.3 + __satfractqihq@GCC_4.3.0 1:4.3 + __satfractqiqq@GCC_4.3.0 1:4.3 + __satfractqisa@GCC_4.3.0 1:4.3 + __satfractqisq@GCC_4.3.0 1:4.3 + __satfractqita@GCC_4.3.0 1:4.3 + __satfractqitq@GCC_4.3.0 1:4.3 + __satfractqiuda@GCC_4.3.0 1:4.3 + __satfractqiudq@GCC_4.3.0 1:4.3 + __satfractqiuha@GCC_4.3.0 1:4.3 + __satfractqiuhq@GCC_4.3.0 1:4.3 + __satfractqiuqq@GCC_4.3.0 1:4.3 + __satfractqiusa@GCC_4.3.0 1:4.3 + __satfractqiusq@GCC_4.3.0 1:4.3 + __satfractqiuta@GCC_4.3.0 1:4.3 + __satfractqiutq@GCC_4.3.0 1:4.3 + __satfractqqda@GCC_4.3.0 1:4.3 + __satfractqqdq2@GCC_4.3.0 1:4.3 + __satfractqqha@GCC_4.3.0 1:4.3 + __satfractqqhq2@GCC_4.3.0 1:4.3 + __satfractqqsa@GCC_4.3.0 1:4.3 + __satfractqqsq2@GCC_4.3.0 1:4.3 + __satfractqqta@GCC_4.3.0 1:4.3 + __satfractqqtq2@GCC_4.3.0 1:4.3 + __satfractqquda@GCC_4.3.0 1:4.3 + __satfractqqudq@GCC_4.3.0 1:4.3 + __satfractqquha@GCC_4.3.0 1:4.3 + __satfractqquhq@GCC_4.3.0 1:4.3 + __satfractqquqq@GCC_4.3.0 1:4.3 + __satfractqqusa@GCC_4.3.0 1:4.3 + __satfractqqusq@GCC_4.3.0 1:4.3 + __satfractqquta@GCC_4.3.0 1:4.3 + __satfractqqutq@GCC_4.3.0 1:4.3 + __satfractsada2@GCC_4.3.0 1:4.3 + __satfractsadq@GCC_4.3.0 1:4.3 + __satfractsaha2@GCC_4.3.0 1:4.3 + __satfractsahq@GCC_4.3.0 1:4.3 + __satfractsaqq@GCC_4.3.0 1:4.3 + __satfractsasq@GCC_4.3.0 1:4.3 + __satfractsata2@GCC_4.3.0 1:4.3 + __satfractsatq@GCC_4.3.0 1:4.3 + __satfractsauda@GCC_4.3.0 1:4.3 + __satfractsaudq@GCC_4.3.0 1:4.3 + __satfractsauha@GCC_4.3.0 1:4.3 + __satfractsauhq@GCC_4.3.0 1:4.3 + __satfractsauqq@GCC_4.3.0 1:4.3 + __satfractsausa@GCC_4.3.0 1:4.3 + __satfractsausq@GCC_4.3.0 1:4.3 + __satfractsauta@GCC_4.3.0 1:4.3 + __satfractsautq@GCC_4.3.0 1:4.3 + __satfractsfda@GCC_4.3.0 1:4.3 + __satfractsfdq@GCC_4.3.0 1:4.3 + __satfractsfha@GCC_4.3.0 1:4.3 + __satfractsfhq@GCC_4.3.0 1:4.3 + __satfractsfqq@GCC_4.3.0 1:4.3 + __satfractsfsa@GCC_4.3.0 1:4.3 + __satfractsfsq@GCC_4.3.0 1:4.3 + __satfractsfta@GCC_4.3.0 1:4.3 + __satfractsftq@GCC_4.3.0 1:4.3 + __satfractsfuda@GCC_4.3.0 1:4.3 + __satfractsfudq@GCC_4.3.0 1:4.3 + __satfractsfuha@GCC_4.3.0 1:4.3 + __satfractsfuhq@GCC_4.3.0 1:4.3 + __satfractsfuqq@GCC_4.3.0 1:4.3 + __satfractsfusa@GCC_4.3.0 1:4.3 + __satfractsfusq@GCC_4.3.0 1:4.3 + __satfractsfuta@GCC_4.3.0 1:4.3 + __satfractsfutq@GCC_4.3.0 1:4.3 + __satfractsida@GCC_4.3.0 1:4.3 + __satfractsidq@GCC_4.3.0 1:4.3 + __satfractsiha@GCC_4.3.0 1:4.3 + __satfractsihq@GCC_4.3.0 1:4.3 + __satfractsiqq@GCC_4.3.0 1:4.3 + __satfractsisa@GCC_4.3.0 1:4.3 + __satfractsisq@GCC_4.3.0 1:4.3 + __satfractsita@GCC_4.3.0 1:4.3 + __satfractsitq@GCC_4.3.0 1:4.3 + __satfractsiuda@GCC_4.3.0 1:4.3 + __satfractsiudq@GCC_4.3.0 1:4.3 + __satfractsiuha@GCC_4.3.0 1:4.3 + __satfractsiuhq@GCC_4.3.0 1:4.3 + __satfractsiuqq@GCC_4.3.0 1:4.3 + __satfractsiusa@GCC_4.3.0 1:4.3 + __satfractsiusq@GCC_4.3.0 1:4.3 + __satfractsiuta@GCC_4.3.0 1:4.3 + __satfractsiutq@GCC_4.3.0 1:4.3 + __satfractsqda@GCC_4.3.0 1:4.3 + __satfractsqdq2@GCC_4.3.0 1:4.3 + __satfractsqha@GCC_4.3.0 1:4.3 + __satfractsqhq2@GCC_4.3.0 1:4.3 + __satfractsqqq2@GCC_4.3.0 1:4.3 + __satfractsqsa@GCC_4.3.0 1:4.3 + __satfractsqta@GCC_4.3.0 1:4.3 + __satfractsqtq2@GCC_4.3.0 1:4.3 + __satfractsquda@GCC_4.3.0 1:4.3 + __satfractsqudq@GCC_4.3.0 1:4.3 + __satfractsquha@GCC_4.3.0 1:4.3 + __satfractsquhq@GCC_4.3.0 1:4.3 + __satfractsquqq@GCC_4.3.0 1:4.3 + __satfractsqusa@GCC_4.3.0 1:4.3 + __satfractsqusq@GCC_4.3.0 1:4.3 + __satfractsquta@GCC_4.3.0 1:4.3 + __satfractsqutq@GCC_4.3.0 1:4.3 + __satfracttada2@GCC_4.3.0 1:4.3 + __satfracttadq@GCC_4.3.0 1:4.3 + __satfracttaha2@GCC_4.3.0 1:4.3 + __satfracttahq@GCC_4.3.0 1:4.3 + __satfracttaqq@GCC_4.3.0 1:4.3 + __satfracttasa2@GCC_4.3.0 1:4.3 + __satfracttasq@GCC_4.3.0 1:4.3 + __satfracttatq@GCC_4.3.0 1:4.3 + __satfracttauda@GCC_4.3.0 1:4.3 + __satfracttaudq@GCC_4.3.0 1:4.3 + __satfracttauha@GCC_4.3.0 1:4.3 + __satfracttauhq@GCC_4.3.0 1:4.3 + __satfracttauqq@GCC_4.3.0 1:4.3 + __satfracttausa@GCC_4.3.0 1:4.3 + __satfracttausq@GCC_4.3.0 1:4.3 + __satfracttauta@GCC_4.3.0 1:4.3 + __satfracttautq@GCC_4.3.0 1:4.3 + __satfracttida@GCC_4.3.0 1:4.3 + __satfracttidq@GCC_4.3.0 1:4.3 + __satfracttiha@GCC_4.3.0 1:4.3 + __satfracttihq@GCC_4.3.0 1:4.3 + __satfracttiqq@GCC_4.3.0 1:4.3 + __satfracttisa@GCC_4.3.0 1:4.3 + __satfracttisq@GCC_4.3.0 1:4.3 + __satfracttita@GCC_4.3.0 1:4.3 + __satfracttitq@GCC_4.3.0 1:4.3 + __satfracttiuda@GCC_4.3.0 1:4.3 + __satfracttiudq@GCC_4.3.0 1:4.3 + __satfracttiuha@GCC_4.3.0 1:4.3 + __satfracttiuhq@GCC_4.3.0 1:4.3 + __satfracttiuqq@GCC_4.3.0 1:4.3 + __satfracttiusa@GCC_4.3.0 1:4.3 + __satfracttiusq@GCC_4.3.0 1:4.3 + __satfracttiuta@GCC_4.3.0 1:4.3 + __satfracttiutq@GCC_4.3.0 1:4.3 + __satfracttqda@GCC_4.3.0 1:4.3 + __satfracttqdq2@GCC_4.3.0 1:4.3 + __satfracttqha@GCC_4.3.0 1:4.3 + __satfracttqhq2@GCC_4.3.0 1:4.3 + __satfracttqqq2@GCC_4.3.0 1:4.3 + __satfracttqsa@GCC_4.3.0 1:4.3 + __satfracttqsq2@GCC_4.3.0 1:4.3 + __satfracttqta@GCC_4.3.0 1:4.3 + __satfracttquda@GCC_4.3.0 1:4.3 + __satfracttqudq@GCC_4.3.0 1:4.3 + __satfracttquha@GCC_4.3.0 1:4.3 + __satfracttquhq@GCC_4.3.0 1:4.3 + __satfracttquqq@GCC_4.3.0 1:4.3 + __satfracttqusa@GCC_4.3.0 1:4.3 + __satfracttqusq@GCC_4.3.0 1:4.3 + __satfracttquta@GCC_4.3.0 1:4.3 + __satfracttqutq@GCC_4.3.0 1:4.3 + __satfractudada@GCC_4.3.0 1:4.3 + __satfractudadq@GCC_4.3.0 1:4.3 + __satfractudaha@GCC_4.3.0 1:4.3 + __satfractudahq@GCC_4.3.0 1:4.3 + __satfractudaqq@GCC_4.3.0 1:4.3 + __satfractudasa@GCC_4.3.0 1:4.3 + __satfractudasq@GCC_4.3.0 1:4.3 + __satfractudata@GCC_4.3.0 1:4.3 + __satfractudatq@GCC_4.3.0 1:4.3 + __satfractudaudq@GCC_4.3.0 1:4.3 + __satfractudauha2@GCC_4.3.0 1:4.3 + __satfractudauhq@GCC_4.3.0 1:4.3 + __satfractudauqq@GCC_4.3.0 1:4.3 + __satfractudausa2@GCC_4.3.0 1:4.3 + __satfractudausq@GCC_4.3.0 1:4.3 + __satfractudauta2@GCC_4.3.0 1:4.3 + __satfractudautq@GCC_4.3.0 1:4.3 + __satfractudqda@GCC_4.3.0 1:4.3 + __satfractudqdq@GCC_4.3.0 1:4.3 + __satfractudqha@GCC_4.3.0 1:4.3 + __satfractudqhq@GCC_4.3.0 1:4.3 + __satfractudqqq@GCC_4.3.0 1:4.3 + __satfractudqsa@GCC_4.3.0 1:4.3 + __satfractudqsq@GCC_4.3.0 1:4.3 + __satfractudqta@GCC_4.3.0 1:4.3 + __satfractudqtq@GCC_4.3.0 1:4.3 + __satfractudquda@GCC_4.3.0 1:4.3 + __satfractudquha@GCC_4.3.0 1:4.3 + __satfractudquhq2@GCC_4.3.0 1:4.3 + __satfractudquqq2@GCC_4.3.0 1:4.3 + __satfractudqusa@GCC_4.3.0 1:4.3 + __satfractudqusq2@GCC_4.3.0 1:4.3 + __satfractudquta@GCC_4.3.0 1:4.3 + __satfractudqutq2@GCC_4.3.0 1:4.3 + __satfractuhada@GCC_4.3.0 1:4.3 + __satfractuhadq@GCC_4.3.0 1:4.3 + __satfractuhaha@GCC_4.3.0 1:4.3 + __satfractuhahq@GCC_4.3.0 1:4.3 + __satfractuhaqq@GCC_4.3.0 1:4.3 + __satfractuhasa@GCC_4.3.0 1:4.3 + __satfractuhasq@GCC_4.3.0 1:4.3 + __satfractuhata@GCC_4.3.0 1:4.3 + __satfractuhatq@GCC_4.3.0 1:4.3 + __satfractuhauda2@GCC_4.3.0 1:4.3 + __satfractuhaudq@GCC_4.3.0 1:4.3 + __satfractuhauhq@GCC_4.3.0 1:4.3 + __satfractuhauqq@GCC_4.3.0 1:4.3 + __satfractuhausa2@GCC_4.3.0 1:4.3 + __satfractuhausq@GCC_4.3.0 1:4.3 + __satfractuhauta2@GCC_4.3.0 1:4.3 + __satfractuhautq@GCC_4.3.0 1:4.3 + __satfractuhqda@GCC_4.3.0 1:4.3 + __satfractuhqdq@GCC_4.3.0 1:4.3 + __satfractuhqha@GCC_4.3.0 1:4.3 + __satfractuhqhq@GCC_4.3.0 1:4.3 + __satfractuhqqq@GCC_4.3.0 1:4.3 + __satfractuhqsa@GCC_4.3.0 1:4.3 + __satfractuhqsq@GCC_4.3.0 1:4.3 + __satfractuhqta@GCC_4.3.0 1:4.3 + __satfractuhqtq@GCC_4.3.0 1:4.3 + __satfractuhquda@GCC_4.3.0 1:4.3 + __satfractuhqudq2@GCC_4.3.0 1:4.3 + __satfractuhquha@GCC_4.3.0 1:4.3 + __satfractuhquqq2@GCC_4.3.0 1:4.3 + __satfractuhqusa@GCC_4.3.0 1:4.3 + __satfractuhqusq2@GCC_4.3.0 1:4.3 + __satfractuhquta@GCC_4.3.0 1:4.3 + __satfractuhqutq2@GCC_4.3.0 1:4.3 + __satfractunsdida@GCC_4.3.0 1:4.3 + __satfractunsdidq@GCC_4.3.0 1:4.3 + __satfractunsdiha@GCC_4.3.0 1:4.3 + __satfractunsdihq@GCC_4.3.0 1:4.3 + __satfractunsdiqq@GCC_4.3.0 1:4.3 + __satfractunsdisa@GCC_4.3.0 1:4.3 + __satfractunsdisq@GCC_4.3.0 1:4.3 + __satfractunsdita@GCC_4.3.0 1:4.3 + __satfractunsditq@GCC_4.3.0 1:4.3 + __satfractunsdiuda@GCC_4.3.0 1:4.3 + __satfractunsdiudq@GCC_4.3.0 1:4.3 + __satfractunsdiuha@GCC_4.3.0 1:4.3 + __satfractunsdiuhq@GCC_4.3.0 1:4.3 + __satfractunsdiuqq@GCC_4.3.0 1:4.3 + __satfractunsdiusa@GCC_4.3.0 1:4.3 + __satfractunsdiusq@GCC_4.3.0 1:4.3 + __satfractunsdiuta@GCC_4.3.0 1:4.3 + __satfractunsdiutq@GCC_4.3.0 1:4.3 + __satfractunshida@GCC_4.3.0 1:4.3 + __satfractunshidq@GCC_4.3.0 1:4.3 + __satfractunshiha@GCC_4.3.0 1:4.3 + __satfractunshihq@GCC_4.3.0 1:4.3 + __satfractunshiqq@GCC_4.3.0 1:4.3 + __satfractunshisa@GCC_4.3.0 1:4.3 + __satfractunshisq@GCC_4.3.0 1:4.3 + __satfractunshita@GCC_4.3.0 1:4.3 + __satfractunshitq@GCC_4.3.0 1:4.3 + __satfractunshiuda@GCC_4.3.0 1:4.3 + __satfractunshiudq@GCC_4.3.0 1:4.3 + __satfractunshiuha@GCC_4.3.0 1:4.3 + __satfractunshiuhq@GCC_4.3.0 1:4.3 + __satfractunshiuqq@GCC_4.3.0 1:4.3 + __satfractunshiusa@GCC_4.3.0 1:4.3 + __satfractunshiusq@GCC_4.3.0 1:4.3 + __satfractunshiuta@GCC_4.3.0 1:4.3 + __satfractunshiutq@GCC_4.3.0 1:4.3 + __satfractunsqida@GCC_4.3.0 1:4.3 + __satfractunsqidq@GCC_4.3.0 1:4.3 + __satfractunsqiha@GCC_4.3.0 1:4.3 + __satfractunsqihq@GCC_4.3.0 1:4.3 + __satfractunsqiqq@GCC_4.3.0 1:4.3 + __satfractunsqisa@GCC_4.3.0 1:4.3 + __satfractunsqisq@GCC_4.3.0 1:4.3 + __satfractunsqita@GCC_4.3.0 1:4.3 + __satfractunsqitq@GCC_4.3.0 1:4.3 + __satfractunsqiuda@GCC_4.3.0 1:4.3 + __satfractunsqiudq@GCC_4.3.0 1:4.3 + __satfractunsqiuha@GCC_4.3.0 1:4.3 + __satfractunsqiuhq@GCC_4.3.0 1:4.3 + __satfractunsqiuqq@GCC_4.3.0 1:4.3 + __satfractunsqiusa@GCC_4.3.0 1:4.3 + __satfractunsqiusq@GCC_4.3.0 1:4.3 + __satfractunsqiuta@GCC_4.3.0 1:4.3 + __satfractunsqiutq@GCC_4.3.0 1:4.3 + __satfractunssida@GCC_4.3.0 1:4.3 + __satfractunssidq@GCC_4.3.0 1:4.3 + __satfractunssiha@GCC_4.3.0 1:4.3 + __satfractunssihq@GCC_4.3.0 1:4.3 + __satfractunssiqq@GCC_4.3.0 1:4.3 + __satfractunssisa@GCC_4.3.0 1:4.3 + __satfractunssisq@GCC_4.3.0 1:4.3 + __satfractunssita@GCC_4.3.0 1:4.3 + __satfractunssitq@GCC_4.3.0 1:4.3 + __satfractunssiuda@GCC_4.3.0 1:4.3 + __satfractunssiudq@GCC_4.3.0 1:4.3 + __satfractunssiuha@GCC_4.3.0 1:4.3 + __satfractunssiuhq@GCC_4.3.0 1:4.3 + __satfractunssiuqq@GCC_4.3.0 1:4.3 + __satfractunssiusa@GCC_4.3.0 1:4.3 + __satfractunssiusq@GCC_4.3.0 1:4.3 + __satfractunssiuta@GCC_4.3.0 1:4.3 + __satfractunssiutq@GCC_4.3.0 1:4.3 + __satfractunstida@GCC_4.3.0 1:4.3 + __satfractunstidq@GCC_4.3.0 1:4.3 + __satfractunstiha@GCC_4.3.0 1:4.3 + __satfractunstihq@GCC_4.3.0 1:4.3 + __satfractunstiqq@GCC_4.3.0 1:4.3 + __satfractunstisa@GCC_4.3.0 1:4.3 + __satfractunstisq@GCC_4.3.0 1:4.3 + __satfractunstita@GCC_4.3.0 1:4.3 + __satfractunstitq@GCC_4.3.0 1:4.3 + __satfractunstiuda@GCC_4.3.0 1:4.3 + __satfractunstiudq@GCC_4.3.0 1:4.3 + __satfractunstiuha@GCC_4.3.0 1:4.3 + __satfractunstiuhq@GCC_4.3.0 1:4.3 + __satfractunstiuqq@GCC_4.3.0 1:4.3 + __satfractunstiusa@GCC_4.3.0 1:4.3 + __satfractunstiusq@GCC_4.3.0 1:4.3 + __satfractunstiuta@GCC_4.3.0 1:4.3 + __satfractunstiutq@GCC_4.3.0 1:4.3 + __satfractuqqda@GCC_4.3.0 1:4.3 + __satfractuqqdq@GCC_4.3.0 1:4.3 + __satfractuqqha@GCC_4.3.0 1:4.3 + __satfractuqqhq@GCC_4.3.0 1:4.3 + __satfractuqqqq@GCC_4.3.0 1:4.3 + __satfractuqqsa@GCC_4.3.0 1:4.3 + __satfractuqqsq@GCC_4.3.0 1:4.3 + __satfractuqqta@GCC_4.3.0 1:4.3 + __satfractuqqtq@GCC_4.3.0 1:4.3 + __satfractuqquda@GCC_4.3.0 1:4.3 + __satfractuqqudq2@GCC_4.3.0 1:4.3 + __satfractuqquha@GCC_4.3.0 1:4.3 + __satfractuqquhq2@GCC_4.3.0 1:4.3 + __satfractuqqusa@GCC_4.3.0 1:4.3 + __satfractuqqusq2@GCC_4.3.0 1:4.3 + __satfractuqquta@GCC_4.3.0 1:4.3 + __satfractuqqutq2@GCC_4.3.0 1:4.3 + __satfractusada@GCC_4.3.0 1:4.3 + __satfractusadq@GCC_4.3.0 1:4.3 + __satfractusaha@GCC_4.3.0 1:4.3 + __satfractusahq@GCC_4.3.0 1:4.3 + __satfractusaqq@GCC_4.3.0 1:4.3 + __satfractusasa@GCC_4.3.0 1:4.3 + __satfractusasq@GCC_4.3.0 1:4.3 + __satfractusata@GCC_4.3.0 1:4.3 + __satfractusatq@GCC_4.3.0 1:4.3 + __satfractusauda2@GCC_4.3.0 1:4.3 + __satfractusaudq@GCC_4.3.0 1:4.3 + __satfractusauha2@GCC_4.3.0 1:4.3 + __satfractusauhq@GCC_4.3.0 1:4.3 + __satfractusauqq@GCC_4.3.0 1:4.3 + __satfractusausq@GCC_4.3.0 1:4.3 + __satfractusauta2@GCC_4.3.0 1:4.3 + __satfractusautq@GCC_4.3.0 1:4.3 + __satfractusqda@GCC_4.3.0 1:4.3 + __satfractusqdq@GCC_4.3.0 1:4.3 + __satfractusqha@GCC_4.3.0 1:4.3 + __satfractusqhq@GCC_4.3.0 1:4.3 + __satfractusqqq@GCC_4.3.0 1:4.3 + __satfractusqsa@GCC_4.3.0 1:4.3 + __satfractusqsq@GCC_4.3.0 1:4.3 + __satfractusqta@GCC_4.3.0 1:4.3 + __satfractusqtq@GCC_4.3.0 1:4.3 + __satfractusquda@GCC_4.3.0 1:4.3 + __satfractusqudq2@GCC_4.3.0 1:4.3 + __satfractusquha@GCC_4.3.0 1:4.3 + __satfractusquhq2@GCC_4.3.0 1:4.3 + __satfractusquqq2@GCC_4.3.0 1:4.3 + __satfractusqusa@GCC_4.3.0 1:4.3 + __satfractusquta@GCC_4.3.0 1:4.3 + __satfractusqutq2@GCC_4.3.0 1:4.3 + __satfractutada@GCC_4.3.0 1:4.3 + __satfractutadq@GCC_4.3.0 1:4.3 + __satfractutaha@GCC_4.3.0 1:4.3 + __satfractutahq@GCC_4.3.0 1:4.3 + __satfractutaqq@GCC_4.3.0 1:4.3 + __satfractutasa@GCC_4.3.0 1:4.3 + __satfractutasq@GCC_4.3.0 1:4.3 + __satfractutata@GCC_4.3.0 1:4.3 + __satfractutatq@GCC_4.3.0 1:4.3 + __satfractutauda2@GCC_4.3.0 1:4.3 + __satfractutaudq@GCC_4.3.0 1:4.3 + __satfractutauha2@GCC_4.3.0 1:4.3 + __satfractutauhq@GCC_4.3.0 1:4.3 + __satfractutauqq@GCC_4.3.0 1:4.3 + __satfractutausa2@GCC_4.3.0 1:4.3 + __satfractutausq@GCC_4.3.0 1:4.3 + __satfractutautq@GCC_4.3.0 1:4.3 + __satfractutqda@GCC_4.3.0 1:4.3 + __satfractutqdq@GCC_4.3.0 1:4.3 + __satfractutqha@GCC_4.3.0 1:4.3 + __satfractutqhq@GCC_4.3.0 1:4.3 + __satfractutqqq@GCC_4.3.0 1:4.3 + __satfractutqsa@GCC_4.3.0 1:4.3 + __satfractutqsq@GCC_4.3.0 1:4.3 + __satfractutqta@GCC_4.3.0 1:4.3 + __satfractutqtq@GCC_4.3.0 1:4.3 + __satfractutquda@GCC_4.3.0 1:4.3 + __satfractutqudq2@GCC_4.3.0 1:4.3 + __satfractutquha@GCC_4.3.0 1:4.3 + __satfractutquhq2@GCC_4.3.0 1:4.3 + __satfractutquqq2@GCC_4.3.0 1:4.3 + __satfractutqusa@GCC_4.3.0 1:4.3 + __satfractutqusq2@GCC_4.3.0 1:4.3 + __satfractutquta@GCC_4.3.0 1:4.3 + __ssaddda3@GCC_4.3.0 1:4.3 + __ssadddq3@GCC_4.3.0 1:4.3 + __ssaddha3@GCC_4.3.0 1:4.3 + __ssaddhq3@GCC_4.3.0 1:4.3 + __ssaddqq3@GCC_4.3.0 1:4.3 + __ssaddsa3@GCC_4.3.0 1:4.3 + __ssaddsq3@GCC_4.3.0 1:4.3 + __ssaddta3@GCC_4.3.0 1:4.3 + __ssaddtq3@GCC_4.3.0 1:4.3 + __ssashlda3@GCC_4.3.0 1:4.3 + __ssashldq3@GCC_4.3.0 1:4.3 + __ssashlha3@GCC_4.3.0 1:4.3 + __ssashlhq3@GCC_4.3.0 1:4.3 + __ssashlqq3@GCC_4.3.0 1:4.3 + __ssashlsa3@GCC_4.3.0 1:4.3 + __ssashlsq3@GCC_4.3.0 1:4.3 + __ssashlta3@GCC_4.3.0 1:4.3 + __ssashltq3@GCC_4.3.0 1:4.3 + __ssdivda3@GCC_4.3.0 1:4.3 + __ssdivdq3@GCC_4.3.0 1:4.3 + __ssdivha3@GCC_4.3.0 1:4.3 + __ssdivhq3@GCC_4.3.0 1:4.3 + __ssdivqq3@GCC_4.3.0 1:4.3 + __ssdivsa3@GCC_4.3.0 1:4.3 + __ssdivsq3@GCC_4.3.0 1:4.3 + __ssdivta3@GCC_4.3.0 1:4.3 + __ssdivtq3@GCC_4.3.0 1:4.3 + __ssmulda3@GCC_4.3.0 1:4.3 + __ssmuldq3@GCC_4.3.0 1:4.3 + __ssmulha3@GCC_4.3.0 1:4.3 + __ssmulhq3@GCC_4.3.0 1:4.3 + __ssmulqq3@GCC_4.3.0 1:4.3 + __ssmulsa3@GCC_4.3.0 1:4.3 + __ssmulsq3@GCC_4.3.0 1:4.3 + __ssmulta3@GCC_4.3.0 1:4.3 + __ssmultq3@GCC_4.3.0 1:4.3 + __ssnegda2@GCC_4.3.0 1:4.3 + __ssnegdq2@GCC_4.3.0 1:4.3 + __ssnegha2@GCC_4.3.0 1:4.3 + __ssneghq2@GCC_4.3.0 1:4.3 + __ssnegqq2@GCC_4.3.0 1:4.3 + __ssnegsa2@GCC_4.3.0 1:4.3 + __ssnegsq2@GCC_4.3.0 1:4.3 + __ssnegta2@GCC_4.3.0 1:4.3 + __ssnegtq2@GCC_4.3.0 1:4.3 + __sssubda3@GCC_4.3.0 1:4.3 + __sssubdq3@GCC_4.3.0 1:4.3 + __sssubha3@GCC_4.3.0 1:4.3 + __sssubhq3@GCC_4.3.0 1:4.3 + __sssubqq3@GCC_4.3.0 1:4.3 + __sssubsa3@GCC_4.3.0 1:4.3 + __sssubsq3@GCC_4.3.0 1:4.3 + __sssubta3@GCC_4.3.0 1:4.3 + __sssubtq3@GCC_4.3.0 1:4.3 + __subda3@GCC_4.3.0 1:4.3 + __subdf3@GCC_3.0 1:4.1.1 + __subdq3@GCC_4.3.0 1:4.3 + __subha3@GCC_4.3.0 1:4.3 + __subhq3@GCC_4.3.0 1:4.3 + __subqq3@GCC_4.3.0 1:4.3 + __subsa3@GCC_4.3.0 1:4.3 + __subsf3@GCC_3.0 1:4.1.1 + __subsq3@GCC_4.3.0 1:4.3 + __subta3@GCC_4.3.0 1:4.3 + __subtf3@GCC_3.0 1:4.1.1 + __subtq3@GCC_4.3.0 1:4.3 + __subuda3@GCC_4.3.0 1:4.3 + __subudq3@GCC_4.3.0 1:4.3 + __subuha3@GCC_4.3.0 1:4.3 + __subuhq3@GCC_4.3.0 1:4.3 + __subuqq3@GCC_4.3.0 1:4.3 + __subusa3@GCC_4.3.0 1:4.3 + __subusq3@GCC_4.3.0 1:4.3 + __subuta3@GCC_4.3.0 1:4.3 + __subutq3@GCC_4.3.0 1:4.3 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __subvti3@GCC_3.4.4 1:4.1.1 + __sync_add_and_fetch_1@GCC_4.4.0 1:4.4 + __sync_add_and_fetch_2@GCC_4.4.0 1:4.4 + __sync_add_and_fetch_4@GCC_4.4.0 1:4.4 + __sync_add_and_fetch_8@GCC_4.4.0 1:4.4 + __sync_and_and_fetch_1@GCC_4.4.0 1:4.4 + __sync_and_and_fetch_2@GCC_4.4.0 1:4.4 + __sync_and_and_fetch_4@GCC_4.4.0 1:4.4 + __sync_and_and_fetch_8@GCC_4.4.0 1:4.4 + __sync_bool_compare_and_swap_1@GCC_4.4.0 1:4.4 + __sync_bool_compare_and_swap_2@GCC_4.4.0 1:4.4 + __sync_bool_compare_and_swap_4@GCC_4.4.0 1:4.4 + __sync_bool_compare_and_swap_8@GCC_4.4.0 1:4.4 + __sync_fetch_and_add_1@GCC_4.4.0 1:4.4 + __sync_fetch_and_add_2@GCC_4.4.0 1:4.4 + __sync_fetch_and_add_4@GCC_4.4.0 1:4.4 + __sync_fetch_and_add_8@GCC_4.4.0 1:4.4 + __sync_fetch_and_and_1@GCC_4.4.0 1:4.4 + __sync_fetch_and_and_2@GCC_4.4.0 1:4.4 + __sync_fetch_and_and_4@GCC_4.4.0 1:4.4 + __sync_fetch_and_and_8@GCC_4.4.0 1:4.4 + __sync_fetch_and_nand_1@GCC_4.4.0 1:4.4 + __sync_fetch_and_nand_2@GCC_4.4.0 1:4.4 + __sync_fetch_and_nand_4@GCC_4.4.0 1:4.4 + __sync_fetch_and_nand_8@GCC_4.4.0 1:4.4 + __sync_fetch_and_or_1@GCC_4.4.0 1:4.4 + __sync_fetch_and_or_2@GCC_4.4.0 1:4.4 + __sync_fetch_and_or_4@GCC_4.4.0 1:4.4 + __sync_fetch_and_or_8@GCC_4.4.0 1:4.4 + __sync_fetch_and_sub_1@GCC_4.4.0 1:4.4 + __sync_fetch_and_sub_2@GCC_4.4.0 1:4.4 + __sync_fetch_and_sub_4@GCC_4.4.0 1:4.4 + __sync_fetch_and_sub_8@GCC_4.4.0 1:4.4 + __sync_fetch_and_xor_1@GCC_4.4.0 1:4.4 + __sync_fetch_and_xor_2@GCC_4.4.0 1:4.4 + __sync_fetch_and_xor_4@GCC_4.4.0 1:4.4 + __sync_fetch_and_xor_8@GCC_4.4.0 1:4.4 + __sync_lock_test_and_set_1@GCC_4.4.0 1:4.4 + __sync_lock_test_and_set_2@GCC_4.4.0 1:4.4 + __sync_lock_test_and_set_4@GCC_4.4.0 1:4.4 + __sync_lock_test_and_set_8@GCC_4.4.0 1:4.4 + __sync_nand_and_fetch_1@GCC_4.4.0 1:4.4 + __sync_nand_and_fetch_2@GCC_4.4.0 1:4.4 + __sync_nand_and_fetch_4@GCC_4.4.0 1:4.4 + __sync_nand_and_fetch_8@GCC_4.4.0 1:4.4 + __sync_or_and_fetch_1@GCC_4.4.0 1:4.4 + __sync_or_and_fetch_2@GCC_4.4.0 1:4.4 + __sync_or_and_fetch_4@GCC_4.4.0 1:4.4 + __sync_or_and_fetch_8@GCC_4.4.0 1:4.4 + __sync_sub_and_fetch_1@GCC_4.4.0 1:4.4 + __sync_sub_and_fetch_2@GCC_4.4.0 1:4.4 + __sync_sub_and_fetch_4@GCC_4.4.0 1:4.4 + __sync_sub_and_fetch_8@GCC_4.4.0 1:4.4 + __sync_synchronize@GCC_4.4.0 1:4.4 + __sync_val_compare_and_swap_1@GCC_4.4.0 1:4.4 + __sync_val_compare_and_swap_2@GCC_4.4.0 1:4.4 + __sync_val_compare_and_swap_4@GCC_4.4.0 1:4.4 + __sync_val_compare_and_swap_8@GCC_4.4.0 1:4.4 + __sync_xor_and_fetch_1@GCC_4.4.0 1:4.4 + __sync_xor_and_fetch_2@GCC_4.4.0 1:4.4 + __sync_xor_and_fetch_4@GCC_4.4.0 1:4.4 + __sync_xor_and_fetch_8@GCC_4.4.0 1:4.4 + __truncdfsf2@GCC_3.0 1:4.1.1 + __trunctfdf2@GCC_3.0 1:4.1.1 + __trunctfsf2@GCC_3.0 1:4.1.1 + __ucmpti2@GCC_3.0 1:4.1.1 + __udivmodti4@GCC_3.0 1:4.1.1 + __udivti3@GCC_3.0 1:4.1.1 + __udivuda3@GCC_4.3.0 1:4.3 + __udivudq3@GCC_4.3.0 1:4.3 + __udivuha3@GCC_4.3.0 1:4.3 + __udivuhq3@GCC_4.3.0 1:4.3 + __udivuqq3@GCC_4.3.0 1:4.3 + __udivusa3@GCC_4.3.0 1:4.3 + __udivusq3@GCC_4.3.0 1:4.3 + __udivuta3@GCC_4.3.0 1:4.3 + __udivutq3@GCC_4.3.0 1:4.3 + __umodti3@GCC_3.0 1:4.1.1 + __unorddf2@GCC_3.3.4 1:4.1.1 + __unordsf2@GCC_3.3.4 1:4.1.1 + __unordtf2@GCC_4.5.0 1:4.5 + __usadduda3@GCC_4.3.0 1:4.3 + __usaddudq3@GCC_4.3.0 1:4.3 + __usadduha3@GCC_4.3.0 1:4.3 + __usadduhq3@GCC_4.3.0 1:4.3 + __usadduqq3@GCC_4.3.0 1:4.3 + __usaddusa3@GCC_4.3.0 1:4.3 + __usaddusq3@GCC_4.3.0 1:4.3 + __usadduta3@GCC_4.3.0 1:4.3 + __usaddutq3@GCC_4.3.0 1:4.3 + __usashluda3@GCC_4.3.0 1:4.3 + __usashludq3@GCC_4.3.0 1:4.3 + __usashluha3@GCC_4.3.0 1:4.3 + __usashluhq3@GCC_4.3.0 1:4.3 + __usashluqq3@GCC_4.3.0 1:4.3 + __usashlusa3@GCC_4.3.0 1:4.3 + __usashlusq3@GCC_4.3.0 1:4.3 + __usashluta3@GCC_4.3.0 1:4.3 + __usashlutq3@GCC_4.3.0 1:4.3 + __usdivuda3@GCC_4.3.0 1:4.3 + __usdivudq3@GCC_4.3.0 1:4.3 + __usdivuha3@GCC_4.3.0 1:4.3 + __usdivuhq3@GCC_4.3.0 1:4.3 + __usdivuqq3@GCC_4.3.0 1:4.3 + __usdivusa3@GCC_4.3.0 1:4.3 + __usdivusq3@GCC_4.3.0 1:4.3 + __usdivuta3@GCC_4.3.0 1:4.3 + __usdivutq3@GCC_4.3.0 1:4.3 + __usmuluda3@GCC_4.3.0 1:4.3 + __usmuludq3@GCC_4.3.0 1:4.3 + __usmuluha3@GCC_4.3.0 1:4.3 + __usmuluhq3@GCC_4.3.0 1:4.3 + __usmuluqq3@GCC_4.3.0 1:4.3 + __usmulusa3@GCC_4.3.0 1:4.3 + __usmulusq3@GCC_4.3.0 1:4.3 + __usmuluta3@GCC_4.3.0 1:4.3 + __usmulutq3@GCC_4.3.0 1:4.3 + __usneguda2@GCC_4.3.0 1:4.3 + __usnegudq2@GCC_4.3.0 1:4.3 + __usneguha2@GCC_4.3.0 1:4.3 + __usneguhq2@GCC_4.3.0 1:4.3 + __usneguqq2@GCC_4.3.0 1:4.3 + __usnegusa2@GCC_4.3.0 1:4.3 + __usnegusq2@GCC_4.3.0 1:4.3 + __usneguta2@GCC_4.3.0 1:4.3 + __usnegutq2@GCC_4.3.0 1:4.3 + __ussubuda3@GCC_4.3.0 1:4.3 + __ussubudq3@GCC_4.3.0 1:4.3 + __ussubuha3@GCC_4.3.0 1:4.3 + __ussubuhq3@GCC_4.3.0 1:4.3 + __ussubuqq3@GCC_4.3.0 1:4.3 + __ussubusa3@GCC_4.3.0 1:4.3 + __ussubusq3@GCC_4.3.0 1:4.3 + __ussubuta3@GCC_4.3.0 1:4.3 + __ussubutq3@GCC_4.3.0 1:4.3 --- gcc-4.9-4.9.2.orig/debian/libn32gcc1.symbols.mipsel +++ gcc-4.9-4.9.2/debian/libn32gcc1.symbols.mipsel @@ -0,0 +1,1749 @@ +libgcc_s.so.1 libn32gcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3.4@GCC_3.3.4 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4.4@GCC_3.4.4 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.2.0 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.4.0@GCC_4.4.0 1:4.4 + GCC_4.5.0@GCC_4.5.0 1:4.5 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __absvti2@GCC_3.4.4 1:4.1.1 + __addda3@GCC_4.3.0 1:4.3 + __adddf3@GCC_3.0 1:4.1.1 + __adddq3@GCC_4.3.0 1:4.3 + __addha3@GCC_4.3.0 1:4.3 + __addhq3@GCC_4.3.0 1:4.3 + __addqq3@GCC_4.3.0 1:4.3 + __addsa3@GCC_4.3.0 1:4.3 + __addsf3@GCC_3.0 1:4.1.1 + __addsq3@GCC_4.3.0 1:4.3 + __addta3@GCC_4.3.0 1:4.3 + __addtf3@GCC_3.0 1:4.1.1 + __addtq3@GCC_4.3.0 1:4.3 + __adduda3@GCC_4.3.0 1:4.3 + __addudq3@GCC_4.3.0 1:4.3 + __adduha3@GCC_4.3.0 1:4.3 + __adduhq3@GCC_4.3.0 1:4.3 + __adduqq3@GCC_4.3.0 1:4.3 + __addusa3@GCC_4.3.0 1:4.3 + __addusq3@GCC_4.3.0 1:4.3 + __adduta3@GCC_4.3.0 1:4.3 + __addutq3@GCC_4.3.0 1:4.3 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __addvti3@GCC_3.4.4 1:4.1.1 + __ashlda3@GCC_4.3.0 1:4.3 + __ashldq3@GCC_4.3.0 1:4.3 + __ashlha3@GCC_4.3.0 1:4.3 + __ashlhq3@GCC_4.3.0 1:4.3 + __ashlqq3@GCC_4.3.0 1:4.3 + __ashlsa3@GCC_4.3.0 1:4.3 + __ashlsq3@GCC_4.3.0 1:4.3 + __ashlta3@GCC_4.3.0 1:4.3 + __ashlti3@GCC_3.0 1:4.1.1 + __ashltq3@GCC_4.3.0 1:4.3 + __ashluda3@GCC_4.3.0 1:4.3 + __ashludq3@GCC_4.3.0 1:4.3 + __ashluha3@GCC_4.3.0 1:4.3 + __ashluhq3@GCC_4.3.0 1:4.3 + __ashluqq3@GCC_4.3.0 1:4.3 + __ashlusa3@GCC_4.3.0 1:4.3 + __ashlusq3@GCC_4.3.0 1:4.3 + __ashluta3@GCC_4.3.0 1:4.3 + __ashlutq3@GCC_4.3.0 1:4.3 + __ashrda3@GCC_4.3.0 1:4.3 + __ashrdq3@GCC_4.3.0 1:4.3 + __ashrha3@GCC_4.3.0 1:4.3 + __ashrhq3@GCC_4.3.0 1:4.3 + __ashrqq3@GCC_4.3.0 1:4.3 + __ashrsa3@GCC_4.3.0 1:4.3 + __ashrsq3@GCC_4.3.0 1:4.3 + __ashrta3@GCC_4.3.0 1:4.3 + __ashrti3@GCC_3.0 1:4.1.1 + __ashrtq3@GCC_4.3.0 1:4.3 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbti2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzti2@GCC_3.4 1:4.1.1 + __cmpda2@GCC_4.3.0 1:4.3 + __cmpdq2@GCC_4.3.0 1:4.3 + __cmpha2@GCC_4.3.0 1:4.3 + __cmphq2@GCC_4.3.0 1:4.3 + __cmpqq2@GCC_4.3.0 1:4.3 + __cmpsa2@GCC_4.3.0 1:4.3 + __cmpsq2@GCC_4.3.0 1:4.3 + __cmpta2@GCC_4.3.0 1:4.3 + __cmpti2@GCC_3.0 1:4.1.1 + __cmptq2@GCC_4.3.0 1:4.3 + __cmpuda2@GCC_4.3.0 1:4.3 + __cmpudq2@GCC_4.3.0 1:4.3 + __cmpuha2@GCC_4.3.0 1:4.3 + __cmpuhq2@GCC_4.3.0 1:4.3 + __cmpuqq2@GCC_4.3.0 1:4.3 + __cmpusa2@GCC_4.3.0 1:4.3 + __cmpusq2@GCC_4.3.0 1:4.3 + __cmputa2@GCC_4.3.0 1:4.3 + __cmputq2@GCC_4.3.0 1:4.3 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzti2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divda3@GCC_4.3.0 1:4.3 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdf3@GCC_3.0 1:4.1.1 + __divdq3@GCC_4.3.0 1:4.3 + __divha3@GCC_4.3.0 1:4.3 + __divhq3@GCC_4.3.0 1:4.3 + __divqq3@GCC_4.3.0 1:4.3 + __divsa3@GCC_4.3.0 1:4.3 + __divsc3@GCC_4.0.0 1:4.1.1 + __divsf3@GCC_3.0 1:4.1.1 + __divsq3@GCC_4.3.0 1:4.3 + __divta3@GCC_4.3.0 1:4.3 + __divtc3@GCC_4.0.0 1:4.1.1 + __divtf3@GCC_3.0 1:4.1.1 + __divti3@GCC_3.0 1:4.1.1 + __divtq3@GCC_4.3.0 1:4.3 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqdf2@GCC_3.0 1:4.1.1 + __eqsf2@GCC_3.0 1:4.1.1 + __eqtf2@GCC_3.0 1:4.1.1 + __extenddftf2@GCC_3.0 1:4.1.1 + __extendsfdf2@GCC_3.0 1:4.1.1 + __extendsftf2@GCC_3.0 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffsti2@GCC_3.0 1:4.1.1 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixdfsi@GCC_3.0 1:4.1.1 + __fixdfti@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixsfsi@GCC_3.0 1:4.1.1 + __fixsfti@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_3.0 1:4.1.1 + __fixtfsi@GCC_3.0 1:4.1.1 + __fixtfti@GCC_3.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunsdfti@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunssfti@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_3.0 1:4.1.1 + __fixunstfsi@GCC_3.0 1:4.1.1 + __fixunstfti@GCC_3.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_3.0 1:4.1.1 + __floatsidf@GCC_3.0 1:4.1.1 + __floatsisf@GCC_3.0 1:4.1.1 + __floatsitf@GCC_3.0 1:4.1.1 + __floattidf@GCC_3.0 1:4.1.1 + __floattisf@GCC_3.0 1:4.1.1 + __floattitf@GCC_3.0 1:4.1.1 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.2.0 1:4.2.1 + __floatunsidf@GCC_4.2.0 1:4.2.1 + __floatunsisf@GCC_4.2.0 1:4.2.1 + __floatunsitf@GCC_4.2.0 1:4.2.1 + __floatuntidf@GCC_4.2.0 1:4.2.1 + __floatuntisf@GCC_4.2.0 1:4.2.1 + __floatuntitf@GCC_4.2.0 1:4.2.1 + __fractdadf@GCC_4.3.0 1:4.3 + __fractdadi@GCC_4.3.0 1:4.3 + __fractdadq@GCC_4.3.0 1:4.3 + __fractdaha2@GCC_4.3.0 1:4.3 + __fractdahi@GCC_4.3.0 1:4.3 + __fractdahq@GCC_4.3.0 1:4.3 + __fractdaqi@GCC_4.3.0 1:4.3 + __fractdaqq@GCC_4.3.0 1:4.3 + __fractdasa2@GCC_4.3.0 1:4.3 + __fractdasf@GCC_4.3.0 1:4.3 + __fractdasi@GCC_4.3.0 1:4.3 + __fractdasq@GCC_4.3.0 1:4.3 + __fractdata2@GCC_4.3.0 1:4.3 + __fractdati@GCC_4.3.0 1:4.3 + __fractdatq@GCC_4.3.0 1:4.3 + __fractdauda@GCC_4.3.0 1:4.3 + __fractdaudq@GCC_4.3.0 1:4.3 + __fractdauha@GCC_4.3.0 1:4.3 + __fractdauhq@GCC_4.3.0 1:4.3 + __fractdauqq@GCC_4.3.0 1:4.3 + __fractdausa@GCC_4.3.0 1:4.3 + __fractdausq@GCC_4.3.0 1:4.3 + __fractdauta@GCC_4.3.0 1:4.3 + __fractdautq@GCC_4.3.0 1:4.3 + __fractdfda@GCC_4.3.0 1:4.3 + __fractdfdq@GCC_4.3.0 1:4.3 + __fractdfha@GCC_4.3.0 1:4.3 + __fractdfhq@GCC_4.3.0 1:4.3 + __fractdfqq@GCC_4.3.0 1:4.3 + __fractdfsa@GCC_4.3.0 1:4.3 + __fractdfsq@GCC_4.3.0 1:4.3 + __fractdfta@GCC_4.3.0 1:4.3 + __fractdftq@GCC_4.3.0 1:4.3 + __fractdfuda@GCC_4.3.0 1:4.3 + __fractdfudq@GCC_4.3.0 1:4.3 + __fractdfuha@GCC_4.3.0 1:4.3 + __fractdfuhq@GCC_4.3.0 1:4.3 + __fractdfuqq@GCC_4.3.0 1:4.3 + __fractdfusa@GCC_4.3.0 1:4.3 + __fractdfusq@GCC_4.3.0 1:4.3 + __fractdfuta@GCC_4.3.0 1:4.3 + __fractdfutq@GCC_4.3.0 1:4.3 + __fractdida@GCC_4.3.0 1:4.3 + __fractdidq@GCC_4.3.0 1:4.3 + __fractdiha@GCC_4.3.0 1:4.3 + __fractdihq@GCC_4.3.0 1:4.3 + __fractdiqq@GCC_4.3.0 1:4.3 + __fractdisa@GCC_4.3.0 1:4.3 + __fractdisq@GCC_4.3.0 1:4.3 + __fractdita@GCC_4.3.0 1:4.3 + __fractditq@GCC_4.3.0 1:4.3 + __fractdiuda@GCC_4.3.0 1:4.3 + __fractdiudq@GCC_4.3.0 1:4.3 + __fractdiuha@GCC_4.3.0 1:4.3 + __fractdiuhq@GCC_4.3.0 1:4.3 + __fractdiuqq@GCC_4.3.0 1:4.3 + __fractdiusa@GCC_4.3.0 1:4.3 + __fractdiusq@GCC_4.3.0 1:4.3 + __fractdiuta@GCC_4.3.0 1:4.3 + __fractdiutq@GCC_4.3.0 1:4.3 + __fractdqda@GCC_4.3.0 1:4.3 + __fractdqdf@GCC_4.3.0 1:4.3 + __fractdqdi@GCC_4.3.0 1:4.3 + __fractdqha@GCC_4.3.0 1:4.3 + __fractdqhi@GCC_4.3.0 1:4.3 + __fractdqhq2@GCC_4.3.0 1:4.3 + __fractdqqi@GCC_4.3.0 1:4.3 + __fractdqqq2@GCC_4.3.0 1:4.3 + __fractdqsa@GCC_4.3.0 1:4.3 + __fractdqsf@GCC_4.3.0 1:4.3 + __fractdqsi@GCC_4.3.0 1:4.3 + __fractdqsq2@GCC_4.3.0 1:4.3 + __fractdqta@GCC_4.3.0 1:4.3 + __fractdqti@GCC_4.3.0 1:4.3 + __fractdqtq2@GCC_4.3.0 1:4.3 + __fractdquda@GCC_4.3.0 1:4.3 + __fractdqudq@GCC_4.3.0 1:4.3 + __fractdquha@GCC_4.3.0 1:4.3 + __fractdquhq@GCC_4.3.0 1:4.3 + __fractdquqq@GCC_4.3.0 1:4.3 + __fractdqusa@GCC_4.3.0 1:4.3 + __fractdqusq@GCC_4.3.0 1:4.3 + __fractdquta@GCC_4.3.0 1:4.3 + __fractdqutq@GCC_4.3.0 1:4.3 + __fracthada2@GCC_4.3.0 1:4.3 + __fracthadf@GCC_4.3.0 1:4.3 + __fracthadi@GCC_4.3.0 1:4.3 + __fracthadq@GCC_4.3.0 1:4.3 + __fracthahi@GCC_4.3.0 1:4.3 + __fracthahq@GCC_4.3.0 1:4.3 + __fracthaqi@GCC_4.3.0 1:4.3 + __fracthaqq@GCC_4.3.0 1:4.3 + __fracthasa2@GCC_4.3.0 1:4.3 + __fracthasf@GCC_4.3.0 1:4.3 + __fracthasi@GCC_4.3.0 1:4.3 + __fracthasq@GCC_4.3.0 1:4.3 + __fracthata2@GCC_4.3.0 1:4.3 + __fracthati@GCC_4.3.0 1:4.3 + __fracthatq@GCC_4.3.0 1:4.3 + __fracthauda@GCC_4.3.0 1:4.3 + __fracthaudq@GCC_4.3.0 1:4.3 + __fracthauha@GCC_4.3.0 1:4.3 + __fracthauhq@GCC_4.3.0 1:4.3 + __fracthauqq@GCC_4.3.0 1:4.3 + __fracthausa@GCC_4.3.0 1:4.3 + __fracthausq@GCC_4.3.0 1:4.3 + __fracthauta@GCC_4.3.0 1:4.3 + __fracthautq@GCC_4.3.0 1:4.3 + __fracthida@GCC_4.3.0 1:4.3 + __fracthidq@GCC_4.3.0 1:4.3 + __fracthiha@GCC_4.3.0 1:4.3 + __fracthihq@GCC_4.3.0 1:4.3 + __fracthiqq@GCC_4.3.0 1:4.3 + __fracthisa@GCC_4.3.0 1:4.3 + __fracthisq@GCC_4.3.0 1:4.3 + __fracthita@GCC_4.3.0 1:4.3 + __fracthitq@GCC_4.3.0 1:4.3 + __fracthiuda@GCC_4.3.0 1:4.3 + __fracthiudq@GCC_4.3.0 1:4.3 + __fracthiuha@GCC_4.3.0 1:4.3 + __fracthiuhq@GCC_4.3.0 1:4.3 + __fracthiuqq@GCC_4.3.0 1:4.3 + __fracthiusa@GCC_4.3.0 1:4.3 + __fracthiusq@GCC_4.3.0 1:4.3 + __fracthiuta@GCC_4.3.0 1:4.3 + __fracthiutq@GCC_4.3.0 1:4.3 + __fracthqda@GCC_4.3.0 1:4.3 + __fracthqdf@GCC_4.3.0 1:4.3 + __fracthqdi@GCC_4.3.0 1:4.3 + __fracthqdq2@GCC_4.3.0 1:4.3 + __fracthqha@GCC_4.3.0 1:4.3 + __fracthqhi@GCC_4.3.0 1:4.3 + __fracthqqi@GCC_4.3.0 1:4.3 + __fracthqqq2@GCC_4.3.0 1:4.3 + __fracthqsa@GCC_4.3.0 1:4.3 + __fracthqsf@GCC_4.3.0 1:4.3 + __fracthqsi@GCC_4.3.0 1:4.3 + __fracthqsq2@GCC_4.3.0 1:4.3 + __fracthqta@GCC_4.3.0 1:4.3 + __fracthqti@GCC_4.3.0 1:4.3 + __fracthqtq2@GCC_4.3.0 1:4.3 + __fracthquda@GCC_4.3.0 1:4.3 + __fracthqudq@GCC_4.3.0 1:4.3 + __fracthquha@GCC_4.3.0 1:4.3 + __fracthquhq@GCC_4.3.0 1:4.3 + __fracthquqq@GCC_4.3.0 1:4.3 + __fracthqusa@GCC_4.3.0 1:4.3 + __fracthqusq@GCC_4.3.0 1:4.3 + __fracthquta@GCC_4.3.0 1:4.3 + __fracthqutq@GCC_4.3.0 1:4.3 + __fractqida@GCC_4.3.0 1:4.3 + __fractqidq@GCC_4.3.0 1:4.3 + __fractqiha@GCC_4.3.0 1:4.3 + __fractqihq@GCC_4.3.0 1:4.3 + __fractqiqq@GCC_4.3.0 1:4.3 + __fractqisa@GCC_4.3.0 1:4.3 + __fractqisq@GCC_4.3.0 1:4.3 + __fractqita@GCC_4.3.0 1:4.3 + __fractqitq@GCC_4.3.0 1:4.3 + __fractqiuda@GCC_4.3.0 1:4.3 + __fractqiudq@GCC_4.3.0 1:4.3 + __fractqiuha@GCC_4.3.0 1:4.3 + __fractqiuhq@GCC_4.3.0 1:4.3 + __fractqiuqq@GCC_4.3.0 1:4.3 + __fractqiusa@GCC_4.3.0 1:4.3 + __fractqiusq@GCC_4.3.0 1:4.3 + __fractqiuta@GCC_4.3.0 1:4.3 + __fractqiutq@GCC_4.3.0 1:4.3 + __fractqqda@GCC_4.3.0 1:4.3 + __fractqqdf@GCC_4.3.0 1:4.3 + __fractqqdi@GCC_4.3.0 1:4.3 + __fractqqdq2@GCC_4.3.0 1:4.3 + __fractqqha@GCC_4.3.0 1:4.3 + __fractqqhi@GCC_4.3.0 1:4.3 + __fractqqhq2@GCC_4.3.0 1:4.3 + __fractqqqi@GCC_4.3.0 1:4.3 + __fractqqsa@GCC_4.3.0 1:4.3 + __fractqqsf@GCC_4.3.0 1:4.3 + __fractqqsi@GCC_4.3.0 1:4.3 + __fractqqsq2@GCC_4.3.0 1:4.3 + __fractqqta@GCC_4.3.0 1:4.3 + __fractqqti@GCC_4.3.0 1:4.3 + __fractqqtq2@GCC_4.3.0 1:4.3 + __fractqquda@GCC_4.3.0 1:4.3 + __fractqqudq@GCC_4.3.0 1:4.3 + __fractqquha@GCC_4.3.0 1:4.3 + __fractqquhq@GCC_4.3.0 1:4.3 + __fractqquqq@GCC_4.3.0 1:4.3 + __fractqqusa@GCC_4.3.0 1:4.3 + __fractqqusq@GCC_4.3.0 1:4.3 + __fractqquta@GCC_4.3.0 1:4.3 + __fractqqutq@GCC_4.3.0 1:4.3 + __fractsada2@GCC_4.3.0 1:4.3 + __fractsadf@GCC_4.3.0 1:4.3 + __fractsadi@GCC_4.3.0 1:4.3 + __fractsadq@GCC_4.3.0 1:4.3 + __fractsaha2@GCC_4.3.0 1:4.3 + __fractsahi@GCC_4.3.0 1:4.3 + __fractsahq@GCC_4.3.0 1:4.3 + __fractsaqi@GCC_4.3.0 1:4.3 + __fractsaqq@GCC_4.3.0 1:4.3 + __fractsasf@GCC_4.3.0 1:4.3 + __fractsasi@GCC_4.3.0 1:4.3 + __fractsasq@GCC_4.3.0 1:4.3 + __fractsata2@GCC_4.3.0 1:4.3 + __fractsati@GCC_4.3.0 1:4.3 + __fractsatq@GCC_4.3.0 1:4.3 + __fractsauda@GCC_4.3.0 1:4.3 + __fractsaudq@GCC_4.3.0 1:4.3 + __fractsauha@GCC_4.3.0 1:4.3 + __fractsauhq@GCC_4.3.0 1:4.3 + __fractsauqq@GCC_4.3.0 1:4.3 + __fractsausa@GCC_4.3.0 1:4.3 + __fractsausq@GCC_4.3.0 1:4.3 + __fractsauta@GCC_4.3.0 1:4.3 + __fractsautq@GCC_4.3.0 1:4.3 + __fractsfda@GCC_4.3.0 1:4.3 + __fractsfdq@GCC_4.3.0 1:4.3 + __fractsfha@GCC_4.3.0 1:4.3 + __fractsfhq@GCC_4.3.0 1:4.3 + __fractsfqq@GCC_4.3.0 1:4.3 + __fractsfsa@GCC_4.3.0 1:4.3 + __fractsfsq@GCC_4.3.0 1:4.3 + __fractsfta@GCC_4.3.0 1:4.3 + __fractsftq@GCC_4.3.0 1:4.3 + __fractsfuda@GCC_4.3.0 1:4.3 + __fractsfudq@GCC_4.3.0 1:4.3 + __fractsfuha@GCC_4.3.0 1:4.3 + __fractsfuhq@GCC_4.3.0 1:4.3 + __fractsfuqq@GCC_4.3.0 1:4.3 + __fractsfusa@GCC_4.3.0 1:4.3 + __fractsfusq@GCC_4.3.0 1:4.3 + __fractsfuta@GCC_4.3.0 1:4.3 + __fractsfutq@GCC_4.3.0 1:4.3 + __fractsida@GCC_4.3.0 1:4.3 + __fractsidq@GCC_4.3.0 1:4.3 + __fractsiha@GCC_4.3.0 1:4.3 + __fractsihq@GCC_4.3.0 1:4.3 + __fractsiqq@GCC_4.3.0 1:4.3 + __fractsisa@GCC_4.3.0 1:4.3 + __fractsisq@GCC_4.3.0 1:4.3 + __fractsita@GCC_4.3.0 1:4.3 + __fractsitq@GCC_4.3.0 1:4.3 + __fractsiuda@GCC_4.3.0 1:4.3 + __fractsiudq@GCC_4.3.0 1:4.3 + __fractsiuha@GCC_4.3.0 1:4.3 + __fractsiuhq@GCC_4.3.0 1:4.3 + __fractsiuqq@GCC_4.3.0 1:4.3 + __fractsiusa@GCC_4.3.0 1:4.3 + __fractsiusq@GCC_4.3.0 1:4.3 + __fractsiuta@GCC_4.3.0 1:4.3 + __fractsiutq@GCC_4.3.0 1:4.3 + __fractsqda@GCC_4.3.0 1:4.3 + __fractsqdf@GCC_4.3.0 1:4.3 + __fractsqdi@GCC_4.3.0 1:4.3 + __fractsqdq2@GCC_4.3.0 1:4.3 + __fractsqha@GCC_4.3.0 1:4.3 + __fractsqhi@GCC_4.3.0 1:4.3 + __fractsqhq2@GCC_4.3.0 1:4.3 + __fractsqqi@GCC_4.3.0 1:4.3 + __fractsqqq2@GCC_4.3.0 1:4.3 + __fractsqsa@GCC_4.3.0 1:4.3 + __fractsqsf@GCC_4.3.0 1:4.3 + __fractsqsi@GCC_4.3.0 1:4.3 + __fractsqta@GCC_4.3.0 1:4.3 + __fractsqti@GCC_4.3.0 1:4.3 + __fractsqtq2@GCC_4.3.0 1:4.3 + __fractsquda@GCC_4.3.0 1:4.3 + __fractsqudq@GCC_4.3.0 1:4.3 + __fractsquha@GCC_4.3.0 1:4.3 + __fractsquhq@GCC_4.3.0 1:4.3 + __fractsquqq@GCC_4.3.0 1:4.3 + __fractsqusa@GCC_4.3.0 1:4.3 + __fractsqusq@GCC_4.3.0 1:4.3 + __fractsquta@GCC_4.3.0 1:4.3 + __fractsqutq@GCC_4.3.0 1:4.3 + __fracttada2@GCC_4.3.0 1:4.3 + __fracttadf@GCC_4.3.0 1:4.3 + __fracttadi@GCC_4.3.0 1:4.3 + __fracttadq@GCC_4.3.0 1:4.3 + __fracttaha2@GCC_4.3.0 1:4.3 + __fracttahi@GCC_4.3.0 1:4.3 + __fracttahq@GCC_4.3.0 1:4.3 + __fracttaqi@GCC_4.3.0 1:4.3 + __fracttaqq@GCC_4.3.0 1:4.3 + __fracttasa2@GCC_4.3.0 1:4.3 + __fracttasf@GCC_4.3.0 1:4.3 + __fracttasi@GCC_4.3.0 1:4.3 + __fracttasq@GCC_4.3.0 1:4.3 + __fracttati@GCC_4.3.0 1:4.3 + __fracttatq@GCC_4.3.0 1:4.3 + __fracttauda@GCC_4.3.0 1:4.3 + __fracttaudq@GCC_4.3.0 1:4.3 + __fracttauha@GCC_4.3.0 1:4.3 + __fracttauhq@GCC_4.3.0 1:4.3 + __fracttauqq@GCC_4.3.0 1:4.3 + __fracttausa@GCC_4.3.0 1:4.3 + __fracttausq@GCC_4.3.0 1:4.3 + __fracttauta@GCC_4.3.0 1:4.3 + __fracttautq@GCC_4.3.0 1:4.3 + __fracttida@GCC_4.3.0 1:4.3 + __fracttidq@GCC_4.3.0 1:4.3 + __fracttiha@GCC_4.3.0 1:4.3 + __fracttihq@GCC_4.3.0 1:4.3 + __fracttiqq@GCC_4.3.0 1:4.3 + __fracttisa@GCC_4.3.0 1:4.3 + __fracttisq@GCC_4.3.0 1:4.3 + __fracttita@GCC_4.3.0 1:4.3 + __fracttitq@GCC_4.3.0 1:4.3 + __fracttiuda@GCC_4.3.0 1:4.3 + __fracttiudq@GCC_4.3.0 1:4.3 + __fracttiuha@GCC_4.3.0 1:4.3 + __fracttiuhq@GCC_4.3.0 1:4.3 + __fracttiuqq@GCC_4.3.0 1:4.3 + __fracttiusa@GCC_4.3.0 1:4.3 + __fracttiusq@GCC_4.3.0 1:4.3 + __fracttiuta@GCC_4.3.0 1:4.3 + __fracttiutq@GCC_4.3.0 1:4.3 + __fracttqda@GCC_4.3.0 1:4.3 + __fracttqdf@GCC_4.3.0 1:4.3 + __fracttqdi@GCC_4.3.0 1:4.3 + __fracttqdq2@GCC_4.3.0 1:4.3 + __fracttqha@GCC_4.3.0 1:4.3 + __fracttqhi@GCC_4.3.0 1:4.3 + __fracttqhq2@GCC_4.3.0 1:4.3 + __fracttqqi@GCC_4.3.0 1:4.3 + __fracttqqq2@GCC_4.3.0 1:4.3 + __fracttqsa@GCC_4.3.0 1:4.3 + __fracttqsf@GCC_4.3.0 1:4.3 + __fracttqsi@GCC_4.3.0 1:4.3 + __fracttqsq2@GCC_4.3.0 1:4.3 + __fracttqta@GCC_4.3.0 1:4.3 + __fracttqti@GCC_4.3.0 1:4.3 + __fracttquda@GCC_4.3.0 1:4.3 + __fracttqudq@GCC_4.3.0 1:4.3 + __fracttquha@GCC_4.3.0 1:4.3 + __fracttquhq@GCC_4.3.0 1:4.3 + __fracttquqq@GCC_4.3.0 1:4.3 + __fracttqusa@GCC_4.3.0 1:4.3 + __fracttqusq@GCC_4.3.0 1:4.3 + __fracttquta@GCC_4.3.0 1:4.3 + __fracttqutq@GCC_4.3.0 1:4.3 + __fractudada@GCC_4.3.0 1:4.3 + __fractudadf@GCC_4.3.0 1:4.3 + __fractudadi@GCC_4.3.0 1:4.3 + __fractudadq@GCC_4.3.0 1:4.3 + __fractudaha@GCC_4.3.0 1:4.3 + __fractudahi@GCC_4.3.0 1:4.3 + __fractudahq@GCC_4.3.0 1:4.3 + __fractudaqi@GCC_4.3.0 1:4.3 + __fractudaqq@GCC_4.3.0 1:4.3 + __fractudasa@GCC_4.3.0 1:4.3 + __fractudasf@GCC_4.3.0 1:4.3 + __fractudasi@GCC_4.3.0 1:4.3 + __fractudasq@GCC_4.3.0 1:4.3 + __fractudata@GCC_4.3.0 1:4.3 + __fractudati@GCC_4.3.0 1:4.3 + __fractudatq@GCC_4.3.0 1:4.3 + __fractudaudq@GCC_4.3.0 1:4.3 + __fractudauha2@GCC_4.3.0 1:4.3 + __fractudauhq@GCC_4.3.0 1:4.3 + __fractudauqq@GCC_4.3.0 1:4.3 + __fractudausa2@GCC_4.3.0 1:4.3 + __fractudausq@GCC_4.3.0 1:4.3 + __fractudauta2@GCC_4.3.0 1:4.3 + __fractudautq@GCC_4.3.0 1:4.3 + __fractudqda@GCC_4.3.0 1:4.3 + __fractudqdf@GCC_4.3.0 1:4.3 + __fractudqdi@GCC_4.3.0 1:4.3 + __fractudqdq@GCC_4.3.0 1:4.3 + __fractudqha@GCC_4.3.0 1:4.3 + __fractudqhi@GCC_4.3.0 1:4.3 + __fractudqhq@GCC_4.3.0 1:4.3 + __fractudqqi@GCC_4.3.0 1:4.3 + __fractudqqq@GCC_4.3.0 1:4.3 + __fractudqsa@GCC_4.3.0 1:4.3 + __fractudqsf@GCC_4.3.0 1:4.3 + __fractudqsi@GCC_4.3.0 1:4.3 + __fractudqsq@GCC_4.3.0 1:4.3 + __fractudqta@GCC_4.3.0 1:4.3 + __fractudqti@GCC_4.3.0 1:4.3 + __fractudqtq@GCC_4.3.0 1:4.3 + __fractudquda@GCC_4.3.0 1:4.3 + __fractudquha@GCC_4.3.0 1:4.3 + __fractudquhq2@GCC_4.3.0 1:4.3 + __fractudquqq2@GCC_4.3.0 1:4.3 + __fractudqusa@GCC_4.3.0 1:4.3 + __fractudqusq2@GCC_4.3.0 1:4.3 + __fractudquta@GCC_4.3.0 1:4.3 + __fractudqutq2@GCC_4.3.0 1:4.3 + __fractuhada@GCC_4.3.0 1:4.3 + __fractuhadf@GCC_4.3.0 1:4.3 + __fractuhadi@GCC_4.3.0 1:4.3 + __fractuhadq@GCC_4.3.0 1:4.3 + __fractuhaha@GCC_4.3.0 1:4.3 + __fractuhahi@GCC_4.3.0 1:4.3 + __fractuhahq@GCC_4.3.0 1:4.3 + __fractuhaqi@GCC_4.3.0 1:4.3 + __fractuhaqq@GCC_4.3.0 1:4.3 + __fractuhasa@GCC_4.3.0 1:4.3 + __fractuhasf@GCC_4.3.0 1:4.3 + __fractuhasi@GCC_4.3.0 1:4.3 + __fractuhasq@GCC_4.3.0 1:4.3 + __fractuhata@GCC_4.3.0 1:4.3 + __fractuhati@GCC_4.3.0 1:4.3 + __fractuhatq@GCC_4.3.0 1:4.3 + __fractuhauda2@GCC_4.3.0 1:4.3 + __fractuhaudq@GCC_4.3.0 1:4.3 + __fractuhauhq@GCC_4.3.0 1:4.3 + __fractuhauqq@GCC_4.3.0 1:4.3 + __fractuhausa2@GCC_4.3.0 1:4.3 + __fractuhausq@GCC_4.3.0 1:4.3 + __fractuhauta2@GCC_4.3.0 1:4.3 + __fractuhautq@GCC_4.3.0 1:4.3 + __fractuhqda@GCC_4.3.0 1:4.3 + __fractuhqdf@GCC_4.3.0 1:4.3 + __fractuhqdi@GCC_4.3.0 1:4.3 + __fractuhqdq@GCC_4.3.0 1:4.3 + __fractuhqha@GCC_4.3.0 1:4.3 + __fractuhqhi@GCC_4.3.0 1:4.3 + __fractuhqhq@GCC_4.3.0 1:4.3 + __fractuhqqi@GCC_4.3.0 1:4.3 + __fractuhqqq@GCC_4.3.0 1:4.3 + __fractuhqsa@GCC_4.3.0 1:4.3 + __fractuhqsf@GCC_4.3.0 1:4.3 + __fractuhqsi@GCC_4.3.0 1:4.3 + __fractuhqsq@GCC_4.3.0 1:4.3 + __fractuhqta@GCC_4.3.0 1:4.3 + __fractuhqti@GCC_4.3.0 1:4.3 + __fractuhqtq@GCC_4.3.0 1:4.3 + __fractuhquda@GCC_4.3.0 1:4.3 + __fractuhqudq2@GCC_4.3.0 1:4.3 + __fractuhquha@GCC_4.3.0 1:4.3 + __fractuhquqq2@GCC_4.3.0 1:4.3 + __fractuhqusa@GCC_4.3.0 1:4.3 + __fractuhqusq2@GCC_4.3.0 1:4.3 + __fractuhquta@GCC_4.3.0 1:4.3 + __fractuhqutq2@GCC_4.3.0 1:4.3 + __fractunsdadi@GCC_4.3.0 1:4.3 + __fractunsdahi@GCC_4.3.0 1:4.3 + __fractunsdaqi@GCC_4.3.0 1:4.3 + __fractunsdasi@GCC_4.3.0 1:4.3 + __fractunsdati@GCC_4.3.0 1:4.3 + __fractunsdida@GCC_4.3.0 1:4.3 + __fractunsdidq@GCC_4.3.0 1:4.3 + __fractunsdiha@GCC_4.3.0 1:4.3 + __fractunsdihq@GCC_4.3.0 1:4.3 + __fractunsdiqq@GCC_4.3.0 1:4.3 + __fractunsdisa@GCC_4.3.0 1:4.3 + __fractunsdisq@GCC_4.3.0 1:4.3 + __fractunsdita@GCC_4.3.0 1:4.3 + __fractunsditq@GCC_4.3.0 1:4.3 + __fractunsdiuda@GCC_4.3.0 1:4.3 + __fractunsdiudq@GCC_4.3.0 1:4.3 + __fractunsdiuha@GCC_4.3.0 1:4.3 + __fractunsdiuhq@GCC_4.3.0 1:4.3 + __fractunsdiuqq@GCC_4.3.0 1:4.3 + __fractunsdiusa@GCC_4.3.0 1:4.3 + __fractunsdiusq@GCC_4.3.0 1:4.3 + __fractunsdiuta@GCC_4.3.0 1:4.3 + __fractunsdiutq@GCC_4.3.0 1:4.3 + __fractunsdqdi@GCC_4.3.0 1:4.3 + __fractunsdqhi@GCC_4.3.0 1:4.3 + __fractunsdqqi@GCC_4.3.0 1:4.3 + __fractunsdqsi@GCC_4.3.0 1:4.3 + __fractunsdqti@GCC_4.3.0 1:4.3 + __fractunshadi@GCC_4.3.0 1:4.3 + __fractunshahi@GCC_4.3.0 1:4.3 + __fractunshaqi@GCC_4.3.0 1:4.3 + __fractunshasi@GCC_4.3.0 1:4.3 + __fractunshati@GCC_4.3.0 1:4.3 + __fractunshida@GCC_4.3.0 1:4.3 + __fractunshidq@GCC_4.3.0 1:4.3 + __fractunshiha@GCC_4.3.0 1:4.3 + __fractunshihq@GCC_4.3.0 1:4.3 + __fractunshiqq@GCC_4.3.0 1:4.3 + __fractunshisa@GCC_4.3.0 1:4.3 + __fractunshisq@GCC_4.3.0 1:4.3 + __fractunshita@GCC_4.3.0 1:4.3 + __fractunshitq@GCC_4.3.0 1:4.3 + __fractunshiuda@GCC_4.3.0 1:4.3 + __fractunshiudq@GCC_4.3.0 1:4.3 + __fractunshiuha@GCC_4.3.0 1:4.3 + __fractunshiuhq@GCC_4.3.0 1:4.3 + __fractunshiuqq@GCC_4.3.0 1:4.3 + __fractunshiusa@GCC_4.3.0 1:4.3 + __fractunshiusq@GCC_4.3.0 1:4.3 + __fractunshiuta@GCC_4.3.0 1:4.3 + __fractunshiutq@GCC_4.3.0 1:4.3 + __fractunshqdi@GCC_4.3.0 1:4.3 + __fractunshqhi@GCC_4.3.0 1:4.3 + __fractunshqqi@GCC_4.3.0 1:4.3 + __fractunshqsi@GCC_4.3.0 1:4.3 + __fractunshqti@GCC_4.3.0 1:4.3 + __fractunsqida@GCC_4.3.0 1:4.3 + __fractunsqidq@GCC_4.3.0 1:4.3 + __fractunsqiha@GCC_4.3.0 1:4.3 + __fractunsqihq@GCC_4.3.0 1:4.3 + __fractunsqiqq@GCC_4.3.0 1:4.3 + __fractunsqisa@GCC_4.3.0 1:4.3 + __fractunsqisq@GCC_4.3.0 1:4.3 + __fractunsqita@GCC_4.3.0 1:4.3 + __fractunsqitq@GCC_4.3.0 1:4.3 + __fractunsqiuda@GCC_4.3.0 1:4.3 + __fractunsqiudq@GCC_4.3.0 1:4.3 + __fractunsqiuha@GCC_4.3.0 1:4.3 + __fractunsqiuhq@GCC_4.3.0 1:4.3 + __fractunsqiuqq@GCC_4.3.0 1:4.3 + __fractunsqiusa@GCC_4.3.0 1:4.3 + __fractunsqiusq@GCC_4.3.0 1:4.3 + __fractunsqiuta@GCC_4.3.0 1:4.3 + __fractunsqiutq@GCC_4.3.0 1:4.3 + __fractunsqqdi@GCC_4.3.0 1:4.3 + __fractunsqqhi@GCC_4.3.0 1:4.3 + __fractunsqqqi@GCC_4.3.0 1:4.3 + __fractunsqqsi@GCC_4.3.0 1:4.3 + __fractunsqqti@GCC_4.3.0 1:4.3 + __fractunssadi@GCC_4.3.0 1:4.3 + __fractunssahi@GCC_4.3.0 1:4.3 + __fractunssaqi@GCC_4.3.0 1:4.3 + __fractunssasi@GCC_4.3.0 1:4.3 + __fractunssati@GCC_4.3.0 1:4.3 + __fractunssida@GCC_4.3.0 1:4.3 + __fractunssidq@GCC_4.3.0 1:4.3 + __fractunssiha@GCC_4.3.0 1:4.3 + __fractunssihq@GCC_4.3.0 1:4.3 + __fractunssiqq@GCC_4.3.0 1:4.3 + __fractunssisa@GCC_4.3.0 1:4.3 + __fractunssisq@GCC_4.3.0 1:4.3 + __fractunssita@GCC_4.3.0 1:4.3 + __fractunssitq@GCC_4.3.0 1:4.3 + __fractunssiuda@GCC_4.3.0 1:4.3 + __fractunssiudq@GCC_4.3.0 1:4.3 + __fractunssiuha@GCC_4.3.0 1:4.3 + __fractunssiuhq@GCC_4.3.0 1:4.3 + __fractunssiuqq@GCC_4.3.0 1:4.3 + __fractunssiusa@GCC_4.3.0 1:4.3 + __fractunssiusq@GCC_4.3.0 1:4.3 + __fractunssiuta@GCC_4.3.0 1:4.3 + __fractunssiutq@GCC_4.3.0 1:4.3 + __fractunssqdi@GCC_4.3.0 1:4.3 + __fractunssqhi@GCC_4.3.0 1:4.3 + __fractunssqqi@GCC_4.3.0 1:4.3 + __fractunssqsi@GCC_4.3.0 1:4.3 + __fractunssqti@GCC_4.3.0 1:4.3 + __fractunstadi@GCC_4.3.0 1:4.3 + __fractunstahi@GCC_4.3.0 1:4.3 + __fractunstaqi@GCC_4.3.0 1:4.3 + __fractunstasi@GCC_4.3.0 1:4.3 + __fractunstati@GCC_4.3.0 1:4.3 + __fractunstida@GCC_4.3.0 1:4.3 + __fractunstidq@GCC_4.3.0 1:4.3 + __fractunstiha@GCC_4.3.0 1:4.3 + __fractunstihq@GCC_4.3.0 1:4.3 + __fractunstiqq@GCC_4.3.0 1:4.3 + __fractunstisa@GCC_4.3.0 1:4.3 + __fractunstisq@GCC_4.3.0 1:4.3 + __fractunstita@GCC_4.3.0 1:4.3 + __fractunstitq@GCC_4.3.0 1:4.3 + __fractunstiuda@GCC_4.3.0 1:4.3 + __fractunstiudq@GCC_4.3.0 1:4.3 + __fractunstiuha@GCC_4.3.0 1:4.3 + __fractunstiuhq@GCC_4.3.0 1:4.3 + __fractunstiuqq@GCC_4.3.0 1:4.3 + __fractunstiusa@GCC_4.3.0 1:4.3 + __fractunstiusq@GCC_4.3.0 1:4.3 + __fractunstiuta@GCC_4.3.0 1:4.3 + __fractunstiutq@GCC_4.3.0 1:4.3 + __fractunstqdi@GCC_4.3.0 1:4.3 + __fractunstqhi@GCC_4.3.0 1:4.3 + __fractunstqqi@GCC_4.3.0 1:4.3 + __fractunstqsi@GCC_4.3.0 1:4.3 + __fractunstqti@GCC_4.3.0 1:4.3 + __fractunsudadi@GCC_4.3.0 1:4.3 + __fractunsudahi@GCC_4.3.0 1:4.3 + __fractunsudaqi@GCC_4.3.0 1:4.3 + __fractunsudasi@GCC_4.3.0 1:4.3 + __fractunsudati@GCC_4.3.0 1:4.3 + __fractunsudqdi@GCC_4.3.0 1:4.3 + __fractunsudqhi@GCC_4.3.0 1:4.3 + __fractunsudqqi@GCC_4.3.0 1:4.3 + __fractunsudqsi@GCC_4.3.0 1:4.3 + __fractunsudqti@GCC_4.3.0 1:4.3 + __fractunsuhadi@GCC_4.3.0 1:4.3 + __fractunsuhahi@GCC_4.3.0 1:4.3 + __fractunsuhaqi@GCC_4.3.0 1:4.3 + __fractunsuhasi@GCC_4.3.0 1:4.3 + __fractunsuhati@GCC_4.3.0 1:4.3 + __fractunsuhqdi@GCC_4.3.0 1:4.3 + __fractunsuhqhi@GCC_4.3.0 1:4.3 + __fractunsuhqqi@GCC_4.3.0 1:4.3 + __fractunsuhqsi@GCC_4.3.0 1:4.3 + __fractunsuhqti@GCC_4.3.0 1:4.3 + __fractunsuqqdi@GCC_4.3.0 1:4.3 + __fractunsuqqhi@GCC_4.3.0 1:4.3 + __fractunsuqqqi@GCC_4.3.0 1:4.3 + __fractunsuqqsi@GCC_4.3.0 1:4.3 + __fractunsuqqti@GCC_4.3.0 1:4.3 + __fractunsusadi@GCC_4.3.0 1:4.3 + __fractunsusahi@GCC_4.3.0 1:4.3 + __fractunsusaqi@GCC_4.3.0 1:4.3 + __fractunsusasi@GCC_4.3.0 1:4.3 + __fractunsusati@GCC_4.3.0 1:4.3 + __fractunsusqdi@GCC_4.3.0 1:4.3 + __fractunsusqhi@GCC_4.3.0 1:4.3 + __fractunsusqqi@GCC_4.3.0 1:4.3 + __fractunsusqsi@GCC_4.3.0 1:4.3 + __fractunsusqti@GCC_4.3.0 1:4.3 + __fractunsutadi@GCC_4.3.0 1:4.3 + __fractunsutahi@GCC_4.3.0 1:4.3 + __fractunsutaqi@GCC_4.3.0 1:4.3 + __fractunsutasi@GCC_4.3.0 1:4.3 + __fractunsutati@GCC_4.3.0 1:4.3 + __fractunsutqdi@GCC_4.3.0 1:4.3 + __fractunsutqhi@GCC_4.3.0 1:4.3 + __fractunsutqqi@GCC_4.3.0 1:4.3 + __fractunsutqsi@GCC_4.3.0 1:4.3 + __fractunsutqti@GCC_4.3.0 1:4.3 + __fractuqqda@GCC_4.3.0 1:4.3 + __fractuqqdf@GCC_4.3.0 1:4.3 + __fractuqqdi@GCC_4.3.0 1:4.3 + __fractuqqdq@GCC_4.3.0 1:4.3 + __fractuqqha@GCC_4.3.0 1:4.3 + __fractuqqhi@GCC_4.3.0 1:4.3 + __fractuqqhq@GCC_4.3.0 1:4.3 + __fractuqqqi@GCC_4.3.0 1:4.3 + __fractuqqqq@GCC_4.3.0 1:4.3 + __fractuqqsa@GCC_4.3.0 1:4.3 + __fractuqqsf@GCC_4.3.0 1:4.3 + __fractuqqsi@GCC_4.3.0 1:4.3 + __fractuqqsq@GCC_4.3.0 1:4.3 + __fractuqqta@GCC_4.3.0 1:4.3 + __fractuqqti@GCC_4.3.0 1:4.3 + __fractuqqtq@GCC_4.3.0 1:4.3 + __fractuqquda@GCC_4.3.0 1:4.3 + __fractuqqudq2@GCC_4.3.0 1:4.3 + __fractuqquha@GCC_4.3.0 1:4.3 + __fractuqquhq2@GCC_4.3.0 1:4.3 + __fractuqqusa@GCC_4.3.0 1:4.3 + __fractuqqusq2@GCC_4.3.0 1:4.3 + __fractuqquta@GCC_4.3.0 1:4.3 + __fractuqqutq2@GCC_4.3.0 1:4.3 + __fractusada@GCC_4.3.0 1:4.3 + __fractusadf@GCC_4.3.0 1:4.3 + __fractusadi@GCC_4.3.0 1:4.3 + __fractusadq@GCC_4.3.0 1:4.3 + __fractusaha@GCC_4.3.0 1:4.3 + __fractusahi@GCC_4.3.0 1:4.3 + __fractusahq@GCC_4.3.0 1:4.3 + __fractusaqi@GCC_4.3.0 1:4.3 + __fractusaqq@GCC_4.3.0 1:4.3 + __fractusasa@GCC_4.3.0 1:4.3 + __fractusasf@GCC_4.3.0 1:4.3 + __fractusasi@GCC_4.3.0 1:4.3 + __fractusasq@GCC_4.3.0 1:4.3 + __fractusata@GCC_4.3.0 1:4.3 + __fractusati@GCC_4.3.0 1:4.3 + __fractusatq@GCC_4.3.0 1:4.3 + __fractusauda2@GCC_4.3.0 1:4.3 + __fractusaudq@GCC_4.3.0 1:4.3 + __fractusauha2@GCC_4.3.0 1:4.3 + __fractusauhq@GCC_4.3.0 1:4.3 + __fractusauqq@GCC_4.3.0 1:4.3 + __fractusausq@GCC_4.3.0 1:4.3 + __fractusauta2@GCC_4.3.0 1:4.3 + __fractusautq@GCC_4.3.0 1:4.3 + __fractusqda@GCC_4.3.0 1:4.3 + __fractusqdf@GCC_4.3.0 1:4.3 + __fractusqdi@GCC_4.3.0 1:4.3 + __fractusqdq@GCC_4.3.0 1:4.3 + __fractusqha@GCC_4.3.0 1:4.3 + __fractusqhi@GCC_4.3.0 1:4.3 + __fractusqhq@GCC_4.3.0 1:4.3 + __fractusqqi@GCC_4.3.0 1:4.3 + __fractusqqq@GCC_4.3.0 1:4.3 + __fractusqsa@GCC_4.3.0 1:4.3 + __fractusqsf@GCC_4.3.0 1:4.3 + __fractusqsi@GCC_4.3.0 1:4.3 + __fractusqsq@GCC_4.3.0 1:4.3 + __fractusqta@GCC_4.3.0 1:4.3 + __fractusqti@GCC_4.3.0 1:4.3 + __fractusqtq@GCC_4.3.0 1:4.3 + __fractusquda@GCC_4.3.0 1:4.3 + __fractusqudq2@GCC_4.3.0 1:4.3 + __fractusquha@GCC_4.3.0 1:4.3 + __fractusquhq2@GCC_4.3.0 1:4.3 + __fractusquqq2@GCC_4.3.0 1:4.3 + __fractusqusa@GCC_4.3.0 1:4.3 + __fractusquta@GCC_4.3.0 1:4.3 + __fractusqutq2@GCC_4.3.0 1:4.3 + __fractutada@GCC_4.3.0 1:4.3 + __fractutadf@GCC_4.3.0 1:4.3 + __fractutadi@GCC_4.3.0 1:4.3 + __fractutadq@GCC_4.3.0 1:4.3 + __fractutaha@GCC_4.3.0 1:4.3 + __fractutahi@GCC_4.3.0 1:4.3 + __fractutahq@GCC_4.3.0 1:4.3 + __fractutaqi@GCC_4.3.0 1:4.3 + __fractutaqq@GCC_4.3.0 1:4.3 + __fractutasa@GCC_4.3.0 1:4.3 + __fractutasf@GCC_4.3.0 1:4.3 + __fractutasi@GCC_4.3.0 1:4.3 + __fractutasq@GCC_4.3.0 1:4.3 + __fractutata@GCC_4.3.0 1:4.3 + __fractutati@GCC_4.3.0 1:4.3 + __fractutatq@GCC_4.3.0 1:4.3 + __fractutauda2@GCC_4.3.0 1:4.3 + __fractutaudq@GCC_4.3.0 1:4.3 + __fractutauha2@GCC_4.3.0 1:4.3 + __fractutauhq@GCC_4.3.0 1:4.3 + __fractutauqq@GCC_4.3.0 1:4.3 + __fractutausa2@GCC_4.3.0 1:4.3 + __fractutausq@GCC_4.3.0 1:4.3 + __fractutautq@GCC_4.3.0 1:4.3 + __fractutqda@GCC_4.3.0 1:4.3 + __fractutqdf@GCC_4.3.0 1:4.3 + __fractutqdi@GCC_4.3.0 1:4.3 + __fractutqdq@GCC_4.3.0 1:4.3 + __fractutqha@GCC_4.3.0 1:4.3 + __fractutqhi@GCC_4.3.0 1:4.3 + __fractutqhq@GCC_4.3.0 1:4.3 + __fractutqqi@GCC_4.3.0 1:4.3 + __fractutqqq@GCC_4.3.0 1:4.3 + __fractutqsa@GCC_4.3.0 1:4.3 + __fractutqsf@GCC_4.3.0 1:4.3 + __fractutqsi@GCC_4.3.0 1:4.3 + __fractutqsq@GCC_4.3.0 1:4.3 + __fractutqta@GCC_4.3.0 1:4.3 + __fractutqti@GCC_4.3.0 1:4.3 + __fractutqtq@GCC_4.3.0 1:4.3 + __fractutquda@GCC_4.3.0 1:4.3 + __fractutqudq2@GCC_4.3.0 1:4.3 + __fractutquha@GCC_4.3.0 1:4.3 + __fractutquhq2@GCC_4.3.0 1:4.3 + __fractutquqq2@GCC_4.3.0 1:4.3 + __fractutqusa@GCC_4.3.0 1:4.3 + __fractutqusq2@GCC_4.3.0 1:4.3 + __fractutquta@GCC_4.3.0 1:4.3 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __gedf2@GCC_3.0 1:4.1.1 + __gesf2@GCC_3.0 1:4.1.1 + __getf2@GCC_3.0 1:4.1.1 + __gtdf2@GCC_3.0 1:4.1.1 + __gtsf2@GCC_3.0 1:4.1.1 + __gttf2@GCC_3.0 1:4.1.1 + __ledf2@GCC_3.0 1:4.1.1 + __lesf2@GCC_3.0 1:4.1.1 + __letf2@GCC_3.0 1:4.1.1 + __lshrti3@GCC_3.0 1:4.1.1 + __lshruda3@GCC_4.3.0 1:4.3 + __lshrudq3@GCC_4.3.0 1:4.3 + __lshruha3@GCC_4.3.0 1:4.3 + __lshruhq3@GCC_4.3.0 1:4.3 + __lshruqq3@GCC_4.3.0 1:4.3 + __lshrusa3@GCC_4.3.0 1:4.3 + __lshrusq3@GCC_4.3.0 1:4.3 + __lshruta3@GCC_4.3.0 1:4.3 + __lshrutq3@GCC_4.3.0 1:4.3 + __ltdf2@GCC_3.0 1:4.1.1 + __ltsf2@GCC_3.0 1:4.1.1 + __lttf2@GCC_3.0 1:4.1.1 + __modti3@GCC_3.0 1:4.1.1 + __mulda3@GCC_4.3.0 1:4.3 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldf3@GCC_3.0 1:4.1.1 + __muldq3@GCC_4.3.0 1:4.3 + __mulha3@GCC_4.3.0 1:4.3 + __mulhq3@GCC_4.3.0 1:4.3 + __mulqq3@GCC_4.3.0 1:4.3 + __mulsa3@GCC_4.3.0 1:4.3 + __mulsc3@GCC_4.0.0 1:4.1.1 + __mulsf3@GCC_3.0 1:4.1.1 + __mulsq3@GCC_4.3.0 1:4.3 + __multa3@GCC_4.3.0 1:4.3 + __multc3@GCC_4.0.0 1:4.1.1 + __multf3@GCC_3.0 1:4.1.1 + __multi3@GCC_3.0 1:4.1.1 + __multq3@GCC_4.3.0 1:4.3 + __muluda3@GCC_4.3.0 1:4.3 + __muludq3@GCC_4.3.0 1:4.3 + __muluha3@GCC_4.3.0 1:4.3 + __muluhq3@GCC_4.3.0 1:4.3 + __muluqq3@GCC_4.3.0 1:4.3 + __mulusa3@GCC_4.3.0 1:4.3 + __mulusq3@GCC_4.3.0 1:4.3 + __muluta3@GCC_4.3.0 1:4.3 + __mulutq3@GCC_4.3.0 1:4.3 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulvti3@GCC_3.4.4 1:4.1.1 + __nedf2@GCC_3.0 1:4.1.1 + __negda2@GCC_4.3.0 1:4.3 + __negdf2@GCC_3.0 1:4.1.1 + __negdq2@GCC_4.3.0 1:4.3 + __negha2@GCC_4.3.0 1:4.3 + __neghq2@GCC_4.3.0 1:4.3 + __negqq2@GCC_4.3.0 1:4.3 + __negsa2@GCC_4.3.0 1:4.3 + __negsf2@GCC_3.0 1:4.1.1 + __negsq2@GCC_4.3.0 1:4.3 + __negta2@GCC_4.3.0 1:4.3 + __negtf2@GCC_3.0 1:4.1.1 + __negti2@GCC_3.0 1:4.1.1 + __negtq2@GCC_4.3.0 1:4.3 + __neguda2@GCC_4.3.0 1:4.3 + __negudq2@GCC_4.3.0 1:4.3 + __neguha2@GCC_4.3.0 1:4.3 + __neguhq2@GCC_4.3.0 1:4.3 + __neguqq2@GCC_4.3.0 1:4.3 + __negusa2@GCC_4.3.0 1:4.3 + __negusq2@GCC_4.3.0 1:4.3 + __neguta2@GCC_4.3.0 1:4.3 + __negutq2@GCC_4.3.0 1:4.3 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __negvti2@GCC_3.4.4 1:4.1.1 + __nesf2@GCC_3.0 1:4.1.1 + __netf2@GCC_3.0 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __parityti2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountti2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.0.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __satfractdadq@GCC_4.3.0 1:4.3 + __satfractdaha2@GCC_4.3.0 1:4.3 + __satfractdahq@GCC_4.3.0 1:4.3 + __satfractdaqq@GCC_4.3.0 1:4.3 + __satfractdasa2@GCC_4.3.0 1:4.3 + __satfractdasq@GCC_4.3.0 1:4.3 + __satfractdata2@GCC_4.3.0 1:4.3 + __satfractdatq@GCC_4.3.0 1:4.3 + __satfractdauda@GCC_4.3.0 1:4.3 + __satfractdaudq@GCC_4.3.0 1:4.3 + __satfractdauha@GCC_4.3.0 1:4.3 + __satfractdauhq@GCC_4.3.0 1:4.3 + __satfractdauqq@GCC_4.3.0 1:4.3 + __satfractdausa@GCC_4.3.0 1:4.3 + __satfractdausq@GCC_4.3.0 1:4.3 + __satfractdauta@GCC_4.3.0 1:4.3 + __satfractdautq@GCC_4.3.0 1:4.3 + __satfractdfda@GCC_4.3.0 1:4.3 + __satfractdfdq@GCC_4.3.0 1:4.3 + __satfractdfha@GCC_4.3.0 1:4.3 + __satfractdfhq@GCC_4.3.0 1:4.3 + __satfractdfqq@GCC_4.3.0 1:4.3 + __satfractdfsa@GCC_4.3.0 1:4.3 + __satfractdfsq@GCC_4.3.0 1:4.3 + __satfractdfta@GCC_4.3.0 1:4.3 + __satfractdftq@GCC_4.3.0 1:4.3 + __satfractdfuda@GCC_4.3.0 1:4.3 + __satfractdfudq@GCC_4.3.0 1:4.3 + __satfractdfuha@GCC_4.3.0 1:4.3 + __satfractdfuhq@GCC_4.3.0 1:4.3 + __satfractdfuqq@GCC_4.3.0 1:4.3 + __satfractdfusa@GCC_4.3.0 1:4.3 + __satfractdfusq@GCC_4.3.0 1:4.3 + __satfractdfuta@GCC_4.3.0 1:4.3 + __satfractdfutq@GCC_4.3.0 1:4.3 + __satfractdida@GCC_4.3.0 1:4.3 + __satfractdidq@GCC_4.3.0 1:4.3 + __satfractdiha@GCC_4.3.0 1:4.3 + __satfractdihq@GCC_4.3.0 1:4.3 + __satfractdiqq@GCC_4.3.0 1:4.3 + __satfractdisa@GCC_4.3.0 1:4.3 + __satfractdisq@GCC_4.3.0 1:4.3 + __satfractdita@GCC_4.3.0 1:4.3 + __satfractditq@GCC_4.3.0 1:4.3 + __satfractdiuda@GCC_4.3.0 1:4.3 + __satfractdiudq@GCC_4.3.0 1:4.3 + __satfractdiuha@GCC_4.3.0 1:4.3 + __satfractdiuhq@GCC_4.3.0 1:4.3 + __satfractdiuqq@GCC_4.3.0 1:4.3 + __satfractdiusa@GCC_4.3.0 1:4.3 + __satfractdiusq@GCC_4.3.0 1:4.3 + __satfractdiuta@GCC_4.3.0 1:4.3 + __satfractdiutq@GCC_4.3.0 1:4.3 + __satfractdqda@GCC_4.3.0 1:4.3 + __satfractdqha@GCC_4.3.0 1:4.3 + __satfractdqhq2@GCC_4.3.0 1:4.3 + __satfractdqqq2@GCC_4.3.0 1:4.3 + __satfractdqsa@GCC_4.3.0 1:4.3 + __satfractdqsq2@GCC_4.3.0 1:4.3 + __satfractdqta@GCC_4.3.0 1:4.3 + __satfractdqtq2@GCC_4.3.0 1:4.3 + __satfractdquda@GCC_4.3.0 1:4.3 + __satfractdqudq@GCC_4.3.0 1:4.3 + __satfractdquha@GCC_4.3.0 1:4.3 + __satfractdquhq@GCC_4.3.0 1:4.3 + __satfractdquqq@GCC_4.3.0 1:4.3 + __satfractdqusa@GCC_4.3.0 1:4.3 + __satfractdqusq@GCC_4.3.0 1:4.3 + __satfractdquta@GCC_4.3.0 1:4.3 + __satfractdqutq@GCC_4.3.0 1:4.3 + __satfracthada2@GCC_4.3.0 1:4.3 + __satfracthadq@GCC_4.3.0 1:4.3 + __satfracthahq@GCC_4.3.0 1:4.3 + __satfracthaqq@GCC_4.3.0 1:4.3 + __satfracthasa2@GCC_4.3.0 1:4.3 + __satfracthasq@GCC_4.3.0 1:4.3 + __satfracthata2@GCC_4.3.0 1:4.3 + __satfracthatq@GCC_4.3.0 1:4.3 + __satfracthauda@GCC_4.3.0 1:4.3 + __satfracthaudq@GCC_4.3.0 1:4.3 + __satfracthauha@GCC_4.3.0 1:4.3 + __satfracthauhq@GCC_4.3.0 1:4.3 + __satfracthauqq@GCC_4.3.0 1:4.3 + __satfracthausa@GCC_4.3.0 1:4.3 + __satfracthausq@GCC_4.3.0 1:4.3 + __satfracthauta@GCC_4.3.0 1:4.3 + __satfracthautq@GCC_4.3.0 1:4.3 + __satfracthida@GCC_4.3.0 1:4.3 + __satfracthidq@GCC_4.3.0 1:4.3 + __satfracthiha@GCC_4.3.0 1:4.3 + __satfracthihq@GCC_4.3.0 1:4.3 + __satfracthiqq@GCC_4.3.0 1:4.3 + __satfracthisa@GCC_4.3.0 1:4.3 + __satfracthisq@GCC_4.3.0 1:4.3 + __satfracthita@GCC_4.3.0 1:4.3 + __satfracthitq@GCC_4.3.0 1:4.3 + __satfracthiuda@GCC_4.3.0 1:4.3 + __satfracthiudq@GCC_4.3.0 1:4.3 + __satfracthiuha@GCC_4.3.0 1:4.3 + __satfracthiuhq@GCC_4.3.0 1:4.3 + __satfracthiuqq@GCC_4.3.0 1:4.3 + __satfracthiusa@GCC_4.3.0 1:4.3 + __satfracthiusq@GCC_4.3.0 1:4.3 + __satfracthiuta@GCC_4.3.0 1:4.3 + __satfracthiutq@GCC_4.3.0 1:4.3 + __satfracthqda@GCC_4.3.0 1:4.3 + __satfracthqdq2@GCC_4.3.0 1:4.3 + __satfracthqha@GCC_4.3.0 1:4.3 + __satfracthqqq2@GCC_4.3.0 1:4.3 + __satfracthqsa@GCC_4.3.0 1:4.3 + __satfracthqsq2@GCC_4.3.0 1:4.3 + __satfracthqta@GCC_4.3.0 1:4.3 + __satfracthqtq2@GCC_4.3.0 1:4.3 + __satfracthquda@GCC_4.3.0 1:4.3 + __satfracthqudq@GCC_4.3.0 1:4.3 + __satfracthquha@GCC_4.3.0 1:4.3 + __satfracthquhq@GCC_4.3.0 1:4.3 + __satfracthquqq@GCC_4.3.0 1:4.3 + __satfracthqusa@GCC_4.3.0 1:4.3 + __satfracthqusq@GCC_4.3.0 1:4.3 + __satfracthquta@GCC_4.3.0 1:4.3 + __satfracthqutq@GCC_4.3.0 1:4.3 + __satfractqida@GCC_4.3.0 1:4.3 + __satfractqidq@GCC_4.3.0 1:4.3 + __satfractqiha@GCC_4.3.0 1:4.3 + __satfractqihq@GCC_4.3.0 1:4.3 + __satfractqiqq@GCC_4.3.0 1:4.3 + __satfractqisa@GCC_4.3.0 1:4.3 + __satfractqisq@GCC_4.3.0 1:4.3 + __satfractqita@GCC_4.3.0 1:4.3 + __satfractqitq@GCC_4.3.0 1:4.3 + __satfractqiuda@GCC_4.3.0 1:4.3 + __satfractqiudq@GCC_4.3.0 1:4.3 + __satfractqiuha@GCC_4.3.0 1:4.3 + __satfractqiuhq@GCC_4.3.0 1:4.3 + __satfractqiuqq@GCC_4.3.0 1:4.3 + __satfractqiusa@GCC_4.3.0 1:4.3 + __satfractqiusq@GCC_4.3.0 1:4.3 + __satfractqiuta@GCC_4.3.0 1:4.3 + __satfractqiutq@GCC_4.3.0 1:4.3 + __satfractqqda@GCC_4.3.0 1:4.3 + __satfractqqdq2@GCC_4.3.0 1:4.3 + __satfractqqha@GCC_4.3.0 1:4.3 + __satfractqqhq2@GCC_4.3.0 1:4.3 + __satfractqqsa@GCC_4.3.0 1:4.3 + __satfractqqsq2@GCC_4.3.0 1:4.3 + __satfractqqta@GCC_4.3.0 1:4.3 + __satfractqqtq2@GCC_4.3.0 1:4.3 + __satfractqquda@GCC_4.3.0 1:4.3 + __satfractqqudq@GCC_4.3.0 1:4.3 + __satfractqquha@GCC_4.3.0 1:4.3 + __satfractqquhq@GCC_4.3.0 1:4.3 + __satfractqquqq@GCC_4.3.0 1:4.3 + __satfractqqusa@GCC_4.3.0 1:4.3 + __satfractqqusq@GCC_4.3.0 1:4.3 + __satfractqquta@GCC_4.3.0 1:4.3 + __satfractqqutq@GCC_4.3.0 1:4.3 + __satfractsada2@GCC_4.3.0 1:4.3 + __satfractsadq@GCC_4.3.0 1:4.3 + __satfractsaha2@GCC_4.3.0 1:4.3 + __satfractsahq@GCC_4.3.0 1:4.3 + __satfractsaqq@GCC_4.3.0 1:4.3 + __satfractsasq@GCC_4.3.0 1:4.3 + __satfractsata2@GCC_4.3.0 1:4.3 + __satfractsatq@GCC_4.3.0 1:4.3 + __satfractsauda@GCC_4.3.0 1:4.3 + __satfractsaudq@GCC_4.3.0 1:4.3 + __satfractsauha@GCC_4.3.0 1:4.3 + __satfractsauhq@GCC_4.3.0 1:4.3 + __satfractsauqq@GCC_4.3.0 1:4.3 + __satfractsausa@GCC_4.3.0 1:4.3 + __satfractsausq@GCC_4.3.0 1:4.3 + __satfractsauta@GCC_4.3.0 1:4.3 + __satfractsautq@GCC_4.3.0 1:4.3 + __satfractsfda@GCC_4.3.0 1:4.3 + __satfractsfdq@GCC_4.3.0 1:4.3 + __satfractsfha@GCC_4.3.0 1:4.3 + __satfractsfhq@GCC_4.3.0 1:4.3 + __satfractsfqq@GCC_4.3.0 1:4.3 + __satfractsfsa@GCC_4.3.0 1:4.3 + __satfractsfsq@GCC_4.3.0 1:4.3 + __satfractsfta@GCC_4.3.0 1:4.3 + __satfractsftq@GCC_4.3.0 1:4.3 + __satfractsfuda@GCC_4.3.0 1:4.3 + __satfractsfudq@GCC_4.3.0 1:4.3 + __satfractsfuha@GCC_4.3.0 1:4.3 + __satfractsfuhq@GCC_4.3.0 1:4.3 + __satfractsfuqq@GCC_4.3.0 1:4.3 + __satfractsfusa@GCC_4.3.0 1:4.3 + __satfractsfusq@GCC_4.3.0 1:4.3 + __satfractsfuta@GCC_4.3.0 1:4.3 + __satfractsfutq@GCC_4.3.0 1:4.3 + __satfractsida@GCC_4.3.0 1:4.3 + __satfractsidq@GCC_4.3.0 1:4.3 + __satfractsiha@GCC_4.3.0 1:4.3 + __satfractsihq@GCC_4.3.0 1:4.3 + __satfractsiqq@GCC_4.3.0 1:4.3 + __satfractsisa@GCC_4.3.0 1:4.3 + __satfractsisq@GCC_4.3.0 1:4.3 + __satfractsita@GCC_4.3.0 1:4.3 + __satfractsitq@GCC_4.3.0 1:4.3 + __satfractsiuda@GCC_4.3.0 1:4.3 + __satfractsiudq@GCC_4.3.0 1:4.3 + __satfractsiuha@GCC_4.3.0 1:4.3 + __satfractsiuhq@GCC_4.3.0 1:4.3 + __satfractsiuqq@GCC_4.3.0 1:4.3 + __satfractsiusa@GCC_4.3.0 1:4.3 + __satfractsiusq@GCC_4.3.0 1:4.3 + __satfractsiuta@GCC_4.3.0 1:4.3 + __satfractsiutq@GCC_4.3.0 1:4.3 + __satfractsqda@GCC_4.3.0 1:4.3 + __satfractsqdq2@GCC_4.3.0 1:4.3 + __satfractsqha@GCC_4.3.0 1:4.3 + __satfractsqhq2@GCC_4.3.0 1:4.3 + __satfractsqqq2@GCC_4.3.0 1:4.3 + __satfractsqsa@GCC_4.3.0 1:4.3 + __satfractsqta@GCC_4.3.0 1:4.3 + __satfractsqtq2@GCC_4.3.0 1:4.3 + __satfractsquda@GCC_4.3.0 1:4.3 + __satfractsqudq@GCC_4.3.0 1:4.3 + __satfractsquha@GCC_4.3.0 1:4.3 + __satfractsquhq@GCC_4.3.0 1:4.3 + __satfractsquqq@GCC_4.3.0 1:4.3 + __satfractsqusa@GCC_4.3.0 1:4.3 + __satfractsqusq@GCC_4.3.0 1:4.3 + __satfractsquta@GCC_4.3.0 1:4.3 + __satfractsqutq@GCC_4.3.0 1:4.3 + __satfracttada2@GCC_4.3.0 1:4.3 + __satfracttadq@GCC_4.3.0 1:4.3 + __satfracttaha2@GCC_4.3.0 1:4.3 + __satfracttahq@GCC_4.3.0 1:4.3 + __satfracttaqq@GCC_4.3.0 1:4.3 + __satfracttasa2@GCC_4.3.0 1:4.3 + __satfracttasq@GCC_4.3.0 1:4.3 + __satfracttatq@GCC_4.3.0 1:4.3 + __satfracttauda@GCC_4.3.0 1:4.3 + __satfracttaudq@GCC_4.3.0 1:4.3 + __satfracttauha@GCC_4.3.0 1:4.3 + __satfracttauhq@GCC_4.3.0 1:4.3 + __satfracttauqq@GCC_4.3.0 1:4.3 + __satfracttausa@GCC_4.3.0 1:4.3 + __satfracttausq@GCC_4.3.0 1:4.3 + __satfracttauta@GCC_4.3.0 1:4.3 + __satfracttautq@GCC_4.3.0 1:4.3 + __satfracttida@GCC_4.3.0 1:4.3 + __satfracttidq@GCC_4.3.0 1:4.3 + __satfracttiha@GCC_4.3.0 1:4.3 + __satfracttihq@GCC_4.3.0 1:4.3 + __satfracttiqq@GCC_4.3.0 1:4.3 + __satfracttisa@GCC_4.3.0 1:4.3 + __satfracttisq@GCC_4.3.0 1:4.3 + __satfracttita@GCC_4.3.0 1:4.3 + __satfracttitq@GCC_4.3.0 1:4.3 + __satfracttiuda@GCC_4.3.0 1:4.3 + __satfracttiudq@GCC_4.3.0 1:4.3 + __satfracttiuha@GCC_4.3.0 1:4.3 + __satfracttiuhq@GCC_4.3.0 1:4.3 + __satfracttiuqq@GCC_4.3.0 1:4.3 + __satfracttiusa@GCC_4.3.0 1:4.3 + __satfracttiusq@GCC_4.3.0 1:4.3 + __satfracttiuta@GCC_4.3.0 1:4.3 + __satfracttiutq@GCC_4.3.0 1:4.3 + __satfracttqda@GCC_4.3.0 1:4.3 + __satfracttqdq2@GCC_4.3.0 1:4.3 + __satfracttqha@GCC_4.3.0 1:4.3 + __satfracttqhq2@GCC_4.3.0 1:4.3 + __satfracttqqq2@GCC_4.3.0 1:4.3 + __satfracttqsa@GCC_4.3.0 1:4.3 + __satfracttqsq2@GCC_4.3.0 1:4.3 + __satfracttqta@GCC_4.3.0 1:4.3 + __satfracttquda@GCC_4.3.0 1:4.3 + __satfracttqudq@GCC_4.3.0 1:4.3 + __satfracttquha@GCC_4.3.0 1:4.3 + __satfracttquhq@GCC_4.3.0 1:4.3 + __satfracttquqq@GCC_4.3.0 1:4.3 + __satfracttqusa@GCC_4.3.0 1:4.3 + __satfracttqusq@GCC_4.3.0 1:4.3 + __satfracttquta@GCC_4.3.0 1:4.3 + __satfracttqutq@GCC_4.3.0 1:4.3 + __satfractudada@GCC_4.3.0 1:4.3 + __satfractudadq@GCC_4.3.0 1:4.3 + __satfractudaha@GCC_4.3.0 1:4.3 + __satfractudahq@GCC_4.3.0 1:4.3 + __satfractudaqq@GCC_4.3.0 1:4.3 + __satfractudasa@GCC_4.3.0 1:4.3 + __satfractudasq@GCC_4.3.0 1:4.3 + __satfractudata@GCC_4.3.0 1:4.3 + __satfractudatq@GCC_4.3.0 1:4.3 + __satfractudaudq@GCC_4.3.0 1:4.3 + __satfractudauha2@GCC_4.3.0 1:4.3 + __satfractudauhq@GCC_4.3.0 1:4.3 + __satfractudauqq@GCC_4.3.0 1:4.3 + __satfractudausa2@GCC_4.3.0 1:4.3 + __satfractudausq@GCC_4.3.0 1:4.3 + __satfractudauta2@GCC_4.3.0 1:4.3 + __satfractudautq@GCC_4.3.0 1:4.3 + __satfractudqda@GCC_4.3.0 1:4.3 + __satfractudqdq@GCC_4.3.0 1:4.3 + __satfractudqha@GCC_4.3.0 1:4.3 + __satfractudqhq@GCC_4.3.0 1:4.3 + __satfractudqqq@GCC_4.3.0 1:4.3 + __satfractudqsa@GCC_4.3.0 1:4.3 + __satfractudqsq@GCC_4.3.0 1:4.3 + __satfractudqta@GCC_4.3.0 1:4.3 + __satfractudqtq@GCC_4.3.0 1:4.3 + __satfractudquda@GCC_4.3.0 1:4.3 + __satfractudquha@GCC_4.3.0 1:4.3 + __satfractudquhq2@GCC_4.3.0 1:4.3 + __satfractudquqq2@GCC_4.3.0 1:4.3 + __satfractudqusa@GCC_4.3.0 1:4.3 + __satfractudqusq2@GCC_4.3.0 1:4.3 + __satfractudquta@GCC_4.3.0 1:4.3 + __satfractudqutq2@GCC_4.3.0 1:4.3 + __satfractuhada@GCC_4.3.0 1:4.3 + __satfractuhadq@GCC_4.3.0 1:4.3 + __satfractuhaha@GCC_4.3.0 1:4.3 + __satfractuhahq@GCC_4.3.0 1:4.3 + __satfractuhaqq@GCC_4.3.0 1:4.3 + __satfractuhasa@GCC_4.3.0 1:4.3 + __satfractuhasq@GCC_4.3.0 1:4.3 + __satfractuhata@GCC_4.3.0 1:4.3 + __satfractuhatq@GCC_4.3.0 1:4.3 + __satfractuhauda2@GCC_4.3.0 1:4.3 + __satfractuhaudq@GCC_4.3.0 1:4.3 + __satfractuhauhq@GCC_4.3.0 1:4.3 + __satfractuhauqq@GCC_4.3.0 1:4.3 + __satfractuhausa2@GCC_4.3.0 1:4.3 + __satfractuhausq@GCC_4.3.0 1:4.3 + __satfractuhauta2@GCC_4.3.0 1:4.3 + __satfractuhautq@GCC_4.3.0 1:4.3 + __satfractuhqda@GCC_4.3.0 1:4.3 + __satfractuhqdq@GCC_4.3.0 1:4.3 + __satfractuhqha@GCC_4.3.0 1:4.3 + __satfractuhqhq@GCC_4.3.0 1:4.3 + __satfractuhqqq@GCC_4.3.0 1:4.3 + __satfractuhqsa@GCC_4.3.0 1:4.3 + __satfractuhqsq@GCC_4.3.0 1:4.3 + __satfractuhqta@GCC_4.3.0 1:4.3 + __satfractuhqtq@GCC_4.3.0 1:4.3 + __satfractuhquda@GCC_4.3.0 1:4.3 + __satfractuhqudq2@GCC_4.3.0 1:4.3 + __satfractuhquha@GCC_4.3.0 1:4.3 + __satfractuhquqq2@GCC_4.3.0 1:4.3 + __satfractuhqusa@GCC_4.3.0 1:4.3 + __satfractuhqusq2@GCC_4.3.0 1:4.3 + __satfractuhquta@GCC_4.3.0 1:4.3 + __satfractuhqutq2@GCC_4.3.0 1:4.3 + __satfractunsdida@GCC_4.3.0 1:4.3 + __satfractunsdidq@GCC_4.3.0 1:4.3 + __satfractunsdiha@GCC_4.3.0 1:4.3 + __satfractunsdihq@GCC_4.3.0 1:4.3 + __satfractunsdiqq@GCC_4.3.0 1:4.3 + __satfractunsdisa@GCC_4.3.0 1:4.3 + __satfractunsdisq@GCC_4.3.0 1:4.3 + __satfractunsdita@GCC_4.3.0 1:4.3 + __satfractunsditq@GCC_4.3.0 1:4.3 + __satfractunsdiuda@GCC_4.3.0 1:4.3 + __satfractunsdiudq@GCC_4.3.0 1:4.3 + __satfractunsdiuha@GCC_4.3.0 1:4.3 + __satfractunsdiuhq@GCC_4.3.0 1:4.3 + __satfractunsdiuqq@GCC_4.3.0 1:4.3 + __satfractunsdiusa@GCC_4.3.0 1:4.3 + __satfractunsdiusq@GCC_4.3.0 1:4.3 + __satfractunsdiuta@GCC_4.3.0 1:4.3 + __satfractunsdiutq@GCC_4.3.0 1:4.3 + __satfractunshida@GCC_4.3.0 1:4.3 + __satfractunshidq@GCC_4.3.0 1:4.3 + __satfractunshiha@GCC_4.3.0 1:4.3 + __satfractunshihq@GCC_4.3.0 1:4.3 + __satfractunshiqq@GCC_4.3.0 1:4.3 + __satfractunshisa@GCC_4.3.0 1:4.3 + __satfractunshisq@GCC_4.3.0 1:4.3 + __satfractunshita@GCC_4.3.0 1:4.3 + __satfractunshitq@GCC_4.3.0 1:4.3 + __satfractunshiuda@GCC_4.3.0 1:4.3 + __satfractunshiudq@GCC_4.3.0 1:4.3 + __satfractunshiuha@GCC_4.3.0 1:4.3 + __satfractunshiuhq@GCC_4.3.0 1:4.3 + __satfractunshiuqq@GCC_4.3.0 1:4.3 + __satfractunshiusa@GCC_4.3.0 1:4.3 + __satfractunshiusq@GCC_4.3.0 1:4.3 + __satfractunshiuta@GCC_4.3.0 1:4.3 + __satfractunshiutq@GCC_4.3.0 1:4.3 + __satfractunsqida@GCC_4.3.0 1:4.3 + __satfractunsqidq@GCC_4.3.0 1:4.3 + __satfractunsqiha@GCC_4.3.0 1:4.3 + __satfractunsqihq@GCC_4.3.0 1:4.3 + __satfractunsqiqq@GCC_4.3.0 1:4.3 + __satfractunsqisa@GCC_4.3.0 1:4.3 + __satfractunsqisq@GCC_4.3.0 1:4.3 + __satfractunsqita@GCC_4.3.0 1:4.3 + __satfractunsqitq@GCC_4.3.0 1:4.3 + __satfractunsqiuda@GCC_4.3.0 1:4.3 + __satfractunsqiudq@GCC_4.3.0 1:4.3 + __satfractunsqiuha@GCC_4.3.0 1:4.3 + __satfractunsqiuhq@GCC_4.3.0 1:4.3 + __satfractunsqiuqq@GCC_4.3.0 1:4.3 + __satfractunsqiusa@GCC_4.3.0 1:4.3 + __satfractunsqiusq@GCC_4.3.0 1:4.3 + __satfractunsqiuta@GCC_4.3.0 1:4.3 + __satfractunsqiutq@GCC_4.3.0 1:4.3 + __satfractunssida@GCC_4.3.0 1:4.3 + __satfractunssidq@GCC_4.3.0 1:4.3 + __satfractunssiha@GCC_4.3.0 1:4.3 + __satfractunssihq@GCC_4.3.0 1:4.3 + __satfractunssiqq@GCC_4.3.0 1:4.3 + __satfractunssisa@GCC_4.3.0 1:4.3 + __satfractunssisq@GCC_4.3.0 1:4.3 + __satfractunssita@GCC_4.3.0 1:4.3 + __satfractunssitq@GCC_4.3.0 1:4.3 + __satfractunssiuda@GCC_4.3.0 1:4.3 + __satfractunssiudq@GCC_4.3.0 1:4.3 + __satfractunssiuha@GCC_4.3.0 1:4.3 + __satfractunssiuhq@GCC_4.3.0 1:4.3 + __satfractunssiuqq@GCC_4.3.0 1:4.3 + __satfractunssiusa@GCC_4.3.0 1:4.3 + __satfractunssiusq@GCC_4.3.0 1:4.3 + __satfractunssiuta@GCC_4.3.0 1:4.3 + __satfractunssiutq@GCC_4.3.0 1:4.3 + __satfractunstida@GCC_4.3.0 1:4.3 + __satfractunstidq@GCC_4.3.0 1:4.3 + __satfractunstiha@GCC_4.3.0 1:4.3 + __satfractunstihq@GCC_4.3.0 1:4.3 + __satfractunstiqq@GCC_4.3.0 1:4.3 + __satfractunstisa@GCC_4.3.0 1:4.3 + __satfractunstisq@GCC_4.3.0 1:4.3 + __satfractunstita@GCC_4.3.0 1:4.3 + __satfractunstitq@GCC_4.3.0 1:4.3 + __satfractunstiuda@GCC_4.3.0 1:4.3 + __satfractunstiudq@GCC_4.3.0 1:4.3 + __satfractunstiuha@GCC_4.3.0 1:4.3 + __satfractunstiuhq@GCC_4.3.0 1:4.3 + __satfractunstiuqq@GCC_4.3.0 1:4.3 + __satfractunstiusa@GCC_4.3.0 1:4.3 + __satfractunstiusq@GCC_4.3.0 1:4.3 + __satfractunstiuta@GCC_4.3.0 1:4.3 + __satfractunstiutq@GCC_4.3.0 1:4.3 + __satfractuqqda@GCC_4.3.0 1:4.3 + __satfractuqqdq@GCC_4.3.0 1:4.3 + __satfractuqqha@GCC_4.3.0 1:4.3 + __satfractuqqhq@GCC_4.3.0 1:4.3 + __satfractuqqqq@GCC_4.3.0 1:4.3 + __satfractuqqsa@GCC_4.3.0 1:4.3 + __satfractuqqsq@GCC_4.3.0 1:4.3 + __satfractuqqta@GCC_4.3.0 1:4.3 + __satfractuqqtq@GCC_4.3.0 1:4.3 + __satfractuqquda@GCC_4.3.0 1:4.3 + __satfractuqqudq2@GCC_4.3.0 1:4.3 + __satfractuqquha@GCC_4.3.0 1:4.3 + __satfractuqquhq2@GCC_4.3.0 1:4.3 + __satfractuqqusa@GCC_4.3.0 1:4.3 + __satfractuqqusq2@GCC_4.3.0 1:4.3 + __satfractuqquta@GCC_4.3.0 1:4.3 + __satfractuqqutq2@GCC_4.3.0 1:4.3 + __satfractusada@GCC_4.3.0 1:4.3 + __satfractusadq@GCC_4.3.0 1:4.3 + __satfractusaha@GCC_4.3.0 1:4.3 + __satfractusahq@GCC_4.3.0 1:4.3 + __satfractusaqq@GCC_4.3.0 1:4.3 + __satfractusasa@GCC_4.3.0 1:4.3 + __satfractusasq@GCC_4.3.0 1:4.3 + __satfractusata@GCC_4.3.0 1:4.3 + __satfractusatq@GCC_4.3.0 1:4.3 + __satfractusauda2@GCC_4.3.0 1:4.3 + __satfractusaudq@GCC_4.3.0 1:4.3 + __satfractusauha2@GCC_4.3.0 1:4.3 + __satfractusauhq@GCC_4.3.0 1:4.3 + __satfractusauqq@GCC_4.3.0 1:4.3 + __satfractusausq@GCC_4.3.0 1:4.3 + __satfractusauta2@GCC_4.3.0 1:4.3 + __satfractusautq@GCC_4.3.0 1:4.3 + __satfractusqda@GCC_4.3.0 1:4.3 + __satfractusqdq@GCC_4.3.0 1:4.3 + __satfractusqha@GCC_4.3.0 1:4.3 + __satfractusqhq@GCC_4.3.0 1:4.3 + __satfractusqqq@GCC_4.3.0 1:4.3 + __satfractusqsa@GCC_4.3.0 1:4.3 + __satfractusqsq@GCC_4.3.0 1:4.3 + __satfractusqta@GCC_4.3.0 1:4.3 + __satfractusqtq@GCC_4.3.0 1:4.3 + __satfractusquda@GCC_4.3.0 1:4.3 + __satfractusqudq2@GCC_4.3.0 1:4.3 + __satfractusquha@GCC_4.3.0 1:4.3 + __satfractusquhq2@GCC_4.3.0 1:4.3 + __satfractusquqq2@GCC_4.3.0 1:4.3 + __satfractusqusa@GCC_4.3.0 1:4.3 + __satfractusquta@GCC_4.3.0 1:4.3 + __satfractusqutq2@GCC_4.3.0 1:4.3 + __satfractutada@GCC_4.3.0 1:4.3 + __satfractutadq@GCC_4.3.0 1:4.3 + __satfractutaha@GCC_4.3.0 1:4.3 + __satfractutahq@GCC_4.3.0 1:4.3 + __satfractutaqq@GCC_4.3.0 1:4.3 + __satfractutasa@GCC_4.3.0 1:4.3 + __satfractutasq@GCC_4.3.0 1:4.3 + __satfractutata@GCC_4.3.0 1:4.3 + __satfractutatq@GCC_4.3.0 1:4.3 + __satfractutauda2@GCC_4.3.0 1:4.3 + __satfractutaudq@GCC_4.3.0 1:4.3 + __satfractutauha2@GCC_4.3.0 1:4.3 + __satfractutauhq@GCC_4.3.0 1:4.3 + __satfractutauqq@GCC_4.3.0 1:4.3 + __satfractutausa2@GCC_4.3.0 1:4.3 + __satfractutausq@GCC_4.3.0 1:4.3 + __satfractutautq@GCC_4.3.0 1:4.3 + __satfractutqda@GCC_4.3.0 1:4.3 + __satfractutqdq@GCC_4.3.0 1:4.3 + __satfractutqha@GCC_4.3.0 1:4.3 + __satfractutqhq@GCC_4.3.0 1:4.3 + __satfractutqqq@GCC_4.3.0 1:4.3 + __satfractutqsa@GCC_4.3.0 1:4.3 + __satfractutqsq@GCC_4.3.0 1:4.3 + __satfractutqta@GCC_4.3.0 1:4.3 + __satfractutqtq@GCC_4.3.0 1:4.3 + __satfractutquda@GCC_4.3.0 1:4.3 + __satfractutqudq2@GCC_4.3.0 1:4.3 + __satfractutquha@GCC_4.3.0 1:4.3 + __satfractutquhq2@GCC_4.3.0 1:4.3 + __satfractutquqq2@GCC_4.3.0 1:4.3 + __satfractutqusa@GCC_4.3.0 1:4.3 + __satfractutqusq2@GCC_4.3.0 1:4.3 + __satfractutquta@GCC_4.3.0 1:4.3 + __ssaddda3@GCC_4.3.0 1:4.3 + __ssadddq3@GCC_4.3.0 1:4.3 + __ssaddha3@GCC_4.3.0 1:4.3 + __ssaddhq3@GCC_4.3.0 1:4.3 + __ssaddqq3@GCC_4.3.0 1:4.3 + __ssaddsa3@GCC_4.3.0 1:4.3 + __ssaddsq3@GCC_4.3.0 1:4.3 + __ssaddta3@GCC_4.3.0 1:4.3 + __ssaddtq3@GCC_4.3.0 1:4.3 + __ssashlda3@GCC_4.3.0 1:4.3 + __ssashldq3@GCC_4.3.0 1:4.3 + __ssashlha3@GCC_4.3.0 1:4.3 + __ssashlhq3@GCC_4.3.0 1:4.3 + __ssashlqq3@GCC_4.3.0 1:4.3 + __ssashlsa3@GCC_4.3.0 1:4.3 + __ssashlsq3@GCC_4.3.0 1:4.3 + __ssashlta3@GCC_4.3.0 1:4.3 + __ssashltq3@GCC_4.3.0 1:4.3 + __ssdivda3@GCC_4.3.0 1:4.3 + __ssdivdq3@GCC_4.3.0 1:4.3 + __ssdivha3@GCC_4.3.0 1:4.3 + __ssdivhq3@GCC_4.3.0 1:4.3 + __ssdivqq3@GCC_4.3.0 1:4.3 + __ssdivsa3@GCC_4.3.0 1:4.3 + __ssdivsq3@GCC_4.3.0 1:4.3 + __ssdivta3@GCC_4.3.0 1:4.3 + __ssdivtq3@GCC_4.3.0 1:4.3 + __ssmulda3@GCC_4.3.0 1:4.3 + __ssmuldq3@GCC_4.3.0 1:4.3 + __ssmulha3@GCC_4.3.0 1:4.3 + __ssmulhq3@GCC_4.3.0 1:4.3 + __ssmulqq3@GCC_4.3.0 1:4.3 + __ssmulsa3@GCC_4.3.0 1:4.3 + __ssmulsq3@GCC_4.3.0 1:4.3 + __ssmulta3@GCC_4.3.0 1:4.3 + __ssmultq3@GCC_4.3.0 1:4.3 + __ssnegda2@GCC_4.3.0 1:4.3 + __ssnegdq2@GCC_4.3.0 1:4.3 + __ssnegha2@GCC_4.3.0 1:4.3 + __ssneghq2@GCC_4.3.0 1:4.3 + __ssnegqq2@GCC_4.3.0 1:4.3 + __ssnegsa2@GCC_4.3.0 1:4.3 + __ssnegsq2@GCC_4.3.0 1:4.3 + __ssnegta2@GCC_4.3.0 1:4.3 + __ssnegtq2@GCC_4.3.0 1:4.3 + __sssubda3@GCC_4.3.0 1:4.3 + __sssubdq3@GCC_4.3.0 1:4.3 + __sssubha3@GCC_4.3.0 1:4.3 + __sssubhq3@GCC_4.3.0 1:4.3 + __sssubqq3@GCC_4.3.0 1:4.3 + __sssubsa3@GCC_4.3.0 1:4.3 + __sssubsq3@GCC_4.3.0 1:4.3 + __sssubta3@GCC_4.3.0 1:4.3 + __sssubtq3@GCC_4.3.0 1:4.3 + __subda3@GCC_4.3.0 1:4.3 + __subdf3@GCC_3.0 1:4.1.1 + __subdq3@GCC_4.3.0 1:4.3 + __subha3@GCC_4.3.0 1:4.3 + __subhq3@GCC_4.3.0 1:4.3 + __subqq3@GCC_4.3.0 1:4.3 + __subsa3@GCC_4.3.0 1:4.3 + __subsf3@GCC_3.0 1:4.1.1 + __subsq3@GCC_4.3.0 1:4.3 + __subta3@GCC_4.3.0 1:4.3 + __subtf3@GCC_3.0 1:4.1.1 + __subtq3@GCC_4.3.0 1:4.3 + __subuda3@GCC_4.3.0 1:4.3 + __subudq3@GCC_4.3.0 1:4.3 + __subuha3@GCC_4.3.0 1:4.3 + __subuhq3@GCC_4.3.0 1:4.3 + __subuqq3@GCC_4.3.0 1:4.3 + __subusa3@GCC_4.3.0 1:4.3 + __subusq3@GCC_4.3.0 1:4.3 + __subuta3@GCC_4.3.0 1:4.3 + __subutq3@GCC_4.3.0 1:4.3 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __subvti3@GCC_3.4.4 1:4.1.1 + __sync_add_and_fetch_1@GCC_4.4.0 1:4.4 + __sync_add_and_fetch_2@GCC_4.4.0 1:4.4 + __sync_add_and_fetch_4@GCC_4.4.0 1:4.4 + __sync_add_and_fetch_8@GCC_4.4.0 1:4.4 + __sync_and_and_fetch_1@GCC_4.4.0 1:4.4 + __sync_and_and_fetch_2@GCC_4.4.0 1:4.4 + __sync_and_and_fetch_4@GCC_4.4.0 1:4.4 + __sync_and_and_fetch_8@GCC_4.4.0 1:4.4 + __sync_bool_compare_and_swap_1@GCC_4.4.0 1:4.4 + __sync_bool_compare_and_swap_2@GCC_4.4.0 1:4.4 + __sync_bool_compare_and_swap_4@GCC_4.4.0 1:4.4 + __sync_bool_compare_and_swap_8@GCC_4.4.0 1:4.4 + __sync_fetch_and_add_1@GCC_4.4.0 1:4.4 + __sync_fetch_and_add_2@GCC_4.4.0 1:4.4 + __sync_fetch_and_add_4@GCC_4.4.0 1:4.4 + __sync_fetch_and_add_8@GCC_4.4.0 1:4.4 + __sync_fetch_and_and_1@GCC_4.4.0 1:4.4 + __sync_fetch_and_and_2@GCC_4.4.0 1:4.4 + __sync_fetch_and_and_4@GCC_4.4.0 1:4.4 + __sync_fetch_and_and_8@GCC_4.4.0 1:4.4 + __sync_fetch_and_nand_1@GCC_4.4.0 1:4.4 + __sync_fetch_and_nand_2@GCC_4.4.0 1:4.4 + __sync_fetch_and_nand_4@GCC_4.4.0 1:4.4 + __sync_fetch_and_nand_8@GCC_4.4.0 1:4.4 + __sync_fetch_and_or_1@GCC_4.4.0 1:4.4 + __sync_fetch_and_or_2@GCC_4.4.0 1:4.4 + __sync_fetch_and_or_4@GCC_4.4.0 1:4.4 + __sync_fetch_and_or_8@GCC_4.4.0 1:4.4 + __sync_fetch_and_sub_1@GCC_4.4.0 1:4.4 + __sync_fetch_and_sub_2@GCC_4.4.0 1:4.4 + __sync_fetch_and_sub_4@GCC_4.4.0 1:4.4 + __sync_fetch_and_sub_8@GCC_4.4.0 1:4.4 + __sync_fetch_and_xor_1@GCC_4.4.0 1:4.4 + __sync_fetch_and_xor_2@GCC_4.4.0 1:4.4 + __sync_fetch_and_xor_4@GCC_4.4.0 1:4.4 + __sync_fetch_and_xor_8@GCC_4.4.0 1:4.4 + __sync_lock_test_and_set_1@GCC_4.4.0 1:4.4 + __sync_lock_test_and_set_2@GCC_4.4.0 1:4.4 + __sync_lock_test_and_set_4@GCC_4.4.0 1:4.4 + __sync_lock_test_and_set_8@GCC_4.4.0 1:4.4 + __sync_nand_and_fetch_1@GCC_4.4.0 1:4.4 + __sync_nand_and_fetch_2@GCC_4.4.0 1:4.4 + __sync_nand_and_fetch_4@GCC_4.4.0 1:4.4 + __sync_nand_and_fetch_8@GCC_4.4.0 1:4.4 + __sync_or_and_fetch_1@GCC_4.4.0 1:4.4 + __sync_or_and_fetch_2@GCC_4.4.0 1:4.4 + __sync_or_and_fetch_4@GCC_4.4.0 1:4.4 + __sync_or_and_fetch_8@GCC_4.4.0 1:4.4 + __sync_sub_and_fetch_1@GCC_4.4.0 1:4.4 + __sync_sub_and_fetch_2@GCC_4.4.0 1:4.4 + __sync_sub_and_fetch_4@GCC_4.4.0 1:4.4 + __sync_sub_and_fetch_8@GCC_4.4.0 1:4.4 + __sync_synchronize@GCC_4.4.0 1:4.4 + __sync_val_compare_and_swap_1@GCC_4.4.0 1:4.4 + __sync_val_compare_and_swap_2@GCC_4.4.0 1:4.4 + __sync_val_compare_and_swap_4@GCC_4.4.0 1:4.4 + __sync_val_compare_and_swap_8@GCC_4.4.0 1:4.4 + __sync_xor_and_fetch_1@GCC_4.4.0 1:4.4 + __sync_xor_and_fetch_2@GCC_4.4.0 1:4.4 + __sync_xor_and_fetch_4@GCC_4.4.0 1:4.4 + __sync_xor_and_fetch_8@GCC_4.4.0 1:4.4 + __truncdfsf2@GCC_3.0 1:4.1.1 + __trunctfdf2@GCC_3.0 1:4.1.1 + __trunctfsf2@GCC_3.0 1:4.1.1 + __ucmpti2@GCC_3.0 1:4.1.1 + __udivmodti4@GCC_3.0 1:4.1.1 + __udivti3@GCC_3.0 1:4.1.1 + __udivuda3@GCC_4.3.0 1:4.3 + __udivudq3@GCC_4.3.0 1:4.3 + __udivuha3@GCC_4.3.0 1:4.3 + __udivuhq3@GCC_4.3.0 1:4.3 + __udivuqq3@GCC_4.3.0 1:4.3 + __udivusa3@GCC_4.3.0 1:4.3 + __udivusq3@GCC_4.3.0 1:4.3 + __udivuta3@GCC_4.3.0 1:4.3 + __udivutq3@GCC_4.3.0 1:4.3 + __umodti3@GCC_3.0 1:4.1.1 + __unorddf2@GCC_3.3.4 1:4.1.1 + __unordsf2@GCC_3.3.4 1:4.1.1 + __unordtf2@GCC_4.5.0 1:4.5 + __usadduda3@GCC_4.3.0 1:4.3 + __usaddudq3@GCC_4.3.0 1:4.3 + __usadduha3@GCC_4.3.0 1:4.3 + __usadduhq3@GCC_4.3.0 1:4.3 + __usadduqq3@GCC_4.3.0 1:4.3 + __usaddusa3@GCC_4.3.0 1:4.3 + __usaddusq3@GCC_4.3.0 1:4.3 + __usadduta3@GCC_4.3.0 1:4.3 + __usaddutq3@GCC_4.3.0 1:4.3 + __usashluda3@GCC_4.3.0 1:4.3 + __usashludq3@GCC_4.3.0 1:4.3 + __usashluha3@GCC_4.3.0 1:4.3 + __usashluhq3@GCC_4.3.0 1:4.3 + __usashluqq3@GCC_4.3.0 1:4.3 + __usashlusa3@GCC_4.3.0 1:4.3 + __usashlusq3@GCC_4.3.0 1:4.3 + __usashluta3@GCC_4.3.0 1:4.3 + __usashlutq3@GCC_4.3.0 1:4.3 + __usdivuda3@GCC_4.3.0 1:4.3 + __usdivudq3@GCC_4.3.0 1:4.3 + __usdivuha3@GCC_4.3.0 1:4.3 + __usdivuhq3@GCC_4.3.0 1:4.3 + __usdivuqq3@GCC_4.3.0 1:4.3 + __usdivusa3@GCC_4.3.0 1:4.3 + __usdivusq3@GCC_4.3.0 1:4.3 + __usdivuta3@GCC_4.3.0 1:4.3 + __usdivutq3@GCC_4.3.0 1:4.3 + __usmuluda3@GCC_4.3.0 1:4.3 + __usmuludq3@GCC_4.3.0 1:4.3 + __usmuluha3@GCC_4.3.0 1:4.3 + __usmuluhq3@GCC_4.3.0 1:4.3 + __usmuluqq3@GCC_4.3.0 1:4.3 + __usmulusa3@GCC_4.3.0 1:4.3 + __usmulusq3@GCC_4.3.0 1:4.3 + __usmuluta3@GCC_4.3.0 1:4.3 + __usmulutq3@GCC_4.3.0 1:4.3 + __usneguda2@GCC_4.3.0 1:4.3 + __usnegudq2@GCC_4.3.0 1:4.3 + __usneguha2@GCC_4.3.0 1:4.3 + __usneguhq2@GCC_4.3.0 1:4.3 + __usneguqq2@GCC_4.3.0 1:4.3 + __usnegusa2@GCC_4.3.0 1:4.3 + __usnegusq2@GCC_4.3.0 1:4.3 + __usneguta2@GCC_4.3.0 1:4.3 + __usnegutq2@GCC_4.3.0 1:4.3 + __ussubuda3@GCC_4.3.0 1:4.3 + __ussubudq3@GCC_4.3.0 1:4.3 + __ussubuha3@GCC_4.3.0 1:4.3 + __ussubuhq3@GCC_4.3.0 1:4.3 + __ussubuqq3@GCC_4.3.0 1:4.3 + __ussubusa3@GCC_4.3.0 1:4.3 + __ussubusq3@GCC_4.3.0 1:4.3 + __ussubuta3@GCC_4.3.0 1:4.3 + __ussubutq3@GCC_4.3.0 1:4.3 --- gcc-4.9-4.9.2.orig/debian/libobjc4.symbols +++ gcc-4.9-4.9.2/debian/libobjc4.symbols @@ -0,0 +1,3 @@ +libobjc.so.4 libobjc4 #MINVER# +#include "libobjc4.symbols.common" + __gnu_objc_personality_v0@Base 4.2.1 --- gcc-4.9-4.9.2.orig/debian/libobjc4.symbols.armel +++ gcc-4.9-4.9.2/debian/libobjc4.symbols.armel @@ -0,0 +1,4 @@ +libobjc.so.4 libobjc4 #MINVER# +#include "libobjc4.symbols.common" + __gnu_objc_personality_v0@Base 4.2.1 + __objc_exception_class@Base 4.3.0 --- gcc-4.9-4.9.2.orig/debian/libobjc4.symbols.armhf +++ gcc-4.9-4.9.2/debian/libobjc4.symbols.armhf @@ -0,0 +1,4 @@ +libobjc.so.4 libobjc4 #MINVER# +#include "libobjc4.symbols.common" + __gnu_objc_personality_v0@Base 4.2.1 + __objc_exception_class@Base 4.3.0 --- gcc-4.9-4.9.2.orig/debian/libobjc4.symbols.common +++ gcc-4.9-4.9.2/debian/libobjc4.symbols.common @@ -0,0 +1,205 @@ + __objc_accessors_init@Base 4.6 + __objc_add_class_to_hash@Base 4.2.1 + __objc_class_links_resolved@Base 4.2.1 + __objc_class_name_NXConstantString@Base 4.2.1 + __objc_class_name_Object@Base 4.2.1 + __objc_class_name_Protocol@Base 4.2.1 + __objc_dangling_categories@Base 4.2.1 + __objc_exec_class@Base 4.2.1 + __objc_force_linking@Base 4.2.1 + __objc_generate_gc_type_description@Base 4.2.1 + __objc_get_forward_imp@Base 4.2.1 + __objc_init_class@Base 4.6 + __objc_init_class_tables@Base 4.2.1 + __objc_init_dispatch_tables@Base 4.2.1 + __objc_init_selector_tables@Base 4.2.1 + __objc_init_thread_system@Base 4.2.1 + __objc_install_premature_dtable@Base 4.2.1 + __objc_is_multi_threaded@Base 4.2.1 + __objc_linking@Base 4.2.1 + __objc_msg_forward@Base 4.2.1 + __objc_msg_forward2@Base 4.3 + __objc_print_dtable_stats@Base 4.2.1 + __objc_protocols_add_protocol@Base 4.6 + __objc_protocols_init@Base 4.6 + __objc_register_instance_methods_to_class@Base 4.2.1 + __objc_register_selectors_from_class@Base 4.2.1 + __objc_register_selectors_from_description_list@Base 4.6 + __objc_register_selectors_from_list@Base 4.2.1 + __objc_register_selectors_from_module@Base 4.6 + __objc_resolve_class_links@Base 4.2.1 + __objc_responds_to@Base 4.2.1 + __objc_runtime_mutex@Base 4.2.1 + __objc_runtime_threads_alive@Base 4.2.1 + __objc_selector_max_index@Base 4.2.1 + __objc_sparse2_id@Base 4.2.1 + __objc_sync_init@Base 4.6 + __objc_thread_exit_status@Base 4.2.1 + __objc_uninstalled_dtable@Base 4.2.1 + __objc_update_classes_with_methods@Base 4.6 + __objc_update_dispatch_table_for_class@Base 4.2.1 + _objc_abort@Base 4.6 + _objc_became_multi_threaded@Base 4.2.1 + _objc_load_callback@Base 4.2.1 + _objc_lookup_class@Base 4.6 + class_addIvar@Base 4.6 + class_addMethod@Base 4.6 + class_addProtocol@Base 4.6 + class_add_method_list@Base 4.2.1 + class_conformsToProtocol@Base 4.6 + class_copyIvarList@Base 4.6 + class_copyMethodList@Base 4.6 + class_copyPropertyList@Base 4.6 + class_copyProtocolList@Base 4.6 + class_createInstance@Base 4.6 + class_getClassMethod@Base 4.6 + class_getClassVariable@Base 4.6 + class_getInstanceMethod@Base 4.6 + class_getInstanceSize@Base 4.6 + class_getInstanceVariable@Base 4.6 + class_getIvarLayout@Base 4.6 + class_getMethodImplementation@Base 4.6 + class_getName@Base 4.6 + class_getProperty@Base 4.6 + class_getSuperclass@Base 4.6 + class_getVersion@Base 4.6 + class_getWeakIvarLayout@Base 4.6 + class_isMetaClass@Base 4.6 + class_ivar_set_gcinvisible@Base 4.2.1 + class_replaceMethod@Base 4.6 + class_respondsToSelector@Base 4.6 + class_setIvarLayout@Base 4.6 + class_setVersion@Base 4.6 + class_setWeakIvarLayout@Base 4.6 + get_imp@Base 4.2.1 + idxsize@Base 4.2.1 + ivar_getName@Base 4.6 + ivar_getOffset@Base 4.6 + ivar_getTypeEncoding@Base 4.6 + method_copyArgumentType@Base 4.6 + method_copyReturnType@Base 4.6 + method_exchangeImplementations@Base 4.6 + method_getArgumentType@Base 4.6 + method_getDescription@Base 4.6 + method_getImplementation@Base 4.6 + method_getName@Base 4.6 + method_getNumberOfArguments@Base 4.6 + method_getReturnType@Base 4.6 + method_getTypeEncoding@Base 4.6 + method_get_imp@Base 4.6 + method_setImplementation@Base 4.6 + narrays@Base 4.2.1 + nbuckets@Base 4.2.1 + nil_method@Base 4.2.1 + nindices@Base 4.2.1 + objc_aligned_size@Base 4.2.1 + objc_alignof_type@Base 4.2.1 + objc_allocateClassPair@Base 4.6 + objc_atomic_malloc@Base 4.2.1 + objc_calloc@Base 4.2.1 + objc_condition_allocate@Base 4.2.1 + objc_condition_broadcast@Base 4.2.1 + objc_condition_deallocate@Base 4.2.1 + objc_condition_signal@Base 4.2.1 + objc_condition_wait@Base 4.2.1 + objc_copyProtocolList@Base 4.6 + objc_copyStruct@Base 4.6 + objc_disposeClassPair@Base 4.6 + objc_enumerationMutation@Base 4.6 + objc_exception_throw@Base 4.2.1 + objc_free@Base 4.2.1 + objc_getClass@Base 4.6 + objc_getClassList@Base 4.6 + objc_getMetaClass@Base 4.6 + objc_getProperty@Base 4.6 + objc_getPropertyStruct@Base 4.6 + objc_getProtocol@Base 4.6 + objc_getRequiredClass@Base 4.6 + objc_get_class@Base 4.2.1 + objc_get_meta_class@Base 4.2.1 + objc_get_type_qualifiers@Base 4.2.1 + objc_hash_add@Base 4.2.1 + objc_hash_delete@Base 4.2.1 + objc_hash_is_key_in_hash@Base 4.2.1 + objc_hash_new@Base 4.2.1 + objc_hash_next@Base 4.2.1 + objc_hash_remove@Base 4.2.1 + objc_hash_value_for_key@Base 4.2.1 + objc_layout_finish_structure@Base 4.2.1 + objc_layout_structure@Base 4.2.1 + objc_layout_structure_get_info@Base 4.2.1 + objc_layout_structure_next_member@Base 4.2.1 + objc_lookUpClass@Base 4.6 + objc_lookup_class@Base 4.2.1 + objc_malloc@Base 4.2.1 + objc_msg_lookup@Base 4.2.1 + objc_msg_lookup_super@Base 4.2.1 + objc_mutex_allocate@Base 4.2.1 + objc_mutex_deallocate@Base 4.2.1 + objc_mutex_lock@Base 4.2.1 + objc_mutex_trylock@Base 4.2.1 + objc_mutex_unlock@Base 4.2.1 + objc_promoted_size@Base 4.2.1 + objc_realloc@Base 4.2.1 + objc_registerClassPair@Base 4.6 + objc_setEnumerationMutationHandler@Base 4.6 + objc_setExceptionMatcher@Base 4.6 + objc_setGetUnknownClassHandler@Base 4.6 + objc_setProperty@Base 4.6 + objc_setPropertyStruct@Base 4.6 + objc_setUncaughtExceptionHandler@Base 4.6 + objc_set_thread_callback@Base 4.2.1 + objc_sizeof_type@Base 4.2.1 + objc_skip_argspec@Base 4.2.1 + objc_skip_offset@Base 4.2.1 + objc_skip_type_qualifiers@Base 4.2.1 + objc_skip_typespec@Base 4.2.1 + objc_sync_enter@Base 4.6 + objc_sync_exit@Base 4.6 + objc_thread_add@Base 4.2.1 + objc_thread_detach@Base 4.2.1 + objc_thread_exit@Base 4.2.1 + objc_thread_get_data@Base 4.2.1 + objc_thread_get_priority@Base 4.2.1 + objc_thread_id@Base 4.2.1 + objc_thread_remove@Base 4.2.1 + objc_thread_set_data@Base 4.2.1 + objc_thread_set_priority@Base 4.2.1 + objc_thread_yield@Base 4.2.1 + object_copy@Base 4.2.1 + object_dispose@Base 4.2.1 + object_getClassName@Base 4.6 + object_getIndexedIvars@Base 4.6 + object_getInstanceVariable@Base 4.6 + object_getIvar@Base 4.6 + object_setClass@Base 4.6 + object_setInstanceVariable@Base 4.6 + object_setIvar@Base 4.6 + property_getAttributes@Base 4.6 + property_getName@Base 4.6 + protocol_conformsToProtocol@Base 4.6 + protocol_copyMethodDescriptionList@Base 4.6 + protocol_copyPropertyList@Base 4.6 + protocol_copyProtocolList@Base 4.6 + protocol_getMethodDescription@Base 4.6 + protocol_getName@Base 4.6 + protocol_getProperty@Base 4.6 + protocol_isEqual@Base 4.6 + sarray_at_put@Base 4.2.1 + sarray_at_put_safe@Base 4.2.1 + sarray_free@Base 4.2.1 + sarray_lazy_copy@Base 4.2.1 + sarray_new@Base 4.2.1 + sarray_realloc@Base 4.2.1 + sarray_remove_garbage@Base 4.2.1 + search_for_method_in_list@Base 4.2.1 + sel_copyTypedSelectorList@Base 4.6 + sel_getName@Base 4.6 + sel_getTypeEncoding@Base 4.6 + sel_getTypedSelector@Base 4.6 + sel_getUid@Base 4.6 + sel_get_any_uid@Base 4.2.1 + sel_isEqual@Base 4.6 + sel_is_mapped@Base 4.2.1 + sel_registerName@Base 4.6 + sel_registerTypedName@Base 4.6 --- gcc-4.9-4.9.2.orig/debian/libquadmath0.symbols +++ gcc-4.9-4.9.2/debian/libquadmath0.symbols @@ -0,0 +1,2 @@ +libquadmath.so.0 libquadmath0 #MINVER# +#include "libquadmath0.symbols.common" --- gcc-4.9-4.9.2.orig/debian/libquadmath0.symbols.common +++ gcc-4.9-4.9.2/debian/libquadmath0.symbols.common @@ -0,0 +1,92 @@ + QUADMATH_1.0@QUADMATH_1.0 4.6 + acoshq@QUADMATH_1.0 4.6 + acosq@QUADMATH_1.0 4.6 + asinhq@QUADMATH_1.0 4.6 + asinq@QUADMATH_1.0 4.6 + atan2q@QUADMATH_1.0 4.6 + atanhq@QUADMATH_1.0 4.6 + atanq@QUADMATH_1.0 4.6 + cabsq@QUADMATH_1.0 4.6 + cacoshq@QUADMATH_1.0 4.6 + cacosq@QUADMATH_1.0 4.6 + cargq@QUADMATH_1.0 4.6 + casinhq@QUADMATH_1.0 4.6 + casinq@QUADMATH_1.0 4.6 + catanhq@QUADMATH_1.0 4.6 + catanq@QUADMATH_1.0 4.6 + cbrtq@QUADMATH_1.0 4.6 + ccoshq@QUADMATH_1.0 4.6 + ccosq@QUADMATH_1.0 4.6 + ceilq@QUADMATH_1.0 4.6 + cexpiq@QUADMATH_1.0 4.6 + cexpq@QUADMATH_1.0 4.6 + cimagq@QUADMATH_1.0 4.6 + clog10q@QUADMATH_1.0 4.6 + clogq@QUADMATH_1.0 4.6 + conjq@QUADMATH_1.0 4.6 + copysignq@QUADMATH_1.0 4.6 + coshq@QUADMATH_1.0 4.6 + cosq@QUADMATH_1.0 4.6 + cpowq@QUADMATH_1.0 4.6 + cprojq@QUADMATH_1.0 4.6 + crealq@QUADMATH_1.0 4.6 + csinhq@QUADMATH_1.0 4.6 + csinq@QUADMATH_1.0 4.6 + csqrtq@QUADMATH_1.0 4.6 + ctanhq@QUADMATH_1.0 4.6 + ctanq@QUADMATH_1.0 4.6 + erfcq@QUADMATH_1.0 4.6 + erfq@QUADMATH_1.0 4.6 + expm1q@QUADMATH_1.0 4.6 + expq@QUADMATH_1.0 4.6 + fabsq@QUADMATH_1.0 4.6 + fdimq@QUADMATH_1.0 4.6 + finiteq@QUADMATH_1.0 4.6 + floorq@QUADMATH_1.0 4.6 + fmaq@QUADMATH_1.0 4.6 + fmaxq@QUADMATH_1.0 4.6 + fminq@QUADMATH_1.0 4.6 + fmodq@QUADMATH_1.0 4.6 + frexpq@QUADMATH_1.0 4.6 + hypotq@QUADMATH_1.0 4.6 + ilogbq@QUADMATH_1.0 4.6 + isinfq@QUADMATH_1.0 4.6 + isnanq@QUADMATH_1.0 4.6 + j0q@QUADMATH_1.0 4.6 + j1q@QUADMATH_1.0 4.6 + jnq@QUADMATH_1.0 4.6 + ldexpq@QUADMATH_1.0 4.6 + lgammaq@QUADMATH_1.0 4.6 + llrintq@QUADMATH_1.0 4.6 + llroundq@QUADMATH_1.0 4.6 + log10q@QUADMATH_1.0 4.6 + log1pq@QUADMATH_1.0 4.6 + log2q@QUADMATH_1.0 4.6 + logq@QUADMATH_1.0 4.6 + lrintq@QUADMATH_1.0 4.6 + lroundq@QUADMATH_1.0 4.6 + modfq@QUADMATH_1.0 4.6 + nanq@QUADMATH_1.0 4.6 + nearbyintq@QUADMATH_1.0 4.6 + nextafterq@QUADMATH_1.0 4.6 + powq@QUADMATH_1.0 4.6 + quadmath_snprintf@QUADMATH_1.0 4.6 + remainderq@QUADMATH_1.0 4.6 + remquoq@QUADMATH_1.0 4.6 + rintq@QUADMATH_1.0 4.6 + roundq@QUADMATH_1.0 4.6 + scalblnq@QUADMATH_1.0 4.6 + scalbnq@QUADMATH_1.0 4.6 + signbitq@QUADMATH_1.0 4.6 + sincosq@QUADMATH_1.0 4.6 + sinhq@QUADMATH_1.0 4.6 + sinq@QUADMATH_1.0 4.6 + sqrtq@QUADMATH_1.0 4.6 + strtoflt128@QUADMATH_1.0 4.6 + tanhq@QUADMATH_1.0 4.6 + tanq@QUADMATH_1.0 4.6 + tgammaq@QUADMATH_1.0 4.6 + truncq@QUADMATH_1.0 4.6 + y0q@QUADMATH_1.0 4.6 + y1q@QUADMATH_1.0 4.6 + ynq@QUADMATH_1.0 4.6 --- gcc-4.9-4.9.2.orig/debian/libstdc++-BV-doc.doc-base +++ gcc-4.9-4.9.2/debian/libstdc++-BV-doc.doc-base @@ -0,0 +1,13 @@ +Document: libstdc++-@BV@-doc +Title: The GNU Standard C++ Library v3 (gcc-@BV@) +Author: Various +Abstract: This package contains documentation files for the GNU stdc++ library. + One set is the distribution documentation, the other set is the + source documentation including a namespace list, class hierarchy, + alphabetical list, compound list, file list, namespace members, + compound members and file members. +Section: Programming/C++ + +Format: html +Index: /usr/share/doc/libstdc++-@BV@-doc/libstdc++/index.html +Files: /usr/share/doc/libstdc++-@BV@-doc/libstdc++/* --- gcc-4.9-4.9.2.orig/debian/libstdc++-BV-doc.overrides +++ gcc-4.9-4.9.2/debian/libstdc++-BV-doc.overrides @@ -0,0 +1,2 @@ +libstdc++-@BV@-doc binary: hyphen-used-as-minus-sign +libstdc++-@BV@-doc binary: manpage-has-bad-whatis-entry --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.128bit +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.128bit @@ -0,0 +1,46 @@ + _ZNSt14numeric_limitsInE10has_denormE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE10is_boundedE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE10is_integerE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE11round_styleE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE12has_infinityE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE12max_digits10E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE12max_exponentE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE12min_exponentE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE13has_quiet_NaNE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE14is_specializedE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE14max_exponent10E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE14min_exponent10E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE15has_denorm_lossE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE15tinyness_beforeE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE17has_signaling_NaNE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE5radixE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE5trapsE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE6digitsE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE8digits10E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE8is_exactE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE9is_iec559E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE9is_moduloE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE9is_signedE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE10has_denormE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE10is_boundedE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE10is_integerE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE11round_styleE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE12has_infinityE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE12max_digits10E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE12max_exponentE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE12min_exponentE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE13has_quiet_NaNE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE14is_specializedE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE14max_exponent10E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE14min_exponent10E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE15has_denorm_lossE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE15tinyness_beforeE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE17has_signaling_NaNE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE5radixE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE5trapsE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE6digitsE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE8digits10E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE8is_exactE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE9is_iec559E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE9is_moduloE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE9is_signedE@GLIBCXX_3.4.17 4.7 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.32bit +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.32bit @@ -0,0 +1,554 @@ +#include "libstdc++6.symbols.common" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEj@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base9_M_refillEj@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcj@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEjj@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx9free_list6_M_getEj@GLIBCXX_3.4.4 4.1.1 + _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE2atEj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE6substrEjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKw@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEEixEj@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEjjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEjjPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSs16find_last_not_ofEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs2atEj@GLIBCXX_3.4 4.1.1 + _ZNKSs4copyEPcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs4findERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs6substrEjj@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEjjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEjjPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEjjRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEjjRKSsjj@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_checkEjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_limitEjj@GLIBCXX_3.4 4.1.1 + _ZNKSsixEj@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE6_M_putEPcjPKcPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE6_M_putEPwjPKwPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_j@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_j@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE12_M_transformEPcPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE12_M_transformEPwPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS6_PcS7_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@GLIBCXX_3.4 4.1.1 + _ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEj@GLIBCXX_3.4.18 4.8 + _ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEjjj@GLIBCXX_3.4.18 4.8 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5 + _ZNKSt8valarrayIjE4sizeEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE10_S_compareEjj@GLIBCXX_3.4.16 4.6.0 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEjwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EjwRKS1_@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEjjPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE2atEj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_j@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEjjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5eraseEjj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_jw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7reserveEj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEixEj@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPci@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPcic@GLIBCXX_3.4 4.1.1 + _ZNSi4readEPci@GLIBCXX_3.4 4.1.1 + _ZNSi5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEi@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEi@GLIBCXX_3.4.5 4.1.1 + _ZNSi6ignoreEii@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPci@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPcic@GLIBCXX_3.4 4.1.1 + _ZNSi8readsomeEPci@GLIBCXX_3.4 4.1.1 + _ZNSo5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSo5writeEPKci@GLIBCXX_3.4 4.1.1 + _ZNSo8_M_writeEPKci@GLIBCXX_3.4 4.1.1 + _ZNSs10_S_compareEjj@GLIBCXX_3.4.16 4.6.0 + _ZNSs12_S_constructEjcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs14_M_replace_auxEjjjc@GLIBCXX_3.4 4.1.1 + _ZNSs15_M_replace_safeEjjPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs18_S_construct_aux_2EjcRKSaIcE@GLIBCXX_3.4.14 4.5 + _ZNSs2atEj@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4.5 4.1.1 + _ZNSs4_Rep8_M_cloneERKSaIcEj@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep9_S_createEjjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs5eraseEjj@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs6appendERKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEjc@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs6assignERKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEjc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEjc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjPKc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjRKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjjc@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEj@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEjc@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcj@GLIBCXX_3.4.5 4.1.1 + _ZNSs7_M_moveEPcPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_moveEPcPKcj@GLIBCXX_3.4.5 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcj@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_jc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjPKc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjRKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjjc@GLIBCXX_3.4 4.1.1 + _ZNSs7reserveEj@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcjc@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcjc@GLIBCXX_3.4.5 4.1.1 + _ZNSs9_M_mutateEjjj@GLIBCXX_3.4 4.1.1 + _ZNSsC1EPKcjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsjjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1EjcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EPKcjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsjjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EjcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsixEj@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPci@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt11this_thread11__sleep_forENSt6chrono8durationIxSt5ratioILx1ELx1EEEENS1_IxS2_ILx1ELx1000000000EEEE@GLIBCXX_3.4.18 4.8 + _ZNSt11__timepunctIcEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_allocEj@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_setupEPcS0_i@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPFPvjEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKai@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKhi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPaiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPciS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPhiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1Ei@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPFPvjEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKai@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKhi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPaiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPciS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPhiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2Ei@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4.5 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1 + (arch=!powerpc !powerpcspe !ppc64 !sparc)_ZNSt14numeric_limitsIeE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_gbumpEi@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_pbumpEi@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_gbumpEi@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_pbumpEi@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS4_x@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS4_x@GLIBCXX_3.4.16 4.6.0 + _ZNSt15messages_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EP15__locale_structPKtbj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EPKtbj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EP15__locale_structPKtbj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EPKtbj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj@GLIBCXX_3.4.7 4.1.1 + _ZNSt6locale5_ImplC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1ERKS0_j@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2ERKS0_j@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEC1ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEC2ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEixEj@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZSt11_Hash_bytesPKvjj@CXXABI_1.3.5 4.6 + _ZSt15_Fnv_hash_bytesPKvjj@CXXABI_1.3.5 4.6 + _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1 + _ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1 + _ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1 + _ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1 + _ZSt17__verify_groupingPKcjRKSs@GLIBCXX_3.4.10 4.3 + _ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZThn8_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSiD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSiD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSoD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSoD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10istrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10istrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10ostrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10ostrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _Znaj@GLIBCXX_3.4 4.1.1 + _ZnajRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _Znwj@GLIBCXX_3.4 4.1.1 + _ZnwjRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.32bit.hurd +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.32bit.hurd @@ -0,0 +1,536 @@ +#include "libstdc++6.symbols.common" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEj@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base9_M_refillEj@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcj@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEjj@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx9free_list6_M_getEj@GLIBCXX_3.4.4 4.1.1 + _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE2atEj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE6substrEjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKw@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEEixEj@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEjjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEjjPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSs16find_last_not_ofEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs2atEj@GLIBCXX_3.4 4.1.1 + _ZNKSs4copyEPcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs4findERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs6substrEjj@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEjjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEjjPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEjjRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEjjRKSsjj@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_checkEjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_limitEjj@GLIBCXX_3.4 4.1.1 + _ZNKSsixEj@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE6_M_putEPcjPKcPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE6_M_putEPwjPKwPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_j@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_j@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE12_M_transformEPcPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE12_M_transformEPwPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS6_PcS7_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8valarrayIjE4sizeEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEjwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEjjPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE2atEj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_j@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEjjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5eraseEjj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_jw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7reserveEj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEixEj@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPci@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPcic@GLIBCXX_3.4 4.1.1 + _ZNSi4readEPci@GLIBCXX_3.4 4.1.1 + _ZNSi5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEi@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEi@GLIBCXX_3.4.5 4.1.1 + _ZNSi6ignoreEii@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPci@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPcic@GLIBCXX_3.4 4.1.1 + _ZNSi8readsomeEPci@GLIBCXX_3.4 4.1.1 + _ZNSo5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSo5writeEPKci@GLIBCXX_3.4 4.1.1 + _ZNSo8_M_writeEPKci@GLIBCXX_3.4 4.1.1 + _ZNSs12_S_constructEjcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs14_M_replace_auxEjjjc@GLIBCXX_3.4 4.1.1 + _ZNSs15_M_replace_safeEjjPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs2atEj@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4.5 4.1.1 + _ZNSs4_Rep8_M_cloneERKSaIcEj@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep9_S_createEjjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs5eraseEjj@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs6appendERKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEjc@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs6assignERKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEjc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEjc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjPKc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjRKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjjc@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEj@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEjc@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcj@GLIBCXX_3.4.5 4.1.1 + _ZNSs7_M_moveEPcPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_moveEPcPKcj@GLIBCXX_3.4.5 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcj@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_jc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjPKc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjRKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjjc@GLIBCXX_3.4 4.1.1 + _ZNSs7reserveEj@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcjc@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcjc@GLIBCXX_3.4.5 4.1.1 + _ZNSs9_M_mutateEjjj@GLIBCXX_3.4 4.1.1 + _ZNSsC1EPKcjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsjjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1EjcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EPKcjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsjjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EjcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsixEj@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPci@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_allocEj@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_setupEPcS0_i@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPFPvjEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKai@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKhi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPaiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPciS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPhiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1Ei@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPFPvjEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKai@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKhi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPaiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPciS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPhiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2Ei@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4.5 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EP15__locale_structPKtbj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EPKtbj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EP15__locale_structPKtbj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EPKtbj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj@GLIBCXX_3.4.7 4.1.1 + _ZNSt6locale5_ImplC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1ERKS0_j@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2ERKS0_j@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEC1ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEC2ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEixEj@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1 + _ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1 + _ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1 + _ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1 + _ZSt17__verify_groupingPKcjRKSs@GLIBCXX_3.4.10 4.3 + _ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZThn8_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSiD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSiD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSoD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSoD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10istrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10istrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10ostrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10ostrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _Znaj@GLIBCXX_3.4 4.1.1 + _ZnajRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _Znwj@GLIBCXX_3.4 4.1.1 + _ZnwjRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcEC1EP15__pthread_mutex@GLIBCXX_3.4 4.3.0 + _ZNSt12__basic_fileIcEC2EP15__pthread_mutex@GLIBCXX_3.4 4.3.0 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.64bit +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.64bit @@ -0,0 +1,559 @@ +#include "libstdc++6.symbols.common" + _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPcl@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKcl@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwl@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwl@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx9free_list6_M_getEm@GLIBCXX_3.4.4 4.1.1 + _ZNK10__cxxabiv117__class_type_info12__do_dyncastElNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcElPKvPKS0_S2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSs16find_last_not_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs2atEm@GLIBCXX_3.4 4.1.1 + _ZNKSs4copyEPcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs6substrEmm@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_checkEmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_limitEmm@GLIBCXX_3.4 4.1.1 + _ZNKSsixEm@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE12_M_transformEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE12_M_transformEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEclRSt8ios_basePcPKcRi@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwlRSt8ios_basePwPKwRi@GLIBCXX_3.4 4.1.1 + _ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEm@GLIBCXX_3.4.18 4.8 + _ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm@GLIBCXX_3.4.18 4.8 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5 + _ZNKSt8valarrayImE4sizeEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE10_S_compareEmm@GLIBCXX_3.4.16 4.6.0 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7reserveEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPcl@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPclc@GLIBCXX_3.4 4.1.1 + _ZNSi4readEPcl@GLIBCXX_3.4 4.1.1 + _ZNSi5seekgElSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEl@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEl@GLIBCXX_3.4.5 4.1.1 + _ZNSi6ignoreEli@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPcl@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPclc@GLIBCXX_3.4 4.1.1 + _ZNSi8readsomeEPcl@GLIBCXX_3.4 4.1.1 + _ZNSo5seekpElSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSo5writeEPKcl@GLIBCXX_3.4 4.1.1 + _ZNSo8_M_writeEPKcl@GLIBCXX_3.4 4.1.1 + _ZNSs10_S_compareEmm@GLIBCXX_3.4.16 4.6.0 + _ZNSs12_S_constructEmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs14_M_replace_auxEmmmc@GLIBCXX_3.4 4.1.1 + _ZNSs15_M_replace_safeEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs18_S_construct_aux_2EmcRKSaIcE@GLIBCXX_3.4.14 4.5 + _ZNSs2atEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4.5 4.1.1 + _ZNSs4_Rep8_M_cloneERKSaIcEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep9_S_createEmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs5eraseEmm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6assignERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmPKc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmmc@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEm@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEmc@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4.5 4.1.1 + _ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4.5 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmmc@GLIBCXX_3.4 4.1.1 + _ZNSs7reserveEm@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcmc@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcmc@GLIBCXX_3.4.5 4.1.1 + _ZNSs9_M_mutateEmmm@GLIBCXX_3.4 4.1.1 + _ZNSsC1EPKcmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1EmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EPKcmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsixEm@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPKcl@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPcl@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPKcl@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPcl@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt11this_thread11__sleep_forENSt6chrono8durationIlSt5ratioILl1ELl1EEEENS1_IlS2_ILl1ELl1000000000EEEE@GLIBCXX_3.4.18 4.8 + _ZNSt11__timepunctIcEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsgetnEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsputnEPKcl@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE7seekoffElSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE8xsputn_2EPKclS2_l@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf6setbufEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_allocEm@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_setupEPcS0_l@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPFPvmEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKal@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKcl@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKhl@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPalS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPclS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPhlS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1El@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPFPvmEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKal@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKcl@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKhl@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPalS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPclS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPhlS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2El@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKcl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwlw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgElSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@GLIBCXX_3.4.5 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreElj@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwlw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpElSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwl@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + (arch=!alpha !powerpc !ppc64 !ppc64el !s390 !s390x)_ZNSt14numeric_limitsIeE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_gbumpEl@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_pbumpEl@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKcl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKcl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS4_l@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_gbumpEl@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_pbumpEl@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS4_l@GLIBCXX_3.4.16 4.6.0 + _ZNSt15messages_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EP15__locale_structPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EP15__locale_structPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm@GLIBCXX_3.4.7 4.1.1 + _ZNSt6locale5_ImplC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1ERKS0_m@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2ERKS0_m@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC1ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC2ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEixEm@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZSt11_Hash_bytesPKvmm@CXXABI_1.3.5 4.6 + _ZSt15_Fnv_hash_bytesPKvmm@CXXABI_1.3.5 4.6 + _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@GLIBCXX_3.4.9 4.2.1 + _ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_l@GLIBCXX_3.4.9 4.2.1 + _ZSt17__copy_streambufsIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.8 4.1.1 + _ZSt17__copy_streambufsIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.8 4.1.1 + _ZSt17__verify_groupingPKcmRKSs@GLIBCXX_3.4.10 4.3 + _ZSt21__copy_streambufs_eofIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZSt21__copy_streambufs_eofIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZTIPKn@CXXABI_1.3.5 4.6 + _ZTIPKo@CXXABI_1.3.5 4.6 + _ZTIPn@CXXABI_1.3.5 4.6 + _ZTIPo@CXXABI_1.3.5 4.6 + _ZTIn@CXXABI_1.3.5 4.6 + _ZTIo@CXXABI_1.3.5 4.6 + _ZThn16_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSiD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSiD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSoD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSoD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt10istrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt10istrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt10ostrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt10ostrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _Znam@GLIBCXX_3.4 4.1.1 + _ZnamRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _Znwm@GLIBCXX_3.4 4.1.1 + _ZnwmRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.alpha +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.alpha @@ -0,0 +1,55 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.64bit" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNSt14numeric_limitsInE10has_denormE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE10is_boundedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE10is_integerE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE11round_styleE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE12has_infinityE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE12max_digits10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE12max_exponentE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE12min_exponentE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE13has_quiet_NaNE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE14is_specializedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE14max_exponent10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE14min_exponent10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE15has_denorm_lossE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE15tinyness_beforeE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE17has_signaling_NaNE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE5radixE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE5trapsE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE6digitsE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE8digits10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE8is_exactE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE9is_iec559E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE9is_moduloE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE9is_signedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE10has_denormE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE10is_boundedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE10is_integerE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE11round_styleE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE12has_infinityE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE12max_digits10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE12max_exponentE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE12min_exponentE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE13has_quiet_NaNE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE14is_specializedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE14max_exponent10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE14min_exponent10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE15has_denorm_lossE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE15tinyness_beforeE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE17has_signaling_NaNE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE5radixE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE5trapsE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE6digitsE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE8digits10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE8is_exactE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE9is_iec559E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE9is_moduloE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE9is_signedE@GLIBCXX_3.4.17 4.8 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.amd64 +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.amd64 @@ -0,0 +1,15 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 + (optional)_Z16__VLTRegisterSetPPvPKvmmS0_@CXXABI_1.3.8 4.9.0 + (optional)_Z17__VLTRegisterPairPPvPKvmS2_@CXXABI_1.3.8 4.9.0 + (optional)_Z21__VLTRegisterSetDebugPPvPKvmmS0_@CXXABI_1.3.8 4.9.0 + (optional)_Z22__VLTRegisterPairDebugPPvPKvmS2_PKcS4_@CXXABI_1.3.8 4.9.0 + (optional)_Z24__VLTVerifyVtablePointerPPvPKv@CXXABI_1.3.8 4.9.0 + (optional)_Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_@CXXABI_1.3.8 4.9.0 + (optional)__VLTChangePermission@CXXABI_1.3.8 4.9.0 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.arm +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.arm @@ -0,0 +1,6 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" + __gxx_personality_sj0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.arm64 +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.arm64 @@ -0,0 +1,9 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.armel +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.armel @@ -0,0 +1,13 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" + CXXABI_ARM_1.3.3@CXXABI_ARM_1.3.3 4.4.0 + _ZNKSt9type_info6beforeERKS_@GLIBCXX_3.4 4.3.0 + _ZNKSt9type_infoeqERKS_@GLIBCXX_3.4 4.3.0 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + __cxa_begin_cleanup@CXXABI_1.3 4.3.0 + __cxa_end_cleanup@CXXABI_1.3 4.3.0 + __cxa_type_match@CXXABI_1.3 4.3.0 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.armhf +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.armhf @@ -0,0 +1,13 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" + CXXABI_ARM_1.3.3@CXXABI_ARM_1.3.3 4.4.0 + _ZNKSt9type_info6beforeERKS_@GLIBCXX_3.4 4.3.0 + _ZNKSt9type_infoeqERKS_@GLIBCXX_3.4 4.3.0 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + __cxa_begin_cleanup@CXXABI_1.3 4.3.0 + __cxa_end_cleanup@CXXABI_1.3 4.3.0 + __cxa_type_match@CXXABI_1.3 4.3.0 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.common +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.common @@ -0,0 +1,3109 @@ + CXXABI_1.3.1@CXXABI_1.3.1 4.1.1 + CXXABI_1.3.2@CXXABI_1.3.2 4.3 + CXXABI_1.3.3@CXXABI_1.3.3 4.4.0 + CXXABI_1.3.4@CXXABI_1.3.4 4.5 + CXXABI_1.3.5@CXXABI_1.3.5 4.6 + CXXABI_1.3.6@CXXABI_1.3.6 4.7 + CXXABI_1.3.7@CXXABI_1.3.7 4.8 + CXXABI_1.3.8@CXXABI_1.3.8 4.9 + CXXABI_1.3@CXXABI_1.3 4.1.1 + CXXABI_TM_1@CXXABI_TM_1 4.7 + GLIBCXX_3.4.10@GLIBCXX_3.4.10 4.3 + GLIBCXX_3.4.11@GLIBCXX_3.4.11 4.4.0 + GLIBCXX_3.4.12@GLIBCXX_3.4.12 4.4.0 + GLIBCXX_3.4.13@GLIBCXX_3.4.13 4.4.2 + GLIBCXX_3.4.14@GLIBCXX_3.4.14 4.5 + GLIBCXX_3.4.15@GLIBCXX_3.4.15 4.6 + GLIBCXX_3.4.16@GLIBCXX_3.4.16 4.6.0 + GLIBCXX_3.4.17@GLIBCXX_3.4.17 4.7 + GLIBCXX_3.4.18@GLIBCXX_3.4.18 4.8 + GLIBCXX_3.4.19@GLIBCXX_3.4.19 4.8 + GLIBCXX_3.4.1@GLIBCXX_3.4.1 4.1.1 + GLIBCXX_3.4.20@GLIBCXX_3.4.20 4.9 + GLIBCXX_3.4.2@GLIBCXX_3.4.2 4.1.1 + GLIBCXX_3.4.3@GLIBCXX_3.4.3 4.1.1 + GLIBCXX_3.4.4@GLIBCXX_3.4.4 4.1.1 + GLIBCXX_3.4.5@GLIBCXX_3.4.5 4.1.1 + GLIBCXX_3.4.6@GLIBCXX_3.4.6 4.1.1 + GLIBCXX_3.4.7@GLIBCXX_3.4.7 4.1.1 + GLIBCXX_3.4.8@GLIBCXX_3.4.8 4.1.1 + GLIBCXX_3.4.9@GLIBCXX_3.4.9 4.2.1 + GLIBCXX_3.4@GLIBCXX_3.4 4.1.1 + _ZGVNSt10moneypunctIcLb0EE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt10moneypunctIcLb1EE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt10moneypunctIwLb0EE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt10moneypunctIwLb1EE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt11__timepunctIcE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt11__timepunctIwE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt7collateIcE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt7collateIwE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt8messagesIcE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt8messagesIwE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt8numpunctIcE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt8numpunctIwE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZN10__cxxabiv116__enum_type_infoD0Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv116__enum_type_infoD1Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv116__enum_type_infoD2Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv117__array_type_infoD0Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv117__array_type_infoD1Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv117__array_type_infoD2Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv117__class_type_infoD0Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv117__class_type_infoD1Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv117__class_type_infoD2Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv117__pbase_type_infoD0Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv117__pbase_type_infoD1Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv117__pbase_type_infoD2Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv119__pointer_type_infoD0Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv119__pointer_type_infoD1Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv119__pointer_type_infoD2Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv120__function_type_infoD0Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv120__function_type_infoD1Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv120__function_type_infoD2Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv120__si_class_type_infoD0Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv120__si_class_type_infoD1Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv120__si_class_type_infoD2Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv121__vmi_class_type_infoD0Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv121__vmi_class_type_infoD1Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv121__vmi_class_type_infoD2Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv123__fundamental_type_infoD0Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv123__fundamental_type_infoD1Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv123__fundamental_type_infoD2Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@CXXABI_1.3 4.1.1 + _ZN10__gnu_norm15_List_node_base4hookEPS0_@GLIBCXX_3.4 4.1.1 + _ZN10__gnu_norm15_List_node_base4swapERS0_S1_@GLIBCXX_3.4 4.1.1 + _ZN10__gnu_norm15_List_node_base6unhookEv@GLIBCXX_3.4 4.1.1 + _ZN10__gnu_norm15_List_node_base7reverseEv@GLIBCXX_3.4 4.1.1 + _ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@GLIBCXX_3.4 4.1.1 + _ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@GLIBCXX_3.4.9 4.2.1 + _ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@GLIBCXX_3.4.9 4.2.1 + _ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@GLIBCXX_3.4.9 4.2.1 + _ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@GLIBCXX_3.4 4.1.1 + _ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@GLIBCXX_3.4 4.1.1 + _ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@GLIBCXX_3.4.9 4.2.1 + _ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@GLIBCXX_3.4 4.1.1 + _ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@GLIBCXX_3.4 4.1.1 + _ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@GLIBCXX_3.4 4.1.1 + _ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@GLIBCXX_3.4 4.1.1 + _ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@GLIBCXX_3.4.17 4.7 + _ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@GLIBCXX_3.4.17 4.7 + _ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@GLIBCXX_3.4.17 4.7 + _ZN11__gnu_debug30_Safe_unordered_container_base7_M_swapERS0_@GLIBCXX_3.4.17 4.7 + _ZN14__gnu_parallel9_Settings3getEv@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN14__gnu_parallel9_Settings3setERS0_@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP8_IO_FILE@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP8_IO_FILE@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEj@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEj@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP8_IO_FILE@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP8_IO_FILE@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx27__verbose_terminate_handlerEv@CXXABI_1.3 4.1.1 + _ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@GLIBCXX_3.4.6 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx9free_list8_M_clearEv@GLIBCXX_3.4.4 4.1.1 + _ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__function_type_info15__is_function_pEv@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@CXXABI_1.3 4.1.1 + _ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@GLIBCXX_3.4 4.1.1 + _ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@GLIBCXX_3.4 4.1.1 + _ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@GLIBCXX_3.4 4.1.1 + _ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@GLIBCXX_3.4 4.1.1 + _ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@GLIBCXX_3.4 4.1.1 + _ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@GLIBCXX_3.4.10 4.3 + _ZNK11__gnu_debug16_Error_formatter8_M_errorEv@GLIBCXX_3.4 4.1.1 + _ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@GLIBCXX_3.4 4.1.1 + _ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4.5 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE3endEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4backEv@GLIBCXX_3.4.15 4.6 + _ZNKSbIwSt11char_traitsIwESaIwEE4cendEv@GLIBCXX_3.4.14 4.5 + _ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5crendEv@GLIBCXX_3.4.14 4.5 + _ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5frontEv@GLIBCXX_3.4.15 4.6 + _ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE6cbeginEv@GLIBCXX_3.4.14 4.5 + _ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv@GLIBCXX_3.4.14 4.5 + _ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@GLIBCXX_3.4 4.1.1 + _ZNKSi6gcountEv@GLIBCXX_3.4 4.1.1 + _ZNKSi6sentrycvbEv@GLIBCXX_3.4 4.1.1 + _ZNKSo6sentrycvbEv@GLIBCXX_3.4 4.1.1 + _ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSs13get_allocatorEv@GLIBCXX_3.4 4.1.1 + _ZNKSs3endEv@GLIBCXX_3.4 4.1.1 + _ZNKSs4_Rep12_M_is_leakedEv@GLIBCXX_3.4 4.1.1 + _ZNKSs4_Rep12_M_is_sharedEv@GLIBCXX_3.4 4.1.1 + _ZNKSs4backEv@GLIBCXX_3.4.15 4.6 + _ZNKSs4cendEv@GLIBCXX_3.4.14 4.5 + _ZNKSs4dataEv@GLIBCXX_3.4 4.1.1 + _ZNKSs4rendEv@GLIBCXX_3.4 4.1.1 + _ZNKSs4sizeEv@GLIBCXX_3.4 4.1.1 + _ZNKSs5beginEv@GLIBCXX_3.4 4.1.1 + _ZNKSs5c_strEv@GLIBCXX_3.4 4.1.1 + _ZNKSs5crendEv@GLIBCXX_3.4.14 4.5 + _ZNKSs5emptyEv@GLIBCXX_3.4 4.1.1 + _ZNKSs5frontEv@GLIBCXX_3.4.15 4.6 + _ZNKSs6_M_repEv@GLIBCXX_3.4 4.1.1 + _ZNKSs6cbeginEv@GLIBCXX_3.4.14 4.5 + _ZNKSs6lengthEv@GLIBCXX_3.4 4.1.1 + _ZNKSs6rbeginEv@GLIBCXX_3.4 4.1.1 + _ZNKSs7_M_dataEv@GLIBCXX_3.4 4.1.1 + _ZNKSs7_M_iendEv@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareERKSs@GLIBCXX_3.4 4.1.1 + _ZNKSs7crbeginEv@GLIBCXX_3.4.14 4.5 + _ZNKSs8capacityEv@GLIBCXX_3.4 4.1.1 + _ZNKSs8max_sizeEv@GLIBCXX_3.4 4.1.1 + _ZNKSs9_M_ibeginEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10bad_typeid4whatEv@GLIBCXX_3.4.9 4.2.1 + _ZNKSt10error_code23default_error_conditionEv@GLIBCXX_3.4.11 4.4.0 + _ZNKSt10istrstream5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10lock_error4whatEv@GLIBCXX_3.4.11 4.4.0 + _ZNKSt10moneypunctIcLb0EE10neg_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE10pos_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE11curr_symbolEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE11do_groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE11frac_digitsEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE13decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE13negative_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE13positive_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE13thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE16do_negative_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE16do_positive_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE8groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE10neg_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE10pos_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE11curr_symbolEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE11do_groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE11frac_digitsEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE13decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE13negative_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE13positive_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE13thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE16do_negative_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE16do_positive_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE8groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE10neg_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE10pos_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE11curr_symbolEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE11do_groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE11frac_digitsEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE13decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE13negative_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE13positive_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE13thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE16do_negative_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE16do_positive_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE8groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE10neg_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE10pos_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE11curr_symbolEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE11do_groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE11frac_digitsEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE13decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE13negative_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE13positive_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE13thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE16do_negative_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE16do_positive_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE8groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10ostrstream5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10ostrstream6pcountEv@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE7_M_daysEPPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE8_M_am_pmEPPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE9_M_monthsEPPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE7_M_daysEPPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE8_M_am_pmEPPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE9_M_monthsEPPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt11logic_error4whatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt12__basic_fileIcE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNKSt12bad_weak_ptr4whatEv@GLIBCXX_3.4.15 4.6 + _ZNKSt12future_error4whatEv@GLIBCXX_3.4.14 4.5 + _ZNKSt12strstreambuf6pcountEv@GLIBCXX_3.4 4.1.1 + _ZNKSt13bad_exception4whatEv@GLIBCXX_3.4.9 4.2.1 + _ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4.5 4.1.1 + _ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4.5 4.1.1 + _ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@GLIBCXX_3.4 4.1.1 + _ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@GLIBCXX_3.4 4.1.1 + _ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@GLIBCXX_3.4 4.1.1 + _ZNKSt13runtime_error4whatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4.5 4.1.1 + _ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4.5 4.1.1 + _ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4.5 4.1.1 + _ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4.5 4.1.1 + _ZNKSt14error_category10equivalentERKSt10error_codei@GLIBCXX_3.4.11 4.4.0 + _ZNKSt14error_category10equivalentEiRKSt15error_condition@GLIBCXX_3.4.11 4.4.0 + _ZNKSt14error_category23default_error_conditionEi@GLIBCXX_3.4.11 4.4.0 + _ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@GLIBCXX_3.4 4.1.1 + _ZNKSt16bad_array_length4whatEv@CXXABI_1.3.8 4.9 + _ZNKSt17bad_function_call4whatEv@GLIBCXX_3.4.18 4.8 + _ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4 4.1.1 + _ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@GLIBCXX_3.4 4.1.1 + _ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4 4.1.1 + _ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@GLIBCXX_3.4 4.1.1 + _ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4 4.1.1 + _ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@GLIBCXX_3.4 4.1.1 + _ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt20bad_array_new_length4whatEv@CXXABI_1.3.8 4.9 + _ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@GLIBCXX_3.4.10 4.3 + _ZNKSt3tr14hashIRKSsEclES2_@GLIBCXX_3.4.10 4.3 + _ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@GLIBCXX_3.4.10 4.3 + _ZNKSt3tr14hashISsEclESs@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIRKSsEclES1_@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashISsEclESs@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashISt10error_codeEclES0_@GLIBCXX_3.4.11 4.4.0 + _ZNKSt5ctypeIcE10do_tolowerEPcPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIcE10do_tolowerEc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIcE10do_toupperEPcPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIcE10do_toupperEc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIcE13_M_widen_initEv@GLIBCXX_3.4.11 4.4.0 + _ZNKSt5ctypeIcE14_M_narrow_initEv@GLIBCXX_3.4.11 4.4.0 + _ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIcE8do_widenEc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIcE9do_narrowEcc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE10do_scan_isEtPKwS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE10do_tolowerEPwPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE10do_tolowerEw@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE10do_toupperEPwPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE10do_toupperEw@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE11do_scan_notEtPKwS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE19_M_convert_to_wmaskEt@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE5do_isEPKwS2_Pt@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE5do_isEtw@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE8do_widenEc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE9do_narrowEwc@GLIBCXX_3.4 4.1.1 + _ZNKSt6locale2id5_M_idEv@GLIBCXX_3.4 4.1.1 + _ZNKSt6locale4nameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt6localeeqERKS_@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE10_M_compareEPKcS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE12do_transformEPKcS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE4hashEPKcS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE7compareEPKcS2_S2_S2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE7do_hashEPKcS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE9transformEPKcS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE10_M_compareEPKwS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE12do_transformEPKwS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE4hashEPKwS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE7compareEPKwS2_S2_S2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE7do_hashEPKwS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE9transformEPKwS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@GLIBCXX_3.4 4.1.1 + _ZNKSt8bad_cast4whatEv@GLIBCXX_3.4.9 4.2.1 + _ZNKSt8ios_base7failure4whatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE18_M_convert_to_charERKSs@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE20_M_convert_from_charEPc@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE3getEiiiRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE4openERKSsRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE4openERKSsRKSt6localePKc@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE5closeEi@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE6do_getEiiiRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE7do_openERKSsRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE8do_closeEi@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE20_M_convert_from_charEPc@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE4openERKSsRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE4openERKSsRKSt6localePKc@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE5closeEi@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE7do_openERKSsRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE8do_closeEi@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE11do_groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE11do_truenameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE12do_falsenameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE13decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE13thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE16do_decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE16do_thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE8groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE8truenameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE9falsenameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE11do_groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE11do_truenameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE12do_falsenameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE13decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE13thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE16do_decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE16do_thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE8groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE8truenameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE9falsenameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@GLIBCXX_3.4 4.1.1 + _ZNKSt9bad_alloc4whatEv@GLIBCXX_3.4.9 4.2.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9exception4whatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt9strstream5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9strstream6pcountEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9type_info10__do_catchEPKS_PPvj@GLIBCXX_3.4 4.1.1 + _ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@GLIBCXX_3.4 4.1.1 + _ZNKSt9type_info14__is_pointer_pEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9type_info15__is_function_pEv@GLIBCXX_3.4 4.1.1 + _ZNSaIcEC1ERKS_@GLIBCXX_3.4 4.1.1 + _ZNSaIcEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSaIcEC2ERKS_@GLIBCXX_3.4 4.1.1 + _ZNSaIcEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSaIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSaIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSaIwEC1ERKS_@GLIBCXX_3.4 4.1.1 + _ZNSaIwEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSaIwEC2ERKS_@GLIBCXX_3.4 4.1.1 + _ZNSaIwEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSaIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSaIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIN9__gnu_cxx17__normal_iteratorIPwS2_EEEES6_T_S8_RKS1_St20forward_iterator_tag@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEE3endEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4backEv@GLIBCXX_3.4.15 4.6 + _ZNSbIwSt11char_traitsIwESaIwEE4nposE@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4rendEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5beginEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5clearEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5frontEv@GLIBCXX_3.4.15 4.6 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@GLIBCXX_3.4.11 4.4.0 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEOS2_@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@GLIBCXX_3.4.11 4.4.0 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@GLIBCXX_3.4.11 4.4.0 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@GLIBCXX_3.4.11 4.4.0 + _ZNSbIwSt11char_traitsIwESaIwEE8pop_backEv@GLIBCXX_3.4.17 4.7 + _ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@GLIBCXX_3.4.15 4.6 + _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@GLIBCXX_3.4.11 4.4.0 + _ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@GLIBCXX_3.4.11 4.4.0 + _ZNSbIwSt11char_traitsIwESaIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEaSEOS2_@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@GLIBCXX_3.4.11 4.4.0 + _ZNSbIwSt11char_traitsIwESaIwEEaSEw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@GLIBCXX_3.4.11 4.4.0 + _ZNSbIwSt11char_traitsIwESaIwEEpLEw@GLIBCXX_3.4 4.1.1 + _ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSdC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSdC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSdD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSi10_M_extractIPvEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractIbEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractIdEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractIeEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractIfEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractIjEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractIlEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractImEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractItEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractIxEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractIyEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@GLIBCXX_3.4 4.1.1 + _ZNSi3getERc@GLIBCXX_3.4 4.1.1 + _ZNSi3getEv@GLIBCXX_3.4 4.1.1 + _ZNSi4peekEv@GLIBCXX_3.4 4.1.1 + _ZNSi4syncEv@GLIBCXX_3.4 4.1.1 + _ZNSi5seekgESt4fposI11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZNSi5tellgEv@GLIBCXX_3.4 4.1.1 + _ZNSi5ungetEv@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEv@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEv@GLIBCXX_3.4.5 4.1.1 + _ZNSi6sentryC1ERSib@GLIBCXX_3.4 4.1.1 + _ZNSi6sentryC2ERSib@GLIBCXX_3.4 4.1.1 + _ZNSi7putbackEc@GLIBCXX_3.4 4.1.1 + _ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSiC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSiC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSiD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSiD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSiD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSirsEPFRSiS_E@GLIBCXX_3.4 4.1.1 + _ZNSirsEPFRSt8ios_baseS0_E@GLIBCXX_3.4 4.1.1 + _ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@GLIBCXX_3.4 4.1.1 + _ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSirsERPv@GLIBCXX_3.4 4.1.1 + _ZNSirsERb@GLIBCXX_3.4 4.1.1 + _ZNSirsERd@GLIBCXX_3.4 4.1.1 + _ZNSirsERe@GLIBCXX_3.4 4.1.1 + _ZNSirsERf@GLIBCXX_3.4 4.1.1 + _ZNSirsERi@GLIBCXX_3.4 4.1.1 + _ZNSirsERj@GLIBCXX_3.4 4.1.1 + _ZNSirsERl@GLIBCXX_3.4 4.1.1 + _ZNSirsERm@GLIBCXX_3.4 4.1.1 + _ZNSirsERs@GLIBCXX_3.4 4.1.1 + _ZNSirsERt@GLIBCXX_3.4 4.1.1 + _ZNSirsERx@GLIBCXX_3.4 4.1.1 + _ZNSirsERy@GLIBCXX_3.4 4.1.1 + _ZNSo3putEc@GLIBCXX_3.4 4.1.1 + _ZNSo5flushEv@GLIBCXX_3.4 4.1.1 + _ZNSo5seekpESt4fposI11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZNSo5tellpEv@GLIBCXX_3.4 4.1.1 + _ZNSo6sentryC1ERSo@GLIBCXX_3.4 4.1.1 + _ZNSo6sentryC2ERSo@GLIBCXX_3.4 4.1.1 + _ZNSo6sentryD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSo6sentryD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSo9_M_insertIPKvEERSoT_@GLIBCXX_3.4.9 4.2.1 + _ZNSo9_M_insertIbEERSoT_@GLIBCXX_3.4.9 4.2.1 + _ZNSo9_M_insertIdEERSoT_@GLIBCXX_3.4.9 4.2.1 + _ZNSo9_M_insertIeEERSoT_@GLIBCXX_3.4.9 4.2.1 + _ZNSo9_M_insertIlEERSoT_@GLIBCXX_3.4.9 4.2.1 + _ZNSo9_M_insertImEERSoT_@GLIBCXX_3.4.9 4.2.1 + _ZNSo9_M_insertIxEERSoT_@GLIBCXX_3.4.9 4.2.1 + _ZNSo9_M_insertIyEERSoT_@GLIBCXX_3.4.9 4.2.1 + _ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSoC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSoC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSoD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSoD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSoD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSolsEPFRSoS_E@GLIBCXX_3.4 4.1.1 + _ZNSolsEPFRSt8ios_baseS0_E@GLIBCXX_3.4 4.1.1 + _ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@GLIBCXX_3.4 4.1.1 + _ZNSolsEPKv@GLIBCXX_3.4 4.1.1 + _ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSolsEb@GLIBCXX_3.4 4.1.1 + _ZNSolsEd@GLIBCXX_3.4 4.1.1 + _ZNSolsEe@GLIBCXX_3.4 4.1.1 + _ZNSolsEf@GLIBCXX_3.4 4.1.1 + _ZNSolsEi@GLIBCXX_3.4 4.1.1 + _ZNSolsEj@GLIBCXX_3.4 4.1.1 + _ZNSolsEl@GLIBCXX_3.4 4.1.1 + _ZNSolsEm@GLIBCXX_3.4 4.1.1 + _ZNSolsEs@GLIBCXX_3.4 4.1.1 + _ZNSolsEt@GLIBCXX_3.4 4.1.1 + _ZNSolsEx@GLIBCXX_3.4 4.1.1 + _ZNSolsEy@GLIBCXX_3.4 4.1.1 + _ZNSs12_Alloc_hiderC1EPcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs12_Alloc_hiderC2EPcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs12_M_leak_hardEv@GLIBCXX_3.4 4.1.1 + _ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt20forward_iterator_tag@GLIBCXX_3.4.14 4.5 + _ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@GLIBCXX_3.4.14 4.5 + _ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@GLIBCXX_3.4.14 4.5 + _ZNSs12_S_empty_repEv@GLIBCXX_3.4 4.1.1 + _ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@GLIBCXX_3.4 4.1.1 + _ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@GLIBCXX_3.4 4.1.1 + _ZNSs13_S_copy_charsEPcPKcS1_@GLIBCXX_3.4 4.1.1 + _ZNSs13_S_copy_charsEPcS_S_@GLIBCXX_3.4 4.1.1 + _ZNSs13shrink_to_fitEv@GLIBCXX_3.4.14 4.5 + _ZNSs3endEv@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep10_M_destroyERKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep10_M_disposeERKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep10_M_refcopyEv@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep10_M_refdataEv@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep11_S_max_sizeE@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep11_S_terminalE@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep12_S_empty_repEv@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep13_M_set_leakedEv@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep15_M_set_sharableEv@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep20_S_empty_rep_storageE@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep7_M_grabERKSaIcES2_@GLIBCXX_3.4 4.1.1 + _ZNSs4backEv@GLIBCXX_3.4.15 4.6 + _ZNSs4nposE@GLIBCXX_3.4 4.1.1 + _ZNSs4rendEv@GLIBCXX_3.4 4.1.1 + _ZNSs4swapERSs@GLIBCXX_3.4 4.1.1 + _ZNSs5beginEv@GLIBCXX_3.4 4.1.1 + _ZNSs5clearEv@GLIBCXX_3.4 4.1.1 + _ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@GLIBCXX_3.4 4.1.1 + _ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@GLIBCXX_3.4 4.1.1 + _ZNSs5frontEv@GLIBCXX_3.4.15 4.6 + _ZNSs6appendEPKc@GLIBCXX_3.4 4.1.1 + _ZNSs6appendERKSs@GLIBCXX_3.4 4.1.1 + _ZNSs6appendESt16initializer_listIcE@GLIBCXX_3.4.11 4.4.0 + _ZNSs6assignEOSs@GLIBCXX_3.4.14 4.5 + _ZNSs6assignEPKc@GLIBCXX_3.4 4.1.1 + _ZNSs6assignERKSs@GLIBCXX_3.4 4.1.1 + _ZNSs6assignESt16initializer_listIcE@GLIBCXX_3.4.11 4.4.0 + _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@GLIBCXX_3.4.11 4.4.0 + _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@GLIBCXX_3.4 4.1.1 + _ZNSs6rbeginEv@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_dataEPc@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_leakEv@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@GLIBCXX_3.4.11 4.4.0 + _ZNSs8pop_backEv@GLIBCXX_3.4.17 4.7 + _ZNSs9push_backEc@GLIBCXX_3.4 4.1.1 + _ZNSsC1EOSs@GLIBCXX_3.4.14 4.5 + _ZNSsC1EPKcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSsC1ESt16initializer_listIcERKSaIcE@GLIBCXX_3.4.11 4.4.0 + _ZNSsC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1IPKcEET_S2_RKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1IPcEET_S1_RKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EOSs@GLIBCXX_3.4.15 4.6 + _ZNSsC2EPKcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSsC2ESt16initializer_listIcERKSaIcE@GLIBCXX_3.4.11 4.4.0 + _ZNSsC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2IPKcEET_S2_RKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2IPcEET_S1_RKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSsD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSsaSEOSs@GLIBCXX_3.4.14 4.5 + _ZNSsaSEPKc@GLIBCXX_3.4 4.1.1 + _ZNSsaSERKSs@GLIBCXX_3.4 4.1.1 + _ZNSsaSESt16initializer_listIcE@GLIBCXX_3.4.11 4.4.0 + _ZNSsaSEc@GLIBCXX_3.4 4.1.1 + _ZNSspLEPKc@GLIBCXX_3.4 4.1.1 + _ZNSspLERKSs@GLIBCXX_3.4 4.1.1 + _ZNSspLESt16initializer_listIcE@GLIBCXX_3.4.11 4.4.0 + _ZNSspLEc@GLIBCXX_3.4 4.1.1 + _ZNSt10__num_base11_S_atoms_inE@GLIBCXX_3.4 4.1.1 + _ZNSt10__num_base12_S_atoms_outE@GLIBCXX_3.4 4.1.1 + _ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@GLIBCXX_3.4 4.1.1 + _ZNSt10bad_typeidD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10bad_typeidD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10bad_typeidD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5alnumE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5alphaE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5cntrlE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5digitE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5graphE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5lowerE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5printE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5punctE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5spaceE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5upperE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base6xdigitE@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstream3strEv@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPKc@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPc@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPKc@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPc@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10money_base18_S_default_patternE@GLIBCXX_3.4 4.1.1 + _ZNSt10money_base20_S_construct_patternEccc@GLIBCXX_3.4 4.1.1 + _ZNSt10money_base8_S_atomsE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EE4intlE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EE4intlE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EE4intlE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EE4intlE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstream3strEv@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstream6freezeEb@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstreamC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstreamC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstreamD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcE23_M_initialize_timepunctEP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwE23_M_initialize_timepunctEP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4 4.1.1 + _ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4.5 4.1.1 + _ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4 4.1.1 + _ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4.5 4.1.1 + _ZNSt11logic_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt11logic_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt11logic_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11logic_errorD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11logic_errorD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11range_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt11range_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt11range_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11range_errorD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11range_errorD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt11regex_errorC1ENSt15regex_constants10error_typeE@GLIBCXX_3.4.20 4.9 + _ZNSt11regex_errorD0Ev@GLIBCXX_3.4.15 4.6 + _ZNSt11regex_errorD1Ev@GLIBCXX_3.4.15 4.6 + _ZNSt11regex_errorD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt12__basic_fileIcE2fdEv@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE4fileEv@GLIBCXX_3.4.1 4.1.1 + _ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE4syncEv@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE8sys_openEP8_IO_FILESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE9showmanycEv@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12bad_weak_ptrD0Ev@GLIBCXX_3.4.15 4.6 + _ZNSt12bad_weak_ptrD1Ev@GLIBCXX_3.4.15 4.6 + _ZNSt12bad_weak_ptrD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt12ctype_bynameIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12domain_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt12domain_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt12domain_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12domain_errorD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12domain_errorD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt12future_errorD0Ev@GLIBCXX_3.4.14 4.5 + _ZNSt12future_errorD1Ev@GLIBCXX_3.4.14 4.5 + _ZNSt12future_errorD2Ev@GLIBCXX_3.4.14 4.5 + _ZNSt12length_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt12length_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt12length_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12length_errorD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12length_errorD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt12out_of_rangeC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt12out_of_rangeC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt12out_of_rangeD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12out_of_rangeD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12out_of_rangeD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_1E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_2E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_3E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_4E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_5E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_6E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_7E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_8E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_9E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_10E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_11E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_12E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_13E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_14E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_15E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_16E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_17E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_18E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_19E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_20E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_21E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_22E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_23E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_24E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_25E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_26E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_27E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_28E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_29E@GLIBCXX_3.4.15 4.6 + _ZNSt12strstreambuf3strEv@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf6freezeEb@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf7_M_freeEPc@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8overflowEi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf9pbackfailEi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf9underflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12system_errorD0Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt12system_errorD1Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt12system_errorD2Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt13__future_base11_State_baseD0Ev@GLIBCXX_3.4.15 4.6 + _ZNSt13__future_base11_State_baseD1Ev@GLIBCXX_3.4.15 4.6 + _ZNSt13__future_base11_State_baseD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt13__future_base12_Result_baseC1Ev@GLIBCXX_3.4.15 4.6 + _ZNSt13__future_base12_Result_baseC2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt13__future_base12_Result_baseD0Ev@GLIBCXX_3.4.15 4.6 + _ZNSt13__future_base12_Result_baseD1Ev@GLIBCXX_3.4.15 4.6 + _ZNSt13__future_base12_Result_baseD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt13__future_base19_Async_state_commonD0Ev@GLIBCXX_3.4.17 4.7.0~rc1 + _ZNSt13__future_base19_Async_state_commonD1Ev@GLIBCXX_3.4.17 4.7.0~rc1 + _ZNSt13__future_base19_Async_state_commonD2Ev@GLIBCXX_3.4.17 4.7.0~rc1 + _ZNSt13bad_exceptionD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13bad_exceptionD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13bad_exceptionD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE14_M_get_ext_posER11__mbstate_t@GLIBCXX_3.4.15 4.6 + _ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE14_M_get_ext_posER11__mbstate_t@GLIBCXX_3.4.15 4.6 + _ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEj@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEj@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4.5 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@GLIBCXX_3.4 4.1.1 + _ZNSt13random_device14_M_init_pretr1ERKSs@GLIBCXX_3.4.18 4.8 + _ZNSt13random_device16_M_getval_pretr1Ev@GLIBCXX_3.4.18 4.8 + _ZNSt13random_device7_M_finiEv@GLIBCXX_3.4.18 4.8 + _ZNSt13random_device7_M_initERKSs@GLIBCXX_3.4.18 4.8 + _ZNSt13random_device9_M_getvalEv@GLIBCXX_3.4.18 4.8 + _ZNSt13runtime_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt13runtime_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt13runtime_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13runtime_errorD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13runtime_errorD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14error_categoryC1Ev@GLIBCXX_3.4.15 4.6 + _ZNSt14error_categoryC2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt14error_categoryD0Ev@GLIBCXX_3.4.15 4.6 + _ZNSt14error_categoryD1Ev@GLIBCXX_3.4.15 4.6 + _ZNSt14error_categoryD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt14numeric_limitsIDiE10has_denormE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE10is_boundedE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE10is_integerE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE11round_styleE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE12has_infinityE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIDiE12max_exponentE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE12min_exponentE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE13has_quiet_NaNE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE14is_specializedE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE14max_exponent10E@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE14min_exponent10E@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE15has_denorm_lossE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE15tinyness_beforeE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE17has_signaling_NaNE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE5radixE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE5trapsE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE6digitsE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE8digits10E@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE8is_exactE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE9is_iec559E@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE9is_moduloE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE9is_signedE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE10has_denormE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE10is_boundedE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE10is_integerE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE11round_styleE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE12has_infinityE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIDsE12max_exponentE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE12min_exponentE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE13has_quiet_NaNE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE14is_specializedE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE14max_exponent10E@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE14min_exponent10E@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE15has_denorm_lossE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE15tinyness_beforeE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE17has_signaling_NaNE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE5radixE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE5trapsE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE6digitsE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE8digits10E@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE8is_exactE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE9is_iec559E@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE9is_moduloE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE9is_signedE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIaE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIaE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIbE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIcE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIdE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIfE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIhE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIiE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIjE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIlE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsImE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIsE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsItE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIwE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIxE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIyE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14overflow_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt14overflow_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt14overflow_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14overflow_errorD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14overflow_errorD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt15_List_node_base10_M_reverseEv@GLIBCXX_3.4.14 4.5 + _ZNSt15_List_node_base11_M_transferEPS_S0_@GLIBCXX_3.4.14 4.5 + _ZNSt15_List_node_base4hookEPS_@GLIBCXX_3.4 4.1.1 + _ZNSt15_List_node_base4swapERS_S0_@GLIBCXX_3.4 4.1.1 + _ZNSt15_List_node_base6unhookEv@GLIBCXX_3.4 4.1.1 + _ZNSt15_List_node_base7_M_hookEPS_@GLIBCXX_3.4.14 4.5 + _ZNSt15_List_node_base7reverseEv@GLIBCXX_3.4 4.1.1 + _ZNSt15_List_node_base8transferEPS_S0_@GLIBCXX_3.4 4.1.1 + _ZNSt15_List_node_base9_M_unhookEv@GLIBCXX_3.4.14 4.5 + _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@GLIBCXX_3.4.10 4.3 + _ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@GLIBCXX_3.4.10 4.3 + _ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@GLIBCXX_3.4.6 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@GLIBCXX_3.4.6 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15underflow_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt15underflow_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt15underflow_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15underflow_errorD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15underflow_errorD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt16bad_array_lengthD0Ev@CXXABI_1.3.8 4.9 + _ZNSt16bad_array_lengthD1Ev@CXXABI_1.3.8 4.9 + _ZNSt16bad_array_lengthD2Ev@CXXABI_1.3.8 4.9 + _ZNSt16invalid_argumentC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt16invalid_argumentC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt16invalid_argumentD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt16invalid_argumentD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt16invalid_argumentD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt16nested_exceptionD0Ev@CXXABI_1.3.5 4.6 + _ZNSt16nested_exceptionD1Ev@CXXABI_1.3.5 4.6 + _ZNSt16nested_exceptionD2Ev@CXXABI_1.3.5 4.6 + _ZNSt17__timepunct_cacheIcE12_S_timezonesE@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwE12_S_timezonesE@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwED2Ev@GLIBCXX_3.4 4.1.1 +#MISSING: 4.6# _ZNSt17bad_function_callD0Ev@CXXABI_1.3.5 4.6 + _ZNSt17bad_function_callD0Ev@GLIBCXX_3.4.15 4.6 +#MISSING: 4.6# _ZNSt17bad_function_callD1Ev@CXXABI_1.3.5 4.6 + _ZNSt17bad_function_callD1Ev@GLIBCXX_3.4.15 4.6 +#MISSING: 4.6# _ZNSt17bad_function_callD2Ev@CXXABI_1.3.5 4.6 + _ZNSt17bad_function_callD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt17moneypunct_bynameIcLb0EE4intlE@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EE4intlE@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EE4intlE@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EE4intlE@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18condition_variable10notify_allEv@GLIBCXX_3.4.11 4.4.0 + _ZNSt18condition_variable10notify_oneEv@GLIBCXX_3.4.11 4.4.0 + _ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@GLIBCXX_3.4.11 4.4.0 + _ZNSt18condition_variableC1Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt18condition_variableC2Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt18condition_variableD1Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt18condition_variableD2Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4 4.1.1 + _ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4.5 4.1.1 + _ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4 4.1.1 + _ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4.5 4.1.1 + _ZNSt20bad_array_new_lengthD0Ev@CXXABI_1.3.8 4.9 + _ZNSt20bad_array_new_lengthD1Ev@CXXABI_1.3.8 4.9 + _ZNSt20bad_array_new_lengthD2Ev@CXXABI_1.3.8 4.9 + _ZNSt21__numeric_limits_base10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt21__numeric_limits_base12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt22condition_variable_anyC1Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt22condition_variable_anyC2Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt22condition_variable_anyD1Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt22condition_variable_anyD2Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt3tr18__detail12__prime_listE@GLIBCXX_3.4.10 4.3 + _ZNSt5ctypeIcE10table_sizeE@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcE13classic_tableEv@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwE19_M_initialize_ctypeEv@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6__norm15_List_node_base10_M_reverseEv@GLIBCXX_3.4.14 4.5 + _ZNSt6__norm15_List_node_base11_M_transferEPS0_S1_@GLIBCXX_3.4.14 4.5 + _ZNSt6__norm15_List_node_base4hookEPS0_@GLIBCXX_3.4.9 4.2.1 + _ZNSt6__norm15_List_node_base4swapERS0_S1_@GLIBCXX_3.4.9 4.2.1 + _ZNSt6__norm15_List_node_base6unhookEv@GLIBCXX_3.4.9 4.2.1 + _ZNSt6__norm15_List_node_base7_M_hookEPS0_@GLIBCXX_3.4.14 4.5 + _ZNSt6__norm15_List_node_base7reverseEv@GLIBCXX_3.4.9 4.2.1 + _ZNSt6__norm15_List_node_base8transferEPS0_S1_@GLIBCXX_3.4.9 4.2.1 + _ZNSt6__norm15_List_node_base9_M_unhookEv@GLIBCXX_3.4.14 4.5 + _ZNSt6chrono3_V212steady_clock3nowEv@GLIBCXX_3.4.19 4.8.1 + _ZNSt6chrono3_V212steady_clock9is_steadyE@GLIBCXX_3.4.19 4.8.1 + _ZNSt6chrono3_V212system_clock3nowEv@GLIBCXX_3.4.19 4.8.1 + _ZNSt6chrono3_V212system_clock9is_steadyE@GLIBCXX_3.4.19 4.8.1 + _ZNSt6chrono12system_clock12is_monotonicE@GLIBCXX_3.4.11 4.4.0 + _ZNSt6chrono12system_clock3nowEv@GLIBCXX_3.4.11 4.4.0 + _ZNSt6locale11_M_coalesceERKS_S1_i@GLIBCXX_3.4 4.1.1 + _ZNSt6locale21_S_normalize_categoryEi@GLIBCXX_3.4 4.1.1 + _ZNSt6locale3allE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale4noneE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale4timeE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5ctypeE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5facet13_S_get_c_nameEv@GLIBCXX_3.4.6 4.1.1 + _ZNSt6locale5facet15_S_get_c_localeEv@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5facet17_S_clone_c_localeERP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5facet18_S_create_c_localeERP15__locale_structPKcS2_@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5facet19_S_destroy_c_localeERP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5facetD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5facetD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5facetD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6locale6globalERKS_@GLIBCXX_3.4 4.1.1 + _ZNSt6locale7classicEv@GLIBCXX_3.4 4.1.1 + _ZNSt6locale7collateE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale7numericE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale8messagesE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale8monetaryE@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC1EPKc@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC1EPNS_5_ImplE@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC1ERKS_@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC1ERKS_PKci@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC1ERKS_S1_i@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC2EPKc@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC2EPNS_5_ImplE@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC2ERKS_@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC2ERKS_PKci@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC2ERKS_S1_i@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6localeD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6localeD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6localeaSERKS_@GLIBCXX_3.4 4.1.1 + _ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@GLIBCXX_3.4.11 4.4.0 + _ZNSt6thread20hardware_concurrencyEv@GLIBCXX_3.4.17 4.7 + _ZNSt6thread4joinEv@GLIBCXX_3.4.11 4.4.0 + _ZNSt6thread6detachEv@GLIBCXX_3.4.11 4.4.0 + _ZNSt7codecvtIcc11__mbstate_tE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8__detail12__prime_listE@GLIBCXX_3.4.10 4.3 + _ZNSt8__detail15_List_node_base10_M_reverseEv@GLIBCXX_3.4.15 4.6 + _ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@GLIBCXX_3.4.15 4.6 + _ZNSt8__detail15_List_node_base4swapERS0_S1_@GLIBCXX_3.4.15 4.6 + _ZNSt8__detail15_List_node_base7_M_hookEPS0_@GLIBCXX_3.4.15 4.6 + _ZNSt8__detail15_List_node_base9_M_unhookEv@GLIBCXX_3.4.15 4.6 + _ZNSt8bad_castD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8bad_castD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8bad_castD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base10floatfieldE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base10scientificE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base11adjustfieldE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base13_M_grow_wordsEib@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base15sync_with_stdioEb@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base17_M_call_callbacksENS_5eventE@GLIBCXX_3.4.6 4.1.1 + _ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base20_M_dispose_callbacksEv@GLIBCXX_3.4.6 4.1.1 + _ZNSt8ios_base2inE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3appE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3ateE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3begE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3curE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3decE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3endE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3hexE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3octE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3outE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base4InitC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base4InitC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base4InitD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base4InitD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base4leftE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base5fixedE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base5imbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base5rightE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base5truncE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base6badbitE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base6binaryE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base6eofbitE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base6skipwsE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base6xallocEv@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7_M_initEv@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7failbitE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7failureC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7failureC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7failureD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7failureD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7failureD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7goodbitE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7showposE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7unitbufE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base8internalE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base8showbaseE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base9basefieldE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base9boolalphaE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base9showpointE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base9uppercaseE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_baseC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_baseC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_baseD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_baseD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_baseD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcE22_M_initialize_numpunctEP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwE22_M_initialize_numpunctEP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order@GLIBCXX_3.4.14 4.5 + _ZNSt9__atomic011atomic_flag5clearESt12memory_order@GLIBCXX_3.4.14 4.5 + _ZNSt9__cxx199815_List_node_base10_M_reverseEv@GLIBCXX_3.4.14 4.5 + _ZNSt9__cxx199815_List_node_base11_M_transferEPS0_S1_@GLIBCXX_3.4.14 4.5 + _ZNSt9__cxx199815_List_node_base4hookEPS0_@GLIBCXX_3.4.10 4.3 + _ZNSt9__cxx199815_List_node_base4swapERS0_S1_@GLIBCXX_3.4.10 4.3 + _ZNSt9__cxx199815_List_node_base7_M_hookEPS0_@GLIBCXX_3.4.14 4.5 + _ZNSt9__cxx199815_List_node_base6unhookEv@GLIBCXX_3.4.10 4.3 + _ZNSt9__cxx199815_List_node_base7reverseEv@GLIBCXX_3.4.10 4.3 + _ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@GLIBCXX_3.4.10 4.3 + _ZNSt9__cxx199815_List_node_base9_M_unhookEv@GLIBCXX_3.4.14 4.5 + _ZNSt9bad_allocD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9bad_allocD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9bad_allocD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9exceptionD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9exceptionD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9exceptionD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9strstream3strEv@GLIBCXX_3.4 4.1.1 + _ZNSt9strstream6freezeEb@GLIBCXX_3.4 4.1.1 + _ZNSt9strstreamC1EPciSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt9strstreamC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9strstreamC2EPciSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt9strstreamC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9strstreamD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9type_infoD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9type_infoD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9type_infoD2Ev@GLIBCXX_3.4 4.1.1 + _ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order@GLIBCXX_3.4.11 4.4.0 + _ZNVSt9__atomic011atomic_flag5clearESt12memory_order@GLIBCXX_3.4.11 4.4.0 + _ZSt10adopt_lock@GLIBCXX_3.4.11 4.4.0 + _ZSt10defer_lock@GLIBCXX_3.4.11 4.4.0 + _ZSt10unexpectedv@GLIBCXX_3.4 4.1.1 + _ZSt11__once_call@GLIBCXX_3.4.11 4.4.0 + _ZSt11try_to_lock@GLIBCXX_3.4.11 4.4.0 + _ZSt13get_terminatev@GLIBCXX_3.4.20 4.9 + _ZSt13set_terminatePFvvE@GLIBCXX_3.4 4.1.1 + _ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZSt14get_unexpectedv@GLIBCXX_3.4.20 4.9 + _ZSt14set_unexpectedPFvvE@GLIBCXX_3.4 4.1.1 + _ZSt15__once_callable@GLIBCXX_3.4.11 4.4.0 + _ZSt15future_category@GLIBCXX_3.4.14 4.5 + _ZSt15future_categoryv@GLIBCXX_3.4.15 4.6 + _ZSt15get_new_handlerv@GLIBCXX_3.4.20 4.9 + _ZSt15set_new_handlerPFvvE@GLIBCXX_3.4 4.1.1 + _ZSt15system_categoryv@GLIBCXX_3.4.11 4.4.0 + _ZSt16__throw_bad_castv@GLIBCXX_3.4 4.1.1 + _ZSt16generic_categoryv@GLIBCXX_3.4.11 4.4.0 + _ZSt17__throw_bad_allocv@GLIBCXX_3.4 4.1.1 + _ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@GLIBCXX_3.4 4.1.1 + _ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@GLIBCXX_3.4 4.1.1 + _ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@GLIBCXX_3.4 4.1.1 + _ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@GLIBCXX_3.4 4.1.1 + _ZSt18__throw_bad_typeidv@GLIBCXX_3.4 4.1.1 + _ZSt18uncaught_exceptionv@GLIBCXX_3.4 4.1.1 + _ZSt19__throw_ios_failurePKc@GLIBCXX_3.4 4.1.1 + _ZSt19__throw_logic_errorPKc@GLIBCXX_3.4 4.1.1 + _ZSt19__throw_range_errorPKc@GLIBCXX_3.4 4.1.1 + _ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@GLIBCXX_3.4.15 4.6 + _ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@GLIBCXX_3.4 4.1.1 + _ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@GLIBCXX_3.4 4.1.1 + _ZSt20__throw_domain_errorPKc@GLIBCXX_3.4 4.1.1 + _ZSt20__throw_future_errori@GLIBCXX_3.4.14 4.5 + _ZSt20__throw_length_errorPKc@GLIBCXX_3.4 4.1.1 + _ZSt20__throw_out_of_rangePKc@GLIBCXX_3.4 4.1.1 + _ZSt20__throw_system_errori@GLIBCXX_3.4.11 4.4.0 + _ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@GLIBCXX_3.4 4.1.1 + _ZSt21__throw_bad_exceptionv@GLIBCXX_3.4 4.1.1 + _ZSt21__throw_runtime_errorPKc@GLIBCXX_3.4 4.1.1 + _ZSt22__throw_overflow_errorPKc@GLIBCXX_3.4 4.1.1 + _ZSt23__throw_underflow_errorPKc@GLIBCXX_3.4 4.1.1 + _ZSt24__throw_invalid_argumentPKc@GLIBCXX_3.4 4.1.1 + _ZSt24__throw_out_of_range_fmtPKcz@GLIBCXX_3.4.20 4.9 + _ZSt25__throw_bad_function_callv@GLIBCXX_3.4.14 4.5 + _ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@GLIBCXX_3.4 4.1.1 + _ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@GLIBCXX_3.4 4.1.1 + _ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1 + _ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1 + _ZSt3cin@GLIBCXX_3.4 4.1.1 + _ZSt4cerr@GLIBCXX_3.4 4.1.1 + _ZSt4clog@GLIBCXX_3.4 4.1.1 + _ZSt4cout@GLIBCXX_3.4 4.1.1 + _ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1 + _ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1 + _ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1 + _ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1 + _ZSt4wcin@GLIBCXX_3.4 4.1.1 + _ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1 + _ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1 + _ZSt5wcerr@GLIBCXX_3.4 4.1.1 + _ZSt5wclog@GLIBCXX_3.4 4.1.1 + _ZSt5wcout@GLIBCXX_3.4 4.1.1 + _ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@GLIBCXX_3.4 4.1.1 + _ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@GLIBCXX_3.4 4.1.1 + _ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@GLIBCXX_3.4 4.1.1 + _ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@GLIBCXX_3.4 4.1.1 + _ZSt7nothrow@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt5ctypeIcEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt5ctypeIwEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt7collateIcEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt7collateIwEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt8messagesIcEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt8messagesIwEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt8numpunctIcEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt8numpunctIwEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9terminatev@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt7collateIcEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt7collateIwEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@GLIBCXX_3.4 4.1.1 + _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@GLIBCXX_3.4 4.1.1 + _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@GLIBCXX_3.4 4.1.1 + _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@GLIBCXX_3.4 4.1.1 + _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@GLIBCXX_3.4 4.1.1 + _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@GLIBCXX_3.4 4.1.1 + _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@GLIBCXX_3.4 4.1.1 + _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@GLIBCXX_3.4 4.1.1 + _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@GLIBCXX_3.4 4.1.1 + _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@GLIBCXX_3.4 4.1.1 + _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@GLIBCXX_3.4 4.1.1 + _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@GLIBCXX_3.4 4.1.1 + _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@GLIBCXX_3.4 4.1.1 + _ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@GLIBCXX_3.4 4.1.1 + _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@GLIBCXX_3.4 4.1.1 + _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@GLIBCXX_3.4 4.1.1 + _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@GLIBCXX_3.4 4.1.1 + _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@GLIBCXX_3.4 4.1.1 + _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@GLIBCXX_3.4 4.1.1 + _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@GLIBCXX_3.4 4.1.1 + _ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@GLIBCXX_3.4 4.1.1 + _ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@GLIBCXX_3.4 4.1.1 + _ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@GLIBCXX_3.4 4.1.1 + _ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@GLIBCXX_3.4 4.1.1 + _ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@GLIBCXX_3.4 4.1.1 + _ZTIDd@CXXABI_1.3.4 4.5 + _ZTIDe@CXXABI_1.3.4 4.5 + _ZTIDf@CXXABI_1.3.4 4.5 + _ZTIDi@CXXABI_1.3.3 4.4.0 + _ZTIDn@CXXABI_1.3.5 4.6 + _ZTIDs@CXXABI_1.3.3 4.4.0 + _ZTIN10__cxxabiv115__forced_unwindE@CXXABI_1.3.2 4.3 + _ZTIN10__cxxabiv116__enum_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv117__array_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv117__class_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv117__pbase_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv119__foreign_exceptionE@CXXABI_1.3.2 4.3 + _ZTIN10__cxxabiv119__pointer_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv120__function_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv120__si_class_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv121__vmi_class_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv123__fundamental_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv129__pointer_to_member_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTINSt13__future_base11_State_baseE@GLIBCXX_3.4.15 4.6 + _ZTINSt13__future_base12_Result_baseE@GLIBCXX_3.4.15 4.6 + _ZTINSt13__future_base19_Async_state_commonE@GLIBCXX_3.4.17 4.7.0~rc1 + _ZTINSt6locale5facetE@GLIBCXX_3.4 4.1.1 + _ZTINSt8ios_base7failureE@GLIBCXX_3.4 4.1.1 + _ZTIPDd@CXXABI_1.3.4 4.5 + _ZTIPDe@CXXABI_1.3.4 4.5 + _ZTIPDf@CXXABI_1.3.4 4.5 + _ZTIPDi@CXXABI_1.3.3 4.4.0 + _ZTIPDn@CXXABI_1.3.5 4.6 + _ZTIPDs@CXXABI_1.3.3 4.4.0 + _ZTIPKDd@CXXABI_1.3.4 4.5 + _ZTIPKDe@CXXABI_1.3.4 4.5 + _ZTIPKDf@CXXABI_1.3.4 4.5 + _ZTIPKDi@CXXABI_1.3.3 4.4.0 + _ZTIPKDn@CXXABI_1.3.5 4.6 + _ZTIPKDs@CXXABI_1.3.3 4.4.0 + _ZTIPKa@CXXABI_1.3 4.1.1 + _ZTIPKb@CXXABI_1.3 4.1.1 + _ZTIPKc@CXXABI_1.3 4.1.1 + _ZTIPKd@CXXABI_1.3 4.1.1 + _ZTIPKe@CXXABI_1.3 4.1.1 + _ZTIPKf@CXXABI_1.3 4.1.1 + _ZTIPKh@CXXABI_1.3 4.1.1 + _ZTIPKi@CXXABI_1.3 4.1.1 + _ZTIPKj@CXXABI_1.3 4.1.1 + _ZTIPKl@CXXABI_1.3 4.1.1 + _ZTIPKm@CXXABI_1.3 4.1.1 + _ZTIPKs@CXXABI_1.3 4.1.1 + _ZTIPKt@CXXABI_1.3 4.1.1 + _ZTIPKv@CXXABI_1.3 4.1.1 + _ZTIPKw@CXXABI_1.3 4.1.1 + _ZTIPKx@CXXABI_1.3 4.1.1 + _ZTIPKy@CXXABI_1.3 4.1.1 + _ZTIPa@CXXABI_1.3 4.1.1 + _ZTIPb@CXXABI_1.3 4.1.1 + _ZTIPc@CXXABI_1.3 4.1.1 + _ZTIPd@CXXABI_1.3 4.1.1 + _ZTIPe@CXXABI_1.3 4.1.1 + _ZTIPf@CXXABI_1.3 4.1.1 + _ZTIPh@CXXABI_1.3 4.1.1 + _ZTIPi@CXXABI_1.3 4.1.1 + _ZTIPj@CXXABI_1.3 4.1.1 + _ZTIPl@CXXABI_1.3 4.1.1 + _ZTIPm@CXXABI_1.3 4.1.1 + _ZTIPs@CXXABI_1.3 4.1.1 + _ZTIPt@CXXABI_1.3 4.1.1 + _ZTIPv@CXXABI_1.3 4.1.1 + _ZTIPw@CXXABI_1.3 4.1.1 + _ZTIPx@CXXABI_1.3 4.1.1 + _ZTIPy@CXXABI_1.3 4.1.1 + _ZTISd@GLIBCXX_3.4 4.1.1 + _ZTISi@GLIBCXX_3.4 4.1.1 + _ZTISo@GLIBCXX_3.4 4.1.1 + _ZTISt10bad_typeid@GLIBCXX_3.4 4.1.1 + _ZTISt10ctype_base@GLIBCXX_3.4 4.1.1 + _ZTISt10istrstream@GLIBCXX_3.4 4.1.1 + _ZTISt10lock_error@GLIBCXX_3.4.11 4.4.0 + _ZTISt10money_base@GLIBCXX_3.4 4.1.1 + _ZTISt10moneypunctIcLb0EE@GLIBCXX_3.4 4.1.1 + _ZTISt10moneypunctIcLb1EE@GLIBCXX_3.4 4.1.1 + _ZTISt10moneypunctIwLb0EE@GLIBCXX_3.4 4.1.1 + _ZTISt10moneypunctIwLb1EE@GLIBCXX_3.4 4.1.1 + _ZTISt10ostrstream@GLIBCXX_3.4 4.1.1 + _ZTISt11__timepunctIcE@GLIBCXX_3.4 4.1.1 + _ZTISt11__timepunctIwE@GLIBCXX_3.4 4.1.1 + _ZTISt11logic_error@GLIBCXX_3.4 4.1.1 + _ZTISt11range_error@GLIBCXX_3.4 4.1.1 + _ZTISt11regex_error@GLIBCXX_3.4.15 4.6 + _ZTISt12bad_weak_ptr@GLIBCXX_3.4.15 4.6 + _ZTISt12codecvt_base@GLIBCXX_3.4 4.1.1 + _ZTISt12ctype_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTISt12ctype_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTISt12domain_error@GLIBCXX_3.4 4.1.1 + _ZTISt12future_error@GLIBCXX_3.4.14 4.5 + _ZTISt12length_error@GLIBCXX_3.4 4.1.1 + _ZTISt12out_of_range@GLIBCXX_3.4 4.1.1 + _ZTISt12strstreambuf@GLIBCXX_3.4 4.1.1 + _ZTISt12system_error@GLIBCXX_3.4.11 4.4.0 + _ZTISt13bad_exception@GLIBCXX_3.4 4.1.1 + _ZTISt13basic_filebufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt13basic_filebufIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt13basic_fstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt13basic_fstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt13basic_istreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt13basic_ostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt13messages_base@GLIBCXX_3.4 4.1.1 + _ZTISt13runtime_error@GLIBCXX_3.4 4.1.1 + _ZTISt14basic_ifstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt14basic_ifstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt14basic_iostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt14basic_ofstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt14basic_ofstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt14codecvt_bynameIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTISt14codecvt_bynameIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTISt14collate_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTISt14collate_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTISt14error_category@GLIBCXX_3.4.11 4.4.0 + _ZTISt14overflow_error@GLIBCXX_3.4 4.1.1 + _ZTISt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt15basic_streambufIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt15messages_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTISt15messages_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTISt15numpunct_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTISt15numpunct_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTISt15underflow_error@GLIBCXX_3.4 4.1.1 + _ZTISt16bad_array_length@CXXABI_1.3.8 4.9 + _ZTISt16invalid_argument@GLIBCXX_3.4 4.1.1 + _ZTISt16nested_exception@CXXABI_1.3.5 4.6 +#MISSING: 4.6# _ZTISt17bad_function_call@CXXABI_1.3.5 4.6 + _ZTISt17bad_function_call@GLIBCXX_3.4.15 4.6 + _ZTISt17moneypunct_bynameIcLb0EE@GLIBCXX_3.4 4.1.1 + _ZTISt17moneypunct_bynameIcLb1EE@GLIBCXX_3.4 4.1.1 + _ZTISt17moneypunct_bynameIwLb0EE@GLIBCXX_3.4 4.1.1 + _ZTISt17moneypunct_bynameIwLb1EE@GLIBCXX_3.4 4.1.1 + _ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt20bad_array_new_length@CXXABI_1.3.8 4.9 + _ZTISt21__ctype_abstract_baseIcE@GLIBCXX_3.4 4.1.1 + _ZTISt21__ctype_abstract_baseIwE@GLIBCXX_3.4 4.1.1 + _ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTISt5ctypeIcE@GLIBCXX_3.4 4.1.1 + _ZTISt5ctypeIwE@GLIBCXX_3.4 4.1.1 + _ZTISt7codecvtIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTISt7codecvtIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTISt7collateIcE@GLIBCXX_3.4 4.1.1 + _ZTISt7collateIwE@GLIBCXX_3.4 4.1.1 + _ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTISt8bad_cast@GLIBCXX_3.4 4.1.1 + _ZTISt8ios_base@GLIBCXX_3.4 4.1.1 + _ZTISt8messagesIcE@GLIBCXX_3.4 4.1.1 + _ZTISt8messagesIwE@GLIBCXX_3.4 4.1.1 + _ZTISt8numpunctIcE@GLIBCXX_3.4 4.1.1 + _ZTISt8numpunctIwE@GLIBCXX_3.4 4.1.1 + _ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTISt9bad_alloc@GLIBCXX_3.4 4.1.1 + _ZTISt9basic_iosIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt9basic_iosIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt9exception@GLIBCXX_3.4 4.1.1 + _ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTISt9strstream@GLIBCXX_3.4 4.1.1 + _ZTISt9time_base@GLIBCXX_3.4 4.1.1 + _ZTISt9type_info@GLIBCXX_3.4 4.1.1 + _ZTIa@CXXABI_1.3 4.1.1 + _ZTIb@CXXABI_1.3 4.1.1 + _ZTIc@CXXABI_1.3 4.1.1 + _ZTId@CXXABI_1.3 4.1.1 + _ZTIe@CXXABI_1.3 4.1.1 + _ZTIf@CXXABI_1.3 4.1.1 + _ZTIh@CXXABI_1.3 4.1.1 + _ZTIi@CXXABI_1.3 4.1.1 + _ZTIj@CXXABI_1.3 4.1.1 + _ZTIl@CXXABI_1.3 4.1.1 + _ZTIm@CXXABI_1.3 4.1.1 + _ZTIs@CXXABI_1.3 4.1.1 + _ZTIt@CXXABI_1.3 4.1.1 + _ZTIv@CXXABI_1.3 4.1.1 + _ZTIw@CXXABI_1.3 4.1.1 + _ZTIx@CXXABI_1.3 4.1.1 + _ZTIy@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv116__enum_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv117__array_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv117__class_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv117__pbase_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv119__pointer_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv120__function_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv120__si_class_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv121__vmi_class_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv123__fundamental_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv129__pointer_to_member_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSNSt13__future_base19_Async_state_commonE@GLIBCXX_3.4.17 4.7.0~rc1 + _ZTSNSt6locale5facetE@GLIBCXX_3.4 4.1.1 + _ZTSNSt8ios_base7failureE@GLIBCXX_3.4 4.1.1 + _ZTSPKa@CXXABI_1.3 4.1.1 + _ZTSPKb@CXXABI_1.3 4.1.1 + _ZTSPKc@CXXABI_1.3 4.1.1 + _ZTSPKd@CXXABI_1.3 4.1.1 + _ZTSPKe@CXXABI_1.3 4.1.1 + _ZTSPKf@CXXABI_1.3 4.1.1 + _ZTSPKh@CXXABI_1.3 4.1.1 + _ZTSPKi@CXXABI_1.3 4.1.1 + _ZTSPKj@CXXABI_1.3 4.1.1 + _ZTSPKl@CXXABI_1.3 4.1.1 + _ZTSPKm@CXXABI_1.3 4.1.1 + _ZTSPKs@CXXABI_1.3 4.1.1 + _ZTSPKt@CXXABI_1.3 4.1.1 + _ZTSPKv@CXXABI_1.3 4.1.1 + _ZTSPKw@CXXABI_1.3 4.1.1 + _ZTSPKx@CXXABI_1.3 4.1.1 + _ZTSPKy@CXXABI_1.3 4.1.1 + _ZTSPa@CXXABI_1.3 4.1.1 + _ZTSPb@CXXABI_1.3 4.1.1 + _ZTSPc@CXXABI_1.3 4.1.1 + _ZTSPd@CXXABI_1.3 4.1.1 + _ZTSPe@CXXABI_1.3 4.1.1 + _ZTSPf@CXXABI_1.3 4.1.1 + _ZTSPh@CXXABI_1.3 4.1.1 + _ZTSPi@CXXABI_1.3 4.1.1 + _ZTSPj@CXXABI_1.3 4.1.1 + _ZTSPl@CXXABI_1.3 4.1.1 + _ZTSPm@CXXABI_1.3 4.1.1 + _ZTSPs@CXXABI_1.3 4.1.1 + _ZTSPt@CXXABI_1.3 4.1.1 + _ZTSPv@CXXABI_1.3 4.1.1 + _ZTSPw@CXXABI_1.3 4.1.1 + _ZTSPx@CXXABI_1.3 4.1.1 + _ZTSPy@CXXABI_1.3 4.1.1 + _ZTSSd@GLIBCXX_3.4 4.1.1 + _ZTSSi@GLIBCXX_3.4 4.1.1 + _ZTSSo@GLIBCXX_3.4 4.1.1 + _ZTSSt10bad_typeid@GLIBCXX_3.4 4.1.1 + _ZTSSt10ctype_base@GLIBCXX_3.4 4.1.1 + _ZTSSt10istrstream@GLIBCXX_3.4 4.1.1 + _ZTSSt10lock_error@GLIBCXX_3.4.11 4.4.0 + _ZTSSt10money_base@GLIBCXX_3.4 4.1.1 + _ZTSSt10moneypunctIcLb0EE@GLIBCXX_3.4 4.1.1 + _ZTSSt10moneypunctIcLb1EE@GLIBCXX_3.4 4.1.1 + _ZTSSt10moneypunctIwLb0EE@GLIBCXX_3.4 4.1.1 + _ZTSSt10moneypunctIwLb1EE@GLIBCXX_3.4 4.1.1 + _ZTSSt10ostrstream@GLIBCXX_3.4 4.1.1 + _ZTSSt11__timepunctIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt11__timepunctIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt11logic_error@GLIBCXX_3.4 4.1.1 + _ZTSSt11range_error@GLIBCXX_3.4 4.1.1 + _ZTSSt12codecvt_base@GLIBCXX_3.4 4.1.1 + _ZTSSt12ctype_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt12ctype_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt12domain_error@GLIBCXX_3.4 4.1.1 + _ZTSSt12future_error@GLIBCXX_3.4.14 4.5 + _ZTSSt12length_error@GLIBCXX_3.4 4.1.1 + _ZTSSt12out_of_range@GLIBCXX_3.4 4.1.1 + _ZTSSt12strstreambuf@GLIBCXX_3.4 4.1.1 + _ZTSSt12system_error@GLIBCXX_3.4.11 4.4.0 + _ZTSSt13bad_exception@GLIBCXX_3.4 4.1.1 + _ZTSSt13basic_filebufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt13basic_filebufIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt13basic_fstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt13basic_fstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt13basic_istreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt13basic_ostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt13messages_base@GLIBCXX_3.4 4.1.1 + _ZTSSt13runtime_error@GLIBCXX_3.4 4.1.1 + _ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt14basic_iostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt14codecvt_bynameIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTSSt14codecvt_bynameIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTSSt14collate_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt14collate_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt14error_category@GLIBCXX_3.4.11 4.4.0 + _ZTSSt14overflow_error@GLIBCXX_3.4 4.1.1 + _ZTSSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt15basic_streambufIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt15messages_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt15messages_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt15numpunct_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt15numpunct_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt15underflow_error@GLIBCXX_3.4 4.1.1 + _ZTSSt16bad_array_length@CXXABI_1.3.8 4.9 + _ZTSSt16invalid_argument@GLIBCXX_3.4 4.1.1 + _ZTSSt17moneypunct_bynameIcLb0EE@GLIBCXX_3.4 4.1.1 + _ZTSSt17moneypunct_bynameIcLb1EE@GLIBCXX_3.4 4.1.1 + _ZTSSt17moneypunct_bynameIwLb0EE@GLIBCXX_3.4 4.1.1 + _ZTSSt17moneypunct_bynameIwLb1EE@GLIBCXX_3.4 4.1.1 + _ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt20bad_array_new_length@CXXABI_1.3.8 4.9 + _ZTSSt21__ctype_abstract_baseIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt21__ctype_abstract_baseIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTSSt5ctypeIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt5ctypeIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt7codecvtIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTSSt7codecvtIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTSSt7collateIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt7collateIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt8bad_cast@GLIBCXX_3.4 4.1.1 + _ZTSSt8ios_base@GLIBCXX_3.4 4.1.1 + _ZTSSt8messagesIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt8messagesIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt8numpunctIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt8numpunctIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt9bad_alloc@GLIBCXX_3.4 4.1.1 + _ZTSSt9basic_iosIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt9basic_iosIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt9exception@GLIBCXX_3.4 4.1.1 + _ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt9strstream@GLIBCXX_3.4 4.1.1 + _ZTSSt9time_base@GLIBCXX_3.4 4.1.1 + _ZTSSt9type_info@GLIBCXX_3.4 4.1.1 + _ZTSa@CXXABI_1.3 4.1.1 + _ZTSb@CXXABI_1.3 4.1.1 + _ZTSc@CXXABI_1.3 4.1.1 + _ZTSd@CXXABI_1.3 4.1.1 + _ZTSe@CXXABI_1.3 4.1.1 + _ZTSf@CXXABI_1.3 4.1.1 + _ZTSh@CXXABI_1.3 4.1.1 + _ZTSi@CXXABI_1.3 4.1.1 + _ZTSj@CXXABI_1.3 4.1.1 + _ZTSl@CXXABI_1.3 4.1.1 + _ZTSm@CXXABI_1.3 4.1.1 + _ZTSs@CXXABI_1.3 4.1.1 + _ZTSt@CXXABI_1.3 4.1.1 + _ZTSv@CXXABI_1.3 4.1.1 + _ZTSw@CXXABI_1.3 4.1.1 + _ZTSx@CXXABI_1.3 4.1.1 + _ZTSy@CXXABI_1.3 4.1.1 + _ZTTSd@GLIBCXX_3.4 4.1.1 + _ZTTSi@GLIBCXX_3.4 4.1.1 + _ZTTSo@GLIBCXX_3.4 4.1.1 + _ZTTSt10istrstream@GLIBCXX_3.4 4.1.1 + _ZTTSt10ostrstream@GLIBCXX_3.4 4.1.1 + _ZTTSt13basic_fstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTTSt13basic_fstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt13basic_istreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt13basic_ostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt14basic_iostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt9strstream@GLIBCXX_3.4 4.1.1 + _ZTVN10__cxxabiv116__enum_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv117__array_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv117__class_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv117__pbase_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv119__pointer_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv120__function_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv120__si_class_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv121__vmi_class_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv123__fundamental_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv129__pointer_to_member_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVNSt13__future_base11_State_baseE@GLIBCXX_3.4.15 4.6 + _ZTVNSt13__future_base12_Result_baseE@GLIBCXX_3.4.15 4.6 + _ZTVNSt13__future_base19_Async_state_commonE@GLIBCXX_3.4.17 4.7.0~rc1 + _ZTVNSt6locale5facetE@GLIBCXX_3.4 4.1.1 + _ZTVNSt8ios_base7failureE@GLIBCXX_3.4 4.1.1 + _ZTVSd@GLIBCXX_3.4 4.1.1 + _ZTVSi@GLIBCXX_3.4 4.1.1 + _ZTVSo@GLIBCXX_3.4 4.1.1 + _ZTVSt10bad_typeid@GLIBCXX_3.4 4.1.1 + _ZTVSt10istrstream@GLIBCXX_3.4 4.1.1 + _ZTVSt10lock_error@GLIBCXX_3.4.11 4.4.0 + _ZTVSt10moneypunctIcLb0EE@GLIBCXX_3.4 4.1.1 + _ZTVSt10moneypunctIcLb1EE@GLIBCXX_3.4 4.1.1 + _ZTVSt10moneypunctIwLb0EE@GLIBCXX_3.4 4.1.1 + _ZTVSt10moneypunctIwLb1EE@GLIBCXX_3.4 4.1.1 + _ZTVSt10ostrstream@GLIBCXX_3.4 4.1.1 + _ZTVSt11__timepunctIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt11__timepunctIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt11logic_error@GLIBCXX_3.4 4.1.1 + _ZTVSt11range_error@GLIBCXX_3.4 4.1.1 + _ZTVSt11regex_error@GLIBCXX_3.4.15 4.6 + _ZTVSt12bad_weak_ptr@GLIBCXX_3.4.15 4.6 + _ZTVSt12ctype_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt12ctype_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt12domain_error@GLIBCXX_3.4 4.1.1 + _ZTVSt12future_error@GLIBCXX_3.4.14 4.5 + _ZTVSt12length_error@GLIBCXX_3.4 4.1.1 + _ZTVSt12out_of_range@GLIBCXX_3.4 4.1.1 + _ZTVSt12strstreambuf@GLIBCXX_3.4 4.1.1 + _ZTVSt12system_error@GLIBCXX_3.4.11 4.4.0 + _ZTVSt13bad_exception@GLIBCXX_3.4 4.1.1 + _ZTVSt13basic_filebufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt13basic_filebufIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt13basic_fstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt13basic_fstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt13basic_istreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt13basic_ostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt13runtime_error@GLIBCXX_3.4 4.1.1 + _ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt14basic_iostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt14codecvt_bynameIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTVSt14codecvt_bynameIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTVSt14collate_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt14collate_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt14error_category@GLIBCXX_3.4.11 4.4.0 + _ZTVSt14overflow_error@GLIBCXX_3.4 4.1.1 + _ZTVSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt15basic_streambufIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt15messages_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt15messages_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt15numpunct_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt15numpunct_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt15underflow_error@GLIBCXX_3.4 4.1.1 + _ZTVSt16bad_array_length@CXXABI_1.3.8 4.9 + _ZTVSt16invalid_argument@GLIBCXX_3.4 4.1.1 + _ZTVSt16nested_exception@CXXABI_1.3.5 4.6 +#MISSING: 4.6# _ZTVSt17bad_function_call@CXXABI_1.3.5 4.6 + _ZTVSt17bad_function_call@GLIBCXX_3.4.15 4.6 + _ZTVSt17moneypunct_bynameIcLb0EE@GLIBCXX_3.4 4.1.1 + _ZTVSt17moneypunct_bynameIcLb1EE@GLIBCXX_3.4 4.1.1 + _ZTVSt17moneypunct_bynameIwLb0EE@GLIBCXX_3.4 4.1.1 + _ZTVSt17moneypunct_bynameIwLb1EE@GLIBCXX_3.4 4.1.1 + _ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt20bad_array_new_length@CXXABI_1.3.8 4.9 + _ZTVSt21__ctype_abstract_baseIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt21__ctype_abstract_baseIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTVSt5ctypeIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt5ctypeIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt7codecvtIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTVSt7codecvtIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTVSt7collateIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt7collateIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt8bad_cast@GLIBCXX_3.4 4.1.1 + _ZTVSt8ios_base@GLIBCXX_3.4 4.1.1 + _ZTVSt8messagesIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt8messagesIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt8numpunctIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt8numpunctIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt9bad_alloc@GLIBCXX_3.4 4.1.1 + _ZTVSt9basic_iosIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt9basic_iosIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt9exception@GLIBCXX_3.4 4.1.1 + _ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt9strstream@GLIBCXX_3.4 4.1.1 + _ZTVSt9type_info@GLIBCXX_3.4 4.1.1 + _ZdaPv@GLIBCXX_3.4 4.1.1 + _ZdaPvRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _ZdlPv@GLIBCXX_3.4 4.1.1 + _ZdlPvRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + __atomic_flag_for_address@GLIBCXX_3.4.11 4.4.0 + __atomic_flag_wait_explicit@GLIBCXX_3.4.11 4.4.0 + __cxa_allocate_dependent_exception@CXXABI_1.3.6 4.7 + __cxa_allocate_exception@CXXABI_1.3 4.1.1 + __cxa_bad_cast@CXXABI_1.3 4.1.1 + __cxa_bad_typeid@CXXABI_1.3 4.1.1 + __cxa_begin_catch@CXXABI_1.3 4.1.1 + __cxa_call_unexpected@CXXABI_1.3 4.1.1 + __cxa_current_exception_type@CXXABI_1.3 4.1.1 + __cxa_deleted_virtual@CXXABI_1.3.6 4.7 + __cxa_demangle@CXXABI_1.3 4.1.1 + __cxa_end_catch@CXXABI_1.3 4.1.1 + __cxa_free_dependent_exception@CXXABI_1.3.6 4.7 + __cxa_free_exception@CXXABI_1.3 4.1.1 + __cxa_get_exception_ptr@CXXABI_1.3.1 4.1.1 + __cxa_get_globals@CXXABI_1.3 4.1.1 + __cxa_get_globals_fast@CXXABI_1.3 4.1.1 + __cxa_guard_abort@CXXABI_1.3 4.1.1 + __cxa_guard_acquire@CXXABI_1.3 4.1.1 + __cxa_guard_release@CXXABI_1.3 4.1.1 + __cxa_pure_virtual@CXXABI_1.3 4.1.1 + __cxa_rethrow@CXXABI_1.3 4.1.1 + __cxa_thread_atexit@CXXABI_1.3.7 4.8 + __cxa_throw@CXXABI_1.3 4.1.1 + __cxa_throw_bad_array_length@CXXABI_1.3.8 4.9 + __cxa_throw_bad_array_new_length@CXXABI_1.3.8 4.9 + __cxa_tm_cleanup@CXXABI_TM_1 4.7 + __cxa_vec_cctor@CXXABI_1.3 4.1.1 + __cxa_vec_cleanup@CXXABI_1.3 4.1.1 + __cxa_vec_ctor@CXXABI_1.3 4.1.1 + __cxa_vec_delete2@CXXABI_1.3 4.1.1 + __cxa_vec_delete3@CXXABI_1.3 4.1.1 + __cxa_vec_delete@CXXABI_1.3 4.1.1 + __cxa_vec_dtor@CXXABI_1.3 4.1.1 + __cxa_vec_new2@CXXABI_1.3 4.1.1 + __cxa_vec_new3@CXXABI_1.3 4.1.1 + __cxa_vec_new@CXXABI_1.3 4.1.1 + __dynamic_cast@CXXABI_1.3 4.1.1 + __once_proxy@GLIBCXX_3.4.11 4.4.0 + atomic_flag_clear_explicit@GLIBCXX_3.4.11 4.4.0 + atomic_flag_test_and_set_explicit@GLIBCXX_3.4.11 4.4.0 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.excprop +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.excprop @@ -0,0 +1,17 @@ + _ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@CXXABI_1.3.3 4.4.0 + _ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@CXXABI_1.3.3 4.4.0 + _ZNKSt15__exception_ptr13exception_ptrntEv@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptr4swapERS0_@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptrC1ERKS0_@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptrC1Ev@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptrC2ERKS0_@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptrC2Ev@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptrD1Ev@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptrD2Ev@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptraSERKS0_@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@CXXABI_1.3.3 4.4.0 + _ZSt17current_exceptionv@CXXABI_1.3.3 4.4.0 + _ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@CXXABI_1.3.3 4.4.0 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.glibcxxmath +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.glibcxxmath @@ -0,0 +1,22 @@ + acosl@GLIBCXX_3.4.3 4.1.1 + asinl@GLIBCXX_3.4.3 4.1.1 + atan2l@GLIBCXX_3.4 4.1.1 + atanl@GLIBCXX_3.4.3 4.1.1 + ceill@GLIBCXX_3.4.3 4.1.1 + coshl@GLIBCXX_3.4 4.1.1 + cosl@GLIBCXX_3.4 4.1.1 + expl@GLIBCXX_3.4 4.1.1 + floorl@GLIBCXX_3.4.3 4.1.1 + fmodl@GLIBCXX_3.4.3 4.1.1 + frexpl@GLIBCXX_3.4.3 4.1.1 + hypotl@GLIBCXX_3.4 4.1.1 + ldexpl@GLIBCXX_3.4.3 4.1.1 + log10l@GLIBCXX_3.4 4.1.1 + logl@GLIBCXX_3.4 4.1.1 + modfl@GLIBCXX_3.4.3 4.1.1 + powl@GLIBCXX_3.4 4.1.1 + sinhl@GLIBCXX_3.4 4.1.1 + sinl@GLIBCXX_3.4 4.1.1 + sqrtl@GLIBCXX_3.4 4.1.1 + tanhl@GLIBCXX_3.4 4.1.1 + tanl@GLIBCXX_3.4 4.1.1 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.hppa +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.hppa @@ -0,0 +1,8 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.excprop" +# removed, see PR libstdc++/39491 __signbitl@GLIBCXX_3.4 4.2.1 +#include "libstdc++6.symbols.glibcxxmath" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.hurd-i386 +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.hurd-i386 @@ -0,0 +1,5 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit.hurd" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.i386 +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.i386 @@ -0,0 +1,13 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 + (optional)_Z16__VLTRegisterSetPPvPKvjjS0_@CXXABI_1.3.8 4.9.0 + (optional)_Z17__VLTRegisterPairPPvPKvjS2_@CXXABI_1.3.8 4.9.0 + (optional)_Z21__VLTRegisterSetDebugPPvPKvjjS0_@CXXABI_1.3.8 4.9.0 + (optional)_Z22__VLTRegisterPairDebugPPvPKvjS2_PKcS4_@CXXABI_1.3.8 4.9.0 + (optional)_Z24__VLTVerifyVtablePointerPPvPKv@CXXABI_1.3.8 4.9.0 + (optional)_Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_@CXXABI_1.3.8 4.9.0 + (optional)__VLTChangePermission@CXXABI_1.3.8 4.9.0 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.ia64 +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.ia64 @@ -0,0 +1,53 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNSt14numeric_limitsInE10has_denormE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE10is_boundedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE10is_integerE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE11round_styleE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE12has_infinityE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE12max_digits10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE12max_exponentE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE12min_exponentE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE13has_quiet_NaNE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE14is_specializedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE14max_exponent10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE14min_exponent10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE15has_denorm_lossE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE15tinyness_beforeE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE17has_signaling_NaNE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE5radixE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE5trapsE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE6digitsE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE8digits10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE8is_exactE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE9is_iec559E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE9is_moduloE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE9is_signedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE10has_denormE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE10is_boundedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE10is_integerE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE11round_styleE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE12has_infinityE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE12max_digits10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE12max_exponentE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE12min_exponentE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE13has_quiet_NaNE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE14is_specializedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE14max_exponent10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE14min_exponent10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE15has_denorm_lossE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE15tinyness_beforeE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE17has_signaling_NaNE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE5radixE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE5trapsE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE6digitsE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE8digits10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE8is_exactE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE9is_iec559E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE9is_moduloE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE9is_signedE@GLIBCXX_3.4.17 4.8 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.kfreebsd-amd64 +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.kfreebsd-amd64 @@ -0,0 +1,8 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.kfreebsd-i386 +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.kfreebsd-i386 @@ -0,0 +1,6 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.ldbl.32bit +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.ldbl.32bit @@ -0,0 +1,284 @@ + CXXABI_LDBL_1.3@CXXABI_LDBL_1.3 4.2.1 + GLIBCXX_LDBL_3.4.10@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + GLIBCXX_LDBL_3.4.7@GLIBCXX_LDBL_3.4.7 4.2.1 + GLIBCXX_LDBL_3.4@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt3tr14hashIgEclEg@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + _ZNKSt4hashIgEclEg@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + _ZGVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS7_PcS8_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIgEES4_S4_RSt8ios_baseccT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIgEES4_S4_RSt8ios_basewcT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_bRSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSi10_M_extractIgEERSiRT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSirsERg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSo9_M_insertIgEERSoT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSolsEg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10has_denormE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10is_boundedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10is_integerE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE11round_styleE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12has_infinityE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12max_digits10E@GLIBCXX_LDBL_3.4 4.5.0 + _ZNSt14numeric_limitsIgE12max_exponentE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12min_exponentE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE13has_quiet_NaNE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14is_specializedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14max_exponent10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14min_exponent10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE15has_denorm_lossE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE15tinyness_beforeE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE17has_signaling_NaNE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE5radixE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE5trapsE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE6digitsE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE8digits10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE8is_exactE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_iec559E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_moduloE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_signedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZStlsIgcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStlsIgwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStrsIgcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStrsIgwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTIPKg@CXXABI_LDBL_1.3 4.2.1 + _ZTIPg@CXXABI_LDBL_1.3 4.2.1 + _ZTIg@CXXABI_LDBL_1.3 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSPKg@CXXABI_LDBL_1.3 4.2.1 + _ZTSPg@CXXABI_LDBL_1.3 4.2.1 + _ZTSg@CXXABI_LDBL_1.3 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.ldbl.32bit.s390 +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.ldbl.32bit.s390 @@ -0,0 +1,284 @@ + CXXABI_LDBL_1.3@CXXABI_LDBL_1.3 4.2.1 + GLIBCXX_LDBL_3.4.10@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + GLIBCXX_LDBL_3.4.7@GLIBCXX_LDBL_3.4.7 4.2.1 + GLIBCXX_LDBL_3.4@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt3tr14hashIgEclEg@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + _ZNKSt4hashIgEclEg@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + _ZGVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS7_PcS8_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIgEES4_S4_RSt8ios_baseccT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIgEES4_S4_RSt8ios_basewcT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_bRSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSi10_M_extractIgEERSiRT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSirsERg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSo9_M_insertIgEERSoT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSolsEg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10has_denormE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10is_boundedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10is_integerE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE11round_styleE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12has_infinityE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12max_digits10E@GLIBCXX_LDBL_3.4 4.5.0 + _ZNSt14numeric_limitsIgE12max_exponentE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12min_exponentE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE13has_quiet_NaNE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14is_specializedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14max_exponent10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14min_exponent10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE15has_denorm_lossE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE15tinyness_beforeE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE17has_signaling_NaNE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE5radixE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE5trapsE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE6digitsE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE8digits10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE8is_exactE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_iec559E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_moduloE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_signedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZStlsIgcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStlsIgwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStrsIgcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStrsIgwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTIPKg@CXXABI_LDBL_1.3 4.2.1 + _ZTIPg@CXXABI_LDBL_1.3 4.2.1 + _ZTIg@CXXABI_LDBL_1.3 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSPKg@CXXABI_LDBL_1.3 4.2.1 + _ZTSPg@CXXABI_LDBL_1.3 4.2.1 + _ZTSg@CXXABI_LDBL_1.3 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.ldbl.64bit +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.ldbl.64bit @@ -0,0 +1,284 @@ + CXXABI_LDBL_1.3@CXXABI_LDBL_1.3 4.2.1 + GLIBCXX_LDBL_3.4.10@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + GLIBCXX_LDBL_3.4.7@GLIBCXX_LDBL_3.4.7 4.2.1 + GLIBCXX_LDBL_3.4@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt3tr14hashIgEclEg@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + _ZNKSt4hashIgEclEg@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + _ZGVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS7_PcS8_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIgEES4_S4_RSt8ios_baseccT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEclRSt8ios_basePcPKcRi@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIgEES4_S4_RSt8ios_basewcT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwlRSt8ios_basePwPKwRi@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_bRSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSi10_M_extractIgEERSiRT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSirsERg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSo9_M_insertIgEERSoT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSolsEg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10has_denormE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10is_boundedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10is_integerE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE11round_styleE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12has_infinityE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12max_digits10E@GLIBCXX_LDBL_3.4 4.5.0 + _ZNSt14numeric_limitsIgE12max_exponentE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12min_exponentE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE13has_quiet_NaNE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14is_specializedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14max_exponent10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14min_exponent10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE15has_denorm_lossE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE15tinyness_beforeE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE17has_signaling_NaNE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE5radixE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE5trapsE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE6digitsE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE8digits10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE8is_exactE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_iec559E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_moduloE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_signedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZStlsIgcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStlsIgwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStrsIgcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStrsIgwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTIPKg@CXXABI_LDBL_1.3 4.2.1 + _ZTIPg@CXXABI_LDBL_1.3 4.2.1 + _ZTIg@CXXABI_LDBL_1.3 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSPKg@CXXABI_LDBL_1.3 4.2.1 + _ZTSPg@CXXABI_LDBL_1.3 4.2.1 + _ZTSg@CXXABI_LDBL_1.3 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.lpia +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.lpia @@ -0,0 +1,6 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.m68k +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.m68k @@ -0,0 +1,5 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.mips +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.mips @@ -0,0 +1,7 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.glibcxxmath" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.mips64 +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.mips64 @@ -0,0 +1,6 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.mips64el +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.mips64el @@ -0,0 +1,6 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.mipsel +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.mipsel @@ -0,0 +1,7 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.glibcxxmath" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.powerpc +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.powerpc @@ -0,0 +1,8 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.32bit" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.powerpcspe +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.powerpcspe @@ -0,0 +1,8 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.32bit" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.ppc64 +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.ppc64 @@ -0,0 +1,10 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.64bit" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.ppc64el +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.ppc64el @@ -0,0 +1,10 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.64bit" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.s390 +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.s390 @@ -0,0 +1,558 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.common" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx9free_list6_M_getEm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSs16find_last_not_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs2atEm@GLIBCXX_3.4 4.1.1 + _ZNKSs4copyEPcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs6substrEmm@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_checkEmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_limitEmm@GLIBCXX_3.4 4.1.1 + _ZNKSsixEm@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE12_M_transformEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE12_M_transformEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5.0 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5.0 + _ZNKSt8valarrayImE4sizeEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE10_S_compareEmm@GLIBCXX_3.4.16 4.7 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_@GLIBCXX_3.4.14 4.5.0 + _ZNSbIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7reserveEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPci@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPcic@GLIBCXX_3.4 4.1.1 + _ZNSi4readEPci@GLIBCXX_3.4 4.1.1 + _ZNSi5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEi@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEi@GLIBCXX_3.4.5 4.1.1 + _ZNSi6ignoreEii@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPci@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPcic@GLIBCXX_3.4 4.1.1 + _ZNSi8readsomeEPci@GLIBCXX_3.4 4.1.1 + _ZNSo5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSo5writeEPKci@GLIBCXX_3.4 4.1.1 + _ZNSo8_M_writeEPKci@GLIBCXX_3.4 4.1.1 + _ZNSs10_S_compareEmm@GLIBCXX_3.4.16 4.7 + _ZNSs12_S_constructEmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs14_M_replace_auxEmmmc@GLIBCXX_3.4 4.1.1 + _ZNSs15_M_replace_safeEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs18_S_construct_aux_2EmcRKSaIcE@GLIBCXX_3.4.14 4.5.0 + _ZNSs2atEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4.5 4.1.1 + _ZNSs4_Rep8_M_cloneERKSaIcEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep9_S_createEmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs5eraseEmm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6assignERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmPKc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmmc@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEm@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEmc@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4.5 4.1.1 + _ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4.5 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmmc@GLIBCXX_3.4 4.1.1 + _ZNSs7reserveEm@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcmc@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcmc@GLIBCXX_3.4.5 4.1.1 + _ZNSs9_M_mutateEmmm@GLIBCXX_3.4 4.1.1 + _ZNSsC1EPKcmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1EmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EPKcmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsixEm@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPci@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt11this_thread11__sleep_forENSt6chrono8durationIxSt5ratioILx1ELx1EEEENS1_IxS2_ILx1ELx1000000000EEEE@GLIBCXX_3.4.18 4.8 + _ZNSt12__basic_fileIcE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_allocEm@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_setupEPcS0_i@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPFPvmEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKai@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKhi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPaiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPciS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPhiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1Ei@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPFPvmEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKai@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKhi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPaiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPciS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPhiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2Ei@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4.5 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_gbumpEi@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_pbumpEi@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_gbumpEi@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_pbumpEi@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS4_x@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS4_x@GLIBCXX_3.4.16 4.7 + _ZNSt15messages_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EP15__locale_structPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EP15__locale_structPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm@GLIBCXX_3.4.7 4.1.1 + _ZNSt6locale5_ImplC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1ERKS0_m@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2ERKS0_m@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC1ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC2ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEixEm@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZSt11_Hash_bytesPKvmm@CXXABI_1.3.5 4.6 + _ZSt15_Fnv_hash_bytesPKvmm@CXXABI_1.3.5 4.6 + _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1 + _ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1 + _ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1 + _ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1 + _ZSt17__verify_groupingPKcmRKSs@GLIBCXX_3.4.10 4.3 + _ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZThn8_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSiD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSiD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSoD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSoD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10istrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10istrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10ostrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10ostrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _Znam@GLIBCXX_3.4 4.1.1 + _ZnamRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _Znwm@GLIBCXX_3.4 4.1.1 + _ZnwmRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.32bit.s390" + _ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.s390x +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.s390x @@ -0,0 +1,12 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# ldexpf@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# powf@GLIBCXX_3.4 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.64bit" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.sh4 +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.sh4 @@ -0,0 +1,7 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.glibcxxmath" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.sparc +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.sparc @@ -0,0 +1,8 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.32bit" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 --- gcc-4.9-4.9.2.orig/debian/libstdc++6.symbols.sparc64 +++ gcc-4.9-4.9.2/debian/libstdc++6.symbols.sparc64 @@ -0,0 +1,10 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.128bit" + _ZN9__gnu_cxx12__atomic_addEPVli@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVli@GLIBCXX_3.4 4.1.1 +# FIXME: Currently no ldbl symbols in the 64bit libstdc++ on sparc. +# #include "libstdc++6.symbols.ldbl.64bit" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 --- gcc-4.9-4.9.2.orig/debian/libstdc++CXX.postinst +++ gcc-4.9-4.9.2/debian/libstdc++CXX.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/libstdc++@CXX@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi +esac + +#DEBHELPER# --- gcc-4.9-4.9.2.orig/debian/libstdc++CXX.prerm +++ gcc-4.9-4.9.2/debian/libstdc++CXX.prerm @@ -0,0 +1,13 @@ +#! /bin/sh + +set -e + +case "$1" in + remove) + files=$(dpkg -L libstdc++@CXX@@TARGET_QUAL@ | awk -F/ 'BEGIN {OFS="/"} /\.py$/ {$NF=sprintf("__pycache__/%s.*.py[co]", substr($NF,1,length($NF)-3)); print}') + rm -f $files + dirs=$(dpkg -L libstdc++@CXX@@TARGET_QUAL@ | awk -F/ 'BEGIN {OFS="/"} /\.py$/ {NF--; print}' | sort -u) + find $dirs -mindepth 1 -maxdepth 1 -name __pycache__ -type d -empty | xargs -r rmdir +esac + +#DEBHELPER# --- gcc-4.9-4.9.2.orig/debian/libtsan0.symbols +++ gcc-4.9-4.9.2/debian/libtsan0.symbols @@ -0,0 +1,1510 @@ +libtsan.so.0 libtsan0 #MINVER# + AnnotateBenignRace@Base 4.9 + AnnotateBenignRaceSized@Base 4.9 + AnnotateCondVarSignal@Base 4.9 + AnnotateCondVarSignalAll@Base 4.9 + AnnotateCondVarWait@Base 4.9 + AnnotateEnableRaceDetection@Base 4.9 + AnnotateExpectRace@Base 4.9 + AnnotateFlushExpectedRaces@Base 4.9 + AnnotateFlushState@Base 4.9 + AnnotateHappensAfter@Base 4.9 + AnnotateHappensBefore@Base 4.9 + AnnotateIgnoreReadsBegin@Base 4.9 + AnnotateIgnoreReadsEnd@Base 4.9 + AnnotateIgnoreSyncBegin@Base 4.9 + AnnotateIgnoreSyncEnd@Base 4.9 + AnnotateIgnoreWritesBegin@Base 4.9 + AnnotateIgnoreWritesEnd@Base 4.9 + AnnotateMemoryIsInitialized@Base 4.9 + AnnotateMutexIsNotPHB@Base 4.9 + AnnotateMutexIsUsedAsCondVar@Base 4.9 + AnnotateNewMemory@Base 4.9 + AnnotateNoOp@Base 4.9 + AnnotatePCQCreate@Base 4.9 + AnnotatePCQDestroy@Base 4.9 + AnnotatePCQGet@Base 4.9 + AnnotatePCQPut@Base 4.9 + AnnotatePublishMemoryRange@Base 4.9 + AnnotateRWLockAcquired@Base 4.9 + AnnotateRWLockCreate@Base 4.9 + AnnotateRWLockCreateStatic@Base 4.9 + AnnotateRWLockDestroy@Base 4.9 + AnnotateRWLockReleased@Base 4.9 + AnnotateThreadName@Base 4.9 + AnnotateTraceMemory@Base 4.9 + AnnotateUnpublishMemoryRange@Base 4.9 + RunningOnValgrind@Base 4.9 + ThreadSanitizerQuery@Base 4.9 + ValgrindSlowdown@Base 4.9 + WTFAnnotateBenignRaceSized@Base 4.9 + WTFAnnotateHappensAfter@Base 4.9 + WTFAnnotateHappensBefore@Base 4.9 + _ZN11__sanitizer11CheckFailedEPKciS1_yy@Base 4.9 + _ZN11__sanitizer7OnPrintEPKc@Base 4.9 + _ZN6__tsan10OnFinalizeEb@Base 4.9 + _ZN6__tsan8OnReportEPKNS_10ReportDescEb@Base 4.9 + _ZdaPv@Base 4.9 + _ZdaPvRKSt9nothrow_t@Base 4.9 + _ZdlPv@Base 4.9 + _ZdlPvRKSt9nothrow_t@Base 4.9 + _Znam@Base 4.9 + _ZnamRKSt9nothrow_t@Base 4.9 + _Znwm@Base 4.9 + _ZnwmRKSt9nothrow_t@Base 4.9 + __asan_backtrace_alloc@Base 4.9 + __asan_backtrace_close@Base 4.9 + __asan_backtrace_create_state@Base 4.9 + __asan_backtrace_dwarf_add@Base 4.9 + __asan_backtrace_free@Base 4.9 + __asan_backtrace_get_view@Base 4.9 + __asan_backtrace_initialize@Base 4.9 + __asan_backtrace_open@Base 4.9 + __asan_backtrace_pcinfo@Base 4.9 + __asan_backtrace_qsort@Base 4.9 + __asan_backtrace_release_view@Base 4.9 + __asan_backtrace_syminfo@Base 4.9 + __asan_backtrace_vector_finish@Base 4.9 + __asan_backtrace_vector_grow@Base 4.9 + __asan_backtrace_vector_release@Base 4.9 + __asan_cplus_demangle_builtin_types@Base 4.9 + __asan_cplus_demangle_fill_ctor@Base 4.9 + __asan_cplus_demangle_fill_dtor@Base 4.9 + __asan_cplus_demangle_fill_extended_operator@Base 4.9 + __asan_cplus_demangle_fill_name@Base 4.9 + __asan_cplus_demangle_init_info@Base 4.9 + __asan_cplus_demangle_mangled_name@Base 4.9 + __asan_cplus_demangle_operators@Base 4.9 + __asan_cplus_demangle_print@Base 4.9 + __asan_cplus_demangle_print_callback@Base 4.9 + __asan_cplus_demangle_type@Base 4.9 + __asan_cplus_demangle_v3@Base 4.9 + __asan_cplus_demangle_v3_callback@Base 4.9 + __asan_internal_memcmp@Base 4.9 + __asan_internal_memcpy@Base 4.9 + __asan_internal_memset@Base 4.9 + __asan_internal_strcmp@Base 4.9 + __asan_internal_strlen@Base 4.9 + __asan_internal_strncmp@Base 4.9 + __asan_internal_strnlen@Base 4.9 + __asan_is_gnu_v3_mangled_ctor@Base 4.9 + __asan_is_gnu_v3_mangled_dtor@Base 4.9 + __asan_java_demangle_v3@Base 4.9 + __asan_java_demangle_v3_callback@Base 4.9 + __close@Base 4.9 + __cxa_atexit@Base 4.9 + __cxa_guard_abort@Base 4.9 + __cxa_guard_acquire@Base 4.9 + __cxa_guard_release@Base 4.9 + __fxstat64@Base 4.9 + __fxstat@Base 4.9 + __interceptor___close@Base 4.9 + __interceptor___cxa_atexit@Base 4.9 + __interceptor___fxstat64@Base 4.9 + __interceptor___fxstat@Base 4.9 + __interceptor___isoc99_fscanf@Base 4.9 + __interceptor___isoc99_scanf@Base 4.9 + __interceptor___isoc99_sscanf@Base 4.9 + __interceptor___isoc99_vfscanf@Base 4.9 + __interceptor___isoc99_vscanf@Base 4.9 + __interceptor___isoc99_vsscanf@Base 4.9 + __interceptor___libc_memalign@Base 4.9 + __interceptor___lxstat64@Base 4.9 + __interceptor___lxstat@Base 4.9 + __interceptor___res_iclose@Base 4.9 + __interceptor___sigsetjmp@Base 4.9 + __interceptor___xpg_strerror_r@Base 4.9 + __interceptor___xstat64@Base 4.9 + __interceptor___xstat@Base 4.9 + __interceptor__exit@Base 4.9 + __interceptor__setjmp@Base 4.9 + __interceptor_abort@Base 4.9 + __interceptor_accept4@Base 4.9 + __interceptor_accept@Base 4.9 + __interceptor_asctime@Base 4.9 + __interceptor_asctime_r@Base 4.9 + __interceptor_atexit@Base 4.9 + __interceptor_backtrace@Base 4.9 + __interceptor_backtrace_symbols@Base 4.9 + __interceptor_bind@Base 4.9 + __interceptor_calloc@Base 4.9 + __interceptor_canonicalize_file_name@Base 4.9 + __interceptor_cfree@Base 4.9 + __interceptor_clock_getres@Base 4.9 + __interceptor_clock_gettime@Base 4.9 + __interceptor_clock_settime@Base 4.9 + __interceptor_close@Base 4.9 + __interceptor_confstr@Base 4.9 + __interceptor_connect@Base 4.9 + __interceptor_creat64@Base 4.9 + __interceptor_creat@Base 4.9 + __interceptor_ctime@Base 4.9 + __interceptor_ctime_r@Base 4.9 + __interceptor_dlclose@Base 4.9 + __interceptor_dlopen@Base 4.9 + __interceptor_drand48_r@Base 4.9 + __interceptor_dup2@Base 4.9 + __interceptor_dup3@Base 4.9 + __interceptor_dup@Base 4.9 + __interceptor_epoll_create1@Base 4.9 + __interceptor_epoll_create@Base 4.9 + __interceptor_epoll_ctl@Base 4.9 + __interceptor_epoll_wait@Base 4.9 + __interceptor_ether_aton@Base 4.9 + __interceptor_ether_aton_r@Base 4.9 + __interceptor_ether_hostton@Base 4.9 + __interceptor_ether_line@Base 4.9 + __interceptor_ether_ntoa@Base 4.9 + __interceptor_ether_ntoa_r@Base 4.9 + __interceptor_ether_ntohost@Base 4.9 + __interceptor_eventfd@Base 4.9 + __interceptor_fclose@Base 4.9 + __interceptor_fflush@Base 4.9 + __interceptor_fopen@Base 4.9 + __interceptor_fork@Base 4.9 + __interceptor_fread@Base 4.9 + __interceptor_free@Base 4.9 + __interceptor_freopen@Base 4.9 + __interceptor_frexp@Base 4.9 + __interceptor_frexpf@Base 4.9 + __interceptor_frexpl@Base 4.9 + __interceptor_fscanf@Base 4.9 + __interceptor_fstat64@Base 4.9 + __interceptor_fstat@Base 4.9 + __interceptor_fstatfs64@Base 4.9 + __interceptor_fstatfs@Base 4.9 + __interceptor_fstatvfs64@Base 4.9 + __interceptor_fstatvfs@Base 4.9 + __interceptor_fwrite@Base 4.9 + __interceptor_get_current_dir_name@Base 4.9 + __interceptor_getaddrinfo@Base 4.9 + __interceptor_getcwd@Base 4.9 + __interceptor_getdelim@Base 4.9 + __interceptor_getgroups@Base 4.9 + __interceptor_gethostbyaddr@Base 4.9 + __interceptor_gethostbyaddr_r@Base 4.9 + __interceptor_gethostbyname2@Base 4.9 + __interceptor_gethostbyname2_r@Base 4.9 + __interceptor_gethostbyname@Base 4.9 + __interceptor_gethostbyname_r@Base 4.9 + __interceptor_gethostent@Base 4.9 + __interceptor_gethostent_r@Base 4.9 + __interceptor_getitimer@Base 4.9 + __interceptor_getline@Base 4.9 + __interceptor_getmntent@Base 4.9 + __interceptor_getmntent_r@Base 4.9 + __interceptor_getpeername@Base 4.9 + __interceptor_getsockname@Base 4.9 + __interceptor_getsockopt@Base 4.9 + __interceptor_gettimeofday@Base 4.9 + __interceptor_gmtime@Base 4.9 + __interceptor_gmtime_r@Base 4.9 + __interceptor_iconv@Base 4.9 + __interceptor_inet_aton@Base 4.9 + __interceptor_inet_ntop@Base 4.9 + __interceptor_inet_pton@Base 4.9 + __interceptor_initgroups@Base 4.9 + __interceptor_inotify_init1@Base 4.9 + __interceptor_inotify_init@Base 4.9 + __interceptor_ioctl@Base 4.9 + __interceptor_kill@Base 4.9 + __interceptor_lgamma@Base 4.9 + __interceptor_lgamma_r@Base 4.9 + __interceptor_lgammaf@Base 4.9 + __interceptor_lgammaf_r@Base 4.9 + __interceptor_lgammal@Base 4.9 + __interceptor_lgammal_r@Base 4.9 + __interceptor_listen@Base 4.9 + __interceptor_localtime@Base 4.9 + __interceptor_localtime_r@Base 4.9 + __interceptor_longjmp@Base 4.9 + __interceptor_lrand48_r@Base 4.9 + __interceptor_lstat64@Base 4.9 + __interceptor_lstat@Base 4.9 + __interceptor_malloc@Base 4.9 + __interceptor_malloc_usable_size@Base 4.9 + __interceptor_mbsnrtowcs@Base 4.9 + __interceptor_mbsrtowcs@Base 4.9 + __interceptor_mbstowcs@Base 4.9 + __interceptor_memalign@Base 4.9 + __interceptor_memchr@Base 4.9 + __interceptor_memcmp@Base 4.9 + __interceptor_memcpy@Base 4.9 + __interceptor_memmove@Base 4.9 + __interceptor_memrchr@Base 4.9 + __interceptor_memset@Base 4.9 + __interceptor_mlock@Base 4.9 + __interceptor_mlockall@Base 4.9 + __interceptor_mmap64@Base 4.9 + __interceptor_mmap@Base 4.9 + __interceptor_modf@Base 4.9 + __interceptor_modff@Base 4.9 + __interceptor_modfl@Base 4.9 + __interceptor_munlock@Base 4.9 + __interceptor_munlockall@Base 4.9 + __interceptor_munmap@Base 4.9 + __interceptor_nanosleep@Base 4.9 + __interceptor_on_exit@Base 4.9 + __interceptor_open64@Base 4.9 + __interceptor_open@Base 4.9 + __interceptor_opendir@Base 4.9 + __interceptor_pipe2@Base 4.9 + __interceptor_pipe@Base 4.9 + __interceptor_poll@Base 4.9 + __interceptor_posix_memalign@Base 4.9 + __interceptor_ppoll@Base 4.9 + __interceptor_prctl@Base 4.9 + __interceptor_pread64@Base 4.9 + __interceptor_pread@Base 4.9 + __interceptor_preadv64@Base 4.9 + __interceptor_preadv@Base 4.9 + __interceptor_pthread_attr_getaffinity_np@Base 4.9 + __interceptor_pthread_attr_getdetachstate@Base 4.9 + __interceptor_pthread_attr_getguardsize@Base 4.9 + __interceptor_pthread_attr_getinheritsched@Base 4.9 + __interceptor_pthread_attr_getschedparam@Base 4.9 + __interceptor_pthread_attr_getschedpolicy@Base 4.9 + __interceptor_pthread_attr_getscope@Base 4.9 + __interceptor_pthread_attr_getstack@Base 4.9 + __interceptor_pthread_attr_getstacksize@Base 4.9 + __interceptor_pthread_barrier_destroy@Base 4.9 + __interceptor_pthread_barrier_init@Base 4.9 + __interceptor_pthread_barrier_wait@Base 4.9 + __interceptor_pthread_cond_broadcast@Base 4.9 + __interceptor_pthread_cond_destroy@Base 4.9 + __interceptor_pthread_cond_init@Base 4.9 + __interceptor_pthread_cond_signal@Base 4.9 + __interceptor_pthread_cond_timedwait@Base 4.9 + __interceptor_pthread_cond_wait@Base 4.9 + __interceptor_pthread_create@Base 4.9 + __interceptor_pthread_detach@Base 4.9 + __interceptor_pthread_getschedparam@Base 4.9 + __interceptor_pthread_join@Base 4.9 + __interceptor_pthread_kill@Base 4.9 + __interceptor_pthread_mutex_destroy@Base 4.9 + __interceptor_pthread_mutex_init@Base 4.9 + __interceptor_pthread_mutex_lock@Base 4.9 + __interceptor_pthread_mutex_timedlock@Base 4.9 + __interceptor_pthread_mutex_trylock@Base 4.9 + __interceptor_pthread_mutex_unlock@Base 4.9 + __interceptor_pthread_once@Base 4.9 + __interceptor_pthread_rwlock_destroy@Base 4.9 + __interceptor_pthread_rwlock_init@Base 4.9 + __interceptor_pthread_rwlock_rdlock@Base 4.9 + __interceptor_pthread_rwlock_timedrdlock@Base 4.9 + __interceptor_pthread_rwlock_timedwrlock@Base 4.9 + __interceptor_pthread_rwlock_tryrdlock@Base 4.9 + __interceptor_pthread_rwlock_trywrlock@Base 4.9 + __interceptor_pthread_rwlock_unlock@Base 4.9 + __interceptor_pthread_rwlock_wrlock@Base 4.9 + __interceptor_pthread_setname_np@Base 4.9 + __interceptor_pthread_spin_destroy@Base 4.9 + __interceptor_pthread_spin_init@Base 4.9 + __interceptor_pthread_spin_lock@Base 4.9 + __interceptor_pthread_spin_trylock@Base 4.9 + __interceptor_pthread_spin_unlock@Base 4.9 + __interceptor_ptrace@Base 4.9 + __interceptor_puts@Base 4.9 + __interceptor_pvalloc@Base 4.9 + __interceptor_pwrite64@Base 4.9 + __interceptor_pwrite@Base 4.9 + __interceptor_pwritev64@Base 4.9 + __interceptor_pwritev@Base 4.9 + __interceptor_raise@Base 4.9 + __interceptor_random_r@Base 4.9 + __interceptor_read@Base 4.9 + __interceptor_readdir64@Base 4.9 + __interceptor_readdir64_r@Base 4.9 + __interceptor_readdir@Base 4.9 + __interceptor_readdir_r@Base 4.9 + __interceptor_readv@Base 4.9 + __interceptor_realloc@Base 4.9 + __interceptor_realpath@Base 4.9 + __interceptor_recv@Base 4.9 + __interceptor_recvmsg@Base 4.9 + __interceptor_remquo@Base 4.9 + __interceptor_remquof@Base 4.9 + __interceptor_remquol@Base 4.9 + __interceptor_rmdir@Base 4.9 + __interceptor_scandir64@Base 4.9 + __interceptor_scandir@Base 4.9 + __interceptor_scanf@Base 4.9 + __interceptor_sched_getaffinity@Base 4.9 + __interceptor_sem_destroy@Base 4.9 + __interceptor_sem_getvalue@Base 4.9 + __interceptor_sem_init@Base 4.9 + __interceptor_sem_post@Base 4.9 + __interceptor_sem_timedwait@Base 4.9 + __interceptor_sem_trywait@Base 4.9 + __interceptor_sem_wait@Base 4.9 + __interceptor_send@Base 4.9 + __interceptor_sendmsg@Base 4.9 + __interceptor_setitimer@Base 4.9 + __interceptor_setjmp@Base 4.9 + __interceptor_setlocale@Base 4.9 + __interceptor_shmctl@Base 4.9 + __interceptor_sigaction@Base 4.9 + __interceptor_sigemptyset@Base 4.9 + __interceptor_sigfillset@Base 4.9 + __interceptor_siglongjmp@Base 4.9 + __interceptor_signal@Base 4.9 + __interceptor_signalfd@Base 4.9 + __interceptor_sigpending@Base 4.9 + __interceptor_sigprocmask@Base 4.9 + __interceptor_sigsetjmp@Base 4.9 + __interceptor_sigsuspend@Base 4.9 + __interceptor_sigtimedwait@Base 4.9 + __interceptor_sigwait@Base 4.9 + __interceptor_sigwaitinfo@Base 4.9 + __interceptor_sincos@Base 4.9 + __interceptor_sincosf@Base 4.9 + __interceptor_sincosl@Base 4.9 + __interceptor_sleep@Base 4.9 + __interceptor_socket@Base 4.9 + __interceptor_socketpair@Base 4.9 + __interceptor_sscanf@Base 4.9 + __interceptor_stat64@Base 4.9 + __interceptor_stat@Base 4.9 + __interceptor_statfs64@Base 4.9 + __interceptor_statfs@Base 4.9 + __interceptor_statvfs64@Base 4.9 + __interceptor_statvfs@Base 4.9 + __interceptor_strcasecmp@Base 4.9 + __interceptor_strchr@Base 4.9 + __interceptor_strchrnul@Base 4.9 + __interceptor_strcmp@Base 4.9 + __interceptor_strcpy@Base 4.9 + __interceptor_strdup@Base 4.9 + __interceptor_strerror@Base 4.9 + __interceptor_strerror_r@Base 4.9 + __interceptor_strlen@Base 4.9 + __interceptor_strncasecmp@Base 4.9 + __interceptor_strncmp@Base 4.9 + __interceptor_strncpy@Base 4.9 + __interceptor_strptime@Base 4.9 + __interceptor_strrchr@Base 4.9 + __interceptor_strstr@Base 4.9 + __interceptor_strtoimax@Base 4.9 + __interceptor_strtoumax@Base 4.9 + __interceptor_sysinfo@Base 4.9 + __interceptor_tcgetattr@Base 4.9 + __interceptor_tempnam@Base 4.9 + __interceptor_textdomain@Base 4.9 + __interceptor_time@Base 4.9 + __interceptor_times@Base 4.9 + __interceptor_tmpnam@Base 4.9 + __interceptor_tmpnam_r@Base 4.9 + __interceptor_unlink@Base 4.9 + __interceptor_usleep@Base 4.9 + __interceptor_valloc@Base 4.9 + __interceptor_vfscanf@Base 4.9 + __interceptor_vscanf@Base 4.9 + __interceptor_vsscanf@Base 4.9 + __interceptor_wait3@Base 4.9 + __interceptor_wait4@Base 4.9 + __interceptor_wait@Base 4.9 + __interceptor_waitid@Base 4.9 + __interceptor_waitpid@Base 4.9 + __interceptor_wcsnrtombs@Base 4.9 + __interceptor_wcsrtombs@Base 4.9 + __interceptor_wcstombs@Base 4.9 + __interceptor_wordexp@Base 4.9 + __interceptor_write@Base 4.9 + __interceptor_writev@Base 4.9 + __isoc99_fscanf@Base 4.9 + __isoc99_scanf@Base 4.9 + __isoc99_sscanf@Base 4.9 + __isoc99_vfscanf@Base 4.9 + __isoc99_vscanf@Base 4.9 + __isoc99_vsscanf@Base 4.9 + __libc_memalign@Base 4.9 + __lxstat64@Base 4.9 + __lxstat@Base 4.9 + __res_iclose@Base 4.9 + __sanitizer_cov@Base 4.9 + __sanitizer_cov_dump@Base 4.9 + __sanitizer_report_error_summary@Base 4.9 + __sanitizer_sandbox_on_notify@Base 4.9 + __sanitizer_set_report_path@Base 4.9 + __sanitizer_syscall_post_impl_accept4@Base 4.9 + __sanitizer_syscall_post_impl_accept@Base 4.9 + __sanitizer_syscall_post_impl_access@Base 4.9 + __sanitizer_syscall_post_impl_acct@Base 4.9 + __sanitizer_syscall_post_impl_add_key@Base 4.9 + __sanitizer_syscall_post_impl_adjtimex@Base 4.9 + __sanitizer_syscall_post_impl_alarm@Base 4.9 + __sanitizer_syscall_post_impl_bdflush@Base 4.9 + __sanitizer_syscall_post_impl_bind@Base 4.9 + __sanitizer_syscall_post_impl_brk@Base 4.9 + __sanitizer_syscall_post_impl_capget@Base 4.9 + __sanitizer_syscall_post_impl_capset@Base 4.9 + __sanitizer_syscall_post_impl_chdir@Base 4.9 + __sanitizer_syscall_post_impl_chmod@Base 4.9 + __sanitizer_syscall_post_impl_chown16@Base 4.9 + __sanitizer_syscall_post_impl_chown@Base 4.9 + __sanitizer_syscall_post_impl_chroot@Base 4.9 + __sanitizer_syscall_post_impl_clock_adjtime@Base 4.9 + __sanitizer_syscall_post_impl_clock_getres@Base 4.9 + __sanitizer_syscall_post_impl_clock_gettime@Base 4.9 + __sanitizer_syscall_post_impl_clock_nanosleep@Base 4.9 + __sanitizer_syscall_post_impl_clock_settime@Base 4.9 + __sanitizer_syscall_post_impl_close@Base 4.9 + __sanitizer_syscall_post_impl_connect@Base 4.9 + __sanitizer_syscall_post_impl_creat@Base 4.9 + __sanitizer_syscall_post_impl_delete_module@Base 4.9 + __sanitizer_syscall_post_impl_dup2@Base 4.9 + __sanitizer_syscall_post_impl_dup3@Base 4.9 + __sanitizer_syscall_post_impl_dup@Base 4.9 + __sanitizer_syscall_post_impl_epoll_create1@Base 4.9 + __sanitizer_syscall_post_impl_epoll_create@Base 4.9 + __sanitizer_syscall_post_impl_epoll_ctl@Base 4.9 + __sanitizer_syscall_post_impl_epoll_pwait@Base 4.9 + __sanitizer_syscall_post_impl_epoll_wait@Base 4.9 + __sanitizer_syscall_post_impl_eventfd2@Base 4.9 + __sanitizer_syscall_post_impl_eventfd@Base 4.9 + __sanitizer_syscall_post_impl_exit@Base 4.9 + __sanitizer_syscall_post_impl_exit_group@Base 4.9 + __sanitizer_syscall_post_impl_faccessat@Base 4.9 + __sanitizer_syscall_post_impl_fchdir@Base 4.9 + __sanitizer_syscall_post_impl_fchmod@Base 4.9 + __sanitizer_syscall_post_impl_fchmodat@Base 4.9 + __sanitizer_syscall_post_impl_fchown16@Base 4.9 + __sanitizer_syscall_post_impl_fchown@Base 4.9 + __sanitizer_syscall_post_impl_fchownat@Base 4.9 + __sanitizer_syscall_post_impl_fcntl64@Base 4.9 + __sanitizer_syscall_post_impl_fcntl@Base 4.9 + __sanitizer_syscall_post_impl_fdatasync@Base 4.9 + __sanitizer_syscall_post_impl_fgetxattr@Base 4.9 + __sanitizer_syscall_post_impl_flistxattr@Base 4.9 + __sanitizer_syscall_post_impl_flock@Base 4.9 + __sanitizer_syscall_post_impl_fork@Base 4.9 + __sanitizer_syscall_post_impl_fremovexattr@Base 4.9 + __sanitizer_syscall_post_impl_fsetxattr@Base 4.9 + __sanitizer_syscall_post_impl_fstat64@Base 4.9 + __sanitizer_syscall_post_impl_fstat@Base 4.9 + __sanitizer_syscall_post_impl_fstatat64@Base 4.9 + __sanitizer_syscall_post_impl_fstatfs64@Base 4.9 + __sanitizer_syscall_post_impl_fstatfs@Base 4.9 + __sanitizer_syscall_post_impl_fsync@Base 4.9 + __sanitizer_syscall_post_impl_ftruncate@Base 4.9 + __sanitizer_syscall_post_impl_futimesat@Base 4.9 + __sanitizer_syscall_post_impl_get_mempolicy@Base 4.9 + __sanitizer_syscall_post_impl_get_robust_list@Base 4.9 + __sanitizer_syscall_post_impl_getcpu@Base 4.9 + __sanitizer_syscall_post_impl_getcwd@Base 4.9 + __sanitizer_syscall_post_impl_getdents64@Base 4.9 + __sanitizer_syscall_post_impl_getdents@Base 4.9 + __sanitizer_syscall_post_impl_getegid16@Base 4.9 + __sanitizer_syscall_post_impl_getegid@Base 4.9 + __sanitizer_syscall_post_impl_geteuid16@Base 4.9 + __sanitizer_syscall_post_impl_geteuid@Base 4.9 + __sanitizer_syscall_post_impl_getgid16@Base 4.9 + __sanitizer_syscall_post_impl_getgid@Base 4.9 + __sanitizer_syscall_post_impl_getgroups16@Base 4.9 + __sanitizer_syscall_post_impl_getgroups@Base 4.9 + __sanitizer_syscall_post_impl_gethostname@Base 4.9 + __sanitizer_syscall_post_impl_getitimer@Base 4.9 + __sanitizer_syscall_post_impl_getpeername@Base 4.9 + __sanitizer_syscall_post_impl_getpgid@Base 4.9 + __sanitizer_syscall_post_impl_getpgrp@Base 4.9 + __sanitizer_syscall_post_impl_getpid@Base 4.9 + __sanitizer_syscall_post_impl_getppid@Base 4.9 + __sanitizer_syscall_post_impl_getpriority@Base 4.9 + __sanitizer_syscall_post_impl_getresgid16@Base 4.9 + __sanitizer_syscall_post_impl_getresgid@Base 4.9 + __sanitizer_syscall_post_impl_getresuid16@Base 4.9 + __sanitizer_syscall_post_impl_getresuid@Base 4.9 + __sanitizer_syscall_post_impl_getrlimit@Base 4.9 + __sanitizer_syscall_post_impl_getrusage@Base 4.9 + __sanitizer_syscall_post_impl_getsid@Base 4.9 + __sanitizer_syscall_post_impl_getsockname@Base 4.9 + __sanitizer_syscall_post_impl_getsockopt@Base 4.9 + __sanitizer_syscall_post_impl_gettid@Base 4.9 + __sanitizer_syscall_post_impl_gettimeofday@Base 4.9 + __sanitizer_syscall_post_impl_getuid16@Base 4.9 + __sanitizer_syscall_post_impl_getuid@Base 4.9 + __sanitizer_syscall_post_impl_getxattr@Base 4.9 + __sanitizer_syscall_post_impl_init_module@Base 4.9 + __sanitizer_syscall_post_impl_inotify_add_watch@Base 4.9 + __sanitizer_syscall_post_impl_inotify_init1@Base 4.9 + __sanitizer_syscall_post_impl_inotify_init@Base 4.9 + __sanitizer_syscall_post_impl_inotify_rm_watch@Base 4.9 + __sanitizer_syscall_post_impl_io_cancel@Base 4.9 + __sanitizer_syscall_post_impl_io_destroy@Base 4.9 + __sanitizer_syscall_post_impl_io_getevents@Base 4.9 + __sanitizer_syscall_post_impl_io_setup@Base 4.9 + __sanitizer_syscall_post_impl_io_submit@Base 4.9 + __sanitizer_syscall_post_impl_ioctl@Base 4.9 + __sanitizer_syscall_post_impl_ioperm@Base 4.9 + __sanitizer_syscall_post_impl_ioprio_get@Base 4.9 + __sanitizer_syscall_post_impl_ioprio_set@Base 4.9 + __sanitizer_syscall_post_impl_ipc@Base 4.9 + __sanitizer_syscall_post_impl_kexec_load@Base 4.9 + __sanitizer_syscall_post_impl_keyctl@Base 4.9 + __sanitizer_syscall_post_impl_kill@Base 4.9 + __sanitizer_syscall_post_impl_lchown16@Base 4.9 + __sanitizer_syscall_post_impl_lchown@Base 4.9 + __sanitizer_syscall_post_impl_lgetxattr@Base 4.9 + __sanitizer_syscall_post_impl_link@Base 4.9 + __sanitizer_syscall_post_impl_linkat@Base 4.9 + __sanitizer_syscall_post_impl_listen@Base 4.9 + __sanitizer_syscall_post_impl_listxattr@Base 4.9 + __sanitizer_syscall_post_impl_llistxattr@Base 4.9 + __sanitizer_syscall_post_impl_llseek@Base 4.9 + __sanitizer_syscall_post_impl_lookup_dcookie@Base 4.9 + __sanitizer_syscall_post_impl_lremovexattr@Base 4.9 + __sanitizer_syscall_post_impl_lseek@Base 4.9 + __sanitizer_syscall_post_impl_lsetxattr@Base 4.9 + __sanitizer_syscall_post_impl_lstat64@Base 4.9 + __sanitizer_syscall_post_impl_lstat@Base 4.9 + __sanitizer_syscall_post_impl_madvise@Base 4.9 + __sanitizer_syscall_post_impl_mbind@Base 4.9 + __sanitizer_syscall_post_impl_migrate_pages@Base 4.9 + __sanitizer_syscall_post_impl_mincore@Base 4.9 + __sanitizer_syscall_post_impl_mkdir@Base 4.9 + __sanitizer_syscall_post_impl_mkdirat@Base 4.9 + __sanitizer_syscall_post_impl_mknod@Base 4.9 + __sanitizer_syscall_post_impl_mknodat@Base 4.9 + __sanitizer_syscall_post_impl_mlock@Base 4.9 + __sanitizer_syscall_post_impl_mlockall@Base 4.9 + __sanitizer_syscall_post_impl_mmap_pgoff@Base 4.9 + __sanitizer_syscall_post_impl_mount@Base 4.9 + __sanitizer_syscall_post_impl_move_pages@Base 4.9 + __sanitizer_syscall_post_impl_mprotect@Base 4.9 + __sanitizer_syscall_post_impl_mq_getsetattr@Base 4.9 + __sanitizer_syscall_post_impl_mq_notify@Base 4.9 + __sanitizer_syscall_post_impl_mq_open@Base 4.9 + __sanitizer_syscall_post_impl_mq_timedreceive@Base 4.9 + __sanitizer_syscall_post_impl_mq_timedsend@Base 4.9 + __sanitizer_syscall_post_impl_mq_unlink@Base 4.9 + __sanitizer_syscall_post_impl_mremap@Base 4.9 + __sanitizer_syscall_post_impl_msgctl@Base 4.9 + __sanitizer_syscall_post_impl_msgget@Base 4.9 + __sanitizer_syscall_post_impl_msgrcv@Base 4.9 + __sanitizer_syscall_post_impl_msgsnd@Base 4.9 + __sanitizer_syscall_post_impl_msync@Base 4.9 + __sanitizer_syscall_post_impl_munlock@Base 4.9 + __sanitizer_syscall_post_impl_munlockall@Base 4.9 + __sanitizer_syscall_post_impl_munmap@Base 4.9 + __sanitizer_syscall_post_impl_name_to_handle_at@Base 4.9 + __sanitizer_syscall_post_impl_nanosleep@Base 4.9 + __sanitizer_syscall_post_impl_newfstat@Base 4.9 + __sanitizer_syscall_post_impl_newfstatat@Base 4.9 + __sanitizer_syscall_post_impl_newlstat@Base 4.9 + __sanitizer_syscall_post_impl_newstat@Base 4.9 + __sanitizer_syscall_post_impl_newuname@Base 4.9 + __sanitizer_syscall_post_impl_ni_syscall@Base 4.9 + __sanitizer_syscall_post_impl_nice@Base 4.9 + __sanitizer_syscall_post_impl_old_getrlimit@Base 4.9 + __sanitizer_syscall_post_impl_old_mmap@Base 4.9 + __sanitizer_syscall_post_impl_old_readdir@Base 4.9 + __sanitizer_syscall_post_impl_old_select@Base 4.9 + __sanitizer_syscall_post_impl_oldumount@Base 4.9 + __sanitizer_syscall_post_impl_olduname@Base 4.9 + __sanitizer_syscall_post_impl_open@Base 4.9 + __sanitizer_syscall_post_impl_open_by_handle_at@Base 4.9 + __sanitizer_syscall_post_impl_openat@Base 4.9 + __sanitizer_syscall_post_impl_pause@Base 4.9 + __sanitizer_syscall_post_impl_pciconfig_iobase@Base 4.9 + __sanitizer_syscall_post_impl_pciconfig_read@Base 4.9 + __sanitizer_syscall_post_impl_pciconfig_write@Base 4.9 + __sanitizer_syscall_post_impl_perf_event_open@Base 4.9 + __sanitizer_syscall_post_impl_personality@Base 4.9 + __sanitizer_syscall_post_impl_pipe2@Base 4.9 + __sanitizer_syscall_post_impl_pipe@Base 4.9 + __sanitizer_syscall_post_impl_pivot_root@Base 4.9 + __sanitizer_syscall_post_impl_poll@Base 4.9 + __sanitizer_syscall_post_impl_ppoll@Base 4.9 + __sanitizer_syscall_post_impl_pread64@Base 4.9 + __sanitizer_syscall_post_impl_preadv@Base 4.9 + __sanitizer_syscall_post_impl_prlimit64@Base 4.9 + __sanitizer_syscall_post_impl_process_vm_readv@Base 4.9 + __sanitizer_syscall_post_impl_process_vm_writev@Base 4.9 + __sanitizer_syscall_post_impl_pselect6@Base 4.9 + __sanitizer_syscall_post_impl_ptrace@Base 4.9 + __sanitizer_syscall_post_impl_pwrite64@Base 4.9 + __sanitizer_syscall_post_impl_pwritev@Base 4.9 + __sanitizer_syscall_post_impl_quotactl@Base 4.9 + __sanitizer_syscall_post_impl_read@Base 4.9 + __sanitizer_syscall_post_impl_readlink@Base 4.9 + __sanitizer_syscall_post_impl_readlinkat@Base 4.9 + __sanitizer_syscall_post_impl_readv@Base 4.9 + __sanitizer_syscall_post_impl_reboot@Base 4.9 + __sanitizer_syscall_post_impl_recv@Base 4.9 + __sanitizer_syscall_post_impl_recvfrom@Base 4.9 + __sanitizer_syscall_post_impl_recvmmsg@Base 4.9 + __sanitizer_syscall_post_impl_recvmsg@Base 4.9 + __sanitizer_syscall_post_impl_remap_file_pages@Base 4.9 + __sanitizer_syscall_post_impl_removexattr@Base 4.9 + __sanitizer_syscall_post_impl_rename@Base 4.9 + __sanitizer_syscall_post_impl_renameat@Base 4.9 + __sanitizer_syscall_post_impl_request_key@Base 4.9 + __sanitizer_syscall_post_impl_restart_syscall@Base 4.9 + __sanitizer_syscall_post_impl_rmdir@Base 4.9 + __sanitizer_syscall_post_impl_rt_sigpending@Base 4.9 + __sanitizer_syscall_post_impl_rt_sigprocmask@Base 4.9 + __sanitizer_syscall_post_impl_rt_sigqueueinfo@Base 4.9 + __sanitizer_syscall_post_impl_rt_sigtimedwait@Base 4.9 + __sanitizer_syscall_post_impl_rt_tgsigqueueinfo@Base 4.9 + __sanitizer_syscall_post_impl_sched_get_priority_max@Base 4.9 + __sanitizer_syscall_post_impl_sched_get_priority_min@Base 4.9 + __sanitizer_syscall_post_impl_sched_getaffinity@Base 4.9 + __sanitizer_syscall_post_impl_sched_getparam@Base 4.9 + __sanitizer_syscall_post_impl_sched_getscheduler@Base 4.9 + __sanitizer_syscall_post_impl_sched_rr_get_interval@Base 4.9 + __sanitizer_syscall_post_impl_sched_setaffinity@Base 4.9 + __sanitizer_syscall_post_impl_sched_setparam@Base 4.9 + __sanitizer_syscall_post_impl_sched_setscheduler@Base 4.9 + __sanitizer_syscall_post_impl_sched_yield@Base 4.9 + __sanitizer_syscall_post_impl_select@Base 4.9 + __sanitizer_syscall_post_impl_semctl@Base 4.9 + __sanitizer_syscall_post_impl_semget@Base 4.9 + __sanitizer_syscall_post_impl_semop@Base 4.9 + __sanitizer_syscall_post_impl_semtimedop@Base 4.9 + __sanitizer_syscall_post_impl_send@Base 4.9 + __sanitizer_syscall_post_impl_sendfile64@Base 4.9 + __sanitizer_syscall_post_impl_sendfile@Base 4.9 + __sanitizer_syscall_post_impl_sendmmsg@Base 4.9 + __sanitizer_syscall_post_impl_sendmsg@Base 4.9 + __sanitizer_syscall_post_impl_sendto@Base 4.9 + __sanitizer_syscall_post_impl_set_mempolicy@Base 4.9 + __sanitizer_syscall_post_impl_set_robust_list@Base 4.9 + __sanitizer_syscall_post_impl_set_tid_address@Base 4.9 + __sanitizer_syscall_post_impl_setdomainname@Base 4.9 + __sanitizer_syscall_post_impl_setfsgid16@Base 4.9 + __sanitizer_syscall_post_impl_setfsgid@Base 4.9 + __sanitizer_syscall_post_impl_setfsuid16@Base 4.9 + __sanitizer_syscall_post_impl_setfsuid@Base 4.9 + __sanitizer_syscall_post_impl_setgid16@Base 4.9 + __sanitizer_syscall_post_impl_setgid@Base 4.9 + __sanitizer_syscall_post_impl_setgroups16@Base 4.9 + __sanitizer_syscall_post_impl_setgroups@Base 4.9 + __sanitizer_syscall_post_impl_sethostname@Base 4.9 + __sanitizer_syscall_post_impl_setitimer@Base 4.9 + __sanitizer_syscall_post_impl_setns@Base 4.9 + __sanitizer_syscall_post_impl_setpgid@Base 4.9 + __sanitizer_syscall_post_impl_setpriority@Base 4.9 + __sanitizer_syscall_post_impl_setregid16@Base 4.9 + __sanitizer_syscall_post_impl_setregid@Base 4.9 + __sanitizer_syscall_post_impl_setresgid16@Base 4.9 + __sanitizer_syscall_post_impl_setresgid@Base 4.9 + __sanitizer_syscall_post_impl_setresuid16@Base 4.9 + __sanitizer_syscall_post_impl_setresuid@Base 4.9 + __sanitizer_syscall_post_impl_setreuid16@Base 4.9 + __sanitizer_syscall_post_impl_setreuid@Base 4.9 + __sanitizer_syscall_post_impl_setrlimit@Base 4.9 + __sanitizer_syscall_post_impl_setsid@Base 4.9 + __sanitizer_syscall_post_impl_setsockopt@Base 4.9 + __sanitizer_syscall_post_impl_settimeofday@Base 4.9 + __sanitizer_syscall_post_impl_setuid16@Base 4.9 + __sanitizer_syscall_post_impl_setuid@Base 4.9 + __sanitizer_syscall_post_impl_setxattr@Base 4.9 + __sanitizer_syscall_post_impl_sgetmask@Base 4.9 + __sanitizer_syscall_post_impl_shmat@Base 4.9 + __sanitizer_syscall_post_impl_shmctl@Base 4.9 + __sanitizer_syscall_post_impl_shmdt@Base 4.9 + __sanitizer_syscall_post_impl_shmget@Base 4.9 + __sanitizer_syscall_post_impl_shutdown@Base 4.9 + __sanitizer_syscall_post_impl_signal@Base 4.9 + __sanitizer_syscall_post_impl_signalfd4@Base 4.9 + __sanitizer_syscall_post_impl_signalfd@Base 4.9 + __sanitizer_syscall_post_impl_sigpending@Base 4.9 + __sanitizer_syscall_post_impl_sigprocmask@Base 4.9 + __sanitizer_syscall_post_impl_socket@Base 4.9 + __sanitizer_syscall_post_impl_socketcall@Base 4.9 + __sanitizer_syscall_post_impl_socketpair@Base 4.9 + __sanitizer_syscall_post_impl_splice@Base 4.9 + __sanitizer_syscall_post_impl_spu_create@Base 4.9 + __sanitizer_syscall_post_impl_spu_run@Base 4.9 + __sanitizer_syscall_post_impl_ssetmask@Base 4.9 + __sanitizer_syscall_post_impl_stat64@Base 4.9 + __sanitizer_syscall_post_impl_stat@Base 4.9 + __sanitizer_syscall_post_impl_statfs64@Base 4.9 + __sanitizer_syscall_post_impl_statfs@Base 4.9 + __sanitizer_syscall_post_impl_stime@Base 4.9 + __sanitizer_syscall_post_impl_swapoff@Base 4.9 + __sanitizer_syscall_post_impl_swapon@Base 4.9 + __sanitizer_syscall_post_impl_symlink@Base 4.9 + __sanitizer_syscall_post_impl_symlinkat@Base 4.9 + __sanitizer_syscall_post_impl_sync@Base 4.9 + __sanitizer_syscall_post_impl_syncfs@Base 4.9 + __sanitizer_syscall_post_impl_sysctl@Base 4.9 + __sanitizer_syscall_post_impl_sysfs@Base 4.9 + __sanitizer_syscall_post_impl_sysinfo@Base 4.9 + __sanitizer_syscall_post_impl_syslog@Base 4.9 + __sanitizer_syscall_post_impl_tee@Base 4.9 + __sanitizer_syscall_post_impl_tgkill@Base 4.9 + __sanitizer_syscall_post_impl_time@Base 4.9 + __sanitizer_syscall_post_impl_timer_create@Base 4.9 + __sanitizer_syscall_post_impl_timer_delete@Base 4.9 + __sanitizer_syscall_post_impl_timer_getoverrun@Base 4.9 + __sanitizer_syscall_post_impl_timer_gettime@Base 4.9 + __sanitizer_syscall_post_impl_timer_settime@Base 4.9 + __sanitizer_syscall_post_impl_timerfd_create@Base 4.9 + __sanitizer_syscall_post_impl_timerfd_gettime@Base 4.9 + __sanitizer_syscall_post_impl_timerfd_settime@Base 4.9 + __sanitizer_syscall_post_impl_times@Base 4.9 + __sanitizer_syscall_post_impl_tkill@Base 4.9 + __sanitizer_syscall_post_impl_truncate@Base 4.9 + __sanitizer_syscall_post_impl_umask@Base 4.9 + __sanitizer_syscall_post_impl_umount@Base 4.9 + __sanitizer_syscall_post_impl_uname@Base 4.9 + __sanitizer_syscall_post_impl_unlink@Base 4.9 + __sanitizer_syscall_post_impl_unlinkat@Base 4.9 + __sanitizer_syscall_post_impl_unshare@Base 4.9 + __sanitizer_syscall_post_impl_uselib@Base 4.9 + __sanitizer_syscall_post_impl_ustat@Base 4.9 + __sanitizer_syscall_post_impl_utime@Base 4.9 + __sanitizer_syscall_post_impl_utimensat@Base 4.9 + __sanitizer_syscall_post_impl_utimes@Base 4.9 + __sanitizer_syscall_post_impl_vfork@Base 4.9 + __sanitizer_syscall_post_impl_vhangup@Base 4.9 + __sanitizer_syscall_post_impl_vmsplice@Base 4.9 + __sanitizer_syscall_post_impl_wait4@Base 4.9 + __sanitizer_syscall_post_impl_waitid@Base 4.9 + __sanitizer_syscall_post_impl_waitpid@Base 4.9 + __sanitizer_syscall_post_impl_write@Base 4.9 + __sanitizer_syscall_post_impl_writev@Base 4.9 + __sanitizer_syscall_pre_impl_accept4@Base 4.9 + __sanitizer_syscall_pre_impl_accept@Base 4.9 + __sanitizer_syscall_pre_impl_access@Base 4.9 + __sanitizer_syscall_pre_impl_acct@Base 4.9 + __sanitizer_syscall_pre_impl_add_key@Base 4.9 + __sanitizer_syscall_pre_impl_adjtimex@Base 4.9 + __sanitizer_syscall_pre_impl_alarm@Base 4.9 + __sanitizer_syscall_pre_impl_bdflush@Base 4.9 + __sanitizer_syscall_pre_impl_bind@Base 4.9 + __sanitizer_syscall_pre_impl_brk@Base 4.9 + __sanitizer_syscall_pre_impl_capget@Base 4.9 + __sanitizer_syscall_pre_impl_capset@Base 4.9 + __sanitizer_syscall_pre_impl_chdir@Base 4.9 + __sanitizer_syscall_pre_impl_chmod@Base 4.9 + __sanitizer_syscall_pre_impl_chown16@Base 4.9 + __sanitizer_syscall_pre_impl_chown@Base 4.9 + __sanitizer_syscall_pre_impl_chroot@Base 4.9 + __sanitizer_syscall_pre_impl_clock_adjtime@Base 4.9 + __sanitizer_syscall_pre_impl_clock_getres@Base 4.9 + __sanitizer_syscall_pre_impl_clock_gettime@Base 4.9 + __sanitizer_syscall_pre_impl_clock_nanosleep@Base 4.9 + __sanitizer_syscall_pre_impl_clock_settime@Base 4.9 + __sanitizer_syscall_pre_impl_close@Base 4.9 + __sanitizer_syscall_pre_impl_connect@Base 4.9 + __sanitizer_syscall_pre_impl_creat@Base 4.9 + __sanitizer_syscall_pre_impl_delete_module@Base 4.9 + __sanitizer_syscall_pre_impl_dup2@Base 4.9 + __sanitizer_syscall_pre_impl_dup3@Base 4.9 + __sanitizer_syscall_pre_impl_dup@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_create1@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_create@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_ctl@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_pwait@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_wait@Base 4.9 + __sanitizer_syscall_pre_impl_eventfd2@Base 4.9 + __sanitizer_syscall_pre_impl_eventfd@Base 4.9 + __sanitizer_syscall_pre_impl_exit@Base 4.9 + __sanitizer_syscall_pre_impl_exit_group@Base 4.9 + __sanitizer_syscall_pre_impl_faccessat@Base 4.9 + __sanitizer_syscall_pre_impl_fchdir@Base 4.9 + __sanitizer_syscall_pre_impl_fchmod@Base 4.9 + __sanitizer_syscall_pre_impl_fchmodat@Base 4.9 + __sanitizer_syscall_pre_impl_fchown16@Base 4.9 + __sanitizer_syscall_pre_impl_fchown@Base 4.9 + __sanitizer_syscall_pre_impl_fchownat@Base 4.9 + __sanitizer_syscall_pre_impl_fcntl64@Base 4.9 + __sanitizer_syscall_pre_impl_fcntl@Base 4.9 + __sanitizer_syscall_pre_impl_fdatasync@Base 4.9 + __sanitizer_syscall_pre_impl_fgetxattr@Base 4.9 + __sanitizer_syscall_pre_impl_flistxattr@Base 4.9 + __sanitizer_syscall_pre_impl_flock@Base 4.9 + __sanitizer_syscall_pre_impl_fork@Base 4.9 + __sanitizer_syscall_pre_impl_fremovexattr@Base 4.9 + __sanitizer_syscall_pre_impl_fsetxattr@Base 4.9 + __sanitizer_syscall_pre_impl_fstat64@Base 4.9 + __sanitizer_syscall_pre_impl_fstat@Base 4.9 + __sanitizer_syscall_pre_impl_fstatat64@Base 4.9 + __sanitizer_syscall_pre_impl_fstatfs64@Base 4.9 + __sanitizer_syscall_pre_impl_fstatfs@Base 4.9 + __sanitizer_syscall_pre_impl_fsync@Base 4.9 + __sanitizer_syscall_pre_impl_ftruncate@Base 4.9 + __sanitizer_syscall_pre_impl_futimesat@Base 4.9 + __sanitizer_syscall_pre_impl_get_mempolicy@Base 4.9 + __sanitizer_syscall_pre_impl_get_robust_list@Base 4.9 + __sanitizer_syscall_pre_impl_getcpu@Base 4.9 + __sanitizer_syscall_pre_impl_getcwd@Base 4.9 + __sanitizer_syscall_pre_impl_getdents64@Base 4.9 + __sanitizer_syscall_pre_impl_getdents@Base 4.9 + __sanitizer_syscall_pre_impl_getegid16@Base 4.9 + __sanitizer_syscall_pre_impl_getegid@Base 4.9 + __sanitizer_syscall_pre_impl_geteuid16@Base 4.9 + __sanitizer_syscall_pre_impl_geteuid@Base 4.9 + __sanitizer_syscall_pre_impl_getgid16@Base 4.9 + __sanitizer_syscall_pre_impl_getgid@Base 4.9 + __sanitizer_syscall_pre_impl_getgroups16@Base 4.9 + __sanitizer_syscall_pre_impl_getgroups@Base 4.9 + __sanitizer_syscall_pre_impl_gethostname@Base 4.9 + __sanitizer_syscall_pre_impl_getitimer@Base 4.9 + __sanitizer_syscall_pre_impl_getpeername@Base 4.9 + __sanitizer_syscall_pre_impl_getpgid@Base 4.9 + __sanitizer_syscall_pre_impl_getpgrp@Base 4.9 + __sanitizer_syscall_pre_impl_getpid@Base 4.9 + __sanitizer_syscall_pre_impl_getppid@Base 4.9 + __sanitizer_syscall_pre_impl_getpriority@Base 4.9 + __sanitizer_syscall_pre_impl_getresgid16@Base 4.9 + __sanitizer_syscall_pre_impl_getresgid@Base 4.9 + __sanitizer_syscall_pre_impl_getresuid16@Base 4.9 + __sanitizer_syscall_pre_impl_getresuid@Base 4.9 + __sanitizer_syscall_pre_impl_getrlimit@Base 4.9 + __sanitizer_syscall_pre_impl_getrusage@Base 4.9 + __sanitizer_syscall_pre_impl_getsid@Base 4.9 + __sanitizer_syscall_pre_impl_getsockname@Base 4.9 + __sanitizer_syscall_pre_impl_getsockopt@Base 4.9 + __sanitizer_syscall_pre_impl_gettid@Base 4.9 + __sanitizer_syscall_pre_impl_gettimeofday@Base 4.9 + __sanitizer_syscall_pre_impl_getuid16@Base 4.9 + __sanitizer_syscall_pre_impl_getuid@Base 4.9 + __sanitizer_syscall_pre_impl_getxattr@Base 4.9 + __sanitizer_syscall_pre_impl_init_module@Base 4.9 + __sanitizer_syscall_pre_impl_inotify_add_watch@Base 4.9 + __sanitizer_syscall_pre_impl_inotify_init1@Base 4.9 + __sanitizer_syscall_pre_impl_inotify_init@Base 4.9 + __sanitizer_syscall_pre_impl_inotify_rm_watch@Base 4.9 + __sanitizer_syscall_pre_impl_io_cancel@Base 4.9 + __sanitizer_syscall_pre_impl_io_destroy@Base 4.9 + __sanitizer_syscall_pre_impl_io_getevents@Base 4.9 + __sanitizer_syscall_pre_impl_io_setup@Base 4.9 + __sanitizer_syscall_pre_impl_io_submit@Base 4.9 + __sanitizer_syscall_pre_impl_ioctl@Base 4.9 + __sanitizer_syscall_pre_impl_ioperm@Base 4.9 + __sanitizer_syscall_pre_impl_ioprio_get@Base 4.9 + __sanitizer_syscall_pre_impl_ioprio_set@Base 4.9 + __sanitizer_syscall_pre_impl_ipc@Base 4.9 + __sanitizer_syscall_pre_impl_kexec_load@Base 4.9 + __sanitizer_syscall_pre_impl_keyctl@Base 4.9 + __sanitizer_syscall_pre_impl_kill@Base 4.9 + __sanitizer_syscall_pre_impl_lchown16@Base 4.9 + __sanitizer_syscall_pre_impl_lchown@Base 4.9 + __sanitizer_syscall_pre_impl_lgetxattr@Base 4.9 + __sanitizer_syscall_pre_impl_link@Base 4.9 + __sanitizer_syscall_pre_impl_linkat@Base 4.9 + __sanitizer_syscall_pre_impl_listen@Base 4.9 + __sanitizer_syscall_pre_impl_listxattr@Base 4.9 + __sanitizer_syscall_pre_impl_llistxattr@Base 4.9 + __sanitizer_syscall_pre_impl_llseek@Base 4.9 + __sanitizer_syscall_pre_impl_lookup_dcookie@Base 4.9 + __sanitizer_syscall_pre_impl_lremovexattr@Base 4.9 + __sanitizer_syscall_pre_impl_lseek@Base 4.9 + __sanitizer_syscall_pre_impl_lsetxattr@Base 4.9 + __sanitizer_syscall_pre_impl_lstat64@Base 4.9 + __sanitizer_syscall_pre_impl_lstat@Base 4.9 + __sanitizer_syscall_pre_impl_madvise@Base 4.9 + __sanitizer_syscall_pre_impl_mbind@Base 4.9 + __sanitizer_syscall_pre_impl_migrate_pages@Base 4.9 + __sanitizer_syscall_pre_impl_mincore@Base 4.9 + __sanitizer_syscall_pre_impl_mkdir@Base 4.9 + __sanitizer_syscall_pre_impl_mkdirat@Base 4.9 + __sanitizer_syscall_pre_impl_mknod@Base 4.9 + __sanitizer_syscall_pre_impl_mknodat@Base 4.9 + __sanitizer_syscall_pre_impl_mlock@Base 4.9 + __sanitizer_syscall_pre_impl_mlockall@Base 4.9 + __sanitizer_syscall_pre_impl_mmap_pgoff@Base 4.9 + __sanitizer_syscall_pre_impl_mount@Base 4.9 + __sanitizer_syscall_pre_impl_move_pages@Base 4.9 + __sanitizer_syscall_pre_impl_mprotect@Base 4.9 + __sanitizer_syscall_pre_impl_mq_getsetattr@Base 4.9 + __sanitizer_syscall_pre_impl_mq_notify@Base 4.9 + __sanitizer_syscall_pre_impl_mq_open@Base 4.9 + __sanitizer_syscall_pre_impl_mq_timedreceive@Base 4.9 + __sanitizer_syscall_pre_impl_mq_timedsend@Base 4.9 + __sanitizer_syscall_pre_impl_mq_unlink@Base 4.9 + __sanitizer_syscall_pre_impl_mremap@Base 4.9 + __sanitizer_syscall_pre_impl_msgctl@Base 4.9 + __sanitizer_syscall_pre_impl_msgget@Base 4.9 + __sanitizer_syscall_pre_impl_msgrcv@Base 4.9 + __sanitizer_syscall_pre_impl_msgsnd@Base 4.9 + __sanitizer_syscall_pre_impl_msync@Base 4.9 + __sanitizer_syscall_pre_impl_munlock@Base 4.9 + __sanitizer_syscall_pre_impl_munlockall@Base 4.9 + __sanitizer_syscall_pre_impl_munmap@Base 4.9 + __sanitizer_syscall_pre_impl_name_to_handle_at@Base 4.9 + __sanitizer_syscall_pre_impl_nanosleep@Base 4.9 + __sanitizer_syscall_pre_impl_newfstat@Base 4.9 + __sanitizer_syscall_pre_impl_newfstatat@Base 4.9 + __sanitizer_syscall_pre_impl_newlstat@Base 4.9 + __sanitizer_syscall_pre_impl_newstat@Base 4.9 + __sanitizer_syscall_pre_impl_newuname@Base 4.9 + __sanitizer_syscall_pre_impl_ni_syscall@Base 4.9 + __sanitizer_syscall_pre_impl_nice@Base 4.9 + __sanitizer_syscall_pre_impl_old_getrlimit@Base 4.9 + __sanitizer_syscall_pre_impl_old_mmap@Base 4.9 + __sanitizer_syscall_pre_impl_old_readdir@Base 4.9 + __sanitizer_syscall_pre_impl_old_select@Base 4.9 + __sanitizer_syscall_pre_impl_oldumount@Base 4.9 + __sanitizer_syscall_pre_impl_olduname@Base 4.9 + __sanitizer_syscall_pre_impl_open@Base 4.9 + __sanitizer_syscall_pre_impl_open_by_handle_at@Base 4.9 + __sanitizer_syscall_pre_impl_openat@Base 4.9 + __sanitizer_syscall_pre_impl_pause@Base 4.9 + __sanitizer_syscall_pre_impl_pciconfig_iobase@Base 4.9 + __sanitizer_syscall_pre_impl_pciconfig_read@Base 4.9 + __sanitizer_syscall_pre_impl_pciconfig_write@Base 4.9 + __sanitizer_syscall_pre_impl_perf_event_open@Base 4.9 + __sanitizer_syscall_pre_impl_personality@Base 4.9 + __sanitizer_syscall_pre_impl_pipe2@Base 4.9 + __sanitizer_syscall_pre_impl_pipe@Base 4.9 + __sanitizer_syscall_pre_impl_pivot_root@Base 4.9 + __sanitizer_syscall_pre_impl_poll@Base 4.9 + __sanitizer_syscall_pre_impl_ppoll@Base 4.9 + __sanitizer_syscall_pre_impl_pread64@Base 4.9 + __sanitizer_syscall_pre_impl_preadv@Base 4.9 + __sanitizer_syscall_pre_impl_prlimit64@Base 4.9 + __sanitizer_syscall_pre_impl_process_vm_readv@Base 4.9 + __sanitizer_syscall_pre_impl_process_vm_writev@Base 4.9 + __sanitizer_syscall_pre_impl_pselect6@Base 4.9 + __sanitizer_syscall_pre_impl_ptrace@Base 4.9 + __sanitizer_syscall_pre_impl_pwrite64@Base 4.9 + __sanitizer_syscall_pre_impl_pwritev@Base 4.9 + __sanitizer_syscall_pre_impl_quotactl@Base 4.9 + __sanitizer_syscall_pre_impl_read@Base 4.9 + __sanitizer_syscall_pre_impl_readlink@Base 4.9 + __sanitizer_syscall_pre_impl_readlinkat@Base 4.9 + __sanitizer_syscall_pre_impl_readv@Base 4.9 + __sanitizer_syscall_pre_impl_reboot@Base 4.9 + __sanitizer_syscall_pre_impl_recv@Base 4.9 + __sanitizer_syscall_pre_impl_recvfrom@Base 4.9 + __sanitizer_syscall_pre_impl_recvmmsg@Base 4.9 + __sanitizer_syscall_pre_impl_recvmsg@Base 4.9 + __sanitizer_syscall_pre_impl_remap_file_pages@Base 4.9 + __sanitizer_syscall_pre_impl_removexattr@Base 4.9 + __sanitizer_syscall_pre_impl_rename@Base 4.9 + __sanitizer_syscall_pre_impl_renameat@Base 4.9 + __sanitizer_syscall_pre_impl_request_key@Base 4.9 + __sanitizer_syscall_pre_impl_restart_syscall@Base 4.9 + __sanitizer_syscall_pre_impl_rmdir@Base 4.9 + __sanitizer_syscall_pre_impl_rt_sigpending@Base 4.9 + __sanitizer_syscall_pre_impl_rt_sigprocmask@Base 4.9 + __sanitizer_syscall_pre_impl_rt_sigqueueinfo@Base 4.9 + __sanitizer_syscall_pre_impl_rt_sigtimedwait@Base 4.9 + __sanitizer_syscall_pre_impl_rt_tgsigqueueinfo@Base 4.9 + __sanitizer_syscall_pre_impl_sched_get_priority_max@Base 4.9 + __sanitizer_syscall_pre_impl_sched_get_priority_min@Base 4.9 + __sanitizer_syscall_pre_impl_sched_getaffinity@Base 4.9 + __sanitizer_syscall_pre_impl_sched_getparam@Base 4.9 + __sanitizer_syscall_pre_impl_sched_getscheduler@Base 4.9 + __sanitizer_syscall_pre_impl_sched_rr_get_interval@Base 4.9 + __sanitizer_syscall_pre_impl_sched_setaffinity@Base 4.9 + __sanitizer_syscall_pre_impl_sched_setparam@Base 4.9 + __sanitizer_syscall_pre_impl_sched_setscheduler@Base 4.9 + __sanitizer_syscall_pre_impl_sched_yield@Base 4.9 + __sanitizer_syscall_pre_impl_select@Base 4.9 + __sanitizer_syscall_pre_impl_semctl@Base 4.9 + __sanitizer_syscall_pre_impl_semget@Base 4.9 + __sanitizer_syscall_pre_impl_semop@Base 4.9 + __sanitizer_syscall_pre_impl_semtimedop@Base 4.9 + __sanitizer_syscall_pre_impl_send@Base 4.9 + __sanitizer_syscall_pre_impl_sendfile64@Base 4.9 + __sanitizer_syscall_pre_impl_sendfile@Base 4.9 + __sanitizer_syscall_pre_impl_sendmmsg@Base 4.9 + __sanitizer_syscall_pre_impl_sendmsg@Base 4.9 + __sanitizer_syscall_pre_impl_sendto@Base 4.9 + __sanitizer_syscall_pre_impl_set_mempolicy@Base 4.9 + __sanitizer_syscall_pre_impl_set_robust_list@Base 4.9 + __sanitizer_syscall_pre_impl_set_tid_address@Base 4.9 + __sanitizer_syscall_pre_impl_setdomainname@Base 4.9 + __sanitizer_syscall_pre_impl_setfsgid16@Base 4.9 + __sanitizer_syscall_pre_impl_setfsgid@Base 4.9 + __sanitizer_syscall_pre_impl_setfsuid16@Base 4.9 + __sanitizer_syscall_pre_impl_setfsuid@Base 4.9 + __sanitizer_syscall_pre_impl_setgid16@Base 4.9 + __sanitizer_syscall_pre_impl_setgid@Base 4.9 + __sanitizer_syscall_pre_impl_setgroups16@Base 4.9 + __sanitizer_syscall_pre_impl_setgroups@Base 4.9 + __sanitizer_syscall_pre_impl_sethostname@Base 4.9 + __sanitizer_syscall_pre_impl_setitimer@Base 4.9 + __sanitizer_syscall_pre_impl_setns@Base 4.9 + __sanitizer_syscall_pre_impl_setpgid@Base 4.9 + __sanitizer_syscall_pre_impl_setpriority@Base 4.9 + __sanitizer_syscall_pre_impl_setregid16@Base 4.9 + __sanitizer_syscall_pre_impl_setregid@Base 4.9 + __sanitizer_syscall_pre_impl_setresgid16@Base 4.9 + __sanitizer_syscall_pre_impl_setresgid@Base 4.9 + __sanitizer_syscall_pre_impl_setresuid16@Base 4.9 + __sanitizer_syscall_pre_impl_setresuid@Base 4.9 + __sanitizer_syscall_pre_impl_setreuid16@Base 4.9 + __sanitizer_syscall_pre_impl_setreuid@Base 4.9 + __sanitizer_syscall_pre_impl_setrlimit@Base 4.9 + __sanitizer_syscall_pre_impl_setsid@Base 4.9 + __sanitizer_syscall_pre_impl_setsockopt@Base 4.9 + __sanitizer_syscall_pre_impl_settimeofday@Base 4.9 + __sanitizer_syscall_pre_impl_setuid16@Base 4.9 + __sanitizer_syscall_pre_impl_setuid@Base 4.9 + __sanitizer_syscall_pre_impl_setxattr@Base 4.9 + __sanitizer_syscall_pre_impl_sgetmask@Base 4.9 + __sanitizer_syscall_pre_impl_shmat@Base 4.9 + __sanitizer_syscall_pre_impl_shmctl@Base 4.9 + __sanitizer_syscall_pre_impl_shmdt@Base 4.9 + __sanitizer_syscall_pre_impl_shmget@Base 4.9 + __sanitizer_syscall_pre_impl_shutdown@Base 4.9 + __sanitizer_syscall_pre_impl_signal@Base 4.9 + __sanitizer_syscall_pre_impl_signalfd4@Base 4.9 + __sanitizer_syscall_pre_impl_signalfd@Base 4.9 + __sanitizer_syscall_pre_impl_sigpending@Base 4.9 + __sanitizer_syscall_pre_impl_sigprocmask@Base 4.9 + __sanitizer_syscall_pre_impl_socket@Base 4.9 + __sanitizer_syscall_pre_impl_socketcall@Base 4.9 + __sanitizer_syscall_pre_impl_socketpair@Base 4.9 + __sanitizer_syscall_pre_impl_splice@Base 4.9 + __sanitizer_syscall_pre_impl_spu_create@Base 4.9 + __sanitizer_syscall_pre_impl_spu_run@Base 4.9 + __sanitizer_syscall_pre_impl_ssetmask@Base 4.9 + __sanitizer_syscall_pre_impl_stat64@Base 4.9 + __sanitizer_syscall_pre_impl_stat@Base 4.9 + __sanitizer_syscall_pre_impl_statfs64@Base 4.9 + __sanitizer_syscall_pre_impl_statfs@Base 4.9 + __sanitizer_syscall_pre_impl_stime@Base 4.9 + __sanitizer_syscall_pre_impl_swapoff@Base 4.9 + __sanitizer_syscall_pre_impl_swapon@Base 4.9 + __sanitizer_syscall_pre_impl_symlink@Base 4.9 + __sanitizer_syscall_pre_impl_symlinkat@Base 4.9 + __sanitizer_syscall_pre_impl_sync@Base 4.9 + __sanitizer_syscall_pre_impl_syncfs@Base 4.9 + __sanitizer_syscall_pre_impl_sysctl@Base 4.9 + __sanitizer_syscall_pre_impl_sysfs@Base 4.9 + __sanitizer_syscall_pre_impl_sysinfo@Base 4.9 + __sanitizer_syscall_pre_impl_syslog@Base 4.9 + __sanitizer_syscall_pre_impl_tee@Base 4.9 + __sanitizer_syscall_pre_impl_tgkill@Base 4.9 + __sanitizer_syscall_pre_impl_time@Base 4.9 + __sanitizer_syscall_pre_impl_timer_create@Base 4.9 + __sanitizer_syscall_pre_impl_timer_delete@Base 4.9 + __sanitizer_syscall_pre_impl_timer_getoverrun@Base 4.9 + __sanitizer_syscall_pre_impl_timer_gettime@Base 4.9 + __sanitizer_syscall_pre_impl_timer_settime@Base 4.9 + __sanitizer_syscall_pre_impl_timerfd_create@Base 4.9 + __sanitizer_syscall_pre_impl_timerfd_gettime@Base 4.9 + __sanitizer_syscall_pre_impl_timerfd_settime@Base 4.9 + __sanitizer_syscall_pre_impl_times@Base 4.9 + __sanitizer_syscall_pre_impl_tkill@Base 4.9 + __sanitizer_syscall_pre_impl_truncate@Base 4.9 + __sanitizer_syscall_pre_impl_umask@Base 4.9 + __sanitizer_syscall_pre_impl_umount@Base 4.9 + __sanitizer_syscall_pre_impl_uname@Base 4.9 + __sanitizer_syscall_pre_impl_unlink@Base 4.9 + __sanitizer_syscall_pre_impl_unlinkat@Base 4.9 + __sanitizer_syscall_pre_impl_unshare@Base 4.9 + __sanitizer_syscall_pre_impl_uselib@Base 4.9 + __sanitizer_syscall_pre_impl_ustat@Base 4.9 + __sanitizer_syscall_pre_impl_utime@Base 4.9 + __sanitizer_syscall_pre_impl_utimensat@Base 4.9 + __sanitizer_syscall_pre_impl_utimes@Base 4.9 + __sanitizer_syscall_pre_impl_vfork@Base 4.9 + __sanitizer_syscall_pre_impl_vhangup@Base 4.9 + __sanitizer_syscall_pre_impl_vmsplice@Base 4.9 + __sanitizer_syscall_pre_impl_wait4@Base 4.9 + __sanitizer_syscall_pre_impl_waitid@Base 4.9 + __sanitizer_syscall_pre_impl_waitpid@Base 4.9 + __sanitizer_syscall_pre_impl_write@Base 4.9 + __sanitizer_syscall_pre_impl_writev@Base 4.9 + __sanitizer_unaligned_load16@Base 4.9 + __sanitizer_unaligned_load32@Base 4.9 + __sanitizer_unaligned_load64@Base 4.9 + __sanitizer_unaligned_store16@Base 4.9 + __sanitizer_unaligned_store32@Base 4.9 + __sanitizer_unaligned_store64@Base 4.9 + __sigsetjmp@Base 4.9 + __tsan_acquire@Base 4.9 + __tsan_atomic128_compare_exchange_strong@Base 4.9 + __tsan_atomic128_compare_exchange_val@Base 4.9 + __tsan_atomic128_compare_exchange_weak@Base 4.9 + __tsan_atomic128_exchange@Base 4.9 + __tsan_atomic128_fetch_add@Base 4.9 + __tsan_atomic128_fetch_and@Base 4.9 + __tsan_atomic128_fetch_nand@Base 4.9 + __tsan_atomic128_fetch_or@Base 4.9 + __tsan_atomic128_fetch_sub@Base 4.9 + __tsan_atomic128_fetch_xor@Base 4.9 + __tsan_atomic128_load@Base 4.9 + __tsan_atomic128_store@Base 4.9 + __tsan_atomic16_compare_exchange_strong@Base 4.9 + __tsan_atomic16_compare_exchange_val@Base 4.9 + __tsan_atomic16_compare_exchange_weak@Base 4.9 + __tsan_atomic16_exchange@Base 4.9 + __tsan_atomic16_fetch_add@Base 4.9 + __tsan_atomic16_fetch_and@Base 4.9 + __tsan_atomic16_fetch_nand@Base 4.9 + __tsan_atomic16_fetch_or@Base 4.9 + __tsan_atomic16_fetch_sub@Base 4.9 + __tsan_atomic16_fetch_xor@Base 4.9 + __tsan_atomic16_load@Base 4.9 + __tsan_atomic16_store@Base 4.9 + __tsan_atomic32_compare_exchange_strong@Base 4.9 + __tsan_atomic32_compare_exchange_val@Base 4.9 + __tsan_atomic32_compare_exchange_weak@Base 4.9 + __tsan_atomic32_exchange@Base 4.9 + __tsan_atomic32_fetch_add@Base 4.9 + __tsan_atomic32_fetch_and@Base 4.9 + __tsan_atomic32_fetch_nand@Base 4.9 + __tsan_atomic32_fetch_or@Base 4.9 + __tsan_atomic32_fetch_sub@Base 4.9 + __tsan_atomic32_fetch_xor@Base 4.9 + __tsan_atomic32_load@Base 4.9 + __tsan_atomic32_store@Base 4.9 + __tsan_atomic64_compare_exchange_strong@Base 4.9 + __tsan_atomic64_compare_exchange_val@Base 4.9 + __tsan_atomic64_compare_exchange_weak@Base 4.9 + __tsan_atomic64_exchange@Base 4.9 + __tsan_atomic64_fetch_add@Base 4.9 + __tsan_atomic64_fetch_and@Base 4.9 + __tsan_atomic64_fetch_nand@Base 4.9 + __tsan_atomic64_fetch_or@Base 4.9 + __tsan_atomic64_fetch_sub@Base 4.9 + __tsan_atomic64_fetch_xor@Base 4.9 + __tsan_atomic64_load@Base 4.9 + __tsan_atomic64_store@Base 4.9 + __tsan_atomic8_compare_exchange_strong@Base 4.9 + __tsan_atomic8_compare_exchange_val@Base 4.9 + __tsan_atomic8_compare_exchange_weak@Base 4.9 + __tsan_atomic8_exchange@Base 4.9 + __tsan_atomic8_fetch_add@Base 4.9 + __tsan_atomic8_fetch_and@Base 4.9 + __tsan_atomic8_fetch_nand@Base 4.9 + __tsan_atomic8_fetch_or@Base 4.9 + __tsan_atomic8_fetch_sub@Base 4.9 + __tsan_atomic8_fetch_xor@Base 4.9 + __tsan_atomic8_load@Base 4.9 + __tsan_atomic8_store@Base 4.9 + __tsan_atomic_signal_fence@Base 4.9 + __tsan_atomic_thread_fence@Base 4.9 + __tsan_default_options@Base 4.9 + __tsan_func_entry@Base 4.9 + __tsan_func_exit@Base 4.9 + __tsan_init@Base 4.9 + __tsan_java_alloc@Base 4.9 + __tsan_java_fini@Base 4.9 + __tsan_java_free@Base 4.9 + __tsan_java_init@Base 4.9 + __tsan_java_move@Base 4.9 + __tsan_java_mutex_lock@Base 4.9 + __tsan_java_mutex_lock_rec@Base 4.9 + __tsan_java_mutex_read_lock@Base 4.9 + __tsan_java_mutex_read_unlock@Base 4.9 + __tsan_java_mutex_unlock@Base 4.9 + __tsan_java_mutex_unlock_rec@Base 4.9 + __tsan_read16@Base 4.9 + __tsan_read1@Base 4.9 + __tsan_read2@Base 4.9 + __tsan_read4@Base 4.9 + __tsan_read8@Base 4.9 + __tsan_read_range@Base 4.9 + __tsan_release@Base 4.9 + __tsan_unaligned_read2@Base 4.9 + __tsan_unaligned_read4@Base 4.9 + __tsan_unaligned_read8@Base 4.9 + __tsan_unaligned_write2@Base 4.9 + __tsan_unaligned_write4@Base 4.9 + __tsan_unaligned_write8@Base 4.9 + __tsan_vptr_read@Base 4.9 + __tsan_vptr_update@Base 4.9 + __tsan_write16@Base 4.9 + __tsan_write1@Base 4.9 + __tsan_write2@Base 4.9 + __tsan_write4@Base 4.9 + __tsan_write8@Base 4.9 + __tsan_write_range@Base 4.9 + __xpg_strerror_r@Base 4.9 + __xstat64@Base 4.9 + __xstat@Base 4.9 + _exit@Base 4.9 + _setjmp@Base 4.9 + abort@Base 4.9 + accept4@Base 4.9 + accept@Base 4.9 + asctime@Base 4.9 + asctime_r@Base 4.9 + atexit@Base 4.9 + backtrace@Base 4.9 + backtrace_symbols@Base 4.9 + bind@Base 4.9 + calloc@Base 4.9 + canonicalize_file_name@Base 4.9 + cfree@Base 4.9 + clock_getres@Base 4.9 + clock_gettime@Base 4.9 + clock_settime@Base 4.9 + close@Base 4.9 + confstr@Base 4.9 + connect@Base 4.9 + creat64@Base 4.9 + creat@Base 4.9 + ctime@Base 4.9 + ctime_r@Base 4.9 + dlclose@Base 4.9 + dlopen@Base 4.9 + drand48_r@Base 4.9 + dup2@Base 4.9 + dup3@Base 4.9 + dup@Base 4.9 + epoll_create1@Base 4.9 + epoll_create@Base 4.9 + epoll_ctl@Base 4.9 + epoll_wait@Base 4.9 + ether_aton@Base 4.9 + ether_aton_r@Base 4.9 + ether_hostton@Base 4.9 + ether_line@Base 4.9 + ether_ntoa@Base 4.9 + ether_ntoa_r@Base 4.9 + ether_ntohost@Base 4.9 + eventfd@Base 4.9 + fclose@Base 4.9 + fflush@Base 4.9 + fopen@Base 4.9 + fork@Base 4.9 + fread@Base 4.9 + free@Base 4.9 + freopen@Base 4.9 + frexp@Base 4.9 + frexpf@Base 4.9 + frexpl@Base 4.9 + fscanf@Base 4.9 + fstat64@Base 4.9 + fstat@Base 4.9 + fstatfs64@Base 4.9 + fstatfs@Base 4.9 + fstatvfs64@Base 4.9 + fstatvfs@Base 4.9 + fwrite@Base 4.9 + get_current_dir_name@Base 4.9 + getaddrinfo@Base 4.9 + getcwd@Base 4.9 + getdelim@Base 4.9 + getgroups@Base 4.9 + gethostbyaddr@Base 4.9 + gethostbyaddr_r@Base 4.9 + gethostbyname2@Base 4.9 + gethostbyname2_r@Base 4.9 + gethostbyname@Base 4.9 + gethostbyname_r@Base 4.9 + gethostent@Base 4.9 + gethostent_r@Base 4.9 + getitimer@Base 4.9 + getline@Base 4.9 + getmntent@Base 4.9 + getmntent_r@Base 4.9 + getpeername@Base 4.9 + getsockname@Base 4.9 + getsockopt@Base 4.9 + gettimeofday@Base 4.9 + gmtime@Base 4.9 + gmtime_r@Base 4.9 + iconv@Base 4.9 + inet_aton@Base 4.9 + inet_ntop@Base 4.9 + inet_pton@Base 4.9 + initgroups@Base 4.9 + inotify_init1@Base 4.9 + inotify_init@Base 4.9 + ioctl@Base 4.9 + kill@Base 4.9 + lgamma@Base 4.9 + lgamma_r@Base 4.9 + lgammaf@Base 4.9 + lgammaf_r@Base 4.9 + lgammal@Base 4.9 + lgammal_r@Base 4.9 + listen@Base 4.9 + localtime@Base 4.9 + localtime_r@Base 4.9 + longjmp@Base 4.9 + lrand48_r@Base 4.9 + lstat64@Base 4.9 + lstat@Base 4.9 + malloc@Base 4.9 + malloc_usable_size@Base 4.9 + mbsnrtowcs@Base 4.9 + mbsrtowcs@Base 4.9 + mbstowcs@Base 4.9 + memalign@Base 4.9 + memchr@Base 4.9 + memcmp@Base 4.9 + memcpy@Base 4.9 + memmove@Base 4.9 + memrchr@Base 4.9 + memset@Base 4.9 + mlock@Base 4.9 + mlockall@Base 4.9 + mmap64@Base 4.9 + mmap@Base 4.9 + modf@Base 4.9 + modff@Base 4.9 + modfl@Base 4.9 + munlock@Base 4.9 + munlockall@Base 4.9 + munmap@Base 4.9 + nanosleep@Base 4.9 + on_exit@Base 4.9 + open64@Base 4.9 + open@Base 4.9 + opendir@Base 4.9 + pipe2@Base 4.9 + pipe@Base 4.9 + poll@Base 4.9 + posix_memalign@Base 4.9 + ppoll@Base 4.9 + prctl@Base 4.9 + pread64@Base 4.9 + pread@Base 4.9 + preadv64@Base 4.9 + preadv@Base 4.9 + pthread_attr_getaffinity_np@Base 4.9 + pthread_attr_getdetachstate@Base 4.9 + pthread_attr_getguardsize@Base 4.9 + pthread_attr_getinheritsched@Base 4.9 + pthread_attr_getschedparam@Base 4.9 + pthread_attr_getschedpolicy@Base 4.9 + pthread_attr_getscope@Base 4.9 + pthread_attr_getstack@Base 4.9 + pthread_attr_getstacksize@Base 4.9 + pthread_barrier_destroy@Base 4.9 + pthread_barrier_init@Base 4.9 + pthread_barrier_wait@Base 4.9 + pthread_cond_broadcast@Base 4.9 + pthread_cond_destroy@Base 4.9 + pthread_cond_init@Base 4.9 + pthread_cond_signal@Base 4.9 + pthread_cond_timedwait@Base 4.9 + pthread_cond_wait@Base 4.9 + pthread_create@Base 4.9 + pthread_detach@Base 4.9 + pthread_getschedparam@Base 4.9 + pthread_join@Base 4.9 + pthread_kill@Base 4.9 + pthread_mutex_destroy@Base 4.9 + pthread_mutex_init@Base 4.9 + pthread_mutex_lock@Base 4.9 + pthread_mutex_timedlock@Base 4.9 + pthread_mutex_trylock@Base 4.9 + pthread_mutex_unlock@Base 4.9 + pthread_once@Base 4.9 + pthread_rwlock_destroy@Base 4.9 + pthread_rwlock_init@Base 4.9 + pthread_rwlock_rdlock@Base 4.9 + pthread_rwlock_timedrdlock@Base 4.9 + pthread_rwlock_timedwrlock@Base 4.9 + pthread_rwlock_tryrdlock@Base 4.9 + pthread_rwlock_trywrlock@Base 4.9 + pthread_rwlock_unlock@Base 4.9 + pthread_rwlock_wrlock@Base 4.9 + pthread_setname_np@Base 4.9 + pthread_spin_destroy@Base 4.9 + pthread_spin_init@Base 4.9 + pthread_spin_lock@Base 4.9 + pthread_spin_trylock@Base 4.9 + pthread_spin_unlock@Base 4.9 + ptrace@Base 4.9 + puts@Base 4.9 + pvalloc@Base 4.9 + pwrite64@Base 4.9 + pwrite@Base 4.9 + pwritev64@Base 4.9 + pwritev@Base 4.9 + raise@Base 4.9 + random_r@Base 4.9 + read@Base 4.9 + readdir64@Base 4.9 + readdir64_r@Base 4.9 + readdir@Base 4.9 + readdir_r@Base 4.9 + readv@Base 4.9 + realloc@Base 4.9 + realpath@Base 4.9 + recv@Base 4.9 + recvmsg@Base 4.9 + remquo@Base 4.9 + remquof@Base 4.9 + remquol@Base 4.9 + rmdir@Base 4.9 + scandir64@Base 4.9 + scandir@Base 4.9 + scanf@Base 4.9 + sched_getaffinity@Base 4.9 + sem_destroy@Base 4.9 + sem_getvalue@Base 4.9 + sem_init@Base 4.9 + sem_post@Base 4.9 + sem_timedwait@Base 4.9 + sem_trywait@Base 4.9 + sem_wait@Base 4.9 + send@Base 4.9 + sendmsg@Base 4.9 + setitimer@Base 4.9 + setjmp@Base 4.9 + setlocale@Base 4.9 + shmctl@Base 4.9 + sigaction@Base 4.9 + sigemptyset@Base 4.9 + sigfillset@Base 4.9 + siglongjmp@Base 4.9 + signal@Base 4.9 + signalfd@Base 4.9 + sigpending@Base 4.9 + sigprocmask@Base 4.9 + sigsetjmp@Base 4.9 + sigsuspend@Base 4.9 + sigtimedwait@Base 4.9 + sigwait@Base 4.9 + sigwaitinfo@Base 4.9 + sincos@Base 4.9 + sincosf@Base 4.9 + sincosl@Base 4.9 + sleep@Base 4.9 + socket@Base 4.9 + socketpair@Base 4.9 + sscanf@Base 4.9 + stat64@Base 4.9 + stat@Base 4.9 + statfs64@Base 4.9 + statfs@Base 4.9 + statvfs64@Base 4.9 + statvfs@Base 4.9 + strcasecmp@Base 4.9 + strchr@Base 4.9 + strchrnul@Base 4.9 + strcmp@Base 4.9 + strcpy@Base 4.9 + strdup@Base 4.9 + strerror@Base 4.9 + strerror_r@Base 4.9 + strlen@Base 4.9 + strncasecmp@Base 4.9 + strncmp@Base 4.9 + strncpy@Base 4.9 + strptime@Base 4.9 + strrchr@Base 4.9 + strstr@Base 4.9 + strtoimax@Base 4.9 + strtoumax@Base 4.9 + sysinfo@Base 4.9 + tcgetattr@Base 4.9 + tempnam@Base 4.9 + textdomain@Base 4.9 + time@Base 4.9 + times@Base 4.9 + tmpnam@Base 4.9 + tmpnam_r@Base 4.9 + unlink@Base 4.9 + usleep@Base 4.9 + valloc@Base 4.9 + vfscanf@Base 4.9 + vscanf@Base 4.9 + vsscanf@Base 4.9 + wait3@Base 4.9 + wait4@Base 4.9 + wait@Base 4.9 + waitid@Base 4.9 + waitpid@Base 4.9 + wcsnrtombs@Base 4.9 + wcsrtombs@Base 4.9 + wcstombs@Base 4.9 + wordexp@Base 4.9 + write@Base 4.9 + writev@Base 4.9 --- gcc-4.9-4.9.2.orig/debian/libubsan0.symbols +++ gcc-4.9-4.9.2/debian/libubsan0.symbols @@ -0,0 +1,76 @@ +libubsan.so.0 libubsan0 #MINVER# + _ZN11__sanitizer11CheckFailedEPKciS1_yy@Base 4.9 + _ZN11__sanitizer7OnPrintEPKc@Base 4.9 + __asan_backtrace_alloc@Base 4.9 + __asan_backtrace_close@Base 4.9 + __asan_backtrace_create_state@Base 4.9 + __asan_backtrace_dwarf_add@Base 4.9 + __asan_backtrace_free@Base 4.9 + __asan_backtrace_get_view@Base 4.9 + __asan_backtrace_initialize@Base 4.9 + __asan_backtrace_open@Base 4.9 + __asan_backtrace_pcinfo@Base 4.9 + __asan_backtrace_qsort@Base 4.9 + __asan_backtrace_release_view@Base 4.9 + __asan_backtrace_syminfo@Base 4.9 + __asan_backtrace_vector_finish@Base 4.9 + __asan_backtrace_vector_grow@Base 4.9 + __asan_backtrace_vector_release@Base 4.9 + __asan_cplus_demangle_builtin_types@Base 4.9 + __asan_cplus_demangle_fill_ctor@Base 4.9 + __asan_cplus_demangle_fill_dtor@Base 4.9 + __asan_cplus_demangle_fill_extended_operator@Base 4.9 + __asan_cplus_demangle_fill_name@Base 4.9 + __asan_cplus_demangle_init_info@Base 4.9 + __asan_cplus_demangle_mangled_name@Base 4.9 + __asan_cplus_demangle_operators@Base 4.9 + __asan_cplus_demangle_print@Base 4.9 + __asan_cplus_demangle_print_callback@Base 4.9 + __asan_cplus_demangle_type@Base 4.9 + __asan_cplus_demangle_v3@Base 4.9 + __asan_cplus_demangle_v3_callback@Base 4.9 + __asan_internal_memcmp@Base 4.9 + __asan_internal_memcpy@Base 4.9 + __asan_internal_memset@Base 4.9 + __asan_internal_strcmp@Base 4.9 + __asan_internal_strlen@Base 4.9 + __asan_internal_strncmp@Base 4.9 + __asan_internal_strnlen@Base 4.9 + __asan_is_gnu_v3_mangled_ctor@Base 4.9 + __asan_is_gnu_v3_mangled_dtor@Base 4.9 + __asan_java_demangle_v3@Base 4.9 + __asan_java_demangle_v3_callback@Base 4.9 + __sanitizer_cov@Base 4.9 + __sanitizer_cov_dump@Base 4.9 + __sanitizer_report_error_summary@Base 4.9 + __sanitizer_sandbox_on_notify@Base 4.9 + __sanitizer_set_report_path@Base 4.9 + __ubsan_handle_add_overflow@Base 4.9 + __ubsan_handle_add_overflow_abort@Base 4.9 + __ubsan_handle_builtin_unreachable@Base 4.9 + __ubsan_handle_divrem_overflow@Base 4.9 + __ubsan_handle_divrem_overflow_abort@Base 4.9 + __ubsan_handle_dynamic_type_cache_miss@Base 4.9 + __ubsan_handle_dynamic_type_cache_miss_abort@Base 4.9 + __ubsan_handle_float_cast_overflow@Base 4.9 + __ubsan_handle_float_cast_overflow_abort@Base 4.9 + __ubsan_handle_function_type_mismatch@Base 4.9 + __ubsan_handle_function_type_mismatch_abort@Base 4.9 + __ubsan_handle_load_invalid_value@Base 4.9 + __ubsan_handle_load_invalid_value_abort@Base 4.9 + __ubsan_handle_missing_return@Base 4.9 + __ubsan_handle_mul_overflow@Base 4.9 + __ubsan_handle_mul_overflow_abort@Base 4.9 + __ubsan_handle_negate_overflow@Base 4.9 + __ubsan_handle_negate_overflow_abort@Base 4.9 + __ubsan_handle_out_of_bounds@Base 4.9 + __ubsan_handle_out_of_bounds_abort@Base 4.9 + __ubsan_handle_shift_out_of_bounds@Base 4.9 + __ubsan_handle_shift_out_of_bounds_abort@Base 4.9 + __ubsan_handle_sub_overflow@Base 4.9 + __ubsan_handle_sub_overflow_abort@Base 4.9 + __ubsan_handle_type_mismatch@Base 4.9 + __ubsan_handle_type_mismatch_abort@Base 4.9 + __ubsan_handle_vla_bound_not_positive@Base 4.9 + __ubsan_handle_vla_bound_not_positive_abort@Base 4.9 + __ubsan_vptr_type_cache@Base 4.9 --- gcc-4.9-4.9.2.orig/debian/libvtv0.symbols +++ gcc-4.9-4.9.2/debian/libvtv0.symbols @@ -0,0 +1,68 @@ +libvtv.so.0 libvtv0 #MINVER# + _Z10__vtv_freePv@Base 4.9.0 + (arch=amd64)_Z12__vtv_mallocm@Base 4.9.0 + (arch=i386)_Z12__vtv_mallocj@Base 4.9.0 + _Z14__VLTDumpStatsv@Base 4.9.0 + _Z14__vtv_open_logPKc@Base 4.9.0 + (arch=amd64)_Z16__VLTRegisterSetPPvPKvmmS0_@Base 4.9.0 + (arch=i386)_Z16__VLTRegisterSetPPvPKvjjS0_@Base 4.9.0 + _Z16__vtv_add_to_logiPKcz@Base 4.9.0 + (arch=amd64)_Z17__VLTRegisterPairPPvPKvmS2_@Base 4.9.0 + (arch=i386)_Z17__VLTRegisterPairPPvPKvjS2_@Base 4.9.0 + _Z17__vtv_malloc_initv@Base 4.9.0 + _Z17__vtv_really_failPKc@Base 4.9.0 + _Z17__vtv_verify_failPPvPKv@Base 4.9.0 + _Z18__vtv_malloc_statsv@Base 4.9.0 + _Z20__vtv_malloc_protectv@Base 4.9.0 + (arch=amd64)_Z21__VLTRegisterSetDebugPPvPKvmmS0_@Base 4.9.0 + (arch=i386)_Z21__VLTRegisterSetDebugPPvPKvjjS0_@Base 4.9.0 + (arch=amd64)_Z22__VLTRegisterPairDebugPPvPKvmS2_PKcS4_@Base 4.9.0 + (arch=i386)_Z22__VLTRegisterPairDebugPPvPKvjS2_PKcS4_@Base 4.9.0 + _Z22__vtv_malloc_unprotectv@Base 4.9.0 + _Z23__vtv_malloc_dump_statsv@Base 4.9.0 + _Z23__vtv_verify_fail_debugPPvPKvPKc@Base 4.9.0 + (arch=amd64)_Z23search_cached_file_datam@Base 4.9.0 + (arch=i386)_Z23search_cached_file_dataj@Base 4.9.0 + _Z24__VLTVerifyVtablePointerPPvPKv@Base 4.9.0 + _Z25__vtv_count_mmapped_pagesv@Base 4.9.0 + _Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_@Base 4.9.0 + _Z30__vtv_log_verification_failurePKcb@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12put_internalEPKNS8_8key_typeERKS6_b@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE15find_or_add_keyEPKNS8_8key_typeEPPS6_@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE16destructive_copyEv@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3putEPKNS8_8key_typeERKS6_@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE6createEm@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE7destroyEPS8_@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE11is_too_fullEm@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12bucket_countEv@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3getEPKNS8_8key_typeE@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE4sizeEv@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE5emptyEv@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE8key_type6equalsEPKS9_@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12put_internalEPKNS8_8key_typeERKS6_b@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE15find_or_add_keyEPKNS8_8key_typeEPPS6_@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE16destructive_copyEv@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3putEPKNS8_8key_typeERKS6_@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE6createEj@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE7destroyEPS8_@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE11is_too_fullEj@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12bucket_countEv@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3getEPKNS8_8key_typeE@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE4sizeEv@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE5emptyEv@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE8key_type6equalsEPKS9_@Base 4.9.0 + __VLTChangePermission@Base 4.9.0 + __VLTprotect@Base 4.9.0 + __VLTunprotect@Base 4.9.0 + _vtable_map_vars_end@Base 4.9.0 + _vtable_map_vars_start@Base 4.9.0 + mprotect_cycles@Base 4.9.0 + num_cache_entries@Base 4.9.0 + num_calls_to_mprotect@Base 4.9.0 + num_calls_to_regpair@Base 4.9.0 + num_calls_to_regset@Base 4.9.0 + num_calls_to_verify_vtable@Base 4.9.0 + num_pages_protected@Base 4.9.0 + regpair_cycles@Base 4.9.0 + regset_cycles@Base 4.9.0 + verify_vtable_cycles@Base 4.9.0 --- gcc-4.9-4.9.2.orig/debian/libx32asan0.overrides +++ gcc-4.9-4.9.2/debian/libx32asan0.overrides @@ -0,0 +1,2 @@ +# automake gets it wrong for the multilib build +libx32asan0 binary: binary-or-shlib-defines-rpath --- gcc-4.9-4.9.2.orig/debian/libx32asan0.symbols +++ gcc-4.9-4.9.2/debian/libx32asan0.symbols @@ -0,0 +1,3 @@ +libasan.so.0 libx32asan0 #MINVER# +#include "libasan0.symbols.common" +#include "libasan0.symbols.32" --- gcc-4.9-4.9.2.orig/debian/libx32atomic1.symbols +++ gcc-4.9-4.9.2/debian/libx32atomic1.symbols @@ -0,0 +1,3 @@ +libatomic.so.1 libx32atomic1 #MINVER# +#include "libatomic1.symbols.common" +#include "libatomic1.symbols.64" --- gcc-4.9-4.9.2.orig/debian/libx32gfortran3.overrides +++ gcc-4.9-4.9.2/debian/libx32gfortran3.overrides @@ -0,0 +1,2 @@ +# automake gets it wrong for the multilib build +libx32gfortran3 binary: binary-or-shlib-defines-rpath --- gcc-4.9-4.9.2.orig/debian/locale-gen +++ gcc-4.9-4.9.2/debian/locale-gen @@ -0,0 +1,49 @@ +#!/bin/sh + +LOCPATH=`pwd`/locales +export LOCPATH + +[ -d $LOCPATH ] || mkdir -p $LOCPATH + +umask 022 + +echo "Generating locales..." +while read locale charset; do + case $locale in \#*) continue;; esac + [ -n "$locale" -a -n "$charset" ] || continue + echo -n " `echo $locale | sed 's/\([^.\@]*\).*/\1/'`" + echo -n ".$charset" + echo -n `echo $locale | sed 's/\([^\@]*\)\(\@.*\)*/\2/'` + echo -n '...' + if [ -f $LOCPATH/$locale ]; then + input=$locale + else + input=`echo $locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'` + fi + localedef -i $input -c -f $charset $LOCPATH/$locale #-A /etc/locale.alias + echo ' done'; \ +done <&2 "usage: `basename $0` [-p ] [-t ] [-m ]" + echo >&2 " [ ...]" + exit 1 +} + +while [ $# -gt 0 ]; do + case $1 in + -p) + pidfile=$2 + shift + shift + ;; + -t) + timeout=$2 + shift + shift + ;; + -m) + message="$2" + shift + shift + ;; + -*) + usage + ;; + *) + break + esac +done + +[ $# -gt 0 ] || usage + +logfile="$1" +shift +otherlogs="$@" + +cleanup() +{ + rm -f $pidfile + exit 0 +} + +#trap cleanup 0 1 3 15 + +echo $$ > $pidfile + +update() +{ + _logvar=$1 + _othervar=$2 + + # logfile may not exist yet + if [ -r $logfile ]; then + _logtail="`tail -10 $logfile | md5sum` $f" + else + _logtail="does not exist: $logfile" + fi + eval $_logvar="'$_logtail'" + + _othertails='' + for f in $otherlogs; do + if [ -r $f ]; then + _othertails="$_othertails `tail -10 $f | md5sum` $f" + else + _othertails="$_othertails does not exist: $f" + fi + done + eval $_othervar="'$_othertails'" +} + +update logtail othertails +while true; do + sleep $timeout + update newlogtail newothertails + if [ "$logtail" != "$newlogtail" ]; then + # there is still action in the primary logfile. do nothing. + logtail="$newlogtail" + elif [ "$othertails" != "$newothertails" ]; then + # there is still action in the other log files, so print the message + /bin/echo -e $message + othertails="$newothertails" + else + # nothing changed in the other log files. maybe a timeout ... + : + fi +done --- gcc-4.9-4.9.2.orig/debian/patches/ada-749574.diff +++ gcc-4.9-4.9.2/debian/patches/ada-749574.diff @@ -0,0 +1,34 @@ +From: Ludovic Brenta +Forwarded: no +Bug-Debian: http://bugs.debian.org/749574 +Description: Constraint_Error, range check failed at gnatlink.adb:2195, when called from gnatmake with -D option + The procedure gnatlink assumes that the Linker_Options.Table contains access + values to strings whose 'First index is always 1. This assumption is wrong + for the string returned by function Base_Name. +. + Instead of fixing the assumption in many places, this patch changes the + function Base_Name always to return a string with 'First=1. +. + This looks like an upstream bug but strangely the reporter of this bug + says it does not happen on GCC built from upstream sources. Further + investigation is required to determine whether or not to forward this + bug and patch upstream. + +Index: b/src/gcc/ada/gnatlink.adb +=================================================================== +--- a/src/gcc/ada/gnatlink.adb ++++ b/src/gcc/ada/gnatlink.adb +@@ -273,7 +273,12 @@ + Findex2 := File_Name'Last + 1; + end if; + +- return File_Name (Findex1 .. Findex2 - 1); ++ declare ++ Result : String (1 .. Findex2 - Findex1); ++ begin ++ Result (1 .. Findex2 - Findex1) := File_Name (Findex1 .. Findex2 - 1); ++ return Result; ++ end; + end Base_Name; + + ------------------------------- --- gcc-4.9-4.9.2.orig/debian/patches/ada-acats.diff +++ gcc-4.9-4.9.2/debian/patches/ada-acats.diff @@ -0,0 +1,190 @@ +# DP: - When running the ACATS, look for the gnat tools in their new +# DP: directory (build/gnattools), and for the shared libraries in +# DP: build/gcc/ada/rts-shared-zcx, build/libgnatvsn and build/libgnatprj. + +Index: b/src/gcc/testsuite/ada/acats/run_acats +=================================================================== +--- a/src/gcc/testsuite/ada/acats/run_acats ++++ b/src/gcc/testsuite/ada/acats/run_acats +@@ -20,52 +20,29 @@ + return 1 + } + ++echo '#!/bin/sh' > host_gnatchop ++echo exec /usr/bin/gnatchop '$*' >> host_gnatchop ++ ++chmod +x host_gnatchop ++ ++echo '#!/bin/sh' > host_gnatmake ++echo echo '$PATH' '$*' >> host_gnatmake ++echo exec /usr/bin/gnatmake '$*' >> host_gnatmake ++ ++chmod +x host_gnatmake ++ + # Set up environment to use the Ada compiler from the object tree + +-host_gnatchop=`which gnatchop` +-host_gnatmake=`which gnatmake` + ROOT=`${PWDCMD-pwd}` + BASE=`cd $ROOT/../../..; ${PWDCMD-pwd}` +- + PATH=$BASE:$ROOT:$PATH +-ADA_INCLUDE_PATH=$BASE/ada/rts +-LD_LIBRARY_PATH=$ADA_INCLUDE_PATH:$BASE:$LD_LIBRARY_PATH +-ADA_OBJECTS_PATH=$ADA_INCLUDE_PATH +- +-if [ ! -d $ADA_INCLUDE_PATH ]; then +- echo gnatlib missing, exiting. +- exit 1 +-fi +- +-if [ ! -f $BASE/gnatchop ]; then +- echo gnattools missing, exiting. +- exit 1 +-fi +- +-if [ ! -f $BASE/gnatmake ]; then +- echo gnattools missing, exiting. +- exit 1 +-fi +- ++GNATTOOLS=`cd $BASE/../gnattools; ${PWDCMD-pwd}` ++LIBGNATVSN=`cd $BASE/../libgnatvsn; ${PWDCMD-pwd}` ++LIBGNATPRJ=`cd $BASE/../libgnatprj; ${PWDCMD-pwd}` + GCC_DRIVER="$BASE/xgcc" + GCC="$BASE/xgcc -B$BASE/" + export PATH ADA_INCLUDE_PATH ADA_OBJECTS_PATH GCC_DRIVER GCC LD_LIBRARY_PATH +- +-echo '#!/bin/sh' > host_gnatchop +-echo PATH=`dirname $host_gnatchop`:'$PATH' >> host_gnatchop +-echo unset ADA_INCLUDE_PATH ADA_OBJECTS_PATH GCC_EXEC_PREFIX >> host_gnatchop +-echo export PATH >> host_gnatchop +-echo exec gnatchop '"$@"' >> host_gnatchop +- +-chmod +x host_gnatchop +- +-echo '#!/bin/sh' > host_gnatmake +-echo PATH=`dirname $host_gnatmake`:'$PATH' >> host_gnatmake +-echo unset ADA_INCLUDE_PATH ADA_OBJECTS_PATH GCC_EXEC_PREFIX >> host_gnatmake +-echo export PATH >> host_gnatmake +-echo exec gnatmake '"$@"' >> host_gnatmake +- +-chmod +x host_gnatmake ++export GNATTOOLS LIBGNATVSN LIBGNATPRJ + + # Limit the stack to 16MB for stack checking + ulimit -s 16384 +Index: b/src/gcc/testsuite/ada/acats/run_all.sh +=================================================================== +--- a/src/gcc/testsuite/ada/acats/run_all.sh ++++ b/src/gcc/testsuite/ada/acats/run_all.sh +@@ -12,6 +12,11 @@ + gccflags="-O2" + gnatflags="-gnatws" + ++SHARED_RTS=`cd $GNATTOOLS/../gcc/ada/rts-shared-zcx; ${PWDCMD-pwd}` ++RTS=`cd $GNATTOOLS/../gcc/ada/rts-static-zcx; ${PWDCMD-pwd}` ++LD_LIBRARY_PATH=$SHARED_RTS:$LIBGNATVSN:$LIBGNATPRJ ++export LD_LIBRARY_PATH ++ + target_run () { + eval $EXPECT -f $testdir/run_test.exp $* + } +@@ -48,12 +53,15 @@ + fi + + target_gnatchop () { +- gnatchop --GCC="$GCC_DRIVER" $* ++ ADA_INCLUDE_PATH=$GNATTOOLS/../../src/gcc/ada $GNATTOOLS/gnatchop --GCC="$GCC_DRIVER" $* + } + + target_gnatmake () { +- echo gnatmake --GCC=\"$GCC\" $gnatflags $gccflags $* -largs $EXTERNAL_OBJECTS --GCC=\"$GCC\" +- gnatmake --GCC="$GCC" $gnatflags $gccflags $* -largs $EXTERNAL_OBJECTS --GCC="$GCC" ++ EXTERNAL_OBJECTS="$EXTERNAL_OBJECTS $RTS/adaint.o $RTS/sysdep.o $RTS/init.o $RTS/raise-gcc.o" ++ $GNATTOOLS/gnatmake -I- -I$RTS -I. \ ++ --GCC="$GCC" --GNATBIND="$GNATTOOLS/gnatbind" \ ++ --GNATLINK="$GNATTOOLS/gnatlink" $gnatflags $gccflags $* \ ++ -bargs -static -largs $EXTERNAL_OBJECTS --GCC="$GCC -I- -I$RTS -I." + } + + target_gcc () { +@@ -86,8 +94,8 @@ + display `$GCC -v 2>&1` + display host=`gcc -dumpmachine` + display target=$target +-display `type gnatmake` +-gnatls -v >> $dir/acats.log ++display `type $GNATTOOLS/gnatmake` ++$GNATTOOLS/gnatls -I- -I$RTS -v >> $dir/acats.log + display "" + + display " === acats support ===" +Index: b/src/gcc/testsuite/lib/gnat.exp +=================================================================== +--- a/src/gcc/testsuite/lib/gnat.exp ++++ b/src/gcc/testsuite/lib/gnat.exp +@@ -88,18 +88,24 @@ + global GNAT_UNDER_TEST + global TOOL_EXECUTABLE + global gnat_target_current ++ global ld_library_path + + set gnat_target_current "" + + if { $gnat_initialized == 1 } { return } + +- if ![info exists GNAT_UNDER_TEST] then { +- if [info exists TOOL_EXECUTABLE] { +- set GNAT_UNDER_TEST "$TOOL_EXECUTABLE" +- } else { +- set GNAT_UNDER_TEST "[local_find_gnatmake]" +- } +- } ++ set GNAT_UNDER_TEST "$rootme/../gnattools/gnatmake -I$rootme/ada/rts-shared-zcx --GCC=$rootme/xgcc --GNATBIND=$rootme/../gnattools/gnatbind --GNATLINK=$rootme/../gnattools/gnatlink -cargs -B$rootme -largs --GCC=$rootme/xgcc -B$rootme -margs" ++ append ld_library_path ":$rootme/ada/rts-shared-zcx" ++ append ld_library_path ":$rootme/../libgnatvsn" ++ append ld_library_path ":$rootme/../libgnatprj" ++ set_ld_library_path_env_vars ++ ++ # gnatlink looks for system.ads itself and has no --RTS option, so ++ # specify via environment ++ verbose -log "ADA_INCLUDE_PATH=$rootme/ada/rts-shared-zcx" ++ verbose -log "ADA_OBJECTS_PATH=$rootme/ada/rts-shared-zcx" ++ setenv ADA_INCLUDE_PATH "$rootme/ada/rts-shared-zcx" ++ setenv ADA_OBJECTS_PATH "$rootme/ada/rts-shared-zcx" + + if ![info exists tmpdir] then { + set tmpdir /tmp +@@ -121,31 +127,6 @@ + return [gcc_target_compile $source $dest $type $options] + } + +- # If we detect a change of target, we need to recompute both +- # GNAT_UNDER_TEST and the appropriate RTS. +- if { $gnat_target_current!="[current_target_name]" } { +- set gnat_target_current "[current_target_name]" +- if [info exists TOOL_OPTIONS] { +- set rtsdir "[get_multilibs ${TOOL_OPTIONS}]/libada" +- } else { +- set rtsdir "[get_multilibs]/libada" +- } +- if [info exists TOOL_EXECUTABLE] { +- set GNAT_UNDER_TEST "$TOOL_EXECUTABLE" +- } else { +- set GNAT_UNDER_TEST "[local_find_gnatmake]" +- } +- set GNAT_UNDER_TEST "$GNAT_UNDER_TEST --RTS=$rtsdir" +- +- # gnatlink looks for system.ads itself and has no --RTS option, so +- # specify via environment +- setenv ADA_INCLUDE_PATH "$rtsdir/adainclude" +- setenv ADA_OBJECTS_PATH "$rtsdir/adainclude" +- # Always log so compilations can be repeated manually. +- verbose -log "ADA_INCLUDE_PATH=$rtsdir/adainclude" +- verbose -log "ADA_OBJECTS_PATH=$rtsdir/adainclude" +- } +- + lappend options "compiler=$GNAT_UNDER_TEST -q -f" + lappend options "timeout=[timeout_value]" + --- gcc-4.9-4.9.2.orig/debian/patches/ada-arm.diff +++ gcc-4.9-4.9.2/debian/patches/ada-arm.diff @@ -0,0 +1,18 @@ +DP: Improve support for ZCX on arm. + +Index: b/src/gcc/ada/gcc-interface/Makefile.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -1964,7 +1964,10 @@ ifeq ($(strip $(filter-out arm% linux-gn + LIBGNAT_TARGET_PAIRS += \ + system.ads>tmp-sdefault.adb + $(ECHO) " S3 : constant String := \"$(target_noncanonical)/\";" >>tmp-sdefault.adb + $(ECHO) " S4 : constant String := \"$(libsubdir)/\";" >>tmp-sdefault.adb ++ $(ECHO) " S5 : constant String := \"/usr/share/ada/adainclude/\";" >>tmp-sdefault.adb + $(ECHO) " function Include_Dir_Default_Name return String_Ptr is" >>tmp-sdefault.adb + $(ECHO) " begin" >>tmp-sdefault.adb + $(ECHO) " return Relocate_Path (S0, S1);" >>tmp-sdefault.adb +@@ -134,6 +135,10 @@ + $(ECHO) " begin" >>tmp-sdefault.adb + $(ECHO) " return Relocate_Path (S0, S4);" >>tmp-sdefault.adb + $(ECHO) " end Search_Dir_Prefix;" >>tmp-sdefault.adb ++ $(ECHO) " function Project_Dir_Prefix return String_Ptr is" >>tmp-sdefault.adb ++ $(ECHO) " begin" >>tmp-sdefault.adb ++ $(ECHO) " return Relocate_Path (S0, S5);" >>tmp-sdefault.adb ++ $(ECHO) " end Project_Dir_Prefix;" >>tmp-sdefault.adb + $(ECHO) "end Sdefault;" >> tmp-sdefault.adb + $(MOVE_IF_CHANGE) tmp-sdefault.adb $(ADA_GEN_SUBDIR)/sdefault.adb + touch $(ADA_GEN_SUBDIR)/stamp-sdefault +Index: b/src/gcc/ada/prj-env.adb +=================================================================== +--- a/src/gcc/ada/prj-env.adb ++++ b/src/gcc/ada/prj-env.adb +@@ -25,7 +25,6 @@ + + with Fmap; + with Hostparm; +-with Makeutl; use Makeutl; + with Opt; + with Osint; use Osint; + with Output; use Output; +@@ -1905,6 +1904,7 @@ + (Self : in out Project_Search_Path; + Target_Name : String) + is ++ pragma Unreferenced (Target_Name); + Add_Default_Dir : Boolean := True; + First : Positive; + Last : Positive; +@@ -2084,74 +2084,9 @@ + + -- Set the initial value of Current_Project_Path + +- if Add_Default_Dir then +- declare +- Prefix : String_Ptr; +- +- begin +- if Sdefault.Search_Dir_Prefix = null then +- +- -- gprbuild case +- +- Prefix := new String'(Executable_Prefix_Path); +- +- else +- Prefix := new String'(Sdefault.Search_Dir_Prefix.all +- & ".." & Dir_Separator +- & ".." & Dir_Separator +- & ".." & Dir_Separator +- & ".." & Dir_Separator); +- end if; +- +- if Prefix.all /= "" then +- if Target_Name /= "" then +- +- -- $prefix/$target/lib/gnat +- +- Add_Str_To_Name_Buffer +- (Path_Separator & Prefix.all & Target_Name); +- +- -- Note: Target_Name has a trailing / when it comes from +- -- Sdefault. +- +- if Name_Buffer (Name_Len) /= '/' then +- Add_Char_To_Name_Buffer (Directory_Separator); +- end if; +- +- Add_Str_To_Name_Buffer +- ("lib" & Directory_Separator & "gnat"); +- +- -- $prefix/$target/share/gpr +- +- Add_Str_To_Name_Buffer +- (Path_Separator & Prefix.all & Target_Name); +- +- -- Note: Target_Name has a trailing / when it comes from +- -- Sdefault. +- +- if Name_Buffer (Name_Len) /= '/' then +- Add_Char_To_Name_Buffer (Directory_Separator); +- end if; +- +- Add_Str_To_Name_Buffer +- ("share" & Directory_Separator & "gpr"); +- end if; +- +- -- $prefix/share/gpr +- +- Add_Str_To_Name_Buffer +- (Path_Separator & Prefix.all & +- "share" & Directory_Separator & "gpr"); +- +- -- $prefix/lib/gnat +- +- Add_Str_To_Name_Buffer +- (Path_Separator & Prefix.all & +- "lib" & Directory_Separator & "gnat"); +- end if; +- +- Free (Prefix); +- end; ++ if Add_Default_Dir and Sdefault.Project_Dir_Prefix /= null then ++ Add_Str_To_Name_Buffer (Path_Separator ++ & Sdefault.Project_Dir_Prefix.all); + end if; + + Self.Path := new String'(Name_Buffer (1 .. Name_Len)); +Index: b/src/gcc/ada/sdefault.ads +=================================================================== +--- a/src/gcc/ada/sdefault.ads ++++ b/src/gcc/ada/sdefault.ads +@@ -35,4 +35,5 @@ + function Object_Dir_Default_Name return String_Ptr; + function Target_Name return String_Ptr; + function Search_Dir_Prefix return String_Ptr; ++ function Project_Dir_Prefix return String_Ptr; + end Sdefault; --- gcc-4.9-4.9.2.orig/debian/patches/ada-driver-check.diff +++ gcc-4.9-4.9.2/debian/patches/ada-driver-check.diff @@ -0,0 +1,29 @@ +# DP: Simplify Ada driver check (we always build using the required +# DP: Ada version. Needed for warnings on alpha. + +Index: b/src/config/acx.m4 +=================================================================== +--- a/src/config/acx.m4 ++++ b/src/config/acx.m4 +@@ -381,7 +381,7 @@ + # Other compilers, like HP Tru64 UNIX cc, exit successfully when + # given a .adb file, but produce no object file. So we must check + # if an object file was really produced to guard against this. +-errors=`(${CC} $1[]m4_ifval([$1], [ ])-c conftest.adb) 2>&1 || echo failure` ++errors=`(${CC} $1[]m4_ifval([$1], [ ])-c conftest.adb) 2>/dev/null || echo failure` + if test x"$errors" = x && test -f conftest.$ac_objext; then + acx_cv_cc_gcc_supports_ada=yes + fi +Index: b/src/configure +=================================================================== +--- a/src/configure ++++ b/src/configure +@@ -5207,7 +5207,7 @@ + # Other compilers, like HP Tru64 UNIX cc, exit successfully when + # given a .adb file, but produce no object file. So we must check + # if an object file was really produced to guard against this. +-errors=`(${CC} -c conftest.adb) 2>&1 || echo failure` ++errors=`(${CC} -c conftest.adb) 2>/dev/null || echo failure` + if test x"$errors" = x && test -f conftest.$ac_objext; then + acx_cv_cc_gcc_supports_ada=yes + fi --- gcc-4.9-4.9.2.orig/debian/patches/ada-gcc-name.diff +++ gcc-4.9-4.9.2/debian/patches/ada-gcc-name.diff @@ -0,0 +1,112 @@ +# DP: use gcc-4.9 instead of gcc as the command name. + +Index: b/src/gcc/ada/comperr.adb +=================================================================== +--- a/src/gcc/ada/comperr.adb ++++ b/src/gcc/ada/comperr.adb +@@ -371,7 +371,7 @@ + End_Line; + + Write_Str +- ("| Include the exact gcc or gnatmake command " & ++ ("| Include the exact gcc-4.9 or gnatmake command " & + "that you entered."); + End_Line; + +Index: b/src/gcc/ada/gnatlink.adb +=================================================================== +--- a/src/gcc/ada/gnatlink.adb ++++ b/src/gcc/ada/gnatlink.adb +@@ -137,7 +137,7 @@ + -- This table collects the arguments to be passed to compile the binder + -- generated file. + +- Gcc : String_Access := Program_Name ("gcc", "gnatlink"); ++ Gcc : String_Access := Program_Name ("gcc-4.9", "gnatlink"); + + Read_Mode : constant String := "r" & ASCII.NUL; + +@@ -1475,7 +1475,8 @@ + end if; + + Write_Line (" --GCC=comp Use comp as the compiler"); +- Write_Line (" --LINK=nam Use 'nam' for the linking rather than 'gcc'"); ++ Write_Line (" --LINK=nam Use 'nam' for the linking rather " & ++ "than 'gcc-4.9'"); + Write_Eol; + Write_Line (" [non-Ada-objects] list of non Ada object files"); + Write_Line (" [linker-options] other options for the linker"); +Index: b/src/gcc/ada/make.adb +=================================================================== +--- a/src/gcc/ada/make.adb ++++ b/src/gcc/ada/make.adb +@@ -670,7 +670,7 @@ + -- Compiler, Binder & Linker Data and Subprograms -- + ---------------------------------------------------- + +- Gcc : String_Access := Program_Name ("gcc", "gnatmake"); ++ Gcc : String_Access := Program_Name ("gcc-4.9", "gnatmake"); + Original_Gcc : constant String_Access := Gcc; + -- Original_Gcc is used to check if Gcc has been modified by a switch + -- --GCC=, so that for VM platforms, it is not modified again, as it can +Index: b/src/gcc/ada/gnatchop.adb +=================================================================== +--- a/src/gcc/ada/gnatchop.adb ++++ b/src/gcc/ada/gnatchop.adb +@@ -45,7 +45,7 @@ + Config_File_Name : constant String_Access := new String'("gnat.adc"); + -- The name of the file holding the GNAT configuration pragmas + +- Gcc : String_Access := new String'("gcc"); ++ Gcc : String_Access := new String'("gcc-4.9"); + -- May be modified by switch --GCC= + + Gcc_Set : Boolean := False; +Index: b/src/gcc/ada/mdll-utl.adb +=================================================================== +--- a/src/gcc/ada/mdll-utl.adb ++++ b/src/gcc/ada/mdll-utl.adb +@@ -39,7 +39,7 @@ + Dlltool_Name : constant String := "dlltool"; + Dlltool_Exec : OS_Lib.String_Access; + +- Gcc_Name : constant String := "gcc"; ++ Gcc_Name : constant String := "gcc-4.9"; + Gcc_Exec : OS_Lib.String_Access; + + Gnatbind_Name : constant String := "gnatbind"; +@@ -212,7 +212,7 @@ + end; + end if; + +- Print_Command ("gcc", Arguments (1 .. A)); ++ Print_Command ("gcc-4.9", Arguments (1 .. A)); + + OS_Lib.Spawn (Gcc_Exec.all, Arguments (1 .. A), Success); + +Index: b/src/gcc/ada/mlib-utl.adb +=================================================================== +--- a/src/gcc/ada/mlib-utl.adb ++++ b/src/gcc/ada/mlib-utl.adb +@@ -440,7 +440,7 @@ + if Driver_Name = No_Name then + if Gcc_Exec = null then + if Gcc_Name = null then +- Gcc_Name := Osint.Program_Name ("gcc", "gnatmake"); ++ Gcc_Name := Osint.Program_Name ("gcc-4.9", "gnatmake"); + end if; + + Gcc_Exec := Locate_Exec_On_Path (Gcc_Name.all); +Index: b/src/gcc/ada/prj-makr.adb +=================================================================== +--- a/src/gcc/ada/prj-makr.adb ++++ b/src/gcc/ada/prj-makr.adb +@@ -116,7 +116,7 @@ + + procedure Dup2 (Old_Fd, New_Fd : File_Descriptor); + +- Gcc : constant String := "gcc"; ++ Gcc : constant String := "gcc-4.9"; + Gcc_Path : String_Access := null; + + Non_Empty_Node : constant Project_Node_Id := 1; --- gcc-4.9-4.9.2.orig/debian/patches/ada-hurd.diff +++ gcc-4.9-4.9.2/debian/patches/ada-hurd.diff @@ -0,0 +1,842 @@ +Index: gnat-4.9-4.9.0/src/gcc/ada/s-osinte-gnu.ads +=================================================================== +--- /dev/null ++++ b/src/gcc/ada/s-osinte-gnu.ads +@@ -0,0 +1,797 @@ ++------------------------------------------------------------------------------ ++-- -- ++-- GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS -- ++-- -- ++-- S Y S T E M . O S _ I N T E R F A C E -- ++-- -- ++-- S p e c -- ++-- -- ++-- Copyright (C) 1991-1994, Florida State University -- ++-- Copyright (C) 1995-2014, Free Software Foundation, Inc. -- ++-- -- ++-- GNAT is free software; you can redistribute it and/or modify it under -- ++-- terms of the GNU General Public License as published by the Free Soft- -- ++-- ware Foundation; either version 3, or (at your option) any later ver- -- ++-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- ++-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- ++-- or FITNESS FOR A PARTICULAR PURPOSE. -- ++-- -- ++-- As a special exception under Section 7 of GPL version 3, you are granted -- ++-- additional permissions described in the GCC Runtime Library Exception, -- ++-- version 3.1, as published by the Free Software Foundation. -- ++-- -- ++-- You should have received a copy of the GNU General Public License and -- ++-- a copy of the GCC Runtime Library Exception along with this program; -- ++-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- ++-- . -- ++-- -- ++-- GNARL was developed by the GNARL team at Florida State University. -- ++-- Extensive contributions were provided by Ada Core Technologies, Inc. -- ++-- -- ++------------------------------------------------------------------------------ ++ ++-- This is the GNU/Hurd (POSIX Threads) version of this package ++ ++-- This package encapsulates all direct interfaces to OS services ++-- that are needed by children of System. ++ ++-- PLEASE DO NOT add any with-clauses to this package or remove the pragma ++-- Preelaborate. This package is designed to be a bottom-level (leaf) package ++ ++with Interfaces.C; ++with Unchecked_Conversion; ++ ++package System.OS_Interface is ++ pragma Preelaborate; ++ ++ pragma Linker_Options ("-lpthread"); ++ pragma Linker_Options ("-lrt"); ++ ++ subtype int is Interfaces.C.int; ++ subtype char is Interfaces.C.char; ++ subtype short is Interfaces.C.short; ++ subtype long is Interfaces.C.long; ++ subtype unsigned is Interfaces.C.unsigned; ++ subtype unsigned_short is Interfaces.C.unsigned_short; ++ subtype unsigned_long is Interfaces.C.unsigned_long; ++ subtype unsigned_char is Interfaces.C.unsigned_char; ++ subtype plain_char is Interfaces.C.plain_char; ++ subtype size_t is Interfaces.C.size_t; ++ ++ ----------- ++ -- Errno -- ++ ----------- ++ -- From /usr/include/i386-gnu/bits/errno.h ++ ++ function errno return int; ++ pragma Import (C, errno, "__get_errno"); ++ ++ EAGAIN : constant := 1073741859; ++ EINTR : constant := 1073741828; ++ EINVAL : constant := 1073741846; ++ ENOMEM : constant := 1073741836; ++ EPERM : constant := 1073741825; ++ ETIMEDOUT : constant := 1073741884; ++ ++ ------------- ++ -- Signals -- ++ ------------- ++ -- From /usr/include/i386-gnu/bits/signum.h ++ ++ Max_Interrupt : constant := 32; ++ type Signal is new int range 0 .. Max_Interrupt; ++ for Signal'Size use int'Size; ++ ++ SIGHUP : constant := 1; -- hangup ++ SIGINT : constant := 2; -- interrupt (rubout) ++ SIGQUIT : constant := 3; -- quit (ASCD FS) ++ SIGILL : constant := 4; -- illegal instruction (not reset) ++ SIGTRAP : constant := 5; -- trace trap (not reset) ++ SIGIOT : constant := 6; -- IOT instruction ++ SIGABRT : constant := 6; -- used by abort, replace SIGIOT in the future ++ SIGEMT : constant := 7; -- EMT instruction ++ SIGFPE : constant := 8; -- floating point exception ++ SIGKILL : constant := 9; -- kill (cannot be caught or ignored) ++ SIGBUS : constant := 10; -- bus error ++ SIGSEGV : constant := 11; -- segmentation violation ++ SIGSYS : constant := 12; -- bad argument to system call ++ SIGPIPE : constant := 13; -- write on a pipe with no one to read it ++ SIGALRM : constant := 14; -- alarm clock ++ SIGTERM : constant := 15; -- software termination signal from kill ++ SIGURG : constant := 16; -- urgent condition on IO channel ++ SIGSTOP : constant := 17; -- stop (cannot be caught or ignored) ++ SIGTSTP : constant := 18; -- user stop requested from tty ++ SIGCONT : constant := 19; -- stopped process has been continued ++ SIGCLD : constant := 20; -- alias for SIGCHLD ++ SIGCHLD : constant := 20; -- child status change ++ SIGTTIN : constant := 21; -- background tty read attempted ++ SIGTTOU : constant := 22; -- background tty write attempted ++ SIGIO : constant := 23; -- I/O possible (Solaris SIGPOLL alias) ++ SIGPOLL : constant := 23; -- I/O possible (same as SIGIO?) ++ SIGXCPU : constant := 24; -- CPU time limit exceeded ++ SIGXFSZ : constant := 25; -- filesize limit exceeded ++ SIGVTALRM : constant := 26; -- virtual timer expired ++ SIGPROF : constant := 27; -- profiling timer expired ++ SIGWINCH : constant := 28; -- window size change ++ SIGINFO : constant := 29; -- information request (NetBSD/FreeBSD) ++ SIGUSR1 : constant := 30; -- user defined signal 1 ++ SIGUSR2 : constant := 31; -- user defined signal 2 ++ SIGLOST : constant := 32; -- Resource lost (Sun); server died (GNU) ++ ++ SIGADAABORT : constant := SIGABRT; ++ -- Change this if you want to use another signal for task abort. ++ -- SIGTERM might be a good one. ++ ++ type Signal_Set is array (Natural range <>) of Signal; ++ ++ Unmasked : constant Signal_Set := ( ++ SIGTRAP, ++ -- To enable debugging on multithreaded applications, mark SIGTRAP to ++ -- be kept unmasked. ++ ++ SIGBUS, ++ ++ SIGTTIN, SIGTTOU, SIGTSTP, ++ -- Keep these three signals unmasked so that background processes ++ -- and IO behaves as normal "C" applications ++ ++ SIGPROF, ++ -- To avoid confusing the profiler ++ ++ SIGKILL, SIGSTOP); ++ -- These two signals actually cannot be masked; ++ -- POSIX simply won't allow it. ++ ++ Reserved : constant Signal_Set := ++ -- I am not sure why the following signal is reserved. ++ -- I guess they are not supported by this version of GNU/Hurd. ++ (0 .. 0 => SIGVTALRM); ++ ++ type sigset_t is private; ++ ++ -- From /usr/include/signal.h /usr/include/i386-gnu/bits/sigset.h ++ function sigaddset (set : access sigset_t; sig : Signal) return int; ++ pragma Import (C, sigaddset, "sigaddset"); ++ ++ function sigdelset (set : access sigset_t; sig : Signal) return int; ++ pragma Import (C, sigdelset, "sigdelset"); ++ ++ function sigfillset (set : access sigset_t) return int; ++ pragma Import (C, sigfillset, "sigfillset"); ++ ++ function sigismember (set : access sigset_t; sig : Signal) return int; ++ pragma Import (C, sigismember, "sigismember"); ++ ++ function sigemptyset (set : access sigset_t) return int; ++ pragma Import (C, sigemptyset, "sigemptyset"); ++ ++ -- sigcontext is architecture dependent, so define it private ++ type struct_sigcontext is private; ++ ++ -- From /usr/include/i386-gnu/bits/sigaction.h: Note: arg. order differs ++ type struct_sigaction is record ++ sa_handler : System.Address; ++ sa_mask : sigset_t; ++ sa_flags : int; ++ end record; ++ pragma Convention (C, struct_sigaction); ++ ++ type struct_sigaction_ptr is access all struct_sigaction; ++ ++ -- From /usr/include/i386-gnu/bits/sigaction.h ++ SIG_BLOCK : constant := 1; ++ SIG_UNBLOCK : constant := 2; ++ SIG_SETMASK : constant := 3; ++ ++ -- From /usr/include/i386-gnu/bits/signum.h ++ SIG_ERR : constant := 1; ++ SIG_DFL : constant := 0; ++ SIG_IGN : constant := 1; ++ SIG_HOLD : constant := 2; ++ ++ -- From /usr/include/i386-gnu/bits/sigaction.h ++ SA_SIGINFO : constant := 16#0040#; ++ SA_ONSTACK : constant := 16#0001#; ++ ++ function sigaction ++ (sig : Signal; ++ act : struct_sigaction_ptr; ++ oact : struct_sigaction_ptr) return int; ++ pragma Import (C, sigaction, "sigaction"); ++ ++ ---------- ++ -- Time -- ++ ---------- ++ ++ Time_Slice_Supported : constant Boolean := True; ++ -- Indicates whether time slicing is supported (i.e SCHED_RR is supported) ++ ++ type timespec is private; ++ ++ function nanosleep (rqtp, rmtp : access timespec) return int; ++ pragma Import (C, nanosleep, "nanosleep"); ++ ++ type clockid_t is new int; ++ CLOCK_REALTIME : constant clockid_t := 0; ++ ++ -- From: /usr/include/time.h ++ function clock_gettime ++ (clock_id : clockid_t; ++ tp : access timespec) ++ return int; ++ pragma Import (C, clock_gettime, "clock_gettime"); ++ ++ function To_Duration (TS : timespec) return Duration; ++ pragma Inline (To_Duration); ++ ++ function To_Timespec (D : Duration) return timespec; ++ pragma Inline (To_Timespec); ++ ++ -- From: /usr/include/unistd.h ++ function sysconf (name : int) return long; ++ pragma Import (C, sysconf); ++ ++ -- From /usr/include/i386-gnu/bits/confname.h ++ SC_CLK_TCK : constant := 2; ++ SC_NPROCESSORS_ONLN : constant := 84; ++ ++ ------------------------- ++ -- Priority Scheduling -- ++ ------------------------- ++ -- From /usr/include/i386-gnu/bits/sched.h ++ ++ SCHED_OTHER : constant := 0; ++ SCHED_FIFO : constant := 1; ++ SCHED_RR : constant := 2; ++ ++ function To_Target_Priority ++ (Prio : System.Any_Priority) return Interfaces.C.int; ++ -- Maps System.Any_Priority to a POSIX priority. ++ ++ ------------- ++ -- Process -- ++ ------------- ++ ++ type pid_t is private; ++ ++ -- From: /usr/include/signal.h ++ function kill (pid : pid_t; sig : Signal) return int; ++ pragma Import (C, kill, "kill"); ++ ++ -- From: /usr/include/unistd.h ++ function getpid return pid_t; ++ pragma Import (C, getpid, "getpid"); ++ ++ --------- ++ -- LWP -- ++ --------- ++ ++ -- From: /usr/include/pthread/pthread.h ++ function lwp_self return System.Address; ++ -- lwp_self does not exist on this thread library, revert to pthread_self ++ -- which is the closest approximation (with getpid). This function is ++ -- needed to share 7staprop.adb across POSIX-like targets. ++ pragma Import (C, lwp_self, "pthread_self"); ++ ++ ------------- ++ -- Threads -- ++ ------------- ++ ++ type Thread_Body is access ++ function (arg : System.Address) return System.Address; ++ pragma Convention (C, Thread_Body); ++ ++ function Thread_Body_Access is new ++ Unchecked_Conversion (System.Address, Thread_Body); ++ ++ -- From: /usr/include/bits/pthread.h:typedef int __pthread_t; ++ -- /usr/include/pthread/pthreadtypes.h:typedef __pthread_t pthread_t; ++ type pthread_t is new unsigned_long; ++ subtype Thread_Id is pthread_t; ++ ++ function To_pthread_t is new Unchecked_Conversion ++ (unsigned_long, pthread_t); ++ ++ type pthread_mutex_t is limited private; ++ type pthread_rwlock_t is limited private; ++ type pthread_cond_t is limited private; ++ type pthread_attr_t is limited private; ++ type pthread_mutexattr_t is limited private; ++ type pthread_rwlockattr_t is limited private; ++ type pthread_condattr_t is limited private; ++ type pthread_key_t is private; ++ ++ -- From /usr/include/pthread/pthreadtypes.h ++ PTHREAD_CREATE_DETACHED : constant := 1; ++ PTHREAD_CREATE_JOINABLE : constant := 0; ++ ++ PTHREAD_SCOPE_PROCESS : constant := 1; ++ PTHREAD_SCOPE_SYSTEM : constant := 0; ++ ++ ----------- ++ -- Stack -- ++ ----------- ++ ++ -- From: /usr/include/i386-gnu/bits/sigstack.h ++ type stack_t is record ++ ss_sp : System.Address; ++ ss_size : size_t; ++ ss_flags : int; ++ end record; ++ pragma Convention (C, stack_t); ++ ++ function sigaltstack ++ (ss : not null access stack_t; ++ oss : access stack_t) return int; ++ pragma Import (C, sigaltstack, "sigaltstack"); ++ ++ Alternate_Stack : aliased System.Address; ++ -- This is a dummy definition, never used (Alternate_Stack_Size is null) ++ ++ Alternate_Stack_Size : constant := 0; ++ -- No alternate signal stack is used on this platform ++ ++ Stack_Base_Available : constant Boolean := False; ++ -- Indicates whether the stack base is available on this target ++ ++ function Get_Stack_Base (thread : pthread_t) return Address; ++ pragma Inline (Get_Stack_Base); ++ -- returns the stack base of the specified thread. Only call this function ++ -- when Stack_Base_Available is True. ++ ++ -- From: /usr/include/i386-gnu/bits/shm.h __getpagesize or getpagesize?? ++ function Get_Page_Size return size_t; ++ function Get_Page_Size return Address; ++ pragma Import (C, Get_Page_Size, "__getpagesize"); ++ -- Returns the size of a page ++ ++ -- From /usr/include/i386-gnu/bits/mman.h ++ PROT_NONE : constant := 0; ++ PROT_READ : constant := 4; ++ PROT_WRITE : constant := 2; ++ PROT_EXEC : constant := 1; ++ PROT_ALL : constant := PROT_READ + PROT_WRITE + PROT_EXEC; ++ PROT_ON : constant := PROT_NONE; ++ PROT_OFF : constant := PROT_ALL; ++ ++ -- From /usr/include/i386-gnu/bits/mman.h ++ function mprotect (addr : Address; len : size_t; prot : int) return int; ++ pragma Import (C, mprotect); ++ ++ --------------------------------------- ++ -- Nonstandard Thread Initialization -- ++ --------------------------------------- ++ ++ procedure pthread_init; ++ pragma Inline (pthread_init); ++ -- This is a dummy procedure to share some GNULLI files ++ ++ ------------------------- ++ -- POSIX.1c Section 3 -- ++ ------------------------- ++ ++ -- From: /usr/include/signal.h: ++ -- sigwait (__const sigset_t *__restrict __set, int *__restrict __sig) ++ function sigwait (set : access sigset_t; sig : access Signal) return int; ++ pragma Import (C, sigwait, "sigwait"); ++ ++ -- From: /usr/include/pthread/pthread.h: ++ -- extern int pthread_kill (pthread_t thread, int signo); ++ function pthread_kill (thread : pthread_t; sig : Signal) return int; ++ pragma Import (C, pthread_kill, "pthread_kill"); ++ ++ -- From: /usr/include/i386-gnu/bits/sigthread.h ++ -- extern int pthread_sigmask (int __how, __const __sigset_t *__newmask, ++ -- __sigset_t *__oldmask) __THROW; ++ function pthread_sigmask ++ (how : int; ++ set : access sigset_t; ++ oset : access sigset_t) return int; ++ pragma Import (C, pthread_sigmask, "pthread_sigmask"); ++ ++ -------------------------- ++ -- POSIX.1c Section 11 -- ++ -------------------------- ++ ++ -- From: /usr/include/pthread/pthread.h and ++ -- /usr/include/pthread/pthreadtypes.h ++ function pthread_mutexattr_init ++ (attr : access pthread_mutexattr_t) return int; ++ pragma Import (C, pthread_mutexattr_init, "pthread_mutexattr_init"); ++ ++ function pthread_mutexattr_destroy ++ (attr : access pthread_mutexattr_t) return int; ++ pragma Import (C, pthread_mutexattr_destroy, "pthread_mutexattr_destroy"); ++ ++ function pthread_mutex_init ++ (mutex : access pthread_mutex_t; ++ attr : access pthread_mutexattr_t) return int; ++ pragma Import (C, pthread_mutex_init, "pthread_mutex_init"); ++ ++ function pthread_mutex_destroy (mutex : access pthread_mutex_t) return int; ++ pragma Import (C, pthread_mutex_destroy, "pthread_mutex_destroy"); ++ ++ function pthread_mutex_lock (mutex : access pthread_mutex_t) return int; ++ pragma Import (C, pthread_mutex_lock, "pthread_mutex_lock"); ++ ++ function pthread_mutex_unlock (mutex : access pthread_mutex_t) return int; ++ pragma Import (C, pthread_mutex_unlock, "pthread_mutex_unlock"); ++ ++ function pthread_rwlockattr_init ++ (attr : access pthread_rwlockattr_t) return int; ++ pragma Import (C, pthread_rwlockattr_init, "pthread_rwlockattr_init"); ++ ++ function pthread_rwlockattr_destroy ++ (attr : access pthread_rwlockattr_t) return int; ++ pragma Import (C, pthread_rwlockattr_destroy, "pthread_rwlockattr_destroy"); ++ PTHREAD_RWLOCK_PREFER_READER_NP : constant := 0; ++ PTHREAD_RWLOCK_PREFER_WRITER_NP : constant := 1; ++ PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP : constant := 2; ++ ++ function pthread_rwlockattr_setkind_np ++ (attr : access pthread_rwlockattr_t; ++ pref : int) return int; ++ pragma Import ++ (C, pthread_rwlockattr_setkind_np, "pthread_rwlockattr_setkind_np"); ++ ++ function pthread_rwlock_init ++ (mutex : access pthread_rwlock_t; ++ attr : access pthread_rwlockattr_t) return int; ++ pragma Import (C, pthread_rwlock_init, "pthread_rwlock_init"); ++ ++ function pthread_rwlock_destroy ++ (mutex : access pthread_rwlock_t) return int; ++ pragma Import (C, pthread_rwlock_destroy, "pthread_rwlock_destroy"); ++ ++ function pthread_rwlock_rdlock (mutex : access pthread_rwlock_t) return int; ++ pragma Import (C, pthread_rwlock_rdlock, "pthread_rwlock_rdlock"); ++ ++ function pthread_rwlock_wrlock (mutex : access pthread_rwlock_t) return int; ++ pragma Import (C, pthread_rwlock_wrlock, "pthread_rwlock_wrlock"); ++ ++ function pthread_rwlock_unlock (mutex : access pthread_rwlock_t) return int; ++ pragma Import (C, pthread_rwlock_unlock, "pthread_rwlock_unlock"); ++ ++ function pthread_condattr_init ++ (attr : access pthread_condattr_t) return int; ++ pragma Import (C, pthread_condattr_init, "pthread_condattr_init"); ++ ++ function pthread_condattr_destroy ++ (attr : access pthread_condattr_t) return int; ++ pragma Import (C, pthread_condattr_destroy, "pthread_condattr_destroy"); ++ ++ function pthread_cond_init ++ (cond : access pthread_cond_t; ++ attr : access pthread_condattr_t) return int; ++ pragma Import (C, pthread_cond_init, "pthread_cond_init"); ++ ++ function pthread_cond_destroy (cond : access pthread_cond_t) return int; ++ pragma Import (C, pthread_cond_destroy, "pthread_cond_destroy"); ++ ++ function pthread_cond_signal (cond : access pthread_cond_t) return int; ++ pragma Import (C, pthread_cond_signal, "pthread_cond_signal"); ++ ++ function pthread_cond_wait ++ (cond : access pthread_cond_t; ++ mutex : access pthread_mutex_t) return int; ++ pragma Import (C, pthread_cond_wait, "pthread_cond_wait"); ++ ++ function pthread_cond_timedwait ++ (cond : access pthread_cond_t; ++ mutex : access pthread_mutex_t; ++ abstime : access timespec) return int; ++ pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait"); ++ ++ Relative_Timed_Wait : constant Boolean := False; ++ -- pthread_cond_timedwait requires an absolute delay time ++ ++ -------------------------- ++ -- POSIX.1c Section 13 -- ++ -------------------------- ++ -- From /usr/include/pthread/pthreadtypes.h ++ ++ PTHREAD_PRIO_NONE : constant := 0; ++ PTHREAD_PRIO_PROTECT : constant := 2; ++ PTHREAD_PRIO_INHERIT : constant := 1; ++ ++ -- From: /usr/include/pthread/pthread.h ++ function pthread_mutexattr_setprotocol ++ (attr : access pthread_mutexattr_t; ++ protocol : int) return int; ++ pragma Import (C, pthread_mutexattr_setprotocol, ++ "pthread_mutexattr_setprotocol"); ++ ++ function pthread_mutexattr_getprotocol ++ (attr : access pthread_mutexattr_t; ++ protocol : access int) return int; ++ pragma Import (C, pthread_mutexattr_getprotocol, ++ "pthread_mutexattr_getprotocol"); ++ ++ function pthread_mutexattr_setprioceiling ++ (attr : access pthread_mutexattr_t; ++ prioceiling : int) return int; ++ pragma Import (C, pthread_mutexattr_setprioceiling, ++ "pthread_mutexattr_setprioceiling"); ++ ++ function pthread_mutexattr_getprioceiling ++ (attr : access pthread_mutexattr_t; ++ prioceiling : access int) return int; ++ pragma Import (C, pthread_mutexattr_getprioceiling, ++ "pthread_mutexattr_getprioceiling"); ++ ++ type struct_sched_param is record ++ sched_priority : int; -- scheduling priority ++ end record; ++ pragma Convention (C, struct_sched_param); ++ ++ function pthread_setschedparam ++ (thread : pthread_t; ++ policy : int; ++ param : access struct_sched_param) return int; ++ pragma Import (C, pthread_setschedparam, "pthread_setschedparam"); ++ ++ function pthread_attr_setscope ++ (attr : access pthread_attr_t; ++ contentionscope : int) return int; ++ pragma Import (C, pthread_attr_setscope, "pthread_attr_setscope"); ++ ++ function pthread_attr_getscope ++ (attr : access pthread_attr_t; ++ contentionscope : access int) return int; ++ pragma Import (C, pthread_attr_getscope, "pthread_attr_getscope"); ++ ++ function pthread_attr_setinheritsched ++ (attr : access pthread_attr_t; ++ inheritsched : int) return int; ++ pragma Import (C, pthread_attr_setinheritsched, ++ "pthread_attr_setinheritsched"); ++ ++ function pthread_attr_getinheritsched ++ (attr : access pthread_attr_t; ++ inheritsched : access int) return int; ++ pragma Import (C, pthread_attr_getinheritsched, ++ "pthread_attr_getinheritsched"); ++ ++ function pthread_attr_setschedpolicy ++ (attr : access pthread_attr_t; ++ policy : int) return int; ++ pragma Import (C, pthread_attr_setschedpolicy, "pthread_setschedpolicy"); ++ ++ function sched_yield return int; ++ pragma Import (C, sched_yield, "sched_yield"); ++ ++ --------------------------- ++ -- P1003.1c - Section 16 -- ++ --------------------------- ++ ++ function pthread_attr_init ++ (attributes : access pthread_attr_t) return int; ++ pragma Import (C, pthread_attr_init, "pthread_attr_init"); ++ ++ function pthread_attr_destroy ++ (attributes : access pthread_attr_t) return int; ++ pragma Import (C, pthread_attr_destroy, "pthread_attr_destroy"); ++ ++ function pthread_attr_setdetachstate ++ (attr : access pthread_attr_t; ++ detachstate : int) return int; ++ pragma Import ++ (C, pthread_attr_setdetachstate, "pthread_attr_setdetachstate"); ++ ++ function pthread_attr_setstacksize ++ (attr : access pthread_attr_t; ++ stacksize : size_t) return int; ++ pragma Import (C, pthread_attr_setstacksize, "pthread_attr_setstacksize"); ++ ++ -- From: /usr/include/pthread/pthread.h ++ function pthread_create ++ (thread : access pthread_t; ++ attributes : access pthread_attr_t; ++ start_routine : Thread_Body; ++ arg : System.Address) return int; ++ pragma Import (C, pthread_create, "pthread_create"); ++ ++ procedure pthread_exit (status : System.Address); ++ pragma Import (C, pthread_exit, "pthread_exit"); ++ ++ function pthread_self return pthread_t; ++ pragma Import (C, pthread_self, "pthread_self"); ++ ++ -------------------------- ++ -- POSIX.1c Section 17 -- ++ -------------------------- ++ ++ function pthread_setspecific ++ (key : pthread_key_t; ++ value : System.Address) return int; ++ pragma Import (C, pthread_setspecific, "pthread_setspecific"); ++ ++ function pthread_getspecific (key : pthread_key_t) return System.Address; ++ pragma Import (C, pthread_getspecific, "pthread_getspecific"); ++ ++ type destructor_pointer is access procedure (arg : System.Address); ++ pragma Convention (C, destructor_pointer); ++ ++ function pthread_key_create ++ (key : access pthread_key_t; ++ destructor : destructor_pointer) return int; ++ pragma Import (C, pthread_key_create, "pthread_key_create"); ++ ++ -- From /usr/include/i386-gnu/bits/sched.h ++ CPU_SETSIZE : constant := 1_024; ++ ++ type bit_field is array (1 .. CPU_SETSIZE) of Boolean; ++ for bit_field'Size use CPU_SETSIZE; ++ pragma Pack (bit_field); ++ pragma Convention (C, bit_field); ++ ++ type cpu_set_t is record ++ bits : bit_field; ++ end record; ++ pragma Convention (C, cpu_set_t); ++ ++private ++ ++ type sigset_t is array (1 .. 4) of unsigned; ++ ++ -- In GNU/Hurd the component sa_handler turns out to ++ -- be one a union type, and the selector is a macro: ++ -- #define sa_handler __sigaction_handler.sa_handler ++ -- #define sa_sigaction __sigaction_handler.sa_sigaction ++ ++ -- Should we add a signal_context type here ? ++ -- How could it be done independent of the CPU architecture ? ++ -- sigcontext type is opaque, so it is architecturally neutral. ++ -- It is always passed as an access type, so define it as an empty record ++ -- since the contents are not used anywhere. ++ type struct_sigcontext is null record; ++ pragma Convention (C, struct_sigcontext); ++ ++ type pid_t is new int; ++ ++ type time_t is new long; ++ ++ type timespec is record ++ tv_sec : time_t; ++ tv_nsec : long; ++ end record; ++ pragma Convention (C, timespec); ++ ++ -- From: /usr/include/pthread/pthreadtypes.h: ++ -- typedef struct __pthread_attr pthread_attr_t; ++ -- /usr/include/i386-gnu/bits/thread-attr.h: struct __pthread_attr... ++ -- /usr/include/pthread/pthreadtypes.h: enum __pthread_contentionscope ++ -- enum __pthread_detachstate detachstate; ++ -- enum __pthread_inheritsched inheritsched; ++ -- enum __pthread_contentionscope contentionscope; ++ -- Not used: schedpolicy : int; ++ type pthread_attr_t is record ++ schedparam : struct_sched_param; ++ stackaddr : System.Address; ++ stacksize : size_t; ++ guardsize : size_t; ++ detachstate : int; ++ inheritsched : int; ++ contentionscope : int; ++ schedpolicy : int; ++ end record; ++ pragma Convention (C, pthread_attr_t); ++ ++ -- From: /usr/include/pthread/pthreadtypes.h: ++ -- typedef struct __pthread_condattr pthread_condattr_t; ++ -- From: /usr/include/i386-gnu/bits/condition-attr.h: ++ -- struct __pthread_condattr { ++ -- enum __pthread_process_shared pshared; ++ -- __Clockid_T Clock;} ++ -- From: /usr/include/pthread/pthreadtypes.h: ++ -- enum __pthread_process_shared ++ type pthread_condattr_t is record ++ pshared : int; ++ clock : clockid_t; ++ end record; ++ pragma Convention (C, pthread_condattr_t); ++ ++ -- From: /usr/include/pthread/pthreadtypes.h: ++ -- typedef struct __pthread_mutexattr pthread_mutexattr_t; and ++ -- /usr/include/i386-gnu/bits/mutex-attr.h ++ -- struct __pthread_mutexattr { ++ -- int prioceiling; ++ -- enum __pthread_mutex_protocol protocol; ++ -- enum __pthread_process_shared pshared; ++ -- enum __pthread_mutex_type mutex_type;}; ++ type pthread_mutexattr_t is record ++ prioceiling : int; ++ protocol : int; ++ pshared : int; ++ mutex_type : int; ++ end record; ++ pragma Convention (C, pthread_mutexattr_t); ++ ++ -- From: /usr/include/pthread/pthreadtypes.h ++ -- typedef struct __pthread_mutex pthread_mutex_t; and ++ -- /usr/include/i386-gnu/bits/mutex.h: ++ -- struct __pthread_mutex { ++ -- __pthread_spinlock_t __held; ++ -- __pthread_spinlock_t __lock; ++ -- /* in cthreads, mutex_init does not initialized the third ++ -- pointer, as such, we cannot rely on its value for anything. */ ++ -- char *cthreadscompat1; ++ -- struct __pthread *__queue; ++ -- struct __pthread_mutexattr *attr; ++ -- void *data; ++ -- /* up to this point, we are completely compatible with cthreads ++ -- and what libc expects. */ ++ -- void *owner; ++ -- unsigned locks; ++ -- /* if null then the default attributes apply. */ ++ -- }; ++ ++ type pthread_mutex_t is record ++ held : int; ++ lock : int; ++ cthreadcompat : System.Address; ++ queue : System.Address; ++ attr : System.Address; ++ data : System.Address; ++ owner : System.Address; ++ locks : unsigned; ++ end record; ++ pragma Convention (C, pthread_mutex_t); ++ -- pointer needed? ++ -- type pthread_mutex_t_ptr is access pthread_mutex_t; ++ ++ -- From: /usr/include/pthread/pthreadtypes.h: ++ -- typedef struct __pthread_cond pthread_cond_t; ++ -- typedef struct __pthread_condattr pthread_condattr_t; ++ -- /usr/include/i386-gnu/bits/condition.h:struct __pthread_cond{} ++ -- pthread_condattr_t: see above! ++ -- /usr/include/i386-gnu/bits/condition.h: ++ -- struct __pthread_condimpl *__impl; ++ ++ type pthread_cond_t is record ++ lock : int; ++ queue : System.Address; ++ condattr : System.Address; ++ impl : System.Address; ++ data : System.Address; ++ end record; ++ pragma Convention (C, pthread_cond_t); ++ ++ -- From: /usr/include/pthread/pthreadtypes.h: ++ -- typedef __pthread_key pthread_key_t; and ++ -- /usr/include/i386-gnu/bits/thread-specific.h: ++ -- typedef int __pthread_key; ++ ++ type pthread_key_t is new int; ++ ++ -- From: /usr/include/i386-gnu/bits/rwlock-attr.h: ++ -- struct __pthread_rwlockattr { ++ -- enum __pthread_process_shared pshared; }; ++ ++ type pthread_rwlockattr_t is record ++ pshared : int; ++ end record; ++ pragma Convention (C, pthread_rwlockattr_t); ++ ++ -- From: /usr/include/i386-gnu/bits/rwlock.h: ++ -- struct __pthread_rwlock { ++ -- __pthread_spinlock_t __held; ++ -- __pthread_spinlock_t __lock; ++ -- int readers; ++ -- struct __pthread *readerqueue; ++ -- struct __pthread *writerqueue; ++ -- struct __pthread_rwlockattr *__attr; ++ -- void *__data; }; ++ ++ type pthread_rwlock_t is record ++ held : int; ++ lock : int; ++ readers : int; ++ readerqueue : System.Address; ++ writerqueue : System.Address; ++ attr : pthread_rwlockattr_t; ++ data : int; ++ end record; ++ pragma Convention (C, pthread_rwlock_t); ++ ++end System.OS_Interface; +Index: b/src/gcc/ada/gcc-interface/Makefile.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -1296,6 +1296,35 @@ ifeq ($(strip $(filter-out %86 kfreebsd% + MISCLIB = -lutil + endif + ++# i[3456]86-pc-gnu i.e. GNU Hurd ++ifeq ($(strip $(filter-out %86 pc gnu,$(target_cpu) $(target_vendor) $(target_os))),) ++ LIBGNAT_TARGET_PAIRS = \ ++ a-intnam.ads + #endif +Index: b/src/gcc/ada/s-osinte-kfreebsd-gnu.adb +=================================================================== +--- /dev/null ++++ b/src/gcc/ada/s-osinte-kfreebsd-gnu.adb +@@ -0,0 +1,158 @@ ++------------------------------------------------------------------------------ ++-- -- ++-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS -- ++-- -- ++-- S Y S T E M . O S _ I N T E R F A C E -- ++-- -- ++-- B o d y -- ++-- -- ++-- Copyright (C) 1991-1994, Florida State University -- ++-- Copyright (C) 1995-2006, AdaCore -- ++-- -- ++-- GNARL is free software; you can redistribute it and/or modify it under -- ++-- terms of the GNU General Public License as published by the Free Soft- -- ++-- ware Foundation; either version 2, or (at your option) any later ver- -- ++-- sion. GNARL is distributed in the hope that it will be useful, but WITH- -- ++-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- ++-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- ++-- for more details. You should have received a copy of the GNU General -- ++-- Public License distributed with GNARL; see file COPYING. If not, write -- ++-- to the Free Software Foundation, 51 Franklin Street, Fifth Floor, -- ++-- Boston, MA 02110-1301, USA. -- ++-- -- ++-- As a special exception, if other files instantiate generics from this -- ++-- unit, or you link this unit with other files to produce an executable, -- ++-- this unit does not by itself cause the resulting executable to be -- ++-- covered by the GNU General Public License. This exception does not -- ++-- however invalidate any other reasons why the executable file might be -- ++-- covered by the GNU Public License. -- ++-- -- ++-- GNARL was developed by the GNARL team at Florida State University. -- ++-- Extensive contributions were provided by Ada Core Technologies, Inc. -- ++-- -- ++------------------------------------------------------------------------------ ++ ++-- This is the GNU/kFreeBSD version of this package. ++ ++pragma Polling (Off); ++-- Turn off polling, we do not want ATC polling to take place during ++-- tasking operations. It causes infinite loops and other problems. ++ ++-- This package encapsulates all direct interfaces to OS services ++-- that are needed by children of System. ++ ++package body System.OS_Interface is ++ ++ -------------------- ++ -- Get_Stack_Base -- ++ -------------------- ++ ++ function Get_Stack_Base (thread : pthread_t) return Address is ++ pragma Warnings (Off, thread); ++ ++ begin ++ return Null_Address; ++ end Get_Stack_Base; ++ ++ ------------------ ++ -- pthread_init -- ++ ------------------ ++ ++ procedure pthread_init is ++ begin ++ null; ++ end pthread_init; ++ ++ ----------------------------------- ++ -- pthread_mutexattr_setprotocol -- ++ ----------------------------------- ++ ++ function pthread_mutexattr_setprotocol ++ (attr : access pthread_mutexattr_t; ++ protocol : int) return int is ++ pragma Unreferenced (attr, protocol); ++ begin ++ return 0; ++ end pthread_mutexattr_setprotocol; ++ ++ ----------------------------------- ++ -- pthread_mutexattr_getprotocol -- ++ ----------------------------------- ++ ++ function pthread_mutexattr_getprotocol ++ (attr : access pthread_mutexattr_t; ++ protocol : access int) return int is ++ pragma Unreferenced (attr, protocol); ++ begin ++ return 0; ++ end pthread_mutexattr_getprotocol; ++ ++ -------------------------------------- ++ -- pthread_mutexattr_setprioceiling -- ++ -------------------------------------- ++ ++ function pthread_mutexattr_setprioceiling ++ (attr : access pthread_mutexattr_t; ++ prioceiling : int) return int is ++ pragma Unreferenced (attr, prioceiling); ++ begin ++ return 0; ++ end pthread_mutexattr_setprioceiling; ++ ++ -------------------------------------- ++ -- pthread_mutexattr_getprioceiling -- ++ -------------------------------------- ++ ++ function pthread_mutexattr_getprioceiling ++ (attr : access pthread_mutexattr_t; ++ prioceiling : access int) return int is ++ pragma Unreferenced (attr, prioceiling); ++ begin ++ return 0; ++ end pthread_mutexattr_getprioceiling; ++ ++ ----------------- ++ -- To_Duration -- ++ ----------------- ++ ++ function To_Duration (TS : timespec) return Duration is ++ begin ++ return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9; ++ end To_Duration; ++ ++ ------------------------ ++ -- To_Target_Priority -- ++ ------------------------ ++ ++ function To_Target_Priority ++ (Prio : System.Any_Priority) return Interfaces.C.int ++ is ++ begin ++ return Interfaces.C.int (Prio); ++ end To_Target_Priority; ++ ++ ----------------- ++ -- To_Timespec -- ++ ----------------- ++ ++ function To_Timespec (D : Duration) return timespec is ++ S : time_t; ++ F : Duration; ++ ++ begin ++ S := time_t (Long_Long_Integer (D)); ++ F := D - Duration (S); ++ ++ -- If F has negative value due to a round-up, adjust for positive F ++ -- value. ++ ++ if F < 0.0 then ++ S := S - 1; ++ F := F + 1.0; ++ end if; ++ ++ return timespec'(tv_sec => S, ++ tv_nsec => long (Long_Long_Integer (F * 10#1#E9))); ++ end To_Timespec; ++ ++end System.OS_Interface; +Index: b/src/gcc/ada/gcc-interface/Makefile.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -1272,7 +1272,7 @@ + a-intnam.ads ++# ++# This file is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++# Default target; must be first. ++all: libgnatprj ++ ++.SUFFIXES: ++ ++CPUS := $(shell getconf _NPROCESSORS_ONLN) ++LIB_VERSION := $(strip $(shell grep ' Library_Version :' \ ++ @srcdir@/../gcc/ada/gnatvsn.ads | \ ++ sed -e 's/.*"\(.*\)".*/\1/')) ++GCC=$(CC) ++GPP=$(CXX) ++LIBGNAT_JUST_BUILT := -nostdinc -I../gcc/ada/rts ++LIBGNATVSN := -I../libgnatvsn ++CFLAGS := -g -O2 ++ADAFLAGS := -g -O2 -gnatn ++BASEVER := $(shell cat @srcdir@/../gcc/BASE-VER) ++DEVPHASE := $(shell cat @srcdir@/../gcc/DEV-PHASE) ++DATESTAMP := $(shell cat @srcdir@/../gcc/DATESTAMP) ++TOOLS_TARGET_PAIRS := @TOOLS_TARGET_PAIRS@ ++LN_S := @LN_S@ ++ ++ifneq (@build@,@host@) ++ CFLAGS += -b @host@ ++endif ++ ++.PHONY: libgnatprj install ++libgnatprj: libgnatprj.so.$(LIB_VERSION) libgnatprj.a ++ ++# Here we list one file per Ada unit: the body file if the unit has a ++# body, the spec file otherwise. ++PRJ_SOURCES := ali.adb ali-util.adb butil.adb binderr.adb errout.adb \ ++erroutc.adb errutil.adb err_vars.ads fname-uf.adb fmap.adb impunit.adb \ ++lib-util.adb makeutl.adb mlib.adb mlib-fil.adb mlib-tgt.adb \ ++mlib-tgt-specific.adb mlib-utl.adb osint.adb osint-c.adb prj.adb prj-attr.adb \ ++prj-attr-pm.adb prj-com.ads prj-conf.adb prj-dect.adb prj-env.adb prj-err.adb \ ++prj-ext.adb prj-makr.adb prj-nmsc.adb prj-pars.adb prj-part.adb prj-pp.adb \ ++prj-proc.adb prj-strt.adb prj-tree.adb prj-util.adb restrict.adb rident.ads \ ++scng.adb sfn_scan.adb sinfo-cn.adb sinput-c.adb sinput-p.adb style.adb \ ++styleg.adb stylesw.adb switch.adb switch-m.adb targparm.adb tempdir.adb ++ ++# Source files generated in build/gcc/ada, not src/gcc/ada. ++GENERATED_SOURCES := sdefault.adb ++ ++SOURCES := $(PRJ_SOURCES) $(GENERATED_SOURCES) ++ ++OBJECTS := $(patsubst %.ads,%.o,$(SOURCES:.adb=.o)) ++ ++# Add some object files compiled from C sources. prefix.o requires ++# some objects from libiberty and from gcc. ++OBJECTS += common-targhooks.o errors.o hooks.o link.o prefix.o targetm.o ++ ++# These object files have already been built, both PIC and non-PIC. ++# prefix.o depends on them. ++LIBIBERTY_OBJECTS := concat.o filename_cmp.o safe-ctype.o xexit.o xmalloc.o xstrdup.o ++ ++vpath %.c @srcdir@ @srcdir@/../gcc @srcdir@/../gcc/common @srcdir@/../gcc/ada ++ ++libgnatprj.so.$(LIB_VERSION): $(addprefix obj-shared/,$(OBJECTS)) ++ : # Make libgnatprj.so ++ $(GCC) -o $@ -shared -fPIC -Wl,--soname,$@ -Wl,--no-allow-shlib-undefined \ ++ $^ $(addprefix ../libiberty/pic/,$(LIBIBERTY_OBJECTS)) \ ++ -L../gcc/ada/rts -lgnat-$(LIB_VERSION) \ ++ -L../libgnatvsn -lgnatvsn ++ $(LN_S) -f libgnatprj.so.$(LIB_VERSION) libgnatprj.so ++ chmod a=r obj-shared/*.ali ++# Make the .ali files, but not the .o files, visible to the gnat tools. ++ cp -lp obj-shared/*.ali . ++ ++$(addprefix obj-shared/,$(OBJECTS)): | stamp-libgnatprj-sources obj-shared ++ ++obj-shared/%.o: %.adb ++ $(GCC) -c -fPIC $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $(LIBGNATVSN) $< -o $@ ++ ++obj-shared/%.o: %.ads ++ $(GCC) -c -fPIC $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $(LIBGNATVSN) $< -o $@ ++ ++obj-shared/%.o: %.c ++ $(GPP) -c -fPIC $(CFLAGS) -DHAVE_CONFIG_H -pedantic \ ++ -I@srcdir@/../gcc -I@srcdir@/../include -I@srcdir@/../libcpp/include -I../gcc \ ++ $< -o $@ ++ ++obj-shared/prefix.o: @srcdir@/../gcc/prefix.c ++ $(GPP) -c -fPIC $(CFLAGS) -DPREFIX=\"@prefix@\" -DBASEVER=\"$(BASEVER)\" \ ++ -I@srcdir@/../gcc -I@srcdir@/../include -I../gcc -I@srcdir@/../libcpp/include \ ++ $< -o $@ ++ ++obj-shared: ++ -mkdir $@ ++ ++libgnatprj.a: $(addprefix obj-static/,$(OBJECTS)) ++ : # Make libgnatprj.a ++ ar rc $@ $^ $(addprefix ../libiberty/,$(LIBIBERTY_OBJECTS)) ++ ranlib $@ ++ ++$(addprefix obj-static/,$(OBJECTS)): | stamp-libgnatprj-sources obj-static ++ ++obj-static/%.o: %.adb ++ $(GCC) -c $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $(LIBGNATVSN) $< -o $@ ++ ++obj-static/%.o: %.ads ++ $(GCC) -c $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $(LIBGNATVSN) $< -o $@ ++ ++obj-static/%.o: %.c ++ $(GPP) -c $(CFLAGS) -DHAVE_CONFIG_H -pedantic \ ++ -I@srcdir@/../gcc -I@srcdir@/../include -I@srcdir@/../libcpp/include -I../gcc \ ++ $< -o $@ ++ ++obj-static/prefix.o: @srcdir@/../gcc/prefix.c ++ $(GPP) -c $(CFLAGS) -DPREFIX=\"@prefix@\" -DBASEVER=\"$(BASEVER)\" \ ++ -I@srcdir@/../gcc -I@srcdir@/../include -I../gcc -I@srcdir@/../libcpp/include \ ++ $< -o $@ ++ ++obj-static: ++ -mkdir $@ ++ ++$(SOURCES): stamp-libgnatprj-sources ++ ++stamp-libgnatprj-sources: ++ for file in $(PRJ_SOURCES); do \ ++ ads=$$(echo $$file | sed 's/\.adb/.ads/'); \ ++ if [ -f @srcdir@/../gcc/ada/$$file -a ! -L $$file ] ; then $(LN_S) @srcdir@/../gcc/ada/$$file .; fi; \ ++ if [ -f @srcdir@/../gcc/ada/$$ads -a ! -L $$ads ] ; then $(LN_S) @srcdir@/../gcc/ada/$$ads .; fi; \ ++ done ++ for file in $(GENERATED_SOURCES); do \ ++ ads=$$(echo $$file | sed 's/\.adb/.ads/'); \ ++ if [ -f ../gcc/ada/$$file -a ! -L $$file ] ; then $(LN_S) ../gcc/ada/$$file .; fi; \ ++ if [ -f ../gcc/ada/$$ads -a ! -L $$ads ] ; then $(LN_S) ../gcc/ada/$$ads .; \ ++ else \ ++ if [ -f @srcdir@/../gcc/ada/$$ads -a ! -L $$ads ] ; then $(LN_S) @srcdir@/../gcc/ada/$$ads .; fi; \ ++ fi; \ ++ done ++ $(foreach PAIR,$(TOOLS_TARGET_PAIRS), \ ++ rm -f $(word 1,$(subst <, ,$(PAIR)));\ ++ $(LN_S) @srcdir@/../gcc/ada/$(word 2,$(subst <, ,$(PAIR))) \ ++ $(word 1,$(subst <, ,$(PAIR)));) ++ touch $@ ++ ++# Generate a list of source files (.ads and .adb) to install. Almost ++# all of them are in src/gcc/ada, but some are generated during build ++# and are in build/gcc/ada. ++BODIES := $(filter %.adb,$(PRJ_SOURCES)) ++SPECS := $(filter %.ads,$(PRJ_SOURCES)) $(patsubst %.adb,%.ads,$(BODIES) $(GENERATED_SOURCES)) ++SOURCES_TO_INSTALL := \ ++$(addprefix @srcdir@/../gcc/ada/,$(SPECS) $(BODIES)) \ ++$(addprefix ../gcc/ada/,$(GENERATED_SOURCES)) ++ ++libdir = @libdir@ ++ ++install: libgnatprj ++ $(INSTALL_DATA) libgnatprj.a $(DESTDIR)$(libdir) ++ $(INSTALL_DATA) libgnatprj.so.$(LIB_VERSION) $(DESTDIR)$(libdir) ++ cd $(DESTDIR)$(libdir); ln -sf libgnatprj.so.$(LIB_VERSION) libgnatprj.so ++ mkdir -p $(DESTDIR)$(prefix)/share/ada/adainclude/gnatprj ++ $(INSTALL_DATA) $(SOURCES_TO_INSTALL) \ ++ $(DESTDIR)$(prefix)/share/ada/adainclude/gnatprj ++ mkdir -p $(DESTDIR)$(prefix)/lib/ada/adalib/gnatprj ++ $(INSTALL) -m 0444 obj-shared/*.ali \ ++ $(DESTDIR)$(prefix)/lib/ada/adalib/gnatprj ++ chmod a=r $(DESTDIR)$(prefix)/lib/ada/adalib/gnatprj/*.ali ++ ++.PHONY: clean ++clean: ++ rm -rf *.ali obj-static obj-shared libgnatprj* *.adb *.ads stamp* +Index: b/src/libgnatprj/targetm.c +=================================================================== +--- /dev/null ++++ b/src/libgnatprj/targetm.c +@@ -0,0 +1,7 @@ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "common/common-target.h" ++#include "common/common-target-def.h" ++ ++struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER; +Index: b/src/Makefile.def +=================================================================== +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -123,6 +123,13 @@ + missing= TAGS; + missing= install-info; + missing= installcheck; }; ++host_modules= { module= libgnatprj; no_check=true; ++ missing= info; ++ missing= dvi; ++ missing= html; ++ missing= TAGS; ++ missing= install-info; ++ missing= installcheck; }; + host_modules= { module= gnattools; no_check=true; + missing= info; + missing= dvi; +@@ -182,6 +189,13 @@ + missing= TAGS; + missing= install-info; + missing= installcheck; }; ++target_modules = { module= libgnatprj; no_check=true; ++ missing= info; ++ missing= dvi; ++ missing= html; ++ missing= TAGS; ++ missing= install-info; ++ missing= installcheck; }; + target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; }; + target_modules = { module= libitm; lib_path=.libs; }; + target_modules = { module= libatomic; lib_path=.libs; }; +@@ -370,8 +384,11 @@ + + dependencies = { module=all-gnattools; on=all-libada; }; + dependencies = { module=all-gnattools; on=all-libgnatvsn; }; ++dependencies = { module=all-gnattools; on=all-libgnatprj; }; + dependencies = { module=all-gnattools; on=all-target-libstdc++-v3; }; + dependencies = { module=all-libgnatvsn; on=all-libada; }; ++dependencies = { module=all-libgnatprj; on=all-libada; }; ++dependencies = { module=all-libgnatprj; on=all-libgnatvsn; }; + + dependencies = { module=all-lto-plugin; on=all-libiberty; }; + +Index: b/src/Makefile.in +=================================================================== +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -926,6 +926,7 @@ + maybe-configure-utils \ + maybe-configure-libada \ + maybe-configure-libgnatvsn \ ++ maybe-configure-libgnatprj \ + maybe-configure-gnattools \ + maybe-configure-lto-plugin + .PHONY: configure-target +@@ -952,6 +953,7 @@ + maybe-configure-target-rda \ + maybe-configure-target-libada \ + maybe-configure-target-libgnatvsn \ ++ maybe-configure-target-libgnatprj \ + maybe-configure-target-libgomp \ + maybe-configure-target-libitm \ + maybe-configure-target-libatomic +@@ -1076,6 +1078,7 @@ + all-host: maybe-all-utils + all-host: maybe-all-libada + all-host: maybe-all-libgnatvsn ++all-host: maybe-all-libgnatprj + all-host: maybe-all-gnattools + @if lto-plugin-no-bootstrap + all-host: maybe-all-lto-plugin +@@ -1113,6 +1116,7 @@ + all-target: maybe-all-target-rda + all-target: maybe-all-target-libada + all-target: maybe-all-target-libgnatvsn ++all-target: maybe-all-target-libgnatprj + @if target-libgomp-no-bootstrap + all-target: maybe-all-target-libgomp + @endif target-libgomp-no-bootstrap +@@ -1179,6 +1183,7 @@ + info-host: maybe-info-utils + info-host: maybe-info-libada + info-host: maybe-info-libgnatvsn ++info-host: maybe-info-libgnatprj + info-host: maybe-info-gnattools + info-host: maybe-info-lto-plugin + +@@ -1206,6 +1211,7 @@ + info-target: maybe-info-target-rda + info-target: maybe-info-target-libada + info-target: maybe-info-target-libgnatvsn ++info-target: maybe-info-target-libgnatprj + info-target: maybe-info-target-libgomp + info-target: maybe-info-target-libitm + info-target: maybe-info-target-libatomic +@@ -1265,6 +1271,7 @@ + dvi-host: maybe-dvi-utils + dvi-host: maybe-dvi-libada + dvi-host: maybe-dvi-libgnatvsn ++dvi-host: maybe-dvi-libgnatprj + dvi-host: maybe-dvi-gnattools + dvi-host: maybe-dvi-lto-plugin + +@@ -1292,6 +1299,7 @@ + dvi-target: maybe-dvi-target-rda + dvi-target: maybe-dvi-target-libada + dvi-target: maybe-dvi-target-libgnatvsn ++dvi-target: maybe-dvi-target-libgnatprj + dvi-target: maybe-dvi-target-libgomp + dvi-target: maybe-dvi-target-libitm + dvi-target: maybe-dvi-target-libatomic +@@ -1351,6 +1359,7 @@ + pdf-host: maybe-pdf-utils + pdf-host: maybe-pdf-libada + pdf-host: maybe-pdf-libgnatvsn ++pdf-host: maybe-pdf-libgnatprj + pdf-host: maybe-pdf-gnattools + pdf-host: maybe-pdf-lto-plugin + +@@ -1378,6 +1387,7 @@ + pdf-target: maybe-pdf-target-rda + pdf-target: maybe-pdf-target-libada + pdf-target: maybe-pdf-target-libgnatvsn ++pdf-target: maybe-pdf-target-libgnatprj + pdf-target: maybe-pdf-target-libgomp + pdf-target: maybe-pdf-target-libitm + pdf-target: maybe-pdf-target-libatomic +@@ -1437,6 +1447,7 @@ + html-host: maybe-html-utils + html-host: maybe-html-libada + html-host: maybe-html-libgnatvsn ++html-host: maybe-html-libgnatprj + html-host: maybe-html-gnattools + html-host: maybe-html-lto-plugin + +@@ -1464,6 +1475,7 @@ + html-target: maybe-html-target-rda + html-target: maybe-html-target-libada + html-target: maybe-html-target-libgnatvsn ++html-target: maybe-html-target-libgnatprj + html-target: maybe-html-target-libgomp + html-target: maybe-html-target-libitm + html-target: maybe-html-target-libatomic +@@ -1523,6 +1535,7 @@ + TAGS-host: maybe-TAGS-utils + TAGS-host: maybe-TAGS-libada + TAGS-host: maybe-TAGS-libgnatvsn ++TAGS-host: maybe-TAGS-libgnatprj + TAGS-host: maybe-TAGS-gnattools + TAGS-host: maybe-TAGS-lto-plugin + +@@ -1550,6 +1563,7 @@ + TAGS-target: maybe-TAGS-target-rda + TAGS-target: maybe-TAGS-target-libada + TAGS-target: maybe-TAGS-target-libgnatvsn ++TAGS-target: maybe-TAGS-target-libgnatprj + TAGS-target: maybe-TAGS-target-libgomp + TAGS-target: maybe-TAGS-target-libitm + TAGS-target: maybe-TAGS-target-libatomic +@@ -1609,6 +1623,7 @@ + install-info-host: maybe-install-info-utils + install-info-host: maybe-install-info-libada + install-info-host: maybe-install-info-libgnatvsn ++install-info-host: maybe-install-info-libgnatprj + install-info-host: maybe-install-info-gnattools + install-info-host: maybe-install-info-lto-plugin + +@@ -1636,6 +1651,7 @@ + install-info-target: maybe-install-info-target-rda + install-info-target: maybe-install-info-target-libada + install-info-target: maybe-install-info-target-libgnatvsn ++install-info-target: maybe-install-info-target-libgnatprj + install-info-target: maybe-install-info-target-libgomp + install-info-target: maybe-install-info-target-libitm + install-info-target: maybe-install-info-target-libatomic +@@ -1695,6 +1711,7 @@ + install-pdf-host: maybe-install-pdf-utils + install-pdf-host: maybe-install-pdf-libada + install-pdf-host: maybe-install-pdf-libgnatvsn ++install-pdf-host: maybe-install-pdf-libgnatprj + install-pdf-host: maybe-install-pdf-gnattools + install-pdf-host: maybe-install-pdf-lto-plugin + +@@ -1722,6 +1739,7 @@ + install-pdf-target: maybe-install-pdf-target-rda + install-pdf-target: maybe-install-pdf-target-libada + install-pdf-target: maybe-install-pdf-target-libgnatvsn ++install-pdf-target: maybe-install-pdf-target-libgnatprj + install-pdf-target: maybe-install-pdf-target-libgomp + install-pdf-target: maybe-install-pdf-target-libitm + install-pdf-target: maybe-install-pdf-target-libatomic +@@ -1781,6 +1799,7 @@ + install-html-host: maybe-install-html-utils + install-html-host: maybe-install-html-libada + install-html-host: maybe-install-html-libgnatvsn ++install-html-host: maybe-install-html-libgnatprj + install-html-host: maybe-install-html-gnattools + install-html-host: maybe-install-html-lto-plugin + +@@ -1808,6 +1827,7 @@ + install-html-target: maybe-install-html-target-rda + install-html-target: maybe-install-html-target-libada + install-html-target: maybe-install-html-target-libgnatvsn ++install-html-target: maybe-install-html-target-libgnatprj + install-html-target: maybe-install-html-target-libgomp + install-html-target: maybe-install-html-target-libitm + install-html-target: maybe-install-html-target-libatomic +@@ -1867,6 +1887,7 @@ + installcheck-host: maybe-installcheck-utils + installcheck-host: maybe-installcheck-libada + installcheck-host: maybe-installcheck-libgnatvsn ++installcheck-host: maybe-installcheck-libgnatprj + installcheck-host: maybe-installcheck-gnattools + installcheck-host: maybe-installcheck-lto-plugin + +@@ -1894,6 +1915,7 @@ + installcheck-target: maybe-installcheck-target-rda + installcheck-target: maybe-installcheck-target-libada + installcheck-target: maybe-installcheck-target-libgnatvsn ++installcheck-target: maybe-installcheck-target-libgnatprj + installcheck-target: maybe-installcheck-target-libgomp + installcheck-target: maybe-installcheck-target-libitm + installcheck-target: maybe-installcheck-target-libatomic +@@ -1953,6 +1975,7 @@ + mostlyclean-host: maybe-mostlyclean-utils + mostlyclean-host: maybe-mostlyclean-libada + mostlyclean-host: maybe-mostlyclean-libgnatvsn ++mostlyclean-host: maybe-mostlyclean-libgnatprj + mostlyclean-host: maybe-mostlyclean-gnattools + mostlyclean-host: maybe-mostlyclean-lto-plugin + +@@ -1980,6 +2003,7 @@ + mostlyclean-target: maybe-mostlyclean-target-rda + mostlyclean-target: maybe-mostlyclean-target-libada + mostlyclean-target: maybe-mostlyclean-target-libgnatvsn ++mostlyclean-target: maybe-mostlyclean-target-libgnatprj + mostlyclean-target: maybe-mostlyclean-target-libgomp + mostlyclean-target: maybe-mostlyclean-target-libitm + mostlyclean-target: maybe-mostlyclean-target-libatomic +@@ -2039,6 +2063,7 @@ + clean-host: maybe-clean-utils + clean-host: maybe-clean-libada + clean-host: maybe-clean-libgnatvsn ++clean-host: maybe-clean-libgnatprj + clean-host: maybe-clean-gnattools + clean-host: maybe-clean-lto-plugin + +@@ -2066,6 +2091,7 @@ + clean-target: maybe-clean-target-rda + clean-target: maybe-clean-target-libada + clean-target: maybe-clean-target-libgnatvsn ++clean-target: maybe-clean-target-libgnatprj + clean-target: maybe-clean-target-libgomp + clean-target: maybe-clean-target-libitm + clean-target: maybe-clean-target-libatomic +@@ -2125,6 +2151,7 @@ + distclean-host: maybe-distclean-utils + distclean-host: maybe-distclean-libada + distclean-host: maybe-distclean-libgnatvsn ++distclean-host: maybe-distclean-libgnatprj + distclean-host: maybe-distclean-gnattools + distclean-host: maybe-distclean-lto-plugin + +@@ -2152,6 +2179,7 @@ + distclean-target: maybe-distclean-target-rda + distclean-target: maybe-distclean-target-libada + distclean-target: maybe-distclean-target-libgnatvsn ++distclean-target: maybe-distclean-target-libgnatprj + distclean-target: maybe-distclean-target-libgomp + distclean-target: maybe-distclean-target-libitm + distclean-target: maybe-distclean-target-libatomic +@@ -2211,6 +2239,7 @@ + maintainer-clean-host: maybe-maintainer-clean-utils + maintainer-clean-host: maybe-maintainer-clean-libada + maintainer-clean-host: maybe-maintainer-clean-libgnatvsn ++maintainer-clean-host: maybe-maintainer-clean-libgnatprj + maintainer-clean-host: maybe-maintainer-clean-gnattools + maintainer-clean-host: maybe-maintainer-clean-lto-plugin + +@@ -2238,6 +2267,7 @@ + maintainer-clean-target: maybe-maintainer-clean-target-rda + maintainer-clean-target: maybe-maintainer-clean-target-libada + maintainer-clean-target: maybe-maintainer-clean-target-libgnatvsn ++maintainer-clean-target: maybe-maintainer-clean-target-libgnatprj + maintainer-clean-target: maybe-maintainer-clean-target-libgomp + maintainer-clean-target: maybe-maintainer-clean-target-libitm + maintainer-clean-target: maybe-maintainer-clean-target-libatomic +@@ -2352,6 +2382,7 @@ + maybe-check-utils \ + maybe-check-libada \ + maybe-check-libgnatvsn \ ++ maybe-check-libgnatprj \ + maybe-check-gnattools \ + maybe-check-lto-plugin + +@@ -2379,6 +2410,7 @@ + maybe-check-target-rda \ + maybe-check-target-libada \ + maybe-check-target-libgnatvsn \ ++ maybe-check-target-libgnatprj \ + maybe-check-target-libgomp \ + maybe-check-target-libitm \ + maybe-check-target-libatomic +@@ -2464,6 +2496,7 @@ + maybe-install-utils \ + maybe-install-libada \ + maybe-install-libgnatvsn \ ++ maybe-install-libgnatprj \ + maybe-install-gnattools \ + maybe-install-lto-plugin + +@@ -2513,6 +2546,7 @@ + maybe-install-utils \ + maybe-install-libada \ + maybe-install-libgnatvsn \ ++ maybe-install-libgnatprj \ + maybe-install-gnattools \ + maybe-install-lto-plugin + +@@ -2540,6 +2574,7 @@ + maybe-install-target-rda \ + maybe-install-target-libada \ + maybe-install-target-libgnatvsn \ ++ maybe-install-target-libgnatprj \ + maybe-install-target-libgomp \ + maybe-install-target-libitm \ + maybe-install-target-libatomic +@@ -2619,6 +2654,7 @@ + maybe-install-strip-utils \ + maybe-install-strip-libada \ + maybe-install-strip-libgnatvsn \ ++ maybe-install-strip-libgnatprj \ + maybe-install-strip-gnattools \ + maybe-install-strip-lto-plugin + +@@ -2646,6 +2682,7 @@ + maybe-install-strip-target-rda \ + maybe-install-strip-target-libada \ + maybe-install-strip-target-libgnatvsn \ ++ maybe-install-strip-target-libgnatprj \ + maybe-install-strip-target-libgomp \ + maybe-install-strip-target-libitm \ + maybe-install-strip-target-libatomic +@@ -30601,6 +30638,343 @@ + + + ++.PHONY: configure-libgnatprj maybe-configure-libgnatprj ++maybe-configure-libgnatprj: ++@if gcc-bootstrap ++configure-libgnatprj: stage_current ++@endif gcc-bootstrap ++@if libgnatprj ++maybe-configure-libgnatprj: configure-libgnatprj ++configure-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ test ! -f $(HOST_SUBDIR)/libgnatprj/Makefile || exit 0; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libgnatprj ; \ ++ $(HOST_EXPORTS) \ ++ echo Configuring in $(HOST_SUBDIR)/libgnatprj; \ ++ cd "$(HOST_SUBDIR)/libgnatprj" || exit 1; \ ++ case $(srcdir) in \ ++ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ ++ *) topdir=`echo $(HOST_SUBDIR)/libgnatprj/ | \ ++ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ ++ esac; \ ++ srcdiroption="--srcdir=$${topdir}/libgnatprj"; \ ++ libsrcdir="$$s/libgnatprj"; \ ++ $(SHELL) $${libsrcdir}/configure \ ++ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ ++ --target=${target_alias} $${srcdiroption} \ ++ || exit 1 ++@endif libgnatprj ++ ++ ++ ++ ++ ++.PHONY: all-libgnatprj maybe-all-libgnatprj ++maybe-all-libgnatprj: ++@if gcc-bootstrap ++all-libgnatprj: stage_current ++@endif gcc-bootstrap ++@if libgnatprj ++TARGET-libgnatprj=all ++maybe-all-libgnatprj: all-libgnatprj ++all-libgnatprj: configure-libgnatprj ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(STAGE1_FLAGS_TO_PASS) \ ++ $(TARGET-libgnatprj)) ++@endif libgnatprj ++ ++ ++ ++ ++.PHONY: check-libgnatprj maybe-check-libgnatprj ++maybe-check-libgnatprj: ++@if libgnatprj ++maybe-check-libgnatprj: check-libgnatprj ++ ++check-libgnatprj: ++ ++@endif libgnatprj ++ ++.PHONY: install-libgnatprj maybe-install-libgnatprj ++maybe-install-libgnatprj: ++@if libgnatprj ++maybe-install-libgnatprj: install-libgnatprj ++ ++install-libgnatprj: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(FLAGS_TO_PASS) install) ++ ++@endif libgnatprj ++ ++.PHONY: install-strip-libgnatprj maybe-install-strip-libgnatprj ++maybe-install-strip-libgnatprj: ++@if libgnatprj ++maybe-install-strip-libgnatprj: install-strip-libgnatprj ++ ++install-strip-libgnatprj: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(FLAGS_TO_PASS) install-strip) ++ ++@endif libgnatprj ++ ++# Other targets (info, dvi, pdf, etc.) ++ ++.PHONY: maybe-info-libgnatprj info-libgnatprj ++maybe-info-libgnatprj: ++@if libgnatprj ++maybe-info-libgnatprj: info-libgnatprj ++ ++# libgnatprj doesn't support info. ++info-libgnatprj: ++ ++@endif libgnatprj ++ ++.PHONY: maybe-dvi-libgnatprj dvi-libgnatprj ++maybe-dvi-libgnatprj: ++@if libgnatprj ++maybe-dvi-libgnatprj: dvi-libgnatprj ++ ++# libgnatprj doesn't support dvi. ++dvi-libgnatprj: ++ ++@endif libgnatprj ++ ++.PHONY: maybe-pdf-libgnatprj pdf-libgnatprj ++maybe-pdf-libgnatprj: ++@if libgnatprj ++maybe-pdf-libgnatprj: pdf-libgnatprj ++ ++pdf-libgnatprj: \ ++ configure-libgnatprj ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatprj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing pdf in libgnatprj" ; \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ pdf) \ ++ || exit 1 ++ ++@endif libgnatprj ++ ++.PHONY: maybe-html-libgnatprj html-libgnatprj ++maybe-html-libgnatprj: ++@if libgnatprj ++maybe-html-libgnatprj: html-libgnatprj ++ ++# libgnatprj doesn't support html. ++html-libgnatprj: ++ ++@endif libgnatprj ++ ++.PHONY: maybe-TAGS-libgnatprj TAGS-libgnatprj ++maybe-TAGS-libgnatprj: ++@if libgnatprj ++maybe-TAGS-libgnatprj: TAGS-libgnatprj ++ ++# libgnatprj doesn't support TAGS. ++TAGS-libgnatprj: ++ ++@endif libgnatprj ++ ++.PHONY: maybe-install-info-libgnatprj install-info-libgnatprj ++maybe-install-info-libgnatprj: ++@if libgnatprj ++maybe-install-info-libgnatprj: install-info-libgnatprj ++ ++# libgnatprj doesn't support install-info. ++install-info-libgnatprj: ++ ++@endif libgnatprj ++ ++.PHONY: maybe-install-pdf-libgnatprj install-pdf-libgnatprj ++maybe-install-pdf-libgnatprj: ++@if libgnatprj ++maybe-install-pdf-libgnatprj: install-pdf-libgnatprj ++ ++install-pdf-libgnatprj: \ ++ configure-libgnatprj \ ++ pdf-libgnatprj ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatprj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing install-pdf in libgnatprj" ; \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-pdf) \ ++ || exit 1 ++ ++@endif libgnatprj ++ ++.PHONY: maybe-install-html-libgnatprj install-html-libgnatprj ++maybe-install-html-libgnatprj: ++@if libgnatprj ++maybe-install-html-libgnatprj: install-html-libgnatprj ++ ++install-html-libgnatprj: \ ++ configure-libgnatprj \ ++ html-libgnatprj ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatprj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing install-html in libgnatprj" ; \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-html) \ ++ || exit 1 ++ ++@endif libgnatprj ++ ++.PHONY: maybe-installcheck-libgnatprj installcheck-libgnatprj ++maybe-installcheck-libgnatprj: ++@if libgnatprj ++maybe-installcheck-libgnatprj: installcheck-libgnatprj ++ ++# libgnatprj doesn't support installcheck. ++installcheck-libgnatprj: ++ ++@endif libgnatprj ++ ++.PHONY: maybe-mostlyclean-libgnatprj mostlyclean-libgnatprj ++maybe-mostlyclean-libgnatprj: ++@if libgnatprj ++maybe-mostlyclean-libgnatprj: mostlyclean-libgnatprj ++ ++mostlyclean-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatprj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing mostlyclean in libgnatprj" ; \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ mostlyclean) \ ++ || exit 1 ++ ++@endif libgnatprj ++ ++.PHONY: maybe-clean-libgnatprj clean-libgnatprj ++maybe-clean-libgnatprj: ++@if libgnatprj ++maybe-clean-libgnatprj: clean-libgnatprj ++ ++clean-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatprj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing clean in libgnatprj" ; \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ clean) \ ++ || exit 1 ++ ++@endif libgnatprj ++ ++.PHONY: maybe-distclean-libgnatprj distclean-libgnatprj ++maybe-distclean-libgnatprj: ++@if libgnatprj ++maybe-distclean-libgnatprj: distclean-libgnatprj ++ ++distclean-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatprj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing distclean in libgnatprj" ; \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ distclean) \ ++ || exit 1 ++ ++@endif libgnatprj ++ ++.PHONY: maybe-maintainer-clean-libgnatprj maintainer-clean-libgnatprj ++maybe-maintainer-clean-libgnatprj: ++@if libgnatprj ++maybe-maintainer-clean-libgnatprj: maintainer-clean-libgnatprj ++ ++maintainer-clean-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatprj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing maintainer-clean in libgnatprj" ; \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ maintainer-clean) \ ++ || exit 1 ++ ++@endif libgnatprj ++ ++ ++ + .PHONY: configure-gnattools maybe-configure-gnattools + maybe-configure-gnattools: + @if gcc-bootstrap +@@ -43646,6 +44020,361 @@ + + + ++.PHONY: configure-target-libgnatprj maybe-configure-target-libgnatprj ++maybe-configure-target-libgnatprj: ++@if gcc-bootstrap ++configure-target-libgnatprj: stage_current ++@endif gcc-bootstrap ++@if target-libgnatprj ++maybe-configure-target-libgnatprj: configure-target-libgnatprj ++configure-target-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ echo "Checking multilib configuration for libgnatprj..."; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgnatprj ; \ ++ $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgnatprj/multilib.tmp 2> /dev/null ; \ ++ if test -r $(TARGET_SUBDIR)/libgnatprj/multilib.out; then \ ++ if cmp -s $(TARGET_SUBDIR)/libgnatprj/multilib.tmp $(TARGET_SUBDIR)/libgnatprj/multilib.out; then \ ++ rm -f $(TARGET_SUBDIR)/libgnatprj/multilib.tmp; \ ++ else \ ++ rm -f $(TARGET_SUBDIR)/libgnatprj/Makefile; \ ++ mv $(TARGET_SUBDIR)/libgnatprj/multilib.tmp $(TARGET_SUBDIR)/libgnatprj/multilib.out; \ ++ fi; \ ++ else \ ++ mv $(TARGET_SUBDIR)/libgnatprj/multilib.tmp $(TARGET_SUBDIR)/libgnatprj/multilib.out; \ ++ fi; \ ++ test ! -f $(TARGET_SUBDIR)/libgnatprj/Makefile || exit 0; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgnatprj ; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo Configuring in $(TARGET_SUBDIR)/libgnatprj; \ ++ cd "$(TARGET_SUBDIR)/libgnatprj" || exit 1; \ ++ case $(srcdir) in \ ++ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ ++ *) topdir=`echo $(TARGET_SUBDIR)/libgnatprj/ | \ ++ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ ++ esac; \ ++ srcdiroption="--srcdir=$${topdir}/libgnatprj"; \ ++ libsrcdir="$$s/libgnatprj"; \ ++ rm -f no-such-file || : ; \ ++ CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ ++ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ ++ --target=${target_alias} $${srcdiroption} \ ++ || exit 1 ++@endif target-libgnatprj ++ ++ ++ ++ ++ ++.PHONY: all-target-libgnatprj maybe-all-target-libgnatprj ++maybe-all-target-libgnatprj: ++@if gcc-bootstrap ++all-target-libgnatprj: stage_current ++@endif gcc-bootstrap ++@if target-libgnatprj ++TARGET-target-libgnatprj=all ++maybe-all-target-libgnatprj: all-target-libgnatprj ++all-target-libgnatprj: configure-target-libgnatprj ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ ++ $(TARGET-target-libgnatprj)) ++@endif target-libgnatprj ++ ++ ++ ++ ++ ++.PHONY: check-target-libgnatprj maybe-check-target-libgnatprj ++maybe-check-target-libgnatprj: ++@if target-libgnatprj ++maybe-check-target-libgnatprj: check-target-libgnatprj ++ ++# Dummy target for uncheckable module. ++check-target-libgnatprj: ++ ++@endif target-libgnatprj ++ ++.PHONY: install-target-libgnatprj maybe-install-target-libgnatprj ++maybe-install-target-libgnatprj: ++@if target-libgnatprj ++maybe-install-target-libgnatprj: install-target-libgnatprj ++ ++install-target-libgnatprj: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) install) ++ ++@endif target-libgnatprj ++ ++.PHONY: install-strip-target-libgnatprj maybe-install-strip-target-libgnatprj ++maybe-install-strip-target-libgnatprj: ++@if target-libgnatprj ++maybe-install-strip-target-libgnatprj: install-strip-target-libgnatprj ++ ++install-strip-target-libgnatprj: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) ++ ++@endif target-libgnatprj ++ ++# Other targets (info, dvi, pdf, etc.) ++ ++.PHONY: maybe-info-target-libgnatprj info-target-libgnatprj ++maybe-info-target-libgnatprj: ++@if target-libgnatprj ++maybe-info-target-libgnatprj: info-target-libgnatprj ++ ++# libgnatprj doesn't support info. ++info-target-libgnatprj: ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-dvi-target-libgnatprj dvi-target-libgnatprj ++maybe-dvi-target-libgnatprj: ++@if target-libgnatprj ++maybe-dvi-target-libgnatprj: dvi-target-libgnatprj ++ ++# libgnatprj doesn't support dvi. ++dvi-target-libgnatprj: ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-pdf-target-libgnatprj pdf-target-libgnatprj ++maybe-pdf-target-libgnatprj: ++@if target-libgnatprj ++maybe-pdf-target-libgnatprj: pdf-target-libgnatprj ++ ++pdf-target-libgnatprj: \ ++ configure-target-libgnatprj ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing pdf in $(TARGET_SUBDIR)/libgnatprj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ pdf) \ ++ || exit 1 ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-html-target-libgnatprj html-target-libgnatprj ++maybe-html-target-libgnatprj: ++@if target-libgnatprj ++maybe-html-target-libgnatprj: html-target-libgnatprj ++ ++# libgnatprj doesn't support html. ++html-target-libgnatprj: ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-TAGS-target-libgnatprj TAGS-target-libgnatprj ++maybe-TAGS-target-libgnatprj: ++@if target-libgnatprj ++maybe-TAGS-target-libgnatprj: TAGS-target-libgnatprj ++ ++# libgnatprj doesn't support TAGS. ++TAGS-target-libgnatprj: ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-install-info-target-libgnatprj install-info-target-libgnatprj ++maybe-install-info-target-libgnatprj: ++@if target-libgnatprj ++maybe-install-info-target-libgnatprj: install-info-target-libgnatprj ++ ++# libgnatprj doesn't support install-info. ++install-info-target-libgnatprj: ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-install-pdf-target-libgnatprj install-pdf-target-libgnatprj ++maybe-install-pdf-target-libgnatprj: ++@if target-libgnatprj ++maybe-install-pdf-target-libgnatprj: install-pdf-target-libgnatprj ++ ++install-pdf-target-libgnatprj: \ ++ configure-target-libgnatprj \ ++ pdf-target-libgnatprj ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-pdf in $(TARGET_SUBDIR)/libgnatprj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-pdf) \ ++ || exit 1 ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-install-html-target-libgnatprj install-html-target-libgnatprj ++maybe-install-html-target-libgnatprj: ++@if target-libgnatprj ++maybe-install-html-target-libgnatprj: install-html-target-libgnatprj ++ ++install-html-target-libgnatprj: \ ++ configure-target-libgnatprj \ ++ html-target-libgnatprj ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-html in $(TARGET_SUBDIR)/libgnatprj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-html) \ ++ || exit 1 ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-installcheck-target-libgnatprj installcheck-target-libgnatprj ++maybe-installcheck-target-libgnatprj: ++@if target-libgnatprj ++maybe-installcheck-target-libgnatprj: installcheck-target-libgnatprj ++ ++# libgnatprj doesn't support installcheck. ++installcheck-target-libgnatprj: ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-mostlyclean-target-libgnatprj mostlyclean-target-libgnatprj ++maybe-mostlyclean-target-libgnatprj: ++@if target-libgnatprj ++maybe-mostlyclean-target-libgnatprj: mostlyclean-target-libgnatprj ++ ++mostlyclean-target-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing mostlyclean in $(TARGET_SUBDIR)/libgnatprj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ mostlyclean) \ ++ || exit 1 ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-clean-target-libgnatprj clean-target-libgnatprj ++maybe-clean-target-libgnatprj: ++@if target-libgnatprj ++maybe-clean-target-libgnatprj: clean-target-libgnatprj ++ ++clean-target-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing clean in $(TARGET_SUBDIR)/libgnatprj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ clean) \ ++ || exit 1 ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-distclean-target-libgnatprj distclean-target-libgnatprj ++maybe-distclean-target-libgnatprj: ++@if target-libgnatprj ++maybe-distclean-target-libgnatprj: distclean-target-libgnatprj ++ ++distclean-target-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing distclean in $(TARGET_SUBDIR)/libgnatprj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ distclean) \ ++ || exit 1 ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-maintainer-clean-target-libgnatprj maintainer-clean-target-libgnatprj ++maybe-maintainer-clean-target-libgnatprj: ++@if target-libgnatprj ++maybe-maintainer-clean-target-libgnatprj: maintainer-clean-target-libgnatprj ++ ++maintainer-clean-target-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libgnatprj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ maintainer-clean) \ ++ || exit 1 ++ ++@endif target-libgnatprj ++ ++ ++ ++ ++ + .PHONY: configure-target-libgomp maybe-configure-target-libgomp + maybe-configure-target-libgomp: + @if gcc-bootstrap +@@ -47769,6 +48498,7 @@ + configure-target-rda: stage_last + configure-target-libada: stage_last + configure-target-libgnatvsn: stage_last ++configure-target-libgnatprj: stage_last + configure-stage1-target-libgomp: maybe-all-stage1-gcc + configure-stage2-target-libgomp: maybe-all-stage2-gcc + configure-stage3-target-libgomp: maybe-all-stage3-gcc +@@ -47802,6 +48532,7 @@ + configure-target-rda: maybe-all-gcc + configure-target-libada: maybe-all-gcc + configure-target-libgnatvsn: maybe-all-gcc ++configure-target-libgnatprj: maybe-all-gcc + configure-target-libgomp: maybe-all-gcc + configure-target-libitm: maybe-all-gcc + configure-target-libatomic: maybe-all-gcc +@@ -48110,8 +48841,11 @@ + all-stagefeedback-fixincludes: maybe-all-stagefeedback-libiberty + all-gnattools: maybe-all-libada + all-gnattools: maybe-all-libgnatvsn ++all-gnattools: maybe-all-libgnatprj + all-gnattools: maybe-all-target-libstdc++-v3 + all-libgnatvsn: maybe-all-libada ++all-libgnatprj: maybe-all-libada ++all-libgnatprj: maybe-all-libgnatvsn + all-lto-plugin: maybe-all-libiberty + + all-stage1-lto-plugin: maybe-all-stage1-libiberty +@@ -48675,6 +49409,7 @@ + configure-target-rda: maybe-all-target-libgcc + configure-target-libada: maybe-all-target-libgcc + configure-target-libgnatvsn: maybe-all-target-libgcc ++configure-target-libgnatprj: maybe-all-target-libgcc + configure-target-libgomp: maybe-all-target-libgcc + configure-target-libitm: maybe-all-target-libgcc + configure-target-libatomic: maybe-all-target-libgcc +@@ -48724,6 +49459,8 @@ + + configure-target-libgnatvsn: maybe-all-target-newlib maybe-all-target-libgloss + ++configure-target-libgnatprj: maybe-all-target-newlib maybe-all-target-libgloss ++ + configure-target-libgomp: maybe-all-target-newlib maybe-all-target-libgloss + + configure-target-libitm: maybe-all-target-newlib maybe-all-target-libgloss +Index: b/src/configure.ac +=================================================================== +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -133,7 +133,7 @@ + + # these libraries are used by various programs built for the host environment + # +-host_libs="intl libiberty opcodes bfd readline tcl tk itcl libgui zlib libbacktrace libcpp libdecnumber gmp mpfr mpc isl cloog libelf libiconv libada libgnatvsn" ++host_libs="intl libiberty opcodes bfd readline tcl tk itcl libgui zlib libbacktrace libcpp libdecnumber gmp mpfr mpc isl cloog libelf libiconv libada libgnatvsn libgnatprj" + + # these tools are built for the host environment + # Note, the powerpc-eabi build depends on sim occurring before gdb in order to +@@ -170,6 +170,7 @@ + target-libobjc \ + target-libada \ + target-libgnatvsn \ ++ target-libgnatprj \ + target-libgo" + + # these tools are built using the target libraries, and are intended to +@@ -266,7 +267,7 @@ + + # Some are only suitable for cross toolchains. + # Remove these if host=target. +-cross_only="target-libgloss target-newlib target-opcodes target-libada target-libgnatvsn" ++cross_only="target-libgloss target-newlib target-opcodes target-libada target-libgnatvsn target-libgnatprj" + + case $is_cross_compiler in + no) skipdirs="${skipdirs} ${cross_only}" ;; +@@ -422,7 +423,7 @@ + ENABLE_LIBADA=$enableval, + ENABLE_LIBADA=yes) + if test "${ENABLE_LIBADA}" != "yes" ; then +- noconfigdirs="$noconfigdirs libgnatvsn gnattools" ++ noconfigdirs="$noconfigdirs libgnatvsn libgnatprj gnattools" + fi + + AC_ARG_ENABLE(libssp, +Index: b/src/libgnatprj/configure.ac +=================================================================== +--- /dev/null ++++ b/src/libgnatprj/configure.ac +@@ -0,0 +1,146 @@ ++# Configure script for libada. ++# Copyright 2003, 2004 Free Software Foundation, Inc. ++# ++# This file is free software; you can redistribute it and/or modify it ++# under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++AC_INIT ++AC_PREREQ([2.63]) ++ ++AC_CONFIG_SRCDIR([Makefile.in]) ++ ++# Start of actual configure tests ++ ++AC_PROG_INSTALL ++ ++AC_CANONICAL_BUILD ++AC_CANONICAL_HOST ++AC_CANONICAL_TARGET ++ ++sinclude(../config/acx.m4) ++ACX_NONCANONICAL_TARGET ++ ++# Need to pass this down for now :-P ++AC_PROG_LN_S ++ ++# Determine x_ada_cflags ++case $host in ++ hppa*) x_ada_cflags=-mdisable-indexing ;; ++ *) x_ada_cflags= ;; ++esac ++AC_SUBST([x_ada_cflags]) ++ ++# Determine what to build for 'gnattools' ++if test $build = $target ; then ++ # Note that build=target is almost certainly the wrong test; FIXME ++ default_gnattools_target="gnattools-native" ++else ++ default_gnattools_target="gnattools-cross" ++fi ++AC_SUBST([default_gnattools_target]) ++ ++# Target-specific stuff (defaults) ++TOOLS_TARGET_PAIRS= ++AC_SUBST(TOOLS_TARGET_PAIRS) ++ ++# Per-target case statement ++# ---/---------------------- ++case "${target}" in ++ alpha*-dec-vx*) # Unlike all other Vxworks ++ ;; ++ m68k*-wrs-vx* \ ++ | powerpc*-wrs-vxworks \ ++ | sparc*-wrs-vx* \ ++ | *86-wrs-vxworks \ ++ | xscale*-wrs-vx* \ ++ | xscale*-wrs-coff \ ++ | mips*-wrs-vx*) ++ TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb Makefile +Index: b/src/libgnatvsn/Makefile.in +=================================================================== +--- /dev/null ++++ b/src/libgnatvsn/Makefile.in +@@ -0,0 +1,157 @@ ++# Makefile for libgnatvsn. ++# Copyright (c) 2006 Ludovic Brenta ++# ++# This file is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++# Default target; must be first. ++all: libgnatvsn ++ ++.SUFFIXES: ++ ++CPUS := $(shell getconf _NPROCESSORS_ONLN) ++LIB_VERSION := $(strip $(shell grep ' Library_Version :' \ ++ @srcdir@/../gcc/ada/gnatvsn.ads | \ ++ sed -e 's/.*"\(.*\)".*/\1/')) ++GCC:=../gcc/xgcc -B../gcc/ ++LIBGNAT_JUST_BUILT := -nostdinc -I../gcc/ada/rts ++CFLAGS := -g -O2 -gnatn ++FULLVER := $(shell cat @srcdir@/../gcc/FULL-VER) ++DEVPHASE := $(shell cat @srcdir@/../gcc/DEV-PHASE) ++DATESTAMP := $(shell cat @srcdir@/../gcc/DATESTAMP) ++ ++# For use in version.c - double quoted strings, with appropriate ++# surrounding punctuation and spaces, and with the datestamp and ++# development phase collapsed to the empty string in release mode ++# (i.e. if DEVPHASE_c is empty). The space immediately after the ++# comma in the $(if ...) constructs is significant - do not remove it. ++FULLVER_s := "\"$(FULLVER)\"" ++DEVPHASE_s := "\"$(if $(DEVPHASE), ($(DEVPHASE)))\"" ++DATESTAMP_s := "\"$(if $(DEVPHASE), $(DATESTAMP))\"" ++PKGVERSION_s:= "\"@PKGVERSION@\"" ++BUGURL_s := "\"@REPORT_BUGS_TO@\"" ++ ++ifneq (@build@,@host@) ++ CFLAGS += -b @host@ ++endif ++ ++.PHONY: libgnatvsn install ++libgnatvsn: libgnatvsn.so.$(LIB_VERSION) libgnatvsn.a ++ ++VSN_SOURCES := alloc.ads aspects.adb atree.adb casing.adb csets.adb debug.adb einfo.adb \ ++elists.adb fname.adb gnatvsn.adb hostparm.ads krunch.adb lib.adb namet.adb \ ++nlists.adb opt.adb output.adb repinfo.adb scans.adb sinfo.adb sem_aux.adb \ ++sinput.adb stand.adb stringt.adb table.adb tree_in.adb tree_io.adb types.adb \ ++uintp.adb uname.adb urealp.adb widechar.adb ++ ++VSN_SEPARATES := lib-list.adb lib-sort.adb ++ ++VSN_GENERATED_SOURCES := snames.adb ++ ++OBJECTS=$(patsubst %.ads,%.o,$(VSN_SOURCES:.adb=.o) $(VSN_GENERATED_SOURCES:.adb=.o)) version.o ++ ++vpath %.c @srcdir@/../gcc ++ ++libgnatvsn.so.$(LIB_VERSION): $(addprefix obj-shared/,$(OBJECTS)) ++ : # Make libgnatvsn.so ++ $(GCC) -o $@ -shared -fPIC -Wl,--soname,$@ $^ \ ++ -L../gcc/ada/rts -lgnat-$(LIB_VERSION) ++ ln -s libgnatvsn.so.$(LIB_VERSION) libgnatvsn.so ++ chmod a=r obj-shared/*.ali ++# Make the .ali files, but not the .o files, visible to the gnat tools. ++ cp -lp obj-shared/*.ali . ++ ++$(addprefix obj-shared/,$(OBJECTS)): | stamp-libgnatvsn-sources obj-shared ++ ++obj-shared/%.o: %.adb ++ $(GCC) -c -fPIC $(CFLAGS) $(LIBGNAT_JUST_BUILT) $< -o $@ ++ ++obj-shared/%.o: %.ads ++ $(GCC) -c -fPIC $(CFLAGS) $(LIBGNAT_JUST_BUILT) $< -o $@ ++ ++obj-shared/version.o: version.c ++ $(GCC) -c -fPIC -g -O2 \ ++ -DBASEVER=$(FULLVER_s) \ ++ -DDATESTAMP=$(DATESTAMP_s) \ ++ -DDEVPHASE=$(DEVPHASE_s) \ ++ -DPKGVERSION=$(PKGVERSION_s) \ ++ -DBUGURL=$(BUGURL_s) \ ++ -DREVISION= \ ++ $(realpath $<) -o $@ ++ ++obj-shared: ++ -mkdir $@ ++ ++libgnatvsn.a: $(addprefix obj-static/,$(OBJECTS)) ++ : # Make libgnatvsn.a ++ ar rc $@ $^ ++ ranlib $@ ++ ++$(addprefix obj-static/,$(OBJECTS)): | stamp-libgnatvsn-sources obj-static ++ ++obj-static/%.o: %.adb ++ $(GCC) -c $(CFLAGS) $(LIBGNAT_JUST_BUILT) $< -o $@ ++ ++obj-static/%.o: %.ads ++ $(GCC) -c $(CFLAGS) $(LIBGNAT_JUST_BUILT) $< -o $@ ++ ++obj-static/version.o: version.c ++ $(GCC) -c -g -O2 \ ++ -DBASEVER=$(FULLVER_s) \ ++ -DDATESTAMP=$(DATESTAMP_s) \ ++ -DDEVPHASE=$(DEVPHASE_s) \ ++ -DPKGVERSION=$(PKGVERSION_s) \ ++ -DBUGURL=$(BUGURL_s) \ ++ -DREVISION= \ ++ $< -o $@ ++ ++obj-static: ++ -mkdir $@ ++ ++$(VSN_SOURCES) $(VSN_SEPARATES) $(VSN_GENERATED_SOURCES): stamp-libgnatvsn-sources ++ ++stamp-libgnatvsn-sources: ++ for file in $(VSN_SOURCES) $(VSN_SEPARATES); do \ ++ ads=$$(echo $$file | sed 's/\.adb/.ads/'); \ ++ if [ -f @srcdir@/../gcc/ada/$$file -a ! -L $$file ] ; then ln -s @srcdir@/../gcc/ada/$$file .; fi; \ ++ if [ -f @srcdir@/../gcc/ada/$$ads -a ! -L $$ads ] ; then ln -s @srcdir@/../gcc/ada/$$ads .; fi; \ ++ done ++ for file in $(VSN_GENERATED_SOURCES); do \ ++ ads=$$(echo $$file | sed 's/\.adb/.ads/'); \ ++ if [ -f ../gcc/ada/$$file -a ! -L $$file ] ; then ln -s ../gcc/ada/$$file .; fi; \ ++ if [ -f ../gcc/ada/$$ads -a ! -L $$ads ] ; then ln -s ../gcc/ada/$$ads .; fi; \ ++ done ++ touch $@ ++ ++libdir = @libdir@ ++ ++install: libgnatvsn ++ $(INSTALL_DATA) libgnatvsn.a $(DESTDIR)$(libdir) ++ $(INSTALL_DATA) libgnatvsn.so.$(LIB_VERSION) $(DESTDIR)$(libdir) ++ cd $(DESTDIR)$(libdir); ln -sf libgnatvsn.so.$(LIB_VERSION) libgnatvsn.so ++ mkdir -p $(DESTDIR)$(prefix)/share/ada/adainclude/gnatvsn ++ $(INSTALL_DATA) \ ++ $(addprefix @srcdir@/../gcc/ada/,$(VSN_SOURCES) $(VSN_SEPARATES)) \ ++ $(addprefix @srcdir@/../gcc/ada/,$(patsubst %.adb,%.ads,$(filter %.adb,$(VSN_SOURCES)))) \ ++ $(addprefix ../gcc/ada/,$(VSN_GENERATED_SOURCES)) \ ++ $(addprefix ../gcc/ada/,$(patsubst %.adb,%.ads,$(VSN_GENERATED_SOURCES))) \ ++ $(DESTDIR)$(prefix)/share/ada/adainclude/gnatvsn ++ mkdir -p $(DESTDIR)$(prefix)/lib/ada/adalib/gnatvsn ++ $(INSTALL) -m 0444 obj-shared/*.ali \ ++ $(DESTDIR)$(prefix)/lib/ada/adalib/gnatvsn ++ chmod a=r $(DESTDIR)$(prefix)/lib/ada/adalib/gnatvsn/*.ali ++ ++.PHONY: clean ++clean: ++ rm -rf *.ali obj-static obj-shared libgnatvsn* *.adb *.ads stamp* +Index: b/src/Makefile.def +=================================================================== +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -116,6 +116,13 @@ + missing= TAGS; + missing= install-info; + missing= installcheck; }; ++host_modules= { module= libgnatvsn; no_check=true; ++ missing= info; ++ missing= dvi; ++ missing= html; ++ missing= TAGS; ++ missing= install-info; ++ missing= installcheck; }; + host_modules= { module= gnattools; no_check=true; + missing= info; + missing= dvi; +@@ -168,6 +175,13 @@ + missing= TAGS; + missing= install-info; + missing= installcheck; }; ++target_modules = { module= libgnatvsn; no_check=true; ++ missing= info; ++ missing= dvi; ++ missing= html; ++ missing= TAGS; ++ missing= install-info; ++ missing= installcheck; }; + target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; }; + target_modules = { module= libitm; lib_path=.libs; }; + target_modules = { module= libatomic; lib_path=.libs; }; +@@ -355,7 +369,9 @@ + dependencies = { module=all-fixincludes; on=all-libiberty; }; + + dependencies = { module=all-gnattools; on=all-libada; }; ++dependencies = { module=all-gnattools; on=all-libgnatvsn; }; + dependencies = { module=all-gnattools; on=all-target-libstdc++-v3; }; ++dependencies = { module=all-libgnatvsn; on=all-libada; }; + + dependencies = { module=all-lto-plugin; on=all-libiberty; }; + +Index: b/src/Makefile.in +=================================================================== +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -925,6 +925,7 @@ + maybe-configure-libtermcap \ + maybe-configure-utils \ + maybe-configure-libada \ ++ maybe-configure-libgnatvsn \ + maybe-configure-gnattools \ + maybe-configure-lto-plugin + .PHONY: configure-target +@@ -950,6 +951,7 @@ + maybe-configure-target-boehm-gc \ + maybe-configure-target-rda \ + maybe-configure-target-libada \ ++ maybe-configure-target-libgnatvsn \ + maybe-configure-target-libgomp \ + maybe-configure-target-libitm \ + maybe-configure-target-libatomic +@@ -1073,6 +1075,7 @@ + all-host: maybe-all-libtermcap + all-host: maybe-all-utils + all-host: maybe-all-libada ++all-host: maybe-all-libgnatvsn + all-host: maybe-all-gnattools + @if lto-plugin-no-bootstrap + all-host: maybe-all-lto-plugin +@@ -1109,6 +1112,7 @@ + all-target: maybe-all-target-boehm-gc + all-target: maybe-all-target-rda + all-target: maybe-all-target-libada ++all-target: maybe-all-target-libgnatvsn + @if target-libgomp-no-bootstrap + all-target: maybe-all-target-libgomp + @endif target-libgomp-no-bootstrap +@@ -1174,6 +1178,7 @@ + info-host: maybe-info-libtermcap + info-host: maybe-info-utils + info-host: maybe-info-libada ++info-host: maybe-info-libgnatvsn + info-host: maybe-info-gnattools + info-host: maybe-info-lto-plugin + +@@ -1200,6 +1205,7 @@ + info-target: maybe-info-target-boehm-gc + info-target: maybe-info-target-rda + info-target: maybe-info-target-libada ++info-target: maybe-info-target-libgnatvsn + info-target: maybe-info-target-libgomp + info-target: maybe-info-target-libitm + info-target: maybe-info-target-libatomic +@@ -1258,6 +1264,7 @@ + dvi-host: maybe-dvi-libtermcap + dvi-host: maybe-dvi-utils + dvi-host: maybe-dvi-libada ++dvi-host: maybe-dvi-libgnatvsn + dvi-host: maybe-dvi-gnattools + dvi-host: maybe-dvi-lto-plugin + +@@ -1284,6 +1291,7 @@ + dvi-target: maybe-dvi-target-boehm-gc + dvi-target: maybe-dvi-target-rda + dvi-target: maybe-dvi-target-libada ++dvi-target: maybe-dvi-target-libgnatvsn + dvi-target: maybe-dvi-target-libgomp + dvi-target: maybe-dvi-target-libitm + dvi-target: maybe-dvi-target-libatomic +@@ -1342,6 +1350,7 @@ + pdf-host: maybe-pdf-libtermcap + pdf-host: maybe-pdf-utils + pdf-host: maybe-pdf-libada ++pdf-host: maybe-pdf-libgnatvsn + pdf-host: maybe-pdf-gnattools + pdf-host: maybe-pdf-lto-plugin + +@@ -1368,6 +1377,7 @@ + pdf-target: maybe-pdf-target-boehm-gc + pdf-target: maybe-pdf-target-rda + pdf-target: maybe-pdf-target-libada ++pdf-target: maybe-pdf-target-libgnatvsn + pdf-target: maybe-pdf-target-libgomp + pdf-target: maybe-pdf-target-libitm + pdf-target: maybe-pdf-target-libatomic +@@ -1426,6 +1436,7 @@ + html-host: maybe-html-libtermcap + html-host: maybe-html-utils + html-host: maybe-html-libada ++html-host: maybe-html-libgnatvsn + html-host: maybe-html-gnattools + html-host: maybe-html-lto-plugin + +@@ -1452,6 +1463,7 @@ + html-target: maybe-html-target-boehm-gc + html-target: maybe-html-target-rda + html-target: maybe-html-target-libada ++html-target: maybe-html-target-libgnatvsn + html-target: maybe-html-target-libgomp + html-target: maybe-html-target-libitm + html-target: maybe-html-target-libatomic +@@ -1510,6 +1522,7 @@ + TAGS-host: maybe-TAGS-libtermcap + TAGS-host: maybe-TAGS-utils + TAGS-host: maybe-TAGS-libada ++TAGS-host: maybe-TAGS-libgnatvsn + TAGS-host: maybe-TAGS-gnattools + TAGS-host: maybe-TAGS-lto-plugin + +@@ -1536,6 +1549,7 @@ + TAGS-target: maybe-TAGS-target-boehm-gc + TAGS-target: maybe-TAGS-target-rda + TAGS-target: maybe-TAGS-target-libada ++TAGS-target: maybe-TAGS-target-libgnatvsn + TAGS-target: maybe-TAGS-target-libgomp + TAGS-target: maybe-TAGS-target-libitm + TAGS-target: maybe-TAGS-target-libatomic +@@ -1594,6 +1608,7 @@ + install-info-host: maybe-install-info-libtermcap + install-info-host: maybe-install-info-utils + install-info-host: maybe-install-info-libada ++install-info-host: maybe-install-info-libgnatvsn + install-info-host: maybe-install-info-gnattools + install-info-host: maybe-install-info-lto-plugin + +@@ -1620,6 +1635,7 @@ + install-info-target: maybe-install-info-target-boehm-gc + install-info-target: maybe-install-info-target-rda + install-info-target: maybe-install-info-target-libada ++install-info-target: maybe-install-info-target-libgnatvsn + install-info-target: maybe-install-info-target-libgomp + install-info-target: maybe-install-info-target-libitm + install-info-target: maybe-install-info-target-libatomic +@@ -1678,6 +1694,7 @@ + install-pdf-host: maybe-install-pdf-libtermcap + install-pdf-host: maybe-install-pdf-utils + install-pdf-host: maybe-install-pdf-libada ++install-pdf-host: maybe-install-pdf-libgnatvsn + install-pdf-host: maybe-install-pdf-gnattools + install-pdf-host: maybe-install-pdf-lto-plugin + +@@ -1704,6 +1721,7 @@ + install-pdf-target: maybe-install-pdf-target-boehm-gc + install-pdf-target: maybe-install-pdf-target-rda + install-pdf-target: maybe-install-pdf-target-libada ++install-pdf-target: maybe-install-pdf-target-libgnatvsn + install-pdf-target: maybe-install-pdf-target-libgomp + install-pdf-target: maybe-install-pdf-target-libitm + install-pdf-target: maybe-install-pdf-target-libatomic +@@ -1762,6 +1780,7 @@ + install-html-host: maybe-install-html-libtermcap + install-html-host: maybe-install-html-utils + install-html-host: maybe-install-html-libada ++install-html-host: maybe-install-html-libgnatvsn + install-html-host: maybe-install-html-gnattools + install-html-host: maybe-install-html-lto-plugin + +@@ -1788,6 +1807,7 @@ + install-html-target: maybe-install-html-target-boehm-gc + install-html-target: maybe-install-html-target-rda + install-html-target: maybe-install-html-target-libada ++install-html-target: maybe-install-html-target-libgnatvsn + install-html-target: maybe-install-html-target-libgomp + install-html-target: maybe-install-html-target-libitm + install-html-target: maybe-install-html-target-libatomic +@@ -1846,6 +1866,7 @@ + installcheck-host: maybe-installcheck-libtermcap + installcheck-host: maybe-installcheck-utils + installcheck-host: maybe-installcheck-libada ++installcheck-host: maybe-installcheck-libgnatvsn + installcheck-host: maybe-installcheck-gnattools + installcheck-host: maybe-installcheck-lto-plugin + +@@ -1872,6 +1893,7 @@ + installcheck-target: maybe-installcheck-target-boehm-gc + installcheck-target: maybe-installcheck-target-rda + installcheck-target: maybe-installcheck-target-libada ++installcheck-target: maybe-installcheck-target-libgnatvsn + installcheck-target: maybe-installcheck-target-libgomp + installcheck-target: maybe-installcheck-target-libitm + installcheck-target: maybe-installcheck-target-libatomic +@@ -1930,6 +1952,7 @@ + mostlyclean-host: maybe-mostlyclean-libtermcap + mostlyclean-host: maybe-mostlyclean-utils + mostlyclean-host: maybe-mostlyclean-libada ++mostlyclean-host: maybe-mostlyclean-libgnatvsn + mostlyclean-host: maybe-mostlyclean-gnattools + mostlyclean-host: maybe-mostlyclean-lto-plugin + +@@ -1956,6 +1979,7 @@ + mostlyclean-target: maybe-mostlyclean-target-boehm-gc + mostlyclean-target: maybe-mostlyclean-target-rda + mostlyclean-target: maybe-mostlyclean-target-libada ++mostlyclean-target: maybe-mostlyclean-target-libgnatvsn + mostlyclean-target: maybe-mostlyclean-target-libgomp + mostlyclean-target: maybe-mostlyclean-target-libitm + mostlyclean-target: maybe-mostlyclean-target-libatomic +@@ -2014,6 +2038,7 @@ + clean-host: maybe-clean-libtermcap + clean-host: maybe-clean-utils + clean-host: maybe-clean-libada ++clean-host: maybe-clean-libgnatvsn + clean-host: maybe-clean-gnattools + clean-host: maybe-clean-lto-plugin + +@@ -2040,6 +2065,7 @@ + clean-target: maybe-clean-target-boehm-gc + clean-target: maybe-clean-target-rda + clean-target: maybe-clean-target-libada ++clean-target: maybe-clean-target-libgnatvsn + clean-target: maybe-clean-target-libgomp + clean-target: maybe-clean-target-libitm + clean-target: maybe-clean-target-libatomic +@@ -2098,6 +2124,7 @@ + distclean-host: maybe-distclean-libtermcap + distclean-host: maybe-distclean-utils + distclean-host: maybe-distclean-libada ++distclean-host: maybe-distclean-libgnatvsn + distclean-host: maybe-distclean-gnattools + distclean-host: maybe-distclean-lto-plugin + +@@ -2124,6 +2151,7 @@ + distclean-target: maybe-distclean-target-boehm-gc + distclean-target: maybe-distclean-target-rda + distclean-target: maybe-distclean-target-libada ++distclean-target: maybe-distclean-target-libgnatvsn + distclean-target: maybe-distclean-target-libgomp + distclean-target: maybe-distclean-target-libitm + distclean-target: maybe-distclean-target-libatomic +@@ -2182,6 +2210,7 @@ + maintainer-clean-host: maybe-maintainer-clean-libtermcap + maintainer-clean-host: maybe-maintainer-clean-utils + maintainer-clean-host: maybe-maintainer-clean-libada ++maintainer-clean-host: maybe-maintainer-clean-libgnatvsn + maintainer-clean-host: maybe-maintainer-clean-gnattools + maintainer-clean-host: maybe-maintainer-clean-lto-plugin + +@@ -2208,6 +2237,7 @@ + maintainer-clean-target: maybe-maintainer-clean-target-boehm-gc + maintainer-clean-target: maybe-maintainer-clean-target-rda + maintainer-clean-target: maybe-maintainer-clean-target-libada ++maintainer-clean-target: maybe-maintainer-clean-target-libgnatvsn + maintainer-clean-target: maybe-maintainer-clean-target-libgomp + maintainer-clean-target: maybe-maintainer-clean-target-libitm + maintainer-clean-target: maybe-maintainer-clean-target-libatomic +@@ -2321,6 +2351,7 @@ + maybe-check-libtermcap \ + maybe-check-utils \ + maybe-check-libada \ ++ maybe-check-libgnatvsn \ + maybe-check-gnattools \ + maybe-check-lto-plugin + +@@ -2347,6 +2378,7 @@ + maybe-check-target-boehm-gc \ + maybe-check-target-rda \ + maybe-check-target-libada \ ++ maybe-check-target-libgnatvsn \ + maybe-check-target-libgomp \ + maybe-check-target-libitm \ + maybe-check-target-libatomic +@@ -2431,6 +2463,7 @@ + maybe-install-libtermcap \ + maybe-install-utils \ + maybe-install-libada \ ++ maybe-install-libgnatvsn \ + maybe-install-gnattools \ + maybe-install-lto-plugin + +@@ -2479,6 +2512,7 @@ + maybe-install-libtermcap \ + maybe-install-utils \ + maybe-install-libada \ ++ maybe-install-libgnatvsn \ + maybe-install-gnattools \ + maybe-install-lto-plugin + +@@ -2505,6 +2539,7 @@ + maybe-install-target-boehm-gc \ + maybe-install-target-rda \ + maybe-install-target-libada \ ++ maybe-install-target-libgnatvsn \ + maybe-install-target-libgomp \ + maybe-install-target-libitm \ + maybe-install-target-libatomic +@@ -2583,6 +2618,7 @@ + maybe-install-strip-libtermcap \ + maybe-install-strip-utils \ + maybe-install-strip-libada \ ++ maybe-install-strip-libgnatvsn \ + maybe-install-strip-gnattools \ + maybe-install-strip-lto-plugin + +@@ -2609,6 +2645,7 @@ + maybe-install-strip-target-boehm-gc \ + maybe-install-strip-target-rda \ + maybe-install-strip-target-libada \ ++ maybe-install-strip-target-libgnatvsn \ + maybe-install-strip-target-libgomp \ + maybe-install-strip-target-libitm \ + maybe-install-strip-target-libatomic +@@ -30227,6 +30264,343 @@ + + + ++.PHONY: configure-libgnatvsn maybe-configure-libgnatvsn ++maybe-configure-libgnatvsn: ++@if gcc-bootstrap ++configure-libgnatvsn: stage_current ++@endif gcc-bootstrap ++@if libgnatvsn ++maybe-configure-libgnatvsn: configure-libgnatvsn ++configure-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ test ! -f $(HOST_SUBDIR)/libgnatvsn/Makefile || exit 0; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libgnatvsn ; \ ++ $(HOST_EXPORTS) \ ++ echo Configuring in $(HOST_SUBDIR)/libgnatvsn; \ ++ cd "$(HOST_SUBDIR)/libgnatvsn" || exit 1; \ ++ case $(srcdir) in \ ++ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ ++ *) topdir=`echo $(HOST_SUBDIR)/libgnatvsn/ | \ ++ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ ++ esac; \ ++ srcdiroption="--srcdir=$${topdir}/libgnatvsn"; \ ++ libsrcdir="$$s/libgnatvsn"; \ ++ $(SHELL) $${libsrcdir}/configure \ ++ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ ++ --target=${target_alias} $${srcdiroption} \ ++ || exit 1 ++@endif libgnatvsn ++ ++ ++ ++ ++ ++.PHONY: all-libgnatvsn maybe-all-libgnatvsn ++maybe-all-libgnatvsn: ++@if gcc-bootstrap ++all-libgnatvsn: stage_current ++@endif gcc-bootstrap ++@if libgnatvsn ++TARGET-libgnatvsn=all ++maybe-all-libgnatvsn: all-libgnatvsn ++all-libgnatvsn: configure-libgnatvsn ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ (cd $(HOST_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(STAGE1_FLAGS_TO_PASS) \ ++ $(TARGET-libgnatvsn)) ++@endif libgnatvsn ++ ++ ++ ++ ++.PHONY: check-libgnatvsn maybe-check-libgnatvsn ++maybe-check-libgnatvsn: ++@if libgnatvsn ++maybe-check-libgnatvsn: check-libgnatvsn ++ ++check-libgnatvsn: ++ ++@endif libgnatvsn ++ ++.PHONY: install-libgnatvsn maybe-install-libgnatvsn ++maybe-install-libgnatvsn: ++@if libgnatvsn ++maybe-install-libgnatvsn: install-libgnatvsn ++ ++install-libgnatvsn: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ (cd $(HOST_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(FLAGS_TO_PASS) install) ++ ++@endif libgnatvsn ++ ++.PHONY: install-strip-libgnatvsn maybe-install-strip-libgnatvsn ++maybe-install-strip-libgnatvsn: ++@if libgnatvsn ++maybe-install-strip-libgnatvsn: install-strip-libgnatvsn ++ ++install-strip-libgnatvsn: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ (cd $(HOST_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(FLAGS_TO_PASS) install-strip) ++ ++@endif libgnatvsn ++ ++# Other targets (info, dvi, pdf, etc.) ++ ++.PHONY: maybe-info-libgnatvsn info-libgnatvsn ++maybe-info-libgnatvsn: ++@if libgnatvsn ++maybe-info-libgnatvsn: info-libgnatvsn ++ ++# libgnatvsn doesn't support info. ++info-libgnatvsn: ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-dvi-libgnatvsn dvi-libgnatvsn ++maybe-dvi-libgnatvsn: ++@if libgnatvsn ++maybe-dvi-libgnatvsn: dvi-libgnatvsn ++ ++# libgnatvsn doesn't support dvi. ++dvi-libgnatvsn: ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-pdf-libgnatvsn pdf-libgnatvsn ++maybe-pdf-libgnatvsn: ++@if libgnatvsn ++maybe-pdf-libgnatvsn: pdf-libgnatvsn ++ ++pdf-libgnatvsn: \ ++ configure-libgnatvsn ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatvsn/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing pdf in libgnatvsn" ; \ ++ (cd $(HOST_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ pdf) \ ++ || exit 1 ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-html-libgnatvsn html-libgnatvsn ++maybe-html-libgnatvsn: ++@if libgnatvsn ++maybe-html-libgnatvsn: html-libgnatvsn ++ ++# libgnatvsn doesn't support html. ++html-libgnatvsn: ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-TAGS-libgnatvsn TAGS-libgnatvsn ++maybe-TAGS-libgnatvsn: ++@if libgnatvsn ++maybe-TAGS-libgnatvsn: TAGS-libgnatvsn ++ ++# libgnatvsn doesn't support TAGS. ++TAGS-libgnatvsn: ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-install-info-libgnatvsn install-info-libgnatvsn ++maybe-install-info-libgnatvsn: ++@if libgnatvsn ++maybe-install-info-libgnatvsn: install-info-libgnatvsn ++ ++# libgnatvsn doesn't support install-info. ++install-info-libgnatvsn: ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-install-pdf-libgnatvsn install-pdf-libgnatvsn ++maybe-install-pdf-libgnatvsn: ++@if libgnatvsn ++maybe-install-pdf-libgnatvsn: install-pdf-libgnatvsn ++ ++install-pdf-libgnatvsn: \ ++ configure-libgnatvsn \ ++ pdf-libgnatvsn ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatvsn/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing install-pdf in libgnatvsn" ; \ ++ (cd $(HOST_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-pdf) \ ++ || exit 1 ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-install-html-libgnatvsn install-html-libgnatvsn ++maybe-install-html-libgnatvsn: ++@if libgnatvsn ++maybe-install-html-libgnatvsn: install-html-libgnatvsn ++ ++install-html-libgnatvsn: \ ++ configure-libgnatvsn \ ++ html-libgnatvsn ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatvsn/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing install-html in libgnatvsn" ; \ ++ (cd $(HOST_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-html) \ ++ || exit 1 ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-installcheck-libgnatvsn installcheck-libgnatvsn ++maybe-installcheck-libgnatvsn: ++@if libgnatvsn ++maybe-installcheck-libgnatvsn: installcheck-libgnatvsn ++ ++# libgnatvsn doesn't support installcheck. ++installcheck-libgnatvsn: ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-mostlyclean-libgnatvsn mostlyclean-libgnatvsn ++maybe-mostlyclean-libgnatvsn: ++@if libgnatvsn ++maybe-mostlyclean-libgnatvsn: mostlyclean-libgnatvsn ++ ++mostlyclean-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatvsn/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing mostlyclean in libgnatvsn" ; \ ++ (cd $(HOST_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ mostlyclean) \ ++ || exit 1 ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-clean-libgnatvsn clean-libgnatvsn ++maybe-clean-libgnatvsn: ++@if libgnatvsn ++maybe-clean-libgnatvsn: clean-libgnatvsn ++ ++clean-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatvsn/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing clean in libgnatvsn" ; \ ++ (cd $(HOST_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ clean) \ ++ || exit 1 ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-distclean-libgnatvsn distclean-libgnatvsn ++maybe-distclean-libgnatvsn: ++@if libgnatvsn ++maybe-distclean-libgnatvsn: distclean-libgnatvsn ++ ++distclean-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatvsn/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing distclean in libgnatvsn" ; \ ++ (cd $(HOST_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ distclean) \ ++ || exit 1 ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-maintainer-clean-libgnatvsn maintainer-clean-libgnatvsn ++maybe-maintainer-clean-libgnatvsn: ++@if libgnatvsn ++maybe-maintainer-clean-libgnatvsn: maintainer-clean-libgnatvsn ++ ++maintainer-clean-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatvsn/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing maintainer-clean in libgnatvsn" ; \ ++ (cd $(HOST_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ maintainer-clean) \ ++ || exit 1 ++ ++@endif libgnatvsn ++ ++ ++ + .PHONY: configure-gnattools maybe-configure-gnattools + maybe-configure-gnattools: + @if gcc-bootstrap +@@ -42917,6 +43291,361 @@ + + + ++.PHONY: configure-target-libgnatvsn maybe-configure-target-libgnatvsn ++maybe-configure-target-libgnatvsn: ++@if gcc-bootstrap ++configure-target-libgnatvsn: stage_current ++@endif gcc-bootstrap ++@if target-libgnatvsn ++maybe-configure-target-libgnatvsn: configure-target-libgnatvsn ++configure-target-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ echo "Checking multilib configuration for libgnatvsn..."; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgnatvsn ; \ ++ $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgnatvsn/multilib.tmp 2> /dev/null ; \ ++ if test -r $(TARGET_SUBDIR)/libgnatvsn/multilib.out; then \ ++ if cmp -s $(TARGET_SUBDIR)/libgnatvsn/multilib.tmp $(TARGET_SUBDIR)/libgnatvsn/multilib.out; then \ ++ rm -f $(TARGET_SUBDIR)/libgnatvsn/multilib.tmp; \ ++ else \ ++ rm -f $(TARGET_SUBDIR)/libgnatvsn/Makefile; \ ++ mv $(TARGET_SUBDIR)/libgnatvsn/multilib.tmp $(TARGET_SUBDIR)/libgnatvsn/multilib.out; \ ++ fi; \ ++ else \ ++ mv $(TARGET_SUBDIR)/libgnatvsn/multilib.tmp $(TARGET_SUBDIR)/libgnatvsn/multilib.out; \ ++ fi; \ ++ test ! -f $(TARGET_SUBDIR)/libgnatvsn/Makefile || exit 0; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgnatvsn ; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo Configuring in $(TARGET_SUBDIR)/libgnatvsn; \ ++ cd "$(TARGET_SUBDIR)/libgnatvsn" || exit 1; \ ++ case $(srcdir) in \ ++ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ ++ *) topdir=`echo $(TARGET_SUBDIR)/libgnatvsn/ | \ ++ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ ++ esac; \ ++ srcdiroption="--srcdir=$${topdir}/libgnatvsn"; \ ++ libsrcdir="$$s/libgnatvsn"; \ ++ rm -f no-such-file || : ; \ ++ CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ ++ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ ++ --target=${target_alias} $${srcdiroption} \ ++ || exit 1 ++@endif target-libgnatvsn ++ ++ ++ ++ ++ ++.PHONY: all-target-libgnatvsn maybe-all-target-libgnatvsn ++maybe-all-target-libgnatvsn: ++@if gcc-bootstrap ++all-target-libgnatvsn: stage_current ++@endif gcc-bootstrap ++@if target-libgnatvsn ++TARGET-target-libgnatvsn=all ++maybe-all-target-libgnatvsn: all-target-libgnatvsn ++all-target-libgnatvsn: configure-target-libgnatvsn ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ ++ $(TARGET-target-libgnatvsn)) ++@endif target-libgnatvsn ++ ++ ++ ++ ++ ++.PHONY: check-target-libgnatvsn maybe-check-target-libgnatvsn ++maybe-check-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-check-target-libgnatvsn: check-target-libgnatvsn ++ ++# Dummy target for uncheckable module. ++check-target-libgnatvsn: ++ ++@endif target-libgnatvsn ++ ++.PHONY: install-target-libgnatvsn maybe-install-target-libgnatvsn ++maybe-install-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-install-target-libgnatvsn: install-target-libgnatvsn ++ ++install-target-libgnatvsn: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) install) ++ ++@endif target-libgnatvsn ++ ++.PHONY: install-strip-target-libgnatvsn maybe-install-strip-target-libgnatvsn ++maybe-install-strip-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-install-strip-target-libgnatvsn: install-strip-target-libgnatvsn ++ ++install-strip-target-libgnatvsn: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) ++ ++@endif target-libgnatvsn ++ ++# Other targets (info, dvi, pdf, etc.) ++ ++.PHONY: maybe-info-target-libgnatvsn info-target-libgnatvsn ++maybe-info-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-info-target-libgnatvsn: info-target-libgnatvsn ++ ++# libgnatvsn doesn't support info. ++info-target-libgnatvsn: ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-dvi-target-libgnatvsn dvi-target-libgnatvsn ++maybe-dvi-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-dvi-target-libgnatvsn: dvi-target-libgnatvsn ++ ++# libgnatvsn doesn't support dvi. ++dvi-target-libgnatvsn: ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-pdf-target-libgnatvsn pdf-target-libgnatvsn ++maybe-pdf-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-pdf-target-libgnatvsn: pdf-target-libgnatvsn ++ ++pdf-target-libgnatvsn: \ ++ configure-target-libgnatvsn ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing pdf in $(TARGET_SUBDIR)/libgnatvsn" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ pdf) \ ++ || exit 1 ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-html-target-libgnatvsn html-target-libgnatvsn ++maybe-html-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-html-target-libgnatvsn: html-target-libgnatvsn ++ ++# libgnatvsn doesn't support html. ++html-target-libgnatvsn: ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-TAGS-target-libgnatvsn TAGS-target-libgnatvsn ++maybe-TAGS-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-TAGS-target-libgnatvsn: TAGS-target-libgnatvsn ++ ++# libgnatvsn doesn't support TAGS. ++TAGS-target-libgnatvsn: ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-install-info-target-libgnatvsn install-info-target-libgnatvsn ++maybe-install-info-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-install-info-target-libgnatvsn: install-info-target-libgnatvsn ++ ++# libgnatvsn doesn't support install-info. ++install-info-target-libgnatvsn: ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-install-pdf-target-libgnatvsn install-pdf-target-libgnatvsn ++maybe-install-pdf-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-install-pdf-target-libgnatvsn: install-pdf-target-libgnatvsn ++ ++install-pdf-target-libgnatvsn: \ ++ configure-target-libgnatvsn \ ++ pdf-target-libgnatvsn ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-pdf in $(TARGET_SUBDIR)/libgnatvsn" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-pdf) \ ++ || exit 1 ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-install-html-target-libgnatvsn install-html-target-libgnatvsn ++maybe-install-html-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-install-html-target-libgnatvsn: install-html-target-libgnatvsn ++ ++install-html-target-libgnatvsn: \ ++ configure-target-libgnatvsn \ ++ html-target-libgnatvsn ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-html in $(TARGET_SUBDIR)/libgnatvsn" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-html) \ ++ || exit 1 ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-installcheck-target-libgnatvsn installcheck-target-libgnatvsn ++maybe-installcheck-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-installcheck-target-libgnatvsn: installcheck-target-libgnatvsn ++ ++# libgnatvsn doesn't support installcheck. ++installcheck-target-libgnatvsn: ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-mostlyclean-target-libgnatvsn mostlyclean-target-libgnatvsn ++maybe-mostlyclean-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-mostlyclean-target-libgnatvsn: mostlyclean-target-libgnatvsn ++ ++mostlyclean-target-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing mostlyclean in $(TARGET_SUBDIR)/libgnatvsn" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ mostlyclean) \ ++ || exit 1 ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-clean-target-libgnatvsn clean-target-libgnatvsn ++maybe-clean-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-clean-target-libgnatvsn: clean-target-libgnatvsn ++ ++clean-target-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing clean in $(TARGET_SUBDIR)/libgnatvsn" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ clean) \ ++ || exit 1 ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-distclean-target-libgnatvsn distclean-target-libgnatvsn ++maybe-distclean-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-distclean-target-libgnatvsn: distclean-target-libgnatvsn ++ ++distclean-target-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing distclean in $(TARGET_SUBDIR)/libgnatvsn" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ distclean) \ ++ || exit 1 ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-maintainer-clean-target-libgnatvsn maintainer-clean-target-libgnatvsn ++maybe-maintainer-clean-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-maintainer-clean-target-libgnatvsn: maintainer-clean-target-libgnatvsn ++ ++maintainer-clean-target-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libgnatvsn" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ maintainer-clean) \ ++ || exit 1 ++ ++@endif target-libgnatvsn ++ ++ ++ ++ ++ + .PHONY: configure-target-libgomp maybe-configure-target-libgomp + maybe-configure-target-libgomp: + @if gcc-bootstrap +@@ -47039,6 +47768,7 @@ + configure-target-boehm-gc: stage_last + configure-target-rda: stage_last + configure-target-libada: stage_last ++configure-target-libgnatvsn: stage_last + configure-stage1-target-libgomp: maybe-all-stage1-gcc + configure-stage2-target-libgomp: maybe-all-stage2-gcc + configure-stage3-target-libgomp: maybe-all-stage3-gcc +@@ -47071,6 +47801,7 @@ + configure-target-boehm-gc: maybe-all-gcc + configure-target-rda: maybe-all-gcc + configure-target-libada: maybe-all-gcc ++configure-target-libgnatvsn: maybe-all-gcc + configure-target-libgomp: maybe-all-gcc + configure-target-libitm: maybe-all-gcc + configure-target-libatomic: maybe-all-gcc +@@ -47378,7 +48109,9 @@ + all-stageprofile-fixincludes: maybe-all-stageprofile-libiberty + all-stagefeedback-fixincludes: maybe-all-stagefeedback-libiberty + all-gnattools: maybe-all-libada ++all-gnattools: maybe-all-libgnatvsn + all-gnattools: maybe-all-target-libstdc++-v3 ++all-libgnatvsn: maybe-all-libada + all-lto-plugin: maybe-all-libiberty + + all-stage1-lto-plugin: maybe-all-stage1-libiberty +@@ -47941,6 +48674,7 @@ + configure-target-boehm-gc: maybe-all-target-libgcc + configure-target-rda: maybe-all-target-libgcc + configure-target-libada: maybe-all-target-libgcc ++configure-target-libgnatvsn: maybe-all-target-libgcc + configure-target-libgomp: maybe-all-target-libgcc + configure-target-libitm: maybe-all-target-libgcc + configure-target-libatomic: maybe-all-target-libgcc +@@ -47988,6 +48722,8 @@ + + configure-target-libada: maybe-all-target-newlib maybe-all-target-libgloss + ++configure-target-libgnatvsn: maybe-all-target-newlib maybe-all-target-libgloss ++ + configure-target-libgomp: maybe-all-target-newlib maybe-all-target-libgloss + + configure-target-libitm: maybe-all-target-newlib maybe-all-target-libgloss +Index: b/src/configure.ac +=================================================================== +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -133,7 +133,7 @@ + + # these libraries are used by various programs built for the host environment + # +-host_libs="intl libiberty opcodes bfd readline tcl tk itcl libgui zlib libbacktrace libcpp libdecnumber gmp mpfr mpc isl cloog libelf libiconv libada" ++host_libs="intl libiberty opcodes bfd readline tcl tk itcl libgui zlib libbacktrace libcpp libdecnumber gmp mpfr mpc isl cloog libelf libiconv libada libgnatvsn" + + # these tools are built for the host environment + # Note, the powerpc-eabi build depends on sim occurring before gdb in order to +@@ -169,6 +169,7 @@ + ${libgcj} \ + target-libobjc \ + target-libada \ ++ target-libgnatvsn \ + target-libgo" + + # these tools are built using the target libraries, and are intended to +@@ -265,7 +266,7 @@ + + # Some are only suitable for cross toolchains. + # Remove these if host=target. +-cross_only="target-libgloss target-newlib target-opcodes target-libada" ++cross_only="target-libgloss target-newlib target-opcodes target-libada target-libgnatvsn" + + case $is_cross_compiler in + no) skipdirs="${skipdirs} ${cross_only}" ;; +@@ -421,7 +422,7 @@ + ENABLE_LIBADA=$enableval, + ENABLE_LIBADA=yes) + if test "${ENABLE_LIBADA}" != "yes" ; then +- noconfigdirs="$noconfigdirs gnattools" ++ noconfigdirs="$noconfigdirs libgnatvsn gnattools" + fi + + AC_ARG_ENABLE(libssp, +Index: b/src/gcc/ada/gcc-interface/config-lang.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/config-lang.in ++++ b/src/gcc/ada/gcc-interface/config-lang.in +@@ -34,8 +34,8 @@ + + outputs="ada/gcc-interface/Makefile ada/Makefile" + +-target_libs="target-libada" +-lang_dirs="libada gnattools" ++target_libs="target-libada target-libgnatvsn" ++lang_dirs="libada libgnatvsn gnattools" + + # Ada is not enabled by default for the time being. + build_by_default=no --- gcc-4.9-4.9.2.orig/debian/patches/ada-library-project-files-soname.diff +++ gcc-4.9-4.9.2/debian/patches/ada-library-project-files-soname.diff @@ -0,0 +1,81 @@ +# DP: - in project files, use the exact Library_Version provided, if any, as +# DP: the soname of libraries; do not strip minor version numbers +# DP: (PR ada/40025). + +Index: b/src/gcc/ada/mlib-tgt-specific-linux.adb +=================================================================== +--- a/src/gcc/ada/mlib-tgt-specific-linux.adb ++++ b/src/gcc/ada/mlib-tgt-specific-linux.adb +@@ -50,6 +50,8 @@ + + function Is_Archive_Ext (Ext : String) return Boolean; + ++ function Library_Major_Minor_Id_Supported return Boolean; ++ + --------------------------- + -- Build_Dynamic_Library -- + --------------------------- +@@ -142,7 +144,18 @@ + return Ext = ".a" or else Ext = ".so"; + end Is_Archive_Ext; + ++ -------------------------------------- ++ -- Library_Major_Minor_Id_Supported -- ++ -------------------------------------- ++ ++ function Library_Major_Minor_Id_Supported return Boolean is ++ begin ++ return False; ++ end Library_Major_Minor_Id_Supported; ++ + begin + Build_Dynamic_Library_Ptr := Build_Dynamic_Library'Access; + Is_Archive_Ext_Ptr := Is_Archive_Ext'Access; ++ Library_Major_Minor_Id_Supported_Ptr := ++ Library_Major_Minor_Id_Supported'Access; + end MLib.Tgt.Specific; +Index: b/src/gcc/ada/mlib.adb +=================================================================== +--- a/src/gcc/ada/mlib.adb ++++ b/src/gcc/ada/mlib.adb +@@ -31,6 +31,7 @@ + with Opt; + with Output; use Output; + ++with MLib.Tgt; + with MLib.Utl; use MLib.Utl; + + with Prj.Com; +@@ -391,7 +392,11 @@ + -- Major_Id_Name -- + ------------------- + +- function Major_Id_Name ++ function Major_Id_Name_If_Supported ++ (Lib_Filename : String; ++ Lib_Version : String) ++ return String; ++ function Major_Id_Name_If_Supported + (Lib_Filename : String; + Lib_Version : String) + return String +@@ -445,6 +450,19 @@ + else + return ""; + end if; ++ end Major_Id_Name_If_Supported; ++ ++ function Major_Id_Name ++ (Lib_Filename : String; ++ Lib_Version : String) ++ return String ++ is ++ begin ++ if MLib.Tgt.Library_Major_Minor_Id_Supported then ++ return Major_Id_Name_If_Supported (Lib_Filename, Lib_Version); ++ else ++ return ""; ++ end if; + end Major_Id_Name; + + ------------------------------- --- gcc-4.9-4.9.2.orig/debian/patches/ada-link-lib.diff +++ gcc-4.9-4.9.2/debian/patches/ada-link-lib.diff @@ -0,0 +1,2011 @@ +# DP: - Install the shared Ada libraries as '.so.1', not '.so' to conform +# DP: to the Debian policy. +# DP: - Don't include a runtime link path (-rpath), when linking binaries. +# DP: - Build the shared libraries on hppa-linux. +# DP: - Instead of building libada as a target library only, build it as +# DP: both a host and, if different, target library. +# DP: - Build the GNAT tools in their top-level directory; do not use +# DP: recursive makefiles. +# DP: - Link the GNAT tools dynamically. + +# This patch seems large, but the hunks in Makefile.in are actually +# generated from Makefile.def using autogen. + +Index: b/src/gcc/ada/gcc-interface/config-lang.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/config-lang.in ++++ b/src/gcc/ada/gcc-interface/config-lang.in +@@ -35,7 +35,7 @@ + outputs="ada/gcc-interface/Makefile ada/Makefile" + + target_libs="target-libada" +-lang_dirs="gnattools" ++lang_dirs="libada gnattools" + + # Ada is not enabled by default for the time being. + build_by_default=no +Index: b/src/gcc/ada/link.c +=================================================================== +--- a/src/gcc/ada/link.c ++++ b/src/gcc/ada/link.c +@@ -105,9 +105,9 @@ + + #elif defined (__FreeBSD__) + const char *__gnat_object_file_option = "-Wl,@"; +-const char *__gnat_run_path_option = "-Wl,-rpath,"; +-char __gnat_shared_libgnat_default = STATIC; +-char __gnat_shared_libgcc_default = STATIC; ++const char *__gnat_run_path_option = ""; ++char __gnat_shared_libgnat_default = SHARED; ++char __gnat_shared_libgcc_default = SHARED; + int __gnat_link_max = 8192; + unsigned char __gnat_objlist_file_supported = 1; + const char *__gnat_object_library_extension = ".a"; +@@ -127,9 +127,9 @@ + + #elif defined (linux) || defined(__GLIBC__) + const char *__gnat_object_file_option = "-Wl,@"; +-const char *__gnat_run_path_option = "-Wl,-rpath,"; +-char __gnat_shared_libgnat_default = STATIC; +-char __gnat_shared_libgcc_default = STATIC; ++const char *__gnat_run_path_option = ""; ++char __gnat_shared_libgnat_default = SHARED; ++char __gnat_shared_libgcc_default = SHARED; + int __gnat_link_max = 8192; + unsigned char __gnat_objlist_file_supported = 1; + const char *__gnat_object_library_extension = ".a"; +Index: b/src/gcc/ada/gcc-interface/Makefile.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -102,7 +102,7 @@ + MAKEINFO = makeinfo + TEXI2DVI = texi2dvi + TEXI2PDF = texi2pdf +-GNATBIND_FLAGS = -static -x ++GNATBIND_FLAGS = -shared -x + ADA_CFLAGS = + ADAFLAGS = -W -Wall -gnatpg -gnata + FORCE_DEBUG_ADAFLAGS = -g +@@ -262,9 +262,6 @@ + LIBDEPS = $(LIBINTL_DEP) $(LIBICONV_DEP) $(LIBBACKTRACE) $(LIBIBERTY) + # Default is no TGT_LIB; one might be passed down or something + TGT_LIB = +-TOOLS_LIBS = ../link.o ../targext.o ../../ggc-none.o ../../libcommon-target.a \ +- ../../libcommon.a ../../../libcpp/libcpp.a $(LIBGNAT) $(LIBINTL) $(LIBICONV) \ +- ../$(LIBBACKTRACE) ../$(LIBIBERTY) $(SYSLIBS) $(TGT_LIB) + + # Specify the directories to be searched for header files. + # Both . and srcdir are used, in that order, +@@ -321,30 +318,6 @@ + # defined in this file into the environment. + .NOEXPORT: + +-# Lists of files for various purposes. +- +-GNATLINK_OBJS = gnatlink.o \ +- a-except.o ali.o alloc.o butil.o casing.o csets.o debug.o fmap.o fname.o \ +- gnatvsn.o hostparm.o indepsw.o interfac.o i-c.o i-cstrin.o namet.o opt.o \ +- osint.o output.o rident.o s-exctab.o s-secsta.o s-stalib.o s-stoele.o \ +- sdefault.o snames.o stylesw.o switch.o system.o table.o targparm.o tree_io.o \ +- types.o validsw.o widechar.o +- +-GNATMAKE_OBJS = a-except.o ali.o ali-util.o aspects.o s-casuti.o alloc.o \ +- atree.o binderr.o butil.o casing.o csets.o debug.o elists.o einfo.o errout.o \ +- erroutc.o errutil.o err_vars.o fmap.o fname.o fname-uf.o fname-sf.o \ +- gnatmake.o gnatvsn.o hostparm.o interfac.o i-c.o i-cstrin.o krunch.o lib.o \ +- make.o makeusg.o makeutl.o mlib.o mlib-fil.o mlib-prj.o mlib-tgt.o \ +- mlib-tgt-specific.o mlib-utl.o namet.o nlists.o opt.o osint.o osint-m.o \ +- output.o prj.o prj-attr.o prj-attr-pm.o prj-com.o prj-dect.o prj-env.o \ +- prj-conf.o prj-pp.o prj-err.o prj-ext.o prj-nmsc.o prj-pars.o prj-part.o \ +- prj-proc.o prj-strt.o prj-tree.o prj-util.o restrict.o rident.o s-exctab.o \ +- s-secsta.o s-stalib.o s-stoele.o scans.o scng.o sdefault.o sfn_scan.o \ +- s-purexc.o s-htable.o scil_ll.o sem_aux.o sinfo.o sinput.o sinput-c.o \ +- sinput-p.o snames.o stand.o stringt.o styleg.o stylesw.o system.o validsw.o \ +- switch.o switch-m.o table.o targparm.o tempdir.o tree_io.o types.o uintp.o \ +- uname.o urealp.o usage.o widechar.o \ +- $(EXTRA_GNATMAKE_OBJS) + + # Make arch match the current multilib so that the RTS selection code + # picks up the right files. For a given target this must be coherent +@@ -1450,6 +1423,11 @@ + LIBRARY_VERSION := $(LIB_VERSION) + endif + ++ifeq ($(strip $(filter-out hppa% unknown linux gnu,$(targ))),) ++ GNATLIB_SHARED = gnatlib-shared-dual ++ LIBRARY_VERSION := $(LIB_VERSION) ++endif ++ + # HP/PA HP-UX 10 + ifeq ($(strip $(filter-out hppa% hp hpux10%,$(target_cpu) $(target_vendor) $(target_os))),) + LIBGNAT_TARGET_PAIRS = \ +@@ -2481,151 +2459,6 @@ + $(patsubst %$(objext),%.adb,$(GNATRTL_OBJS)), \ + $(ADA_EXCLUDE_SRCS)) + +-LIBGNAT=../$(RTSDIR)/libgnat.a +- +-TOOLS_FLAGS_TO_PASS= \ +- "CC=$(CC)" \ +- "CFLAGS=$(CFLAGS)" \ +- "LDFLAGS=$(LDFLAGS)" \ +- "ADAFLAGS=$(ADAFLAGS)" \ +- "INCLUDES=$(INCLUDES_FOR_SUBDIR)"\ +- "ADA_INCLUDES=$(ADA_INCLUDES) $(ADA_INCLUDES_FOR_SUBDIR)"\ +- "libsubdir=$(libsubdir)" \ +- "exeext=$(exeext)" \ +- "fsrcdir=$(fsrcdir)" \ +- "srcdir=$(fsrcdir)" \ +- "TOOLS_LIBS=$(TOOLS_LIBS) $(TGT_LIB)" \ +- "GNATMAKE=$(GNATMAKE)" \ +- "GNATLINK=$(GNATLINK)" \ +- "GNATBIND=$(GNATBIND)" +- +-GCC_LINK=$(CXX) $(GCC_LINK_FLAGS) $(ADA_INCLUDES) $(LDFLAGS) +- +-# Build directory for the tools. Let's copy the target-dependent +-# sources using the same mechanism as for gnatlib. The other sources are +-# accessed using the vpath directive below +-# Note: dummy target, stamp-tools is mainly handled by gnattools. +- +-../stamp-tools: +- touch ../stamp-tools +- +-# when compiling the tools, the runtime has to be first on the path so that +-# it hides the runtime files lying with the rest of the sources +-ifeq ($(TOOLSCASE),native) +- vpath %.ads ../$(RTSDIR) ../ +- vpath %.adb ../$(RTSDIR) ../ +- vpath %.c ../$(RTSDIR) ../ +- vpath %.h ../$(RTSDIR) ../ +-endif +- +-# in the cross tools case, everything is compiled with the native +-# gnatmake/link. Therefore only -I needs to be modified in ADA_INCLUDES +-ifeq ($(TOOLSCASE),cross) +- vpath %.ads ../ +- vpath %.adb ../ +- vpath %.c ../ +- vpath %.h ../ +-endif +- +-# gnatmake/link tools cannot always be built with gnatmake/link for bootstrap +-# reasons: gnatmake should be built with a recent compiler, a recent compiler +-# may not generate ALI files compatible with an old gnatmake so it is important +-# to be able to build gnatmake without a version of gnatmake around. Once +-# everything has been compiled once, gnatmake can be recompiled with itself +-# (see target gnattools1-re) +-gnattools1: ../stamp-tools ../stamp-gnatlib-$(RTSDIR) +- $(MAKE) -C tools -f ../Makefile $(TOOLS_FLAGS_TO_PASS) \ +- TOOLSCASE=native \ +- ../../gnatmake$(exeext) ../../gnatlink$(exeext) +- +-# gnatmake/link can be built with recent gnatmake/link if they are available. +-# This is especially convenient for building cross tools or for rebuilding +-# the tools when the original bootstrap has already be done. +-gnattools1-re: ../stamp-tools +- $(MAKE) -C tools -f ../Makefile $(TOOLS_FLAGS_TO_PASS) \ +- TOOLSCASE=cross INCLUDES="" gnatmake-re gnatlink-re +- +-# these tools are built with gnatmake & are common to native and cross +-gnattools2: ../stamp-tools +- $(MAKE) -C tools -f ../Makefile $(TOOLS_FLAGS_TO_PASS) \ +- TOOLSCASE=native common-tools $(EXTRA_GNATTOOLS) +- +-# those tools are only built for the cross version +-gnattools4: ../stamp-tools +-ifeq ($(ENABLE_VXADDR2LINE),true) +- $(MAKE) -C tools -f ../Makefile $(TOOLS_FLAGS_TO_PASS) \ +- TOOLSCASE=cross top_buildir=../../.. \ +- ../../vxaddr2line$(exeext) +-endif +- +-common-tools: ../stamp-tools +- $(GNATMAKE) -j0 -c -b $(ADA_INCLUDES) \ +- --GNATBIND="$(GNATBIND)" --GCC="$(CC) $(ALL_ADAFLAGS)" \ +- gnatchop gnatcmd gnatkr gnatls gnatprep gnatxref gnatfind gnatname \ +- gnatclean -bargs $(ADA_INCLUDES) $(GNATBIND_FLAGS) +- $(GNATLINK) -v gnatcmd -o ../../gnat$(exeext) \ +- --GCC="$(GCC_LINK)" $(TOOLS_LIBS) +- $(GNATLINK) -v gnatchop -o ../../gnatchop$(exeext) \ +- --GCC="$(GCC_LINK)" $(TOOLS_LIBS) +- $(GNATLINK) -v gnatkr -o ../../gnatkr$(exeext) \ +- --GCC="$(GCC_LINK)" $(TOOLS_LIBS) +- $(GNATLINK) -v gnatls -o ../../gnatls$(exeext) \ +- --GCC="$(GCC_LINK)" $(TOOLS_LIBS) +- $(GNATLINK) -v gnatprep -o ../../gnatprep$(exeext) \ +- --GCC="$(GCC_LINK)" $(TOOLS_LIBS) +- $(GNATLINK) -v gnatxref -o ../../gnatxref$(exeext) \ +- --GCC="$(GCC_LINK)" $(TOOLS_LIBS) +- $(GNATLINK) -v gnatfind -o ../../gnatfind$(exeext) \ +- --GCC="$(GCC_LINK)" $(TOOLS_LIBS) +- $(GNATLINK) -v gnatname -o ../../gnatname$(exeext) \ +- --GCC="$(GCC_LINK)" $(TOOLS_LIBS) +- $(GNATLINK) -v gnatclean -o ../../gnatclean$(exeext) \ +- --GCC="$(GCC_LINK)" $(TOOLS_LIBS) +- +-../../gnatsym$(exeext): ../stamp-tools +- $(GNATMAKE) -c $(ADA_INCLUDES) gnatsym --GCC="$(CC) $(ALL_ADAFLAGS)" +- $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatsym +- $(GNATLINK) -v gnatsym -o $@ --GCC="$(GCC_LINK)" $(TOOLS_LIBS) +- +-../../gnatdll$(exeext): ../stamp-tools +- $(GNATMAKE) -c $(ADA_INCLUDES) gnatdll --GCC="$(CC) $(ALL_ADAFLAGS)" +- $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatdll +- $(GNATLINK) -v gnatdll -o $@ --GCC="$(GCC_LINK)" $(TOOLS_LIBS) +- +-../../vxaddr2line$(exeext): ../stamp-tools +- $(GNATMAKE) -c $(ADA_INCLUDES) vxaddr2line --GCC="$(CC) $(ALL_ADAFLAGS)" +- $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) vxaddr2line +- $(GNATLINK) -v vxaddr2line -o $@ --GCC="$(GCC_LINK)" ../targext.o $(CLIB) +- +-gnatmake-re: ../stamp-tools +- $(GNATMAKE) -j0 $(ADA_INCLUDES) -u sdefault --GCC="$(CC) $(MOST_ADA_FLAGS)" +- $(GNATMAKE) -j0 -c $(ADA_INCLUDES) gnatmake --GCC="$(CC) $(ALL_ADAFLAGS)" +- $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatmake +- $(GNATLINK) -v gnatmake -o ../../gnatmake$(exeext) \ +- --GCC="$(GCC_LINK)" $(TOOLS_LIBS) +- +-# Note the use of the "mv" command in order to allow gnatlink to be linked with +-# with the former version of gnatlink itself which cannot override itself. +-# gnatlink-re cannot be run at the same time as gnatmake-re, hence the +-# dependency +-gnatlink-re: ../stamp-tools gnatmake-re +- $(GNATMAKE) -j0 -c $(ADA_INCLUDES) gnatlink --GCC="$(CC) $(ALL_ADAFLAGS)" +- $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatlink +- $(GNATLINK) -v gnatlink -o ../../gnatlinknew$(exeext) \ +- --GCC="$(GCC_LINK)" $(TOOLS_LIBS) +- $(MV) ../../gnatlinknew$(exeext) ../../gnatlink$(exeext) +- +-# Needs to be built with CC=gcc +-# Since the RTL should be built with the latest compiler, remove the +-# stamp target in the parent directory whenever gnat1 is rebuilt +- +-# Likewise for the tools +-../../gnatmake$(exeext): $(P) b_gnatm.o $(GNATMAKE_OBJS) +- +$(GCC_LINK) $(ALL_CFLAGS) -o $@ b_gnatm.o $(GNATMAKE_OBJS) $(TOOLS_LIBS) +- +-../../gnatlink$(exeext): $(P) b_gnatl.o $(GNATLINK_OBJS) +- +$(GCC_LINK) $(ALL_CFLAGS) -o $@ b_gnatl.o $(GNATLINK_OBJS) $(TOOLS_LIBS) +- + ../stamp-gnatlib-$(RTSDIR): + @if [ ! -f stamp-gnatlib-$(RTSDIR) ] ; \ + then \ +@@ -2662,14 +2495,10 @@ + # Also install the .dSYM directories if they exist (these directories + # contain the debug information for the shared libraries on darwin) + for file in gnat gnarl; do \ +- if [ -f $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) ]; then \ +- $(INSTALL) $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) \ ++ if [ -f $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).1 ]; then \ ++ $(INSTALL) $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ + $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ + fi; \ +- if [ -f $(RTSDIR)/lib$${file}$(soext) ]; then \ +- $(LN_S) lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- $(DESTDIR)$(ADA_RTL_OBJ_DIR)/lib$${file}$(soext); \ +- fi; \ + if [ -d $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).dSYM ]; then \ + $(CP) -r $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).dSYM \ + $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ +@@ -2682,19 +2511,7 @@ + cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.adb + cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.ads + +-../stamp-gnatlib2-$(RTSDIR): +- $(RM) $(RTSDIR)/s-*.ali +- $(RM) $(RTSDIR)/s-*$(objext) +- $(RM) $(RTSDIR)/a-*.ali +- $(RM) $(RTSDIR)/a-*$(objext) +- $(RM) $(RTSDIR)/*.ali +- $(RM) $(RTSDIR)/*$(objext) +- $(RM) $(RTSDIR)/*$(arext) +- $(RM) $(RTSDIR)/*$(soext) +- touch ../stamp-gnatlib2-$(RTSDIR) +- $(RM) ../stamp-gnatlib-$(RTSDIR) +- +-../stamp-gnatlib1-$(RTSDIR): Makefile ../stamp-gnatlib2-$(RTSDIR) ++../stamp-gnatlib1-$(RTSDIR): Makefile + $(RMDIR) $(RTSDIR) + $(MKDIR) $(RTSDIR) + $(CHMOD) u+w $(RTSDIR) +@@ -2759,7 +2576,7 @@ + # Example: cd $(RTSDIR); ar rc libfoo.a $(LONG_LIST_OF_OBJS) + # is guaranteed to overflow the buffer. + +-gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../stamp-gnatlib2-$(RTSDIR) $(RTSDIR)/s-oscons.ads ++gnatlib: ../stamp-gnatlib1-$(RTSDIR) $(RTSDIR)/s-oscons.ads + # C files + $(MAKE) -C $(RTSDIR) \ + CC="`echo \"$(GCC_FOR_TARGET)\" \ +@@ -2796,32 +2613,47 @@ + + # Warning: this target assumes that LIBRARY_VERSION has been set correctly. + gnatlib-shared-default: +- $(MAKE) $(FLAGS_TO_PASS) \ +- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +- GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(PICFLAG_FOR_TARGET)" \ +- GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C) $(PICFLAG_FOR_TARGET)" \ +- MULTISUBDIR="$(MULTISUBDIR)" \ +- THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib +- $(RM) $(RTSDIR)/libgna*$(soext) ++ $(MAKE) -C $(RTSDIR) \ ++ CC="`echo \"$(GCC_FOR_TARGET)\" \ ++ | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ ++ INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \ ++ CFLAGS="$(GNATLIBCFLAGS_FOR_C) $(PICFLAG_FOR_TARGET)" \ ++ FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ ++ srcdir=$(fsrcdir) \ ++ -f ../Makefile $(LIBGNAT_OBJS) ++ $(MAKE) -C $(RTSDIR) \ ++ CC="`echo \"$(GCC_FOR_TARGET)\" \ ++ | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ ++ ADA_INCLUDES="" \ ++ CFLAGS="$(GNATLIBCFLAGS) $(PICFLAG_FOR_TARGET)" \ ++ ADAFLAGS="$(GNATLIBFLAGS) $(PICFLAG_FOR_TARGET)" \ ++ FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ ++ srcdir=$(fsrcdir) \ ++ -f ../Makefile \ ++ $(GNATRTL_OBJS) ++ $(RM) $(RTSDIR)/libgna*$(soext) $(RTSDIR)/libgna*$(soext).1 + cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \ + | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared $(GNATLIBCFLAGS) \ + $(PICFLAG_FOR_TARGET) \ +- -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ ++ -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ + $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \ +- $(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ ++ $(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ + $(MISCLIB) -lm + cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \ + | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared $(GNATLIBCFLAGS) \ + $(PICFLAG_FOR_TARGET) \ +- -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ ++ -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ + $(GNATRTL_TASKING_OBJS) \ +- $(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ ++ $(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ + $(THREADSLIB) +- cd $(RTSDIR); $(LN_S) libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- libgnat$(soext) +- cd $(RTSDIR); $(LN_S) libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- libgnarl$(soext) ++ cd $(RTSDIR); for lib in gnat gnarl; do \ ++ l=lib$${lib}$(hyphen)$(LIBRARY_VERSION)$(soext); \ ++ $(LN_S) $$l.1 $$l; \ ++ done ++# Delete the object files, lest they be linked statically into the tools ++# executables. Only the .ali, .a and .so files must remain. ++ rm -f $(RTSDIR)/*.o ++ $(CHMOD) a-wx $(RTSDIR)/*.ali + + gnatlib-shared-dual: + $(MAKE) $(FLAGS_TO_PASS) \ +@@ -2830,17 +2662,15 @@ + GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib-shared-default +- $(MV) $(RTSDIR)/libgna*$(soext) . +- $(RM) ../stamp-gnatlib2-$(RTSDIR) ++ gnatlib ++ $(RM) $(RTSDIR)/*.o $(RTSDIR)/*.ali + $(MAKE) $(FLAGS_TO_PASS) \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ + GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ + GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib +- $(MV) libgna*$(soext) $(RTSDIR) ++ gnatlib-shared-default + + gnatlib-shared-dual-win32: + $(MAKE) $(FLAGS_TO_PASS) \ +@@ -2850,17 +2680,15 @@ + PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" \ + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib-shared-win32 +- $(MV) $(RTSDIR)/libgna*$(soext) . +- $(RM) ../stamp-gnatlib2-$(RTSDIR) ++ gnatlib ++ $(RM) $(RTSDIR)/*.o $(RTSDIR)/*.ali + $(MAKE) $(FLAGS_TO_PASS) \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ + GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ + GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib +- $(MV) libgna*$(soext) $(RTSDIR) ++ gnatlib-shared-win32 + + # ??? we need to add the option to support auto-import of arrays/records to + # the GNATLIBFLAGS when this will be supported by GNAT. At this point we will +@@ -2998,28 +2826,6 @@ + THREAD_KIND="$(THREAD_KIND)" \ + PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" gnatlib + +-# Compiling object files from source files. +- +-# Note that dependencies on obstack.h are not written +-# because that file is not part of GCC. +-# Dependencies on gvarargs.h are not written +-# because all that file does, when not compiling with GCC, +-# is include the system varargs.h. +- +-b_gnatl.adb : $(GNATLINK_OBJS) +- $(GNATBIND) $(ADA_INCLUDES) -o b_gnatl.adb gnatlink.ali +- +-b_gnatl.o : b_gnatl.adb +- $(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) -gnatws -gnatyN \ +- $< $(OUTPUT_OPTION) +- +-b_gnatm.adb : $(GNATMAKE_OBJS) +- $(GNATBIND) $(ADA_INCLUDES) -o b_gnatm.adb gnatmake.ali +- +-b_gnatm.o : b_gnatm.adb +- $(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) -gnatws -gnatyN \ +- $< $(OUTPUT_OPTION) +- + ADA_INCLUDE_DIR = $(libsubdir)/adainclude + ADA_RTL_OBJ_DIR = $(libsubdir)/adalib + +Index: b/src/gnattools/Makefile.in +=================================================================== +--- a/src/gnattools/Makefile.in ++++ b/src/gnattools/Makefile.in +@@ -5,12 +5,12 @@ + # it under the terms of the GNU General Public License as published by + # the Free Software Foundation; either version 3 of the License, or + # (at your option) any later version. +-# ++# + # This program is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + # GNU General Public License for more details. +-# ++# + # You should have received a copy of the GNU General Public License + # along with this program; see the file COPYING3. If not see + # . +@@ -18,6 +18,9 @@ + # Default target; must be first. + all: gnattools + ++.NOTPARALLEL: # don't run multiple gnatmakes in parallel in the same directory ++.SUFFIXES: ++ + # Standard autoconf-set variables. + SHELL = @SHELL@ + srcdir = @srcdir@ +@@ -35,112 +38,25 @@ + LN_S=@LN_S@ + target_noncanonical=@target_noncanonical@ + +-# Variables for the user (or the top level) to override. +-exeext = @EXEEXT@ +-objext=.o +-TRACE=no +-ADA_FOR_BUILD= +-ADA_FOR_TARGET= +-LDFLAGS= +-PWD_COMMAND = $${PWDCMD-pwd} +- +-# The tedious process of getting CFLAGS right. +-CFLAGS=-g +-GCC_WARN_CFLAGS = -W -Wall +-WARN_CFLAGS = @warn_cflags@ +- +-ADA_CFLAGS=@ADA_CFLAGS@ +- +-# Variables for gnattools. +-ADAFLAGS= -gnatpg -gnata +- +-# For finding the GCC build dir, which is used far too much +-GCC_DIR=../gcc +- +-# Absolute srcdir for gcc (why do we want absolute? I dunno) +-fsrcdir := $(shell cd $(srcdir)/../gcc/; ${PWD_COMMAND}) +- +-# Useful "subroutines" for the excess includes +-INCLUDES_FOR_SUBDIR = -I. -I.. -I../.. -I$(fsrcdir)/ada -I$(fsrcdir)/config \ +- -I$(fsrcdir)/../include -I$(fsrcdir) +-ADA_INCLUDES_FOR_SUBDIR = -I. -I$(fsrcdir)/ada +- + CXX_LFLAGS = \ + -B../../../$(target_noncanonical)/libstdc++-v3/src/.libs \ + -B../../../$(target_noncanonical)/libstdc++-v3/libsupc++/.libs \ + -L../../../$(target_noncanonical)/libstdc++-v3/src/.libs \ + -L../../../$(target_noncanonical)/libstdc++-v3/libsupc++/.libs + +-# Variables for gnattools, native +-TOOLS_FLAGS_TO_PASS_NATIVE= \ +- "CC=../../xgcc -B../../" \ +- "CXX=../../xg++ -B../../ $(CXX_LFLAGS)" \ +- "CFLAGS=$(CFLAGS) $(WARN_CFLAGS)" \ +- "LDFLAGS=$(LDFLAGS)" \ +- "ADAFLAGS=$(ADAFLAGS)" \ +- "ADA_CFLAGS=$(ADA_CFLAGS)" \ +- "INCLUDES=$(INCLUDES_FOR_SUBDIR)" \ +- "ADA_INCLUDES=-I- -I../rts $(ADA_INCLUDES_FOR_SUBDIR)"\ +- "exeext=$(exeext)" \ +- "fsrcdir=$(fsrcdir)" \ +- "srcdir=$(fsrcdir)" \ +- "GNATMAKE=../../gnatmake" \ +- "GNATLINK=../../gnatlink" \ +- "GNATBIND=../../gnatbind" \ +- "TOOLSCASE=native" +- +-# Variables for regnattools +-TOOLS_FLAGS_TO_PASS_RE= \ +- "CC=../../xgcc -B../../" \ +- "CXX=../../xg++ -B../../ $(CXX_LFLAGS)" \ +- "CFLAGS=$(CFLAGS)" \ +- "LDFLAGS=$(LDFLAGS)" \ +- "ADAFLAGS=$(ADAFLAGS)" \ +- "ADA_CFLAGS=$(ADA_CFLAGS)" \ +- "INCLUDES=$(INCLUDES_FOR_SUBDIR)" \ +- "ADA_INCLUDES=-I../rts $(ADA_INCLUDES_FOR_SUBDIR)"\ +- "exeext=$(exeext)" \ +- "fsrcdir=$(fsrcdir)" \ +- "srcdir=$(fsrcdir)" \ +- "GNATMAKE=../../gnatmake" \ +- "GNATLINK=../../gnatlink" \ +- "GNATBIND=../../gnatbind" \ +- "TOOLSCASE=cross" +- +-# Variables for gnattools, cross +-ifeq ($(build), $(host)) +- GNATMAKE_FOR_HOST=gnatmake +- GNATLINK_FOR_HOST=gnatlink +- GNATBIND_FOR_HOST=gnatbind +- GNATLS_FOR_HOST=gnatls +-else +- GNATMAKE_FOR_HOST=$(host_alias)-gnatmake +- GNATLINK_FOR_HOST=$(host_alias)-gnatlink +- GNATBIND_FOR_HOST=$(host_alias)-gnatbind +- GNATLS_FOR_HOST=$(host_alias)-gnatls +-endif +- +-# Put the host RTS dir first in the PATH to hide the default runtime +-# files that are among the sources +-RTS_DIR:=$(strip $(subst \,/,$(shell $(GNATLS_FOR_HOST) -v | grep adalib ))) +- +-TOOLS_FLAGS_TO_PASS_CROSS= \ +- "CC=$(CC)" \ +- "CXX=$(CXX)" \ +- "CFLAGS=$(CFLAGS) $(WARN_CFLAGS)" \ +- "LDFLAGS=$(LDFLAGS)" \ +- "ADAFLAGS=$(ADAFLAGS)" \ +- "ADA_CFLAGS=$(ADA_CFLAGS)" \ +- "INCLUDES=$(INCLUDES_FOR_SUBDIR)" \ +- "ADA_INCLUDES=-I$(RTS_DIR)/../adainclude -I$(RTS_DIR) $(ADA_INCLUDES_FOR_SUBDIR)" \ +- "exeext=$(exeext)" \ +- "fsrcdir=$(fsrcdir)" \ +- "srcdir=$(fsrcdir)" \ +- "GNATMAKE=$(GNATMAKE_FOR_HOST)" \ +- "GNATLINK=$(GNATLINK_FOR_HOST)" \ +- "GNATBIND=$(GNATBIND_FOR_HOST)" \ +- "TOOLSCASE=cross" \ +- "LIBGNAT=" ++CFLAGS=-O2 -Wall ++INCLUDES = -I@srcdir@/../gcc/ada -I@srcdir@/../gcc ++ADA_CFLAGS=-O2 -gnatn ++ADA_INCLUDES=-nostdinc -I- -I. -I../gcc/ada/rts -I@srcdir@/../gcc/ada ++LIB_VERSION=$(strip $(shell grep ' Library_Version :' \ ++ @srcdir@/../gcc/ada/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/')) ++SHARED_ADA_LIBS := -L../gcc/ada/rts -lgnat-$(LIB_VERSION) ++STATIC_ADA_LIBS := ../gcc/ada/rts/libgnat.a ++STATIC_GCC_LIBS := ../gcc/libcommon-target.a ../gcc/libcommon.a ../libcpp/libcpp.a \ ++../libbacktrace/.libs/libbacktrace.a ../libiberty/libiberty.a ++ ++# We will use the just-built compiler to compile and link everything. ++GCC=../gcc/xgcc -B../gcc/ + + # File lists + # ---------- +@@ -149,116 +65,228 @@ + EXTRA_GNATTOOLS = @EXTRA_GNATTOOLS@ + TOOLS_TARGET_PAIRS = @TOOLS_TARGET_PAIRS@ + ++# Stage 1 builds xgcc and gnatbind; we can use them to build ++# gnatmake-static and gnatlink-static, then use gnatmake-static and ++# gnatlink-static to build the other tools. The reason we first build ++# statically-linked versions of gnatmake and gnatlink is so we can run ++# them with confidence on all build platforms, without LD_LIBRARY_PATH ++# or some such variable. ++ ++# The tools we will build using gnatmake-static and gnatlink-static. ++TOOLS := gnat gnatbind gnatchop gnatclean gnatfind gnatkr gnatls gnatlink ++TOOLS += gnatmake gnatname gnatprep gnatxref ++ ++# Since we don't have gnatmake, we must specify the full list of ++# object files necessary to build gnatmake and gnatlink. ++# TODO: remove from these lists the objects that are part of ++# libgnatvsn and libgnatprj. ++GNATLINK_OBJS = \ ++ali.o \ ++alloc.o \ ++butil.o \ ++casing.o \ ++csets.o \ ++debug.o \ ++fmap.o \ ++fname.o \ ++gnatlink.o \ ++gnatvsn.o \ ++hostparm.o \ ++indepsw.o \ ++namet.o \ ++opt.o \ ++osint.o \ ++output.o \ ++rident.o \ ++sdefault.o \ ++snames.o \ ++stylesw.o \ ++switch.o \ ++table.o \ ++targparm.o \ ++tree_io.o \ ++types.o \ ++validsw.o \ ++widechar.o ++ ++GNATMAKE_OBJS = \ ++ali-util.o \ ++ali.o \ ++alloc.o \ ++aspects.o \ ++atree.o \ ++binderr.o \ ++butil.o \ ++casing.o \ ++csets.o \ ++debug.o \ ++einfo.o\ ++elists.o \ ++err_vars.o \ ++errout.o \ ++erroutc.o \ ++errutil.o \ ++fmap.o \ ++fname-sf.o \ ++fname-uf.o \ ++fname.o \ ++gnatmake.o \ ++gnatvsn.o \ ++hostparm.o \ ++krunch.o \ ++lib.o \ ++make.o \ ++makeusg.o \ ++makeutl.o \ ++mlib-fil.o \ ++mlib-prj.o \ ++mlib-tgt.o \ ++mlib-tgt-specific.o \ ++mlib-utl.o \ ++mlib.o \ ++namet.o \ ++nlists.o \ ++opt.o \ ++osint-m.o \ ++osint.o \ ++output.o \ ++prj-attr-pm.o \ ++prj-attr.o \ ++prj-com.o \ ++prj-conf.o \ ++prj-dect.o \ ++prj-env.o \ ++prj-err.o \ ++prj-ext.o \ ++prj-nmsc.o \ ++prj-pars.o \ ++prj-part.o \ ++prj-pp.o \ ++prj-proc.o \ ++prj-strt.o \ ++prj-tree.o \ ++prj-util.o \ ++prj.o \ ++restrict.o \ ++rident.o \ ++scans.o \ ++scng.o \ ++sdefault.o \ ++sem_aux.o \ ++sfn_scan.o \ ++sinfo.o \ ++sinput-c.o \ ++sinput-p.o \ ++sinput.o \ ++snames.o \ ++stand.o \ ++stringt.o \ ++styleg.o \ ++stylesw.o \ ++switch-m.o \ ++switch.o \ ++table.o \ ++targparm.o \ ++tempdir.o \ ++tree_io.o \ ++types.o \ ++uintp.o \ ++uname.o \ ++urealp.o \ ++usage.o \ ++validsw.o \ ++widechar.o \ ++$(EXTRA_GNATMAKE_OBJS) ++ + # Makefile targets + # ---------------- + + .PHONY: gnattools gnattools-native gnattools-cross regnattools + gnattools: @default_gnattools_target@ + +-# Sanity check +-$(GCC_DIR)/stamp-gnatlib-rts: +- @if [ ! -f $(GCC_DIR)/stamp-gnatlib-rts ] ; \ +- then \ +- echo "Cannot build gnattools while gnatlib is out of date or unbuilt" ; \ +- false; \ +- else \ +- true; \ +- fi +- +- + # Build directory for the tools. Let's copy the target-dependent + # sources using the same mechanism as for gnatlib. The other sources are +-# accessed using the vpath directive in ada/Makefile.in ++# accessed using the vpath directive. ++ ++stamp-gnattools-sources: ++ $(LN_S) ../gcc/ada/sdefault.adb ../gcc/ada/snames.ads ../gcc/ada/snames.adb . ++ $(foreach PAIR,$(TOOLS_TARGET_PAIRS), \ ++ rm -f $(word 1,$(subst <, ,$(PAIR)));\ ++ $(LN_S) @srcdir@/../gcc/ada/$(word 2,$(subst <, ,$(PAIR))) \ ++ $(word 1,$(subst <, ,$(PAIR)));) ++ touch $@ ++ ++gnattools-native: ../gcc/ada/rts/libgnat-$(LIB_VERSION).so ++gnattools-native: stamp-gnattools-sources ++gnattools-native: $(TOOLS) ++ ++$(TOOLS) gnatcmd: | gnatmake-static gnatlink-static ++ ++vpath %.c @srcdir@/../gcc/ada:@srcdir@/../gcc ++vpath %.h @srcdir@/../gcc/ada ++vpath %.adb .:@srcdir@/../gcc/ada ++vpath %.ads @srcdir@/../gcc/ada ++ ++# gnatlink ++ ++gnatlink-static: $(GNATLINK_OBJS) b_gnatl.o link.o ++ $(GCC) -o $@ $^ ../gcc/ada/rts/libgnat.a $(STATIC_GCC_LIBS) ++ ++gnatlink: $(GNATLINK_OBJS) b_gnatl.o link.o ++ $(GCC) -o $@ $^ $(SHARED_ADA_LIBS) $(STATIC_GCC_LIBS) ++ ++b_gnatl.adb: $(GNATLINK_OBJS) ++ ../gcc/gnatbind -o $@ $(ADA_INCLUDES) gnatlink.ali ++ ++# gnatmake ++ ++gnatmake-static: $(GNATMAKE_OBJS) b_gnatm.o link.o ++ $(GCC) -o $@ $(ADA_CFLAGS) $^ $(STATIC_ADA_LIBS) $(STATIC_GCC_LIBS) ++ ++gnatmake: $(GNATMAKE_OBJS) b_gnatm.o link.o ++ $(GCC) -o $@ $(ADA_CFLAGS) $^ $(SHARED_ADA_LIBS) $(STATIC_GCC_LIBS) ++ ++b_gnatm.adb: $(GNATMAKE_OBJS) ++ ../gcc/gnatbind -o $@ $(ADA_INCLUDES) gnatmake.ali ++ ++# Other tools ++gnatkr: ++ ./gnatmake-static -c -b $@ $(ADA_CFLAGS) $(ADA_INCLUDES) \ ++ --GCC="$(GCC)" \ ++ --GNATBIND=../gcc/gnatbind ++ ./gnatlink-static -o $@ $@.ali $(ADA_INCLUDES) $(SHARED_ADA_LIBS) \ ++ --GCC="$(GCC) $(ADA_INCLUDES)" $(STATIC_GCC_LIBS) ++ ++gnat: gnatcmd ++ cp -lp $< $@ ++ ++gnatbind gnatchop gnatclean gnatcmd gnatfind gnatls gnatname gnatprep gnatxref: \ ++link.o ++ ./gnatmake-static -c -b $@ $(ADA_CFLAGS) $(ADA_INCLUDES) \ ++ --GCC="$(GCC)" \ ++ --GNATBIND=../gcc/gnatbind ++ ./gnatlink-static -o $@ $@.ali $^ \ ++ $(ADA_INCLUDES) $(SHARED_ADA_LIBS) $(STATIC_GCC_LIBS) \ ++ --GCC="$(GCC) $(ADA_INCLUDES)" ++ ++# Force compiling sdefault.adb, not .ads, to produce sdefault.o ++sdefault.o: sdefault.adb ++ ++sdefault.adb: stamp-gnattools-sources ++ ++# Because these sources don't exist when the Makefile is evaluated: ++snames.o: snames.adb snames.ads ++ ++snames.adb snames.ads: stamp-gnattools-sources ++ ++%.o: %.adb ++ $(GCC) -c -o $@ $< $(ADA_CFLAGS) $(ADA_INCLUDES) ++ ++%.o: %.ads ++ $(GCC) -c -o $@ $< $(ADA_CFLAGS) $(ADA_INCLUDES) + +-$(GCC_DIR)/stamp-tools: +- -rm -rf $(GCC_DIR)/ada/tools +- -mkdir -p $(GCC_DIR)/ada/tools +- -(cd $(GCC_DIR)/ada/tools; $(LN_S) ../sdefault.adb ../snames.ads ../snames.adb .) +- -$(foreach PAIR,$(TOOLS_TARGET_PAIRS), \ +- rm -f $(GCC_DIR)/ada/tools/$(word 1,$(subst <, ,$(PAIR)));\ +- $(LN_S) $(fsrcdir)/ada/$(word 2,$(subst <, ,$(PAIR))) \ +- $(GCC_DIR)/ada/tools/$(word 1,$(subst <, ,$(PAIR)));) +- touch $(GCC_DIR)/stamp-tools +- +-# gnatmake/link tools cannot always be built with gnatmake/link for bootstrap +-# reasons: gnatmake should be built with a recent compiler, a recent compiler +-# may not generate ALI files compatible with an old gnatmake so it is important +-# to be able to build gnatmake without a version of gnatmake around. Once +-# everything has been compiled once, gnatmake can be recompiled with itself +-# (see target regnattools) +-gnattools-native: $(GCC_DIR)/stamp-tools $(GCC_DIR)/stamp-gnatlib-rts +- # gnattools1 +- $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ +- $(TOOLS_FLAGS_TO_PASS_NATIVE) \ +- ../../gnatmake$(exeext) ../../gnatlink$(exeext) +- # gnattools2 +- $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ +- $(TOOLS_FLAGS_TO_PASS_NATIVE) common-tools +- +-# gnatmake/link can be built with recent gnatmake/link if they are available. +-# This is especially convenient for building cross tools or for rebuilding +-# the tools when the original bootstrap has already be done. +-regnattools: $(GCC_DIR)/stamp-gnatlib-rts +- # gnattools1-re +- $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ +- $(TOOLS_FLAGS_TO_PASS_RE) INCLUDES="" \ +- gnatmake-re gnatlink-re +- # gnattools2 +- $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ +- $(TOOLS_FLAGS_TO_PASS_NATIVE) common-tools +- +-gnattools-cross: $(GCC_DIR)/stamp-tools +- # gnattools1-re +- $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ +- $(TOOLS_FLAGS_TO_PASS_CROSS) INCLUDES="" \ +- gnatmake-re gnatlink-re +- # gnattools2 +- $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ +- $(TOOLS_FLAGS_TO_PASS_CROSS) common-tools +- # Rename cross tools to where the GCC makefile wants them when +- # installing. FIXME: installation should be done elsewhere. +- if [ -f $(GCC_DIR)/gnatbind$(exeext) ] ; then \ +- mv $(GCC_DIR)/gnatbind$(exeext) $(GCC_DIR)/gnatbind-cross$(exeext); \ +- fi +- if [ -f $(GCC_DIR)/gnatchop$(exeext) ] ; then \ +- mv $(GCC_DIR)/gnatchop$(exeext) $(GCC_DIR)/gnatchop-cross$(exeext); \ +- fi +- if [ -f $(GCC_DIR)/gnat$(exeext) ] ; then \ +- mv $(GCC_DIR)/gnat$(exeext) $(GCC_DIR)/gnat-cross$(exeext); \ +- fi +- if [ -f $(GCC_DIR)/gnatkr$(exeext) ] ; then \ +- mv $(GCC_DIR)/gnatkr$(exeext) $(GCC_DIR)/gnatkr-cross$(exeext); \ +- fi +- if [ -f $(GCC_DIR)/gnatlink$(exeext) ] ; then \ +- mv $(GCC_DIR)/gnatlink$(exeext) $(GCC_DIR)/gnatlink-cross$(exeext); \ +- fi +- if [ -f $(GCC_DIR)/gnatls$(exeext) ] ; then \ +- mv $(GCC_DIR)/gnatls$(exeext) $(GCC_DIR)/gnatls-cross$(exeext); \ +- fi +- if [ -f $(GCC_DIR)/gnatmake$(exeext) ] ; then \ +- mv $(GCC_DIR)/gnatmake$(exeext) $(GCC_DIR)/gnatmake-cross$(exeext); \ +- fi +- if [ -f $(GCC_DIR)/gnatmem$(exeext) ] ; then \ +- mv $(GCC_DIR)/gnatmem$(exeext) $(GCC_DIR)/gnatmem-cross$(exeext); \ +- fi +- if [ -f $(GCC_DIR)/gnatname$(exeext) ] ; then \ +- mv $(GCC_DIR)/gnatname$(exeext) $(GCC_DIR)/gnatname-cross$(exeext); \ +- fi +- if [ -f $(GCC_DIR)/gnatprep$(exeext) ] ; then \ +- mv $(GCC_DIR)/gnatprep$(exeext) $(GCC_DIR)/gnatprep-cross$(exeext); \ +- fi +- if [ -f $(GCC_DIR)/gnatxref$(exeext) ] ; then \ +- mv $(GCC_DIR)/gnatxref$(exeext) $(GCC_DIR)/gnatxref-cross$(exeext); \ +- fi +- if [ -f $(GCC_DIR)/gnatfind$(exeext) ] ; then \ +- mv $(GCC_DIR)/gnatfind$(exeext) $(GCC_DIR)/gnatfind-cross$(exeext); \ +- fi +- if [ -f $(GCC_DIR)/gnatclean$(exeext) ] ; then \ +- mv $(GCC_DIR)/gnatclean$(exeext) $(GCC_DIR)/gnatclean-cross$(exeext); \ +- fi +- if [ -f $(GCC_DIR)/gnatsym$(exeext) ] ; then \ +- mv $(GCC_DIR)/gnatsym$(exeext) $(GCC_DIR)/gnatsym-cross$(exeext); \ +- fi ++%.o: %.c ++ $(GCC) -c -o $@ $< $(CFLAGS) $(INCLUDES) + + # Other + # ----- +@@ -288,6 +316,7 @@ + + # Installation rules. + install: ++ $(INSTALL) -s gnatmake gnatlink $(TOOLS) $(DESTDIR)$(bindir) + + install-strip: install + +@@ -301,8 +330,10 @@ + + # Cleaning rules. + mostlyclean: ++ $(RM) gnatmake gnatlink $(TOOLS) *.o *.ali + + clean: ++ $(RM) *.ads *.adb stamp-gnattools-sources + + distclean: + $(RM) Makefile config.status config.log +Index: b/src/libada/Makefile.in +=================================================================== +--- a/src/libada/Makefile.in ++++ b/src/libada/Makefile.in +@@ -64,7 +64,7 @@ + -fexceptions -DIN_RTS @have_getipinfo@ + + host_subdir = @host_subdir@ +-GCC_DIR=$(MULTIBUILDTOP)../../$(host_subdir)/gcc ++GCC_DIR=$(MULTIBUILDTOP)../$(host_subdir)/gcc + + target_noncanonical:=@target_noncanonical@ + version := $(shell cat $(srcdir)/../gcc/BASE-VER) +Index: b/src/Makefile.def +=================================================================== +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -109,7 +109,20 @@ + missing=distclean; + missing=maintainer-clean; }; + host_modules= { module= utils; no_check=true; }; +-host_modules= { module= gnattools; }; ++host_modules= { module= libada; no_install=true; no_check=true; ++ missing= info; ++ missing= dvi; ++ missing= html; ++ missing= TAGS; ++ missing= install-info; ++ missing= installcheck; }; ++host_modules= { module= gnattools; no_check=true; ++ missing= info; ++ missing= dvi; ++ missing= html; ++ missing= TAGS; ++ missing= install-info; ++ missing= installcheck; }; + host_modules= { module= lto-plugin; bootstrap=true; + extra_configure_flags=--enable-shared; }; + +@@ -148,7 +161,13 @@ + target_modules = { module= zlib; }; + target_modules = { module= boehm-gc; }; + target_modules = { module= rda; }; +-target_modules = { module= libada; }; ++target_modules = { module= libada; no_install=true; no_check=true; ++ missing= info; ++ missing= dvi; ++ missing= html; ++ missing= TAGS; ++ missing= install-info; ++ missing= installcheck; }; + target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; }; + target_modules = { module= libitm; lib_path=.libs; }; + target_modules = { module= libatomic; lib_path=.libs; }; +@@ -335,7 +354,7 @@ + + dependencies = { module=all-fixincludes; on=all-libiberty; }; + +-dependencies = { module=all-gnattools; on=all-target-libada; }; ++dependencies = { module=all-gnattools; on=all-libada; }; + dependencies = { module=all-gnattools; on=all-target-libstdc++-v3; }; + + dependencies = { module=all-lto-plugin; on=all-libiberty; }; +Index: b/src/Makefile.in +=================================================================== +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -924,6 +924,7 @@ + maybe-configure-tk \ + maybe-configure-libtermcap \ + maybe-configure-utils \ ++ maybe-configure-libada \ + maybe-configure-gnattools \ + maybe-configure-lto-plugin + .PHONY: configure-target +@@ -1071,6 +1072,7 @@ + all-host: maybe-all-tk + all-host: maybe-all-libtermcap + all-host: maybe-all-utils ++all-host: maybe-all-libada + all-host: maybe-all-gnattools + @if lto-plugin-no-bootstrap + all-host: maybe-all-lto-plugin +@@ -1171,6 +1173,7 @@ + info-host: maybe-info-tk + info-host: maybe-info-libtermcap + info-host: maybe-info-utils ++info-host: maybe-info-libada + info-host: maybe-info-gnattools + info-host: maybe-info-lto-plugin + +@@ -1254,6 +1257,7 @@ + dvi-host: maybe-dvi-tk + dvi-host: maybe-dvi-libtermcap + dvi-host: maybe-dvi-utils ++dvi-host: maybe-dvi-libada + dvi-host: maybe-dvi-gnattools + dvi-host: maybe-dvi-lto-plugin + +@@ -1337,6 +1341,7 @@ + pdf-host: maybe-pdf-tk + pdf-host: maybe-pdf-libtermcap + pdf-host: maybe-pdf-utils ++pdf-host: maybe-pdf-libada + pdf-host: maybe-pdf-gnattools + pdf-host: maybe-pdf-lto-plugin + +@@ -1420,6 +1425,7 @@ + html-host: maybe-html-tk + html-host: maybe-html-libtermcap + html-host: maybe-html-utils ++html-host: maybe-html-libada + html-host: maybe-html-gnattools + html-host: maybe-html-lto-plugin + +@@ -1503,6 +1509,7 @@ + TAGS-host: maybe-TAGS-tk + TAGS-host: maybe-TAGS-libtermcap + TAGS-host: maybe-TAGS-utils ++TAGS-host: maybe-TAGS-libada + TAGS-host: maybe-TAGS-gnattools + TAGS-host: maybe-TAGS-lto-plugin + +@@ -1586,6 +1593,7 @@ + install-info-host: maybe-install-info-tk + install-info-host: maybe-install-info-libtermcap + install-info-host: maybe-install-info-utils ++install-info-host: maybe-install-info-libada + install-info-host: maybe-install-info-gnattools + install-info-host: maybe-install-info-lto-plugin + +@@ -1669,6 +1677,7 @@ + install-pdf-host: maybe-install-pdf-tk + install-pdf-host: maybe-install-pdf-libtermcap + install-pdf-host: maybe-install-pdf-utils ++install-pdf-host: maybe-install-pdf-libada + install-pdf-host: maybe-install-pdf-gnattools + install-pdf-host: maybe-install-pdf-lto-plugin + +@@ -1752,6 +1761,7 @@ + install-html-host: maybe-install-html-tk + install-html-host: maybe-install-html-libtermcap + install-html-host: maybe-install-html-utils ++install-html-host: maybe-install-html-libada + install-html-host: maybe-install-html-gnattools + install-html-host: maybe-install-html-lto-plugin + +@@ -1835,6 +1845,7 @@ + installcheck-host: maybe-installcheck-tk + installcheck-host: maybe-installcheck-libtermcap + installcheck-host: maybe-installcheck-utils ++installcheck-host: maybe-installcheck-libada + installcheck-host: maybe-installcheck-gnattools + installcheck-host: maybe-installcheck-lto-plugin + +@@ -1918,6 +1929,7 @@ + mostlyclean-host: maybe-mostlyclean-tk + mostlyclean-host: maybe-mostlyclean-libtermcap + mostlyclean-host: maybe-mostlyclean-utils ++mostlyclean-host: maybe-mostlyclean-libada + mostlyclean-host: maybe-mostlyclean-gnattools + mostlyclean-host: maybe-mostlyclean-lto-plugin + +@@ -2001,6 +2013,7 @@ + clean-host: maybe-clean-tk + clean-host: maybe-clean-libtermcap + clean-host: maybe-clean-utils ++clean-host: maybe-clean-libada + clean-host: maybe-clean-gnattools + clean-host: maybe-clean-lto-plugin + +@@ -2084,6 +2097,7 @@ + distclean-host: maybe-distclean-tk + distclean-host: maybe-distclean-libtermcap + distclean-host: maybe-distclean-utils ++distclean-host: maybe-distclean-libada + distclean-host: maybe-distclean-gnattools + distclean-host: maybe-distclean-lto-plugin + +@@ -2167,6 +2181,7 @@ + maintainer-clean-host: maybe-maintainer-clean-tk + maintainer-clean-host: maybe-maintainer-clean-libtermcap + maintainer-clean-host: maybe-maintainer-clean-utils ++maintainer-clean-host: maybe-maintainer-clean-libada + maintainer-clean-host: maybe-maintainer-clean-gnattools + maintainer-clean-host: maybe-maintainer-clean-lto-plugin + +@@ -2305,6 +2320,7 @@ + maybe-check-tk \ + maybe-check-libtermcap \ + maybe-check-utils \ ++ maybe-check-libada \ + maybe-check-gnattools \ + maybe-check-lto-plugin + +@@ -2414,6 +2430,7 @@ + maybe-install-tk \ + maybe-install-libtermcap \ + maybe-install-utils \ ++ maybe-install-libada \ + maybe-install-gnattools \ + maybe-install-lto-plugin + +@@ -2461,6 +2478,7 @@ + maybe-install-tk \ + maybe-install-libtermcap \ + maybe-install-utils \ ++ maybe-install-libada \ + maybe-install-gnattools \ + maybe-install-lto-plugin + +@@ -2564,6 +2582,7 @@ + maybe-install-strip-tk \ + maybe-install-strip-libtermcap \ + maybe-install-strip-utils \ ++ maybe-install-strip-libada \ + maybe-install-strip-gnattools \ + maybe-install-strip-lto-plugin + +@@ -29883,6 +29902,331 @@ + + + ++.PHONY: configure-libada maybe-configure-libada ++maybe-configure-libada: ++@if gcc-bootstrap ++configure-libada: stage_current ++@endif gcc-bootstrap ++@if libada ++maybe-configure-libada: configure-libada ++configure-libada: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ test ! -f $(HOST_SUBDIR)/libada/Makefile || exit 0; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libada ; \ ++ $(HOST_EXPORTS) \ ++ echo Configuring in $(HOST_SUBDIR)/libada; \ ++ cd "$(HOST_SUBDIR)/libada" || exit 1; \ ++ case $(srcdir) in \ ++ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ ++ *) topdir=`echo $(HOST_SUBDIR)/libada/ | \ ++ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ ++ esac; \ ++ srcdiroption="--srcdir=$${topdir}/libada"; \ ++ libsrcdir="$$s/libada"; \ ++ $(SHELL) $${libsrcdir}/configure \ ++ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ ++ --target=${target_alias} $${srcdiroption} \ ++ || exit 1 ++@endif libada ++ ++ ++ ++ ++ ++.PHONY: all-libada maybe-all-libada ++maybe-all-libada: ++@if gcc-bootstrap ++all-libada: stage_current ++@endif gcc-bootstrap ++@if libada ++TARGET-libada=all ++maybe-all-libada: all-libada ++all-libada: configure-libada ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ (cd $(HOST_SUBDIR)/libada && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(STAGE1_FLAGS_TO_PASS) \ ++ $(TARGET-libada)) ++@endif libada ++ ++ ++ ++ ++.PHONY: check-libada maybe-check-libada ++maybe-check-libada: ++@if libada ++maybe-check-libada: check-libada ++ ++check-libada: ++ ++@endif libada ++ ++.PHONY: install-libada maybe-install-libada ++maybe-install-libada: ++@if libada ++maybe-install-libada: install-libada ++ ++install-libada: ++ ++@endif libada ++ ++.PHONY: install-strip-libada maybe-install-strip-libada ++maybe-install-strip-libada: ++@if libada ++maybe-install-strip-libada: install-strip-libada ++ ++install-strip-libada: ++ ++@endif libada ++ ++# Other targets (info, dvi, pdf, etc.) ++ ++.PHONY: maybe-info-libada info-libada ++maybe-info-libada: ++@if libada ++maybe-info-libada: info-libada ++ ++# libada doesn't support info. ++info-libada: ++ ++@endif libada ++ ++.PHONY: maybe-dvi-libada dvi-libada ++maybe-dvi-libada: ++@if libada ++maybe-dvi-libada: dvi-libada ++ ++# libada doesn't support dvi. ++dvi-libada: ++ ++@endif libada ++ ++.PHONY: maybe-pdf-libada pdf-libada ++maybe-pdf-libada: ++@if libada ++maybe-pdf-libada: pdf-libada ++ ++pdf-libada: \ ++ configure-libada ++ @: $(MAKE); $(unstage) ++ @[ -f ./libada/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing pdf in libada" ; \ ++ (cd $(HOST_SUBDIR)/libada && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ pdf) \ ++ || exit 1 ++ ++@endif libada ++ ++.PHONY: maybe-html-libada html-libada ++maybe-html-libada: ++@if libada ++maybe-html-libada: html-libada ++ ++# libada doesn't support html. ++html-libada: ++ ++@endif libada ++ ++.PHONY: maybe-TAGS-libada TAGS-libada ++maybe-TAGS-libada: ++@if libada ++maybe-TAGS-libada: TAGS-libada ++ ++# libada doesn't support TAGS. ++TAGS-libada: ++ ++@endif libada ++ ++.PHONY: maybe-install-info-libada install-info-libada ++maybe-install-info-libada: ++@if libada ++maybe-install-info-libada: install-info-libada ++ ++# libada doesn't support install-info. ++install-info-libada: ++ ++@endif libada ++ ++.PHONY: maybe-install-pdf-libada install-pdf-libada ++maybe-install-pdf-libada: ++@if libada ++maybe-install-pdf-libada: install-pdf-libada ++ ++install-pdf-libada: \ ++ configure-libada \ ++ pdf-libada ++ @: $(MAKE); $(unstage) ++ @[ -f ./libada/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing install-pdf in libada" ; \ ++ (cd $(HOST_SUBDIR)/libada && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-pdf) \ ++ || exit 1 ++ ++@endif libada ++ ++.PHONY: maybe-install-html-libada install-html-libada ++maybe-install-html-libada: ++@if libada ++maybe-install-html-libada: install-html-libada ++ ++install-html-libada: \ ++ configure-libada \ ++ html-libada ++ @: $(MAKE); $(unstage) ++ @[ -f ./libada/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing install-html in libada" ; \ ++ (cd $(HOST_SUBDIR)/libada && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-html) \ ++ || exit 1 ++ ++@endif libada ++ ++.PHONY: maybe-installcheck-libada installcheck-libada ++maybe-installcheck-libada: ++@if libada ++maybe-installcheck-libada: installcheck-libada ++ ++# libada doesn't support installcheck. ++installcheck-libada: ++ ++@endif libada ++ ++.PHONY: maybe-mostlyclean-libada mostlyclean-libada ++maybe-mostlyclean-libada: ++@if libada ++maybe-mostlyclean-libada: mostlyclean-libada ++ ++mostlyclean-libada: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libada/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing mostlyclean in libada" ; \ ++ (cd $(HOST_SUBDIR)/libada && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ mostlyclean) \ ++ || exit 1 ++ ++@endif libada ++ ++.PHONY: maybe-clean-libada clean-libada ++maybe-clean-libada: ++@if libada ++maybe-clean-libada: clean-libada ++ ++clean-libada: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libada/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing clean in libada" ; \ ++ (cd $(HOST_SUBDIR)/libada && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ clean) \ ++ || exit 1 ++ ++@endif libada ++ ++.PHONY: maybe-distclean-libada distclean-libada ++maybe-distclean-libada: ++@if libada ++maybe-distclean-libada: distclean-libada ++ ++distclean-libada: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libada/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing distclean in libada" ; \ ++ (cd $(HOST_SUBDIR)/libada && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ distclean) \ ++ || exit 1 ++ ++@endif libada ++ ++.PHONY: maybe-maintainer-clean-libada maintainer-clean-libada ++maybe-maintainer-clean-libada: ++@if libada ++maybe-maintainer-clean-libada: maintainer-clean-libada ++ ++maintainer-clean-libada: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libada/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing maintainer-clean in libada" ; \ ++ (cd $(HOST_SUBDIR)/libada && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ maintainer-clean) \ ++ || exit 1 ++ ++@endif libada ++ ++ ++ + .PHONY: configure-gnattools maybe-configure-gnattools + maybe-configure-gnattools: + @if gcc-bootstrap +@@ -29943,12 +30287,6 @@ + maybe-check-gnattools: check-gnattools + + check-gnattools: +- @: $(MAKE); $(unstage) +- @r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(HOST_EXPORTS) \ +- (cd $(HOST_SUBDIR)/gnattools && \ +- $(MAKE) $(FLAGS_TO_PASS) check) + + @endif gnattools + +@@ -29989,24 +30327,8 @@ + @if gnattools + maybe-info-gnattools: info-gnattools + +-info-gnattools: \ +- configure-gnattools +- @: $(MAKE); $(unstage) +- @[ -f ./gnattools/Makefile ] || exit 0; \ +- r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(HOST_EXPORTS) \ +- for flag in $(EXTRA_HOST_FLAGS) ; do \ +- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +- done; \ +- echo "Doing info in gnattools" ; \ +- (cd $(HOST_SUBDIR)/gnattools && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +- "RANLIB=$${RANLIB}" \ +- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +- info) \ +- || exit 1 ++# gnattools doesn't support info. ++info-gnattools: + + @endif gnattools + +@@ -30015,24 +30337,8 @@ + @if gnattools + maybe-dvi-gnattools: dvi-gnattools + +-dvi-gnattools: \ +- configure-gnattools +- @: $(MAKE); $(unstage) +- @[ -f ./gnattools/Makefile ] || exit 0; \ +- r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(HOST_EXPORTS) \ +- for flag in $(EXTRA_HOST_FLAGS) ; do \ +- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +- done; \ +- echo "Doing dvi in gnattools" ; \ +- (cd $(HOST_SUBDIR)/gnattools && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +- "RANLIB=$${RANLIB}" \ +- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +- dvi) \ +- || exit 1 ++# gnattools doesn't support dvi. ++dvi-gnattools: + + @endif gnattools + +@@ -30067,24 +30373,8 @@ + @if gnattools + maybe-html-gnattools: html-gnattools + +-html-gnattools: \ +- configure-gnattools +- @: $(MAKE); $(unstage) +- @[ -f ./gnattools/Makefile ] || exit 0; \ +- r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(HOST_EXPORTS) \ +- for flag in $(EXTRA_HOST_FLAGS) ; do \ +- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +- done; \ +- echo "Doing html in gnattools" ; \ +- (cd $(HOST_SUBDIR)/gnattools && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +- "RANLIB=$${RANLIB}" \ +- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +- html) \ +- || exit 1 ++# gnattools doesn't support html. ++html-gnattools: + + @endif gnattools + +@@ -30093,24 +30383,8 @@ + @if gnattools + maybe-TAGS-gnattools: TAGS-gnattools + +-TAGS-gnattools: \ +- configure-gnattools +- @: $(MAKE); $(unstage) +- @[ -f ./gnattools/Makefile ] || exit 0; \ +- r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(HOST_EXPORTS) \ +- for flag in $(EXTRA_HOST_FLAGS) ; do \ +- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +- done; \ +- echo "Doing TAGS in gnattools" ; \ +- (cd $(HOST_SUBDIR)/gnattools && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +- "RANLIB=$${RANLIB}" \ +- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +- TAGS) \ +- || exit 1 ++# gnattools doesn't support TAGS. ++TAGS-gnattools: + + @endif gnattools + +@@ -30119,25 +30393,8 @@ + @if gnattools + maybe-install-info-gnattools: install-info-gnattools + +-install-info-gnattools: \ +- configure-gnattools \ +- info-gnattools +- @: $(MAKE); $(unstage) +- @[ -f ./gnattools/Makefile ] || exit 0; \ +- r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(HOST_EXPORTS) \ +- for flag in $(EXTRA_HOST_FLAGS) ; do \ +- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +- done; \ +- echo "Doing install-info in gnattools" ; \ +- (cd $(HOST_SUBDIR)/gnattools && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +- "RANLIB=$${RANLIB}" \ +- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +- install-info) \ +- || exit 1 ++# gnattools doesn't support install-info. ++install-info-gnattools: + + @endif gnattools + +@@ -30200,24 +30457,8 @@ + @if gnattools + maybe-installcheck-gnattools: installcheck-gnattools + +-installcheck-gnattools: \ +- configure-gnattools +- @: $(MAKE); $(unstage) +- @[ -f ./gnattools/Makefile ] || exit 0; \ +- r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(HOST_EXPORTS) \ +- for flag in $(EXTRA_HOST_FLAGS) ; do \ +- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +- done; \ +- echo "Doing installcheck in gnattools" ; \ +- (cd $(HOST_SUBDIR)/gnattools && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +- "RANLIB=$${RANLIB}" \ +- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +- installcheck) \ +- || exit 1 ++# gnattools doesn't support installcheck. ++installcheck-gnattools: + + @endif gnattools + +@@ -42405,13 +42646,8 @@ + @if target-libada + maybe-check-target-libada: check-target-libada + ++# Dummy target for uncheckable module. + check-target-libada: +- @: $(MAKE); $(unstage) +- @r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(NORMAL_TARGET_EXPORTS) \ +- (cd $(TARGET_SUBDIR)/libada && \ +- $(MAKE) $(TARGET_FLAGS_TO_PASS) check) + + @endif target-libada + +@@ -42420,13 +42656,8 @@ + @if target-libada + maybe-install-target-libada: install-target-libada + +-install-target-libada: installdirs +- @: $(MAKE); $(unstage) +- @r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(NORMAL_TARGET_EXPORTS) \ +- (cd $(TARGET_SUBDIR)/libada && \ +- $(MAKE) $(TARGET_FLAGS_TO_PASS) install) ++# Dummy target for uninstallable. ++install-target-libada: + + @endif target-libada + +@@ -42435,13 +42666,8 @@ + @if target-libada + maybe-install-strip-target-libada: install-strip-target-libada + +-install-strip-target-libada: installdirs +- @: $(MAKE); $(unstage) +- @r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(NORMAL_TARGET_EXPORTS) \ +- (cd $(TARGET_SUBDIR)/libada && \ +- $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) ++# Dummy target for uninstallable. ++install-strip-target-libada: + + @endif target-libada + +@@ -42452,24 +42678,8 @@ + @if target-libada + maybe-info-target-libada: info-target-libada + +-info-target-libada: \ +- configure-target-libada +- @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \ +- r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(NORMAL_TARGET_EXPORTS) \ +- echo "Doing info in $(TARGET_SUBDIR)/libada" ; \ +- for flag in $(EXTRA_TARGET_FLAGS); do \ +- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +- done; \ +- (cd $(TARGET_SUBDIR)/libada && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +- "RANLIB=$${RANLIB}" \ +- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +- info) \ +- || exit 1 ++# libada doesn't support info. ++info-target-libada: + + @endif target-libada + +@@ -42478,24 +42688,8 @@ + @if target-libada + maybe-dvi-target-libada: dvi-target-libada + +-dvi-target-libada: \ +- configure-target-libada +- @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \ +- r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(NORMAL_TARGET_EXPORTS) \ +- echo "Doing dvi in $(TARGET_SUBDIR)/libada" ; \ +- for flag in $(EXTRA_TARGET_FLAGS); do \ +- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +- done; \ +- (cd $(TARGET_SUBDIR)/libada && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +- "RANLIB=$${RANLIB}" \ +- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +- dvi) \ +- || exit 1 ++# libada doesn't support dvi. ++dvi-target-libada: + + @endif target-libada + +@@ -42530,24 +42724,8 @@ + @if target-libada + maybe-html-target-libada: html-target-libada + +-html-target-libada: \ +- configure-target-libada +- @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \ +- r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(NORMAL_TARGET_EXPORTS) \ +- echo "Doing html in $(TARGET_SUBDIR)/libada" ; \ +- for flag in $(EXTRA_TARGET_FLAGS); do \ +- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +- done; \ +- (cd $(TARGET_SUBDIR)/libada && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +- "RANLIB=$${RANLIB}" \ +- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +- html) \ +- || exit 1 ++# libada doesn't support html. ++html-target-libada: + + @endif target-libada + +@@ -42556,24 +42734,8 @@ + @if target-libada + maybe-TAGS-target-libada: TAGS-target-libada + +-TAGS-target-libada: \ +- configure-target-libada +- @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \ +- r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(NORMAL_TARGET_EXPORTS) \ +- echo "Doing TAGS in $(TARGET_SUBDIR)/libada" ; \ +- for flag in $(EXTRA_TARGET_FLAGS); do \ +- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +- done; \ +- (cd $(TARGET_SUBDIR)/libada && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +- "RANLIB=$${RANLIB}" \ +- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +- TAGS) \ +- || exit 1 ++# libada doesn't support TAGS. ++TAGS-target-libada: + + @endif target-libada + +@@ -42582,25 +42744,8 @@ + @if target-libada + maybe-install-info-target-libada: install-info-target-libada + +-install-info-target-libada: \ +- configure-target-libada \ +- info-target-libada +- @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \ +- r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(NORMAL_TARGET_EXPORTS) \ +- echo "Doing install-info in $(TARGET_SUBDIR)/libada" ; \ +- for flag in $(EXTRA_TARGET_FLAGS); do \ +- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +- done; \ +- (cd $(TARGET_SUBDIR)/libada && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +- "RANLIB=$${RANLIB}" \ +- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +- install-info) \ +- || exit 1 ++# libada doesn't support install-info. ++install-info-target-libada: + + @endif target-libada + +@@ -42663,24 +42808,8 @@ + @if target-libada + maybe-installcheck-target-libada: installcheck-target-libada + +-installcheck-target-libada: \ +- configure-target-libada +- @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \ +- r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(NORMAL_TARGET_EXPORTS) \ +- echo "Doing installcheck in $(TARGET_SUBDIR)/libada" ; \ +- for flag in $(EXTRA_TARGET_FLAGS); do \ +- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +- done; \ +- (cd $(TARGET_SUBDIR)/libada && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +- "RANLIB=$${RANLIB}" \ +- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +- installcheck) \ +- || exit 1 ++# libada doesn't support installcheck. ++installcheck-target-libada: + + @endif target-libada + +@@ -47248,7 +47377,7 @@ + all-stage4-fixincludes: maybe-all-stage4-libiberty + all-stageprofile-fixincludes: maybe-all-stageprofile-libiberty + all-stagefeedback-fixincludes: maybe-all-stagefeedback-libiberty +-all-gnattools: maybe-all-target-libada ++all-gnattools: maybe-all-libada + all-gnattools: maybe-all-target-libstdc++-v3 + all-lto-plugin: maybe-all-libiberty + +Index: b/src/configure.ac +=================================================================== +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -133,7 +133,7 @@ + + # these libraries are used by various programs built for the host environment + # +-host_libs="intl libiberty opcodes bfd readline tcl tk itcl libgui zlib libbacktrace libcpp libdecnumber gmp mpfr mpc isl cloog libelf libiconv" ++host_libs="intl libiberty opcodes bfd readline tcl tk itcl libgui zlib libbacktrace libcpp libdecnumber gmp mpfr mpc isl cloog libelf libiconv libada" + + # these tools are built for the host environment + # Note, the powerpc-eabi build depends on sim occurring before gdb in order to +@@ -265,7 +265,7 @@ + + # Some are only suitable for cross toolchains. + # Remove these if host=target. +-cross_only="target-libgloss target-newlib target-opcodes" ++cross_only="target-libgloss target-newlib target-opcodes target-libada" + + case $is_cross_compiler in + no) skipdirs="${skipdirs} ${cross_only}" ;; +Index: b/src/gcc/ada/gcc-interface/Make-lang.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/Make-lang.in ++++ b/src/gcc/ada/gcc-interface/Make-lang.in +@@ -87,10 +87,6 @@ + "INSTALL_DATA=$(INSTALL_DATA)" \ + "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" + +-# List of Ada tools to build and install +-ADA_TOOLS=gnatbind gnatchop gnat gnatkr gnatlink gnatls gnatmake \ +- gnatname gnatprep gnatxref gnatfind gnatclean gnatsym +- + # Say how to compile Ada programs. + .SUFFIXES: .ada .adb .ads + +@@ -635,13 +631,6 @@ + # Build hooks: + + ada.all.cross: +- for tool in $(ADA_TOOLS) ; do \ +- if [ -f $$tool$(exeext) ] ; \ +- then \ +- $(MV) $$tool$(exeext) $$tool-cross$(exeext); \ +- fi; \ +- done +- + ada.start.encap: + ada.rest.encap: + ada.man: +@@ -759,42 +748,7 @@ + # Install hooks: + # gnat1 is installed elsewhere as part of $(COMPILERS). + +-# Install the binder program as gnatbind (native) or $(prefix)gnatbind +-# (cross). $(prefix) comes from the --program-prefix configure option, +-# or from the --target option if the former is not specified. +-# Do the same for the rest of the Ada tools (gnatchop, gnat, gnatkr, +-# gnatlink, gnatls, gnatmake, gnatname, gnatprep, gnatxref, gnatfind, +-# gnatclean, gnatsym). +-# gnatsym is only built on some platforms, including VMS. +-# gnatdll is only used on Windows. +-# vxaddr2line is only used for cross VxWorks ports (it calls the underlying +-# cross addr2line). + ada.install-common: +- $(MKDIR) $(DESTDIR)$(bindir) +- -if [ -f gnat1$(exeext) ] ; \ +- then \ +- for tool in $(ADA_TOOLS) ; do \ +- install_name=`echo $$tool|sed '$(program_transform_name)'`$(exeext); \ +- $(RM) $(DESTDIR)$(bindir)/$$install_name; \ +- if [ -f $$tool-cross$(exeext) ] ; \ +- then \ +- $(INSTALL_PROGRAM) $$tool-cross$(exeext) $(DESTDIR)$(bindir)/$$install_name; \ +- else \ +- $(INSTALL_PROGRAM) $$tool$(exeext) $(DESTDIR)$(bindir)/$$install_name; \ +- fi ; \ +- done; \ +- $(RM) $(DESTDIR)$(bindir)/gnatdll$(exeext); \ +- $(INSTALL_PROGRAM) gnatdll$(exeext) $(DESTDIR)$(bindir)/gnatdll$(exeext); \ +- if [ -f vxaddr2line$(exeext) ] ; \ +- then \ +- $(RM) $(DESTDIR)$(bindir)/vxaddr2line$(exeext); \ +- $(INSTALL_PROGRAM) vxaddr2line$(exeext) $(DESTDIR)$(bindir)/vxaddr2line$(exeext); \ +- fi ; \ +- fi +- +-# +-# Finally, install the library +-# + -if [ -f gnat1$(exeext) ] ; \ + then \ + $(MAKE) $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) install-gnatlib; \ +@@ -810,10 +764,6 @@ + ada.install-plugin: + + ada.uninstall: +- for tool in $(ADA_TOOLS) ; do \ +- install_name=`echo $$tool|sed '$(program_transform_name)'`$(exeext); \ +- -$(RM) $(DESTDIR)$(bindir)/$$install_name; \ +- done + -$(RM) $(DESTDIR)$(tooldir)/bin/gnatdll$(exeext) + -$(RM) $(DESTDIR)$(tooldir)/bin/vxaddr2line$(exeext) + --- gcc-4.9-4.9.2.orig/debian/patches/ada-link-shlib.diff +++ gcc-4.9-4.9.2/debian/patches/ada-link-shlib.diff @@ -0,0 +1,89 @@ +# DP: In gnatlink, pass the options and libraries after objects to the +# DP: linker to avoid link failures with --as-needed. Closes: #680292. + +Index: b/src/gcc/ada/mlib-tgt-specific-linux.adb +=================================================================== +--- a/src/gcc/ada/mlib-tgt-specific-linux.adb ++++ b/src/gcc/ada/mlib-tgt-specific-linux.adb +@@ -81,19 +81,54 @@ + Version_Arg : String_Access; + Symbolic_Link_Needed : Boolean := False; + ++ N_Options : Argument_List := Options; ++ Options_Last : Natural := N_Options'Last; ++ -- After moving -lxxx to Options_2, N_Options up to index Options_Last ++ -- will contain the Options to pass to MLib.Utl.Gcc. ++ ++ Real_Options_2 : Argument_List (1 .. Options'Length); ++ Real_Options_2_Last : Natural := 0; ++ -- Real_Options_2 up to index Real_Options_2_Last will contain the ++ -- Options_2 to pass to MLib.Utl.Gcc. ++ + begin + if Opt.Verbose_Mode then + Write_Str ("building relocatable shared library "); + Write_Line (Lib_Path); + end if; + ++ -- Move all -lxxx to Options_2 ++ ++ declare ++ Index : Natural := N_Options'First; ++ Arg : String_Access; ++ ++ begin ++ while Index <= Options_Last loop ++ Arg := N_Options (Index); ++ ++ if Arg'Length > 2 ++ and then Arg (Arg'First .. Arg'First + 1) = "-l" ++ then ++ Real_Options_2_Last := Real_Options_2_Last + 1; ++ Real_Options_2 (Real_Options_2_Last) := Arg; ++ N_Options (Index .. Options_Last - 1) := ++ N_Options (Index + 1 .. Options_Last); ++ Options_Last := Options_Last - 1; ++ ++ else ++ Index := Index + 1; ++ end if; ++ end loop; ++ end; ++ + if Lib_Version = "" then + Utl.Gcc + (Output_File => Lib_Path, + Objects => Ofiles, +- Options => Options, ++ Options => N_Options (N_Options'First .. Options_Last), + Driver_Name => Driver_Name, +- Options_2 => No_Argument_List); ++ Options_2 => Real_Options_2 (1 .. Real_Options_2_Last)); + + else + declare +@@ -111,18 +146,20 @@ + Utl.Gcc + (Output_File => Lib_Version, + Objects => Ofiles, +- Options => Options & Version_Arg, ++ Options => N_Options (N_Options'First .. Options_Last) ++ & Version_Arg, + Driver_Name => Driver_Name, +- Options_2 => No_Argument_List); ++ Options_2 => Real_Options_2 (1 .. Real_Options_2_Last)); + Symbolic_Link_Needed := Lib_Version /= Lib_Path; + + else + Utl.Gcc + (Output_File => Lib_Dir & Directory_Separator & Lib_Version, + Objects => Ofiles, +- Options => Options & Version_Arg, ++ Options => N_Options (N_Options'First .. Options_Last) ++ & Version_Arg, + Driver_Name => Driver_Name, +- Options_2 => No_Argument_List); ++ Options_2 => Real_Options_2 (1 .. Real_Options_2_Last)); + Symbolic_Link_Needed := + Lib_Dir & Directory_Separator & Lib_Version /= Lib_Path; + end if; --- gcc-4.9-4.9.2.orig/debian/patches/ada-mips.diff +++ gcc-4.9-4.9.2/debian/patches/ada-mips.diff @@ -0,0 +1,33 @@ +# DP: Improve support for mips. + +Index: b/src/gcc/ada/gcc-interface/Makefile.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -1809,10 +1809,15 @@ ifeq ($(strip $(filter-out mips linux%,$ + s-taprop.adb) of Int; +- -- Vector containing the integer values of a Uint value +- +- -- Note: An earlier version of this package used pointers of arrays of Ints +- -- (dynamically allocated) for the Uint type. The change leads to a few +- -- less natural idioms used throughout this code, but eliminates all uses +- -- of the heap except for the table package itself. For example, Uint +- -- parameters are often converted to UI_Vectors for internal manipulation. +- -- This is done by creating the local UI_Vector using the function N_Digits +- -- on the Uint to find the size needed for the vector, and then calling +- -- Init_Operand to copy the values out of the table into the vector. +- + ----------------- + -- Subprograms -- + ----------------- +@@ -264,22 +252,6 @@ + -- function is used for capacity checks, and it can be one bit off + -- without affecting its usage. + +- function Vector_To_Uint +- (In_Vec : UI_Vector; +- Negative : Boolean) return Uint; +- -- Functions that calculate values in UI_Vectors, call this function to +- -- create and return the Uint value. In_Vec contains the multiple precision +- -- (Base) representation of a non-negative value. Leading zeroes are +- -- permitted. Negative is set if the desired result is the negative of the +- -- given value. The result will be either the appropriate directly +- -- represented value, or a table entry in the proper canonical format is +- -- created and returned. +- -- +- -- Note that Init_Operand puts a signed value in the result vector, but +- -- Vector_To_Uint is always presented with a non-negative value. The +- -- processing of signs is something that is done by the caller before +- -- calling Vector_To_Uint. +- + --------------------- + -- Output Routines -- + --------------------- +@@ -522,6 +494,18 @@ + -- UI_Vector is defined for this purpose and some internal subprograms + -- used for converting from one to the other are defined. + ++ type UI_Vector is array (Pos range <>) of Int; ++ -- Vector containing the integer values of a Uint value ++ ++ -- Note: An earlier version of this package used pointers of arrays of Ints ++ -- (dynamically allocated) for the Uint type. The change leads to a few ++ -- less natural idioms used throughout this code, but eliminates all uses ++ -- of the heap except for the table package itself. For example, Uint ++ -- parameters are often converted to UI_Vectors for internal manipulation. ++ -- This is done by creating the local UI_Vector using the function N_Digits ++ -- on the Uint to find the size needed for the vector, and then calling ++ -- Init_Operand to copy the values out of the table into the vector. ++ + type Uint_Entry is record + Length : Pos; + -- Length of entry in Udigits table in digits (i.e. in words) --- gcc-4.9-4.9.2.orig/debian/patches/ada-s-osinte-gnu.ads.diff +++ gcc-4.9-4.9.2/debian/patches/ada-s-osinte-gnu.ads.diff @@ -0,0 +1,753 @@ +--- /dev/null 2012-01-30 20:41:15.189616186 +0100 ++++ b/src/gcc/ada/s-osinte-gnu.ads 2012-04-11 19:34:45.000000000 +0200 +@@ -0,0 +1,750 @@ ++------------------------------------------------------------------------------ ++-- -- ++-- GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS -- ++-- -- ++-- S Y S T E M . O S _ I N T E R F A C E -- ++-- -- ++-- S p e c -- ++-- -- ++-- Copyright (C) 1991-1994, Florida State University -- ++-- Copyright (C) 1995-2011, Free Software Foundation, Inc. -- ++-- -- ++-- GNARL is free software; you can redistribute it and/or modify it under -- ++-- terms of the GNU General Public License as published by the Free Soft- -- ++-- ware Foundation; either version 2, or (at your option) any later ver- -- ++-- sion. GNARL is distributed in the hope that it will be useful, but WITH- -- ++-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- ++-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- ++-- for more details. You should have received a copy of the GNU General -- ++-- Public License distributed with GNARL; see file COPYING. If not, write -- ++-- to the Free Software Foundation, 51 Franklin Street, Fifth Floor, -- ++-- Boston, MA 02110-1301, USA. -- ++-- -- ++-- As a special exception, if other files instantiate generics from this -- ++-- unit, or you link this unit with other files to produce an executable, -- ++-- this unit does not by itself cause the resulting executable to be -- ++-- covered by the GNU General Public License. This exception does not -- ++-- however invalidate any other reasons why the executable file might be -- ++-- covered by the GNU Public License. -- ++-- -- ++-- GNARL was developed by the GNARL team at Florida State University. -- ++-- Extensive contributions were provided by Ada Core Technologies, Inc. -- ++-- -- ++------------------------------------------------------------------------------ ++ ++-- This is the GNU/Hurd version of this package ++ ++-- This package encapsulates all direct interfaces to OS services ++-- that are needed by children of System. ++ ++-- PLEASE DO NOT add any with-clauses to this package or remove the pragma ++-- Preelaborate. This package is designed to be a bottom-level (leaf) package ++ ++with Interfaces.C; ++with Unchecked_Conversion; ++ ++package System.OS_Interface is ++ pragma Preelaborate; ++ ++ pragma Linker_Options ("-lpthread"); ++ pragma Linker_Options ("-lrt"); ++ ++ subtype int is Interfaces.C.int; ++ subtype char is Interfaces.C.char; ++ subtype short is Interfaces.C.short; ++ subtype long is Interfaces.C.long; ++ subtype unsigned is Interfaces.C.unsigned; ++ subtype unsigned_short is Interfaces.C.unsigned_short; ++ subtype unsigned_long is Interfaces.C.unsigned_long; ++ subtype unsigned_char is Interfaces.C.unsigned_char; ++ subtype plain_char is Interfaces.C.plain_char; ++ subtype size_t is Interfaces.C.size_t; ++ ++ ----------- ++ -- Errno -- ++ ----------- ++ -- From /usr/include/i386-gnu/bits/errno.h ++ ++ function errno return int; ++ pragma Import (C, errno, "__get_errno"); ++ ++ EAGAIN : constant := 1073741859; ++ EINTR : constant := 1073741828; ++ EINVAL : constant := 1073741846; ++ ENOMEM : constant := 1073741836; ++ EPERM : constant := 1073741825; ++ ETIMEDOUT : constant := 1073741884; ++ ++ ------------- ++ -- Signals -- ++ ------------- ++ -- From /usr/include/i386-gnu/bits/signum.h ++ ++ Max_Interrupt : constant := 32; ++ type Signal is new int range 0 .. Max_Interrupt; ++ for Signal'Size use int'Size; ++ ++ SIGHUP : constant := 1; -- hangup ++ SIGINT : constant := 2; -- interrupt (rubout) ++ SIGQUIT : constant := 3; -- quit (ASCD FS) ++ SIGILL : constant := 4; -- illegal instruction (not reset) ++ SIGTRAP : constant := 5; -- trace trap (not reset) ++ SIGIOT : constant := 6; -- IOT instruction ++ SIGABRT : constant := 6; -- used by abort, replace SIGIOT in the future ++ SIGEMT : constant := 7; -- EMT instruction ++ SIGFPE : constant := 8; -- floating point exception ++ SIGKILL : constant := 9; -- kill (cannot be caught or ignored) ++ SIGBUS : constant := 10; -- bus error ++ SIGSEGV : constant := 11; -- segmentation violation ++ SIGSYS : constant := 12; -- bad argument to system call ++ SIGPIPE : constant := 13; -- write on a pipe with no one to read it ++ SIGALRM : constant := 14; -- alarm clock ++ SIGTERM : constant := 15; -- software termination signal from kill ++ SIGURG : constant := 16; -- urgent condition on IO channel ++ SIGSTOP : constant := 17; -- stop (cannot be caught or ignored) ++ SIGTSTP : constant := 18; -- user stop requested from tty ++ SIGCONT : constant := 19; -- stopped process has been continued ++ SIGCLD : constant := 20; -- alias for SIGCHLD ++ SIGCHLD : constant := 20; -- child status change ++ SIGTTIN : constant := 21; -- background tty read attempted ++ SIGTTOU : constant := 22; -- background tty write attempted ++ SIGIO : constant := 23; -- I/O possible (Solaris SIGPOLL alias) ++ SIGPOLL : constant := 23; -- I/O possible (same as SIGIO?) ++ SIGXCPU : constant := 24; -- CPU time limit exceeded ++ SIGXFSZ : constant := 25; -- filesize limit exceeded ++ SIGVTALRM : constant := 26; -- virtual timer expired ++ SIGPROF : constant := 27; -- profiling timer expired ++ SIGWINCH : constant := 28; -- window size change ++ SIGINFO : constant := 29; -- information request (NetBSD/FreeBSD) ++ SIGUSR1 : constant := 30; -- user defined signal 1 ++ SIGUSR2 : constant := 31; -- user defined signal 2 ++ SIGLOST : constant := 32; -- Resource lost (Sun); server died (GNU) ++-- SIGLTHRRES : constant := 32; -- GNU/LinuxThreads restart signal ++-- SIGLTHRCAN : constant := 33; -- GNU/LinuxThreads cancel signal ++-- SIGLTHRDBG : constant := 34; -- GNU/LinuxThreads debugger signal ++ ++ SIGADAABORT : constant := SIGABRT; ++ -- Change this if you want to use another signal for task abort. ++ -- SIGTERM might be a good one. ++ ++ type Signal_Set is array (Natural range <>) of Signal; ++ ++ Unmasked : constant Signal_Set := ( ++ SIGTRAP, ++ -- To enable debugging on multithreaded applications, mark SIGTRAP to ++ -- be kept unmasked. ++ ++ SIGBUS, ++ ++ SIGTTIN, SIGTTOU, SIGTSTP, ++ -- Keep these three signals unmasked so that background processes ++ -- and IO behaves as normal "C" applications ++ ++ SIGPROF, ++ -- To avoid confusing the profiler ++ ++ SIGKILL, SIGSTOP); ++ -- These two signals actually cannot be masked; ++ -- POSIX simply won't allow it. ++ ++ Reserved : constant Signal_Set := ++ -- I am not sure why the following signal is reserved. ++ -- I guess they are not supported by this version of GNU/Hurd. ++ (0 .. 0 => SIGVTALRM); ++ ++ type sigset_t is private; ++ ++ -- From /usr/include/signal.h /usr/include/i386-gnu/bits/sigset.h ++ function sigaddset (set : access sigset_t; sig : Signal) return int; ++ pragma Import (C, sigaddset, "sigaddset"); ++ ++ function sigdelset (set : access sigset_t; sig : Signal) return int; ++ pragma Import (C, sigdelset, "sigdelset"); ++ ++ function sigfillset (set : access sigset_t) return int; ++ pragma Import (C, sigfillset, "sigfillset"); ++ ++ function sigismember (set : access sigset_t; sig : Signal) return int; ++ pragma Import (C, sigismember, "sigismember"); ++ ++ function sigemptyset (set : access sigset_t) return int; ++ pragma Import (C, sigemptyset, "sigemptyset"); ++ ++ -- sigcontext is architecture dependent, so define it private ++ type struct_sigcontext is private; ++ ++ -- From /usr/include/i386-gnu/bits/sigaction.h: Note: arg. order differs ++ type struct_sigaction is record ++ sa_handler : System.Address; ++ sa_mask : sigset_t; ++ sa_flags : int; ++ end record; ++ pragma Convention (C, struct_sigaction); ++ ++ type struct_sigaction_ptr is access all struct_sigaction; ++ ++ -- From /usr/include/i386-gnu/bits/sigaction.h ++ SIG_BLOCK : constant := 1; ++ SIG_UNBLOCK : constant := 2; ++ SIG_SETMASK : constant := 3; ++ ++ -- From /usr/include/i386-gnu/bits/signum.h ++ SIG_ERR : constant := 1; ++ SIG_DFL : constant := 0; ++ SIG_IGN : constant := 1; ++ SIG_HOLD : constant := 2; ++ ++ -- From /usr/include/i386-gnu/bits/sigaction.h ++ SA_SIGINFO : constant := 16#0040#; ++ SA_ONSTACK : constant := 16#0001#; ++ ++ function sigaction ++ (sig : Signal; ++ act : struct_sigaction_ptr; ++ oact : struct_sigaction_ptr) return int; ++ pragma Import (C, sigaction, "sigaction"); ++ ++ ---------- ++ -- Time -- ++ ---------- ++ ++ Time_Slice_Supported : constant Boolean := True; ++ -- Indicates whether time slicing is supported (i.e SCHED_RR is supported) ++ ++ type timespec is private; ++ ++ function nanosleep (rqtp, rmtp : access timespec) return int; ++ pragma Import (C, nanosleep, "nanosleep"); ++ ++ type clockid_t is private; ++ ++ CLOCK_REALTIME : constant clockid_t; ++ ++ -- From: /usr/include/time.h ++ function clock_gettime ++ (clock_id : clockid_t; ++ tp : access timespec) ++ return int; ++ pragma Import (C, clock_gettime, "clock_gettime"); ++ ++ function To_Duration (TS : timespec) return Duration; ++ pragma Inline (To_Duration); ++ ++ function To_Timespec (D : Duration) return timespec; ++ pragma Inline (To_Timespec); ++ ++ -- From: /usr/include/unistd.h ++ function sysconf (name : int) return long; ++ pragma Import (C, sysconf); ++ ++ -- From /usr/include/i386-gnu/bits/confname.h ++ SC_CLK_TCK : constant := 2; ++ SC_NPROCESSORS_ONLN : constant := 84; ++ ++ ------------------------- ++ -- Priority Scheduling -- ++ ------------------------- ++ -- From /usr/include/i386-gnu/bits/sched.h ++ ++ SCHED_OTHER : constant := 0; ++ SCHED_FIFO : constant := 1; ++ SCHED_RR : constant := 2; ++ ++ function To_Target_Priority ++ (Prio : System.Any_Priority) return Interfaces.C.int; ++ -- Maps System.Any_Priority to a POSIX priority. ++ ++ ------------- ++ -- Process -- ++ ------------- ++ ++ type pid_t is private; ++ ++ -- From: /usr/include/signal.h ++ function kill (pid : pid_t; sig : Signal) return int; ++ pragma Import (C, kill, "kill"); ++ ++ -- From: /usr/include/unistd.h ++ function getpid return pid_t; ++ pragma Import (C, getpid, "getpid"); ++ ++ --------- ++ -- LWP -- ++ --------- ++ ++ -- From: /usr/include/pthread/pthread.h ++ function lwp_self return System.Address; ++ -- lwp_self does not exist on this thread library, revert to pthread_self ++ -- which is the closest approximation (with getpid). This function is ++ -- needed to share 7staprop.adb across POSIX-like targets. ++ pragma Import (C, lwp_self, "pthread_self"); ++ ++ ------------- ++ -- Threads -- ++ ------------- ++ ++ type Thread_Body is access ++ function (arg : System.Address) return System.Address; ++ pragma Convention (C, Thread_Body); ++ ++ function Thread_Body_Access is new ++ Unchecked_Conversion (System.Address, Thread_Body); ++ ++ -- From: /usr/include/bits/pthread.h:typedef int __pthread_t; ++ -- /usr/include/pthread/pthreadtypes.h:typedef __pthread_t pthread_t; ++ type pthread_t is new unsigned_long; ++ subtype Thread_Id is pthread_t; ++ ++ function To_pthread_t is new Unchecked_Conversion ++ (unsigned_long, pthread_t); ++ ++ type pthread_mutex_t is limited private; ++ type pthread_cond_t is limited private; ++ type pthread_attr_t is limited private; ++ type pthread_mutexattr_t is limited private; ++ type pthread_condattr_t is limited private; ++ type pthread_key_t is private; ++ ++ -- From /usr/include/pthread/pthreadtypes.h ++ PTHREAD_CREATE_DETACHED : constant := 1; ++ PTHREAD_CREATE_JOINABLE : constant := 0; ++ ++ PTHREAD_SCOPE_PROCESS : constant := 1; ++ PTHREAD_SCOPE_SYSTEM : constant := 0; ++ ++ ----------- ++ -- Stack -- ++ ----------- ++ ++ -- From: /usr/include/i386-gnu/bits/sigstack.h ++ type stack_t is record ++ ss_sp : System.Address; ++ ss_size : size_t; ++ ss_flags : int; ++ end record; ++ pragma Convention (C, stack_t); ++ ++ function sigaltstack ++ (ss : not null access stack_t; ++ oss : access stack_t) return int; ++ pragma Import (C, sigaltstack, "sigaltstack"); ++ ++ Alternate_Stack : aliased System.Address; ++ -- This is a dummy definition, never used (Alternate_Stack_Size is null) ++ ++ Alternate_Stack_Size : constant := 0; ++ -- No alternate signal stack is used on this platform ++ ++ Stack_Base_Available : constant Boolean := False; ++ -- Indicates whether the stack base is available on this target ++ ++ function Get_Stack_Base (thread : pthread_t) return Address; ++ pragma Inline (Get_Stack_Base); ++ -- returns the stack base of the specified thread. Only call this function ++ -- when Stack_Base_Available is True. ++ ++ -- From: /usr/include/i386-gnu/bits/shm.h __getpagesize or getpagesize?? ++ function Get_Page_Size return size_t; ++ function Get_Page_Size return Address; ++ pragma Import (C, Get_Page_Size, "__getpagesize"); ++ -- Returns the size of a page ++ ++ -- From /usr/include/i386-gnu/bits/mman.h ++ PROT_NONE : constant := 0; ++ PROT_READ : constant := 4; ++ PROT_WRITE : constant := 2; ++ PROT_EXEC : constant := 1; ++ PROT_ALL : constant := PROT_READ + PROT_WRITE + PROT_EXEC; ++ PROT_ON : constant := PROT_NONE; ++ PROT_OFF : constant := PROT_ALL; ++ ++ -- From /usr/include/i386-gnu/bits/mman.h ++ function mprotect (addr : Address; len : size_t; prot : int) return int; ++ pragma Import (C, mprotect); ++ ++ --------------------------------------- ++ -- Nonstandard Thread Initialization -- ++ --------------------------------------- ++ ++ procedure pthread_init; ++ pragma Inline (pthread_init); ++ -- This is a dummy procedure to share some GNULLI files ++ ++ ------------------------- ++ -- POSIX.1c Section 3 -- ++ ------------------------- ++ ++ -- From: /usr/include/signal.h: ++ -- sigwait (__const sigset_t *__restrict __set, int *__restrict __sig) ++ function sigwait (set : access sigset_t; sig : access Signal) return int; ++ pragma Import (C, sigwait, "sigwait"); ++ ++ -- From: /usr/include/pthread/pthread.h: ++ -- extern int pthread_kill (pthread_t thread, int signo); ++ function pthread_kill (thread : pthread_t; sig : Signal) return int; ++ pragma Import (C, pthread_kill, "pthread_kill"); ++ ++ -- From: /usr/include/i386-gnu/bits/sigthread.h ++ -- extern int pthread_sigmask (int __how, __const __sigset_t *__newmask, ++ -- __sigset_t *__oldmask) __THROW; ++ function pthread_sigmask ++ (how : int; ++ set : access sigset_t; ++ oset : access sigset_t) return int; ++ pragma Import (C, pthread_sigmask, "pthread_sigmask"); ++ ++ -------------------------- ++ -- POSIX.1c Section 11 -- ++ -------------------------- ++ ++ -- From: /usr/include/pthread/pthread.h and ++ -- /usr/include/pthread/pthreadtypes.h ++ function pthread_mutexattr_init ++ (attr : access pthread_mutexattr_t) return int; ++ pragma Import (C, pthread_mutexattr_init, "pthread_mutexattr_init"); ++ ++ function pthread_mutexattr_destroy ++ (attr : access pthread_mutexattr_t) return int; ++ pragma Import (C, pthread_mutexattr_destroy, "pthread_mutexattr_destroy"); ++ ++ function pthread_mutex_init ++ (mutex : access pthread_mutex_t; ++ attr : access pthread_mutexattr_t) return int; ++ pragma Import (C, pthread_mutex_init, "pthread_mutex_init"); ++ ++ function pthread_mutex_destroy (mutex : access pthread_mutex_t) return int; ++ pragma Import (C, pthread_mutex_destroy, "pthread_mutex_destroy"); ++ ++ function pthread_mutex_lock (mutex : access pthread_mutex_t) return int; ++ pragma Import (C, pthread_mutex_lock, "pthread_mutex_lock"); ++ ++ function pthread_mutex_unlock (mutex : access pthread_mutex_t) return int; ++ pragma Import (C, pthread_mutex_unlock, "pthread_mutex_unlock"); ++ ++ function pthread_condattr_init ++ (attr : access pthread_condattr_t) return int; ++ pragma Import (C, pthread_condattr_init, "pthread_condattr_init"); ++ ++ function pthread_condattr_destroy ++ (attr : access pthread_condattr_t) return int; ++ pragma Import (C, pthread_condattr_destroy, "pthread_condattr_destroy"); ++ ++ function pthread_cond_init ++ (cond : access pthread_cond_t; ++ attr : access pthread_condattr_t) return int; ++ pragma Import (C, pthread_cond_init, "pthread_cond_init"); ++ ++ function pthread_cond_destroy (cond : access pthread_cond_t) return int; ++ pragma Import (C, pthread_cond_destroy, "pthread_cond_destroy"); ++ ++ function pthread_cond_signal (cond : access pthread_cond_t) return int; ++ pragma Import (C, pthread_cond_signal, "pthread_cond_signal"); ++ ++ function pthread_cond_wait ++ (cond : access pthread_cond_t; ++ mutex : access pthread_mutex_t) return int; ++ pragma Import (C, pthread_cond_wait, "pthread_cond_wait"); ++ ++ function pthread_cond_timedwait ++ (cond : access pthread_cond_t; ++ mutex : access pthread_mutex_t; ++ abstime : access timespec) return int; ++ pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait"); ++ ++ Relative_Timed_Wait : constant Boolean := False; ++ -- pthread_cond_timedwait requires an absolute delay time ++ ++ -------------------------- ++ -- POSIX.1c Section 13 -- ++ -------------------------- ++ -- From /usr/include/pthread/pthreadtypes.h ++ ++ PTHREAD_PRIO_NONE : constant := 0; ++ PTHREAD_PRIO_PROTECT : constant := 2; ++ PTHREAD_PRIO_INHERIT : constant := 1; ++ ++ -- From: /usr/include/pthread/pthread.h ++ function pthread_mutexattr_setprotocol ++ (attr : access pthread_mutexattr_t; ++ protocol : int) return int; ++ pragma Import (C, pthread_mutexattr_setprotocol, ++ "pthread_mutexattr_setprotocol"); ++ ++ function pthread_mutexattr_getprotocol ++ (attr : access pthread_mutexattr_t; ++ protocol : access int) return int; ++ pragma Import (C, pthread_mutexattr_getprotocol, ++ "pthread_mutexattr_getprotocol"); ++ ++ function pthread_mutexattr_setprioceiling ++ (attr : access pthread_mutexattr_t; ++ prioceiling : int) return int; ++ pragma Import (C, pthread_mutexattr_setprioceiling, ++ "pthread_mutexattr_setprioceiling"); ++ ++ function pthread_mutexattr_getprioceiling ++ (attr : access pthread_mutexattr_t; ++ prioceiling : access int) return int; ++ pragma Import (C, pthread_mutexattr_getprioceiling, ++ "pthread_mutexattr_getprioceiling"); ++ ++ type struct_sched_param is record ++ sched_priority : int; -- scheduling priority ++ end record; ++ pragma Convention (C, struct_sched_param); ++ ++ function pthread_setschedparam ++ (thread : pthread_t; ++ policy : int; ++ param : access struct_sched_param) return int; ++ pragma Import (C, pthread_setschedparam, "pthread_setschedparam"); ++ ++ function pthread_attr_setscope ++ (attr : access pthread_attr_t; ++ contentionscope : int) return int; ++ pragma Import (C, pthread_attr_setscope, "pthread_attr_setscope"); ++ ++ function pthread_attr_getscope ++ (attr : access pthread_attr_t; ++ contentionscope : access int) return int; ++ pragma Import (C, pthread_attr_getscope, "pthread_attr_getscope"); ++ ++ function pthread_attr_setinheritsched ++ (attr : access pthread_attr_t; ++ inheritsched : int) return int; ++ pragma Import (C, pthread_attr_setinheritsched, ++ "pthread_attr_setinheritsched"); ++ ++ function pthread_attr_getinheritsched ++ (attr : access pthread_attr_t; ++ inheritsched : access int) return int; ++ pragma Import (C, pthread_attr_getinheritsched, ++ "pthread_attr_getinheritsched"); ++ ++ function pthread_attr_setschedpolicy ++ (attr : access pthread_attr_t; ++ policy : int) return int; ++ pragma Import (C, pthread_attr_setschedpolicy, "pthread_setschedpolicy"); ++ ++ function sched_yield return int; ++ pragma Import (C, sched_yield, "sched_yield"); ++ ++ --------------------------- ++ -- P1003.1c - Section 16 -- ++ --------------------------- ++ ++ function pthread_attr_init ++ (attributes : access pthread_attr_t) return int; ++ pragma Import (C, pthread_attr_init, "pthread_attr_init"); ++ ++ function pthread_attr_destroy ++ (attributes : access pthread_attr_t) return int; ++ pragma Import (C, pthread_attr_destroy, "pthread_attr_destroy"); ++ ++ function pthread_attr_setdetachstate ++ (attr : access pthread_attr_t; ++ detachstate : int) return int; ++ pragma Import ++ (C, pthread_attr_setdetachstate, "pthread_attr_setdetachstate"); ++ ++ function pthread_attr_setstacksize ++ (attr : access pthread_attr_t; ++ stacksize : size_t) return int; ++ pragma Import (C, pthread_attr_setstacksize, "pthread_attr_setstacksize"); ++ ++ -- From: /usr/include/pthread/pthread.h ++ function pthread_create ++ (thread : access pthread_t; ++ attributes : access pthread_attr_t; ++ start_routine : Thread_Body; ++ arg : System.Address) return int; ++ pragma Import (C, pthread_create, "pthread_create"); ++ ++ procedure pthread_exit (status : System.Address); ++ pragma Import (C, pthread_exit, "pthread_exit"); ++ ++ function pthread_self return pthread_t; ++ pragma Import (C, pthread_self, "pthread_self"); ++ ++ -------------------------- ++ -- POSIX.1c Section 17 -- ++ -------------------------- ++ ++ function pthread_setspecific ++ (key : pthread_key_t; ++ value : System.Address) return int; ++ pragma Import (C, pthread_setspecific, "pthread_setspecific"); ++ ++ function pthread_getspecific (key : pthread_key_t) return System.Address; ++ pragma Import (C, pthread_getspecific, "pthread_getspecific"); ++ ++ type destructor_pointer is access procedure (arg : System.Address); ++ pragma Convention (C, destructor_pointer); ++ ++ function pthread_key_create ++ (key : access pthread_key_t; ++ destructor : destructor_pointer) return int; ++ pragma Import (C, pthread_key_create, "pthread_key_create"); ++ ++ -- From /usr/include/i386-gnu/bits/sched.h ++ -- 1_024 == 1024?? ++ CPU_SETSIZE : constant := 1_024; ++ ++ type bit_field is array (1 .. CPU_SETSIZE) of Boolean; ++ for bit_field'Size use CPU_SETSIZE; ++ pragma Pack (bit_field); ++ pragma Convention (C, bit_field); ++ ++ type cpu_set_t is record ++ bits : bit_field; ++ end record; ++ pragma Convention (C, cpu_set_t); ++ ++ -- function pthread_setaffinity_np ++ -- (thread : pthread_t; ++ -- cpusetsize : size_t; ++ -- cpuset : access cpu_set_t) return int; ++ -- pragma Import (C, pthread_setaffinity_np, ++ -- "__gnat_pthread_setaffinity_np"); ++ ++private ++ ++ type sigset_t is array (1 .. 4) of unsigned; ++ ++ -- FIXME: ++ -- In GNU/Hurd the component sa_handler turns out to ++ -- be one a union type, and the selector is a macro: ++ -- #define sa_handler __sigaction_handler.sa_handler ++ -- #define sa_sigaction __sigaction_handler.sa_sigaction ++ ++ -- In FreeBSD the component sa_handler turns out to ++ -- be one a union type, and the selector is a macro: ++ -- #define sa_handler __sigaction_u._handler ++ -- #define sa_sigaction __sigaction_u._sigaction ++ ++ -- Should we add a signal_context type here ? ++ -- How could it be done independent of the CPU architecture ? ++ -- sigcontext type is opaque, so it is architecturally neutral. ++ -- It is always passed as an access type, so define it as an empty record ++ -- since the contents are not used anywhere. ++ type struct_sigcontext is null record; ++ pragma Convention (C, struct_sigcontext); ++ ++ type pid_t is new int; ++ ++ type time_t is new long; ++ ++ type timespec is record ++ tv_sec : time_t; ++ tv_nsec : long; ++ end record; ++ pragma Convention (C, timespec); ++ ++ type clockid_t is new int; ++ CLOCK_REALTIME : constant clockid_t := 0; ++ ++ -- From: /usr/include/pthread/pthreadtypes.h: ++ -- typedef struct __pthread_attr pthread_attr_t; ++ -- /usr/include/bits/thread-attr.h: struct __pthread_attr... ++ -- /usr/include/pthread/pthreadtypes.h: enum __pthread_contentionscope ++ -- enum __pthread_detachstate detachstate; ++ -- enum __pthread_inheritsched inheritsched; ++ -- enum __pthread_contentionscope contentionscope; ++ -- Not used: schedpolicy : int; ++ type pthread_attr_t is record ++ schedparam : struct_sched_param; ++ stackaddr : System.Address; ++ stacksize : size_t; ++ guardsize : size_t; ++ detachstate : int; ++ inheritsched : int; ++ contentionscope : int; ++ schedpolicy : int; ++ end record; ++ pragma Convention (C, pthread_attr_t); ++ ++ -- From: /usr/include/pthread/pthreadtypes.h: ++ -- typedef struct __pthread_condattr pthread_condattr_t; ++ -- From: /usr/include/bits/condition-attr.h: ++ -- struct __pthread_condattr { ++ -- enum __pthread_process_shared pshared; ++ -- __Clockid_T Clock;} ++ -- From: /usr/include/pthread/pthreadtypes.h: ++ -- enum __pthread_process_shared ++ type pthread_condattr_t is record ++ pshared : int; ++ clock : clockid_t; ++ end record; ++ pragma Convention (C, pthread_condattr_t); ++ ++ -- From: /usr/include/pthread/pthreadtypes.h: ++ -- typedef struct __pthread_mutexattr pthread_mutexattr_t; and ++ -- /usr/include/bits/mutex-attr.h ++ -- struct __pthread_mutexattr { ++ -- Int Prioceiling; ++ -- Enum __Pthread_Mutex_Protocol Protocol; ++ -- Enum __Pthread_Process_Shared Pshared; ++ -- Enum __Pthread_Mutex_Type Mutex_Type;}; ++ type pthread_mutexattr_t is record ++ prioceiling : int; ++ protocol : int; ++ pshared : int; ++ mutex_type : int; ++ end record; ++ pragma Convention (C, pthread_mutexattr_t); ++ ++ -- From: /usr/include/pthread/pthreadtypes.h ++ -- typedef struct __pthread_mutex pthread_mutex_t; and ++ -- /usr/include/bits/mutex.h: ++ -- struct __pthread_mutex { ++ -- __pthread_spinlock_t __held; ++ -- __pthread_spinlock_t __lock; ++ -- /* in cthreads, mutex_init does not initialized the third ++ -- pointer, as such, we cannot rely on its value for anything. */ ++ -- char *cthreadscompat1; ++ -- struct __pthread *__queue; ++ -- struct __pthread_mutexattr *attr; ++ -- void *data; ++ -- /* up to this point, we are completely compatible with cthreads ++ -- and what libc expects. */ ++ -- void *owner; ++ -- unsigned locks; ++ -- /* if null then the default attributes apply. */ ++ -- }; ++ type pthread_mutex_t is record ++ held : int; ++ lock : int; ++ cthreadcompat : System.Address; ++ queue : System.Address; ++ attr : System.Address; ++ data : System.Address; ++ owner : System.Address; ++ locks : unsigned; ++ end record; ++ pragma Convention (C, pthread_mutex_t); ++ -- pointer needed? ++ -- type pthread_mutex_t_ptr is access pthread_mutex_t; ++ ++ -- From: /usr/include/pthread/pthreadtypes.h: ++ -- typedef struct __pthread_cond pthread_cond_t; ++ -- typedef struct __pthread_condattr pthread_condattr_t; ++ -- /usr/include/bits/condition.h:struct __pthread_cond{} ++ -- pthread_condattr_t: see above! ++ -- /usr/include/bits/condition.h: struct __pthread_condimpl *__impl; ++ ++ type pthread_cond_t is record ++ lock : int; ++ queue : System.Address; ++ condattr : System.Address; ++ impl : System.Address; ++ data : System.Address; ++ end record; ++ pragma Convention (C, pthread_cond_t); ++ ++ -- From: /usr/include/pthread/pthreadtypes.h: ++ -- typedef __pthread_key pthread_key_t; and ++ -- /usr/include/bits/thread-specific.h: ++ -- typedef int __pthread_key; ++ type pthread_key_t is new int; ++ ++end System.OS_Interface; --- gcc-4.9-4.9.2.orig/debian/patches/ada-sjlj.diff +++ gcc-4.9-4.9.2/debian/patches/ada-sjlj.diff @@ -0,0 +1,715 @@ +# DP: There are two exception mechanisms to choose from: zero-cost and +# DP: setjump/longjump. The Ada run-time library uses either of them +# DP: but not both. Build both versions of the run-time library. + +# This patch changes the way the upstream Makefiles build the run-time +# library. Before the patch: libada/Makefile calls gcc/ada/Makefile, +# which builds the "rts" subdirectory containing symbolic links to +# most source files, and modified copies of a few source files (to +# take target dependencies into account, and also to select the +# exception handling mechanism in system.ads). Then, gcc/ada/Makefile +# calls itself recursively but in the "rts" subdirectory and builds +# libgnat.a and libgnarl.a (and a couple other libraries: +# libgccprefix.a, libgmem.a). Upon return from this recursive call, +# it deletes the source and object files from "rts", reconstructs the +# source files, and builds libgnat.so and libgnarl.so by calling +# itself recursively a second time in the "rts" directory. + +# Furthermore, gcc/ada/Makefile disables parallel makes, so building +# the static and then shared versions of the RTS is entirely +# sequential even on SMP systems. + +# As a consequence of the above, building the SJLJ version of the +# library would overwrite the ZCX version. Thus it is necessary to +# manually save the previous version of the library before building the +# second one. + +# After the patch: libada/Makefile calls gcc/ada/Makefile, which +# builds the source directory (named gnatlib-sources instead of rts), +# containing the symbolic links and target-dependent files. + +# In a second step, libada/Makefile calls gcc/ada/Makefile again to +# build the targets gnatlib-shared-zcx, gnatlib-static-zcx and +# gnatlib-static-sjlj (we could also build gnatlib-shared-sjlj, but +# that triggers compiler errors on PowerPC). + +# Each of these three targets copies the source directory "rts" into a +# new directory named rts-shared-zcx, rts-static-zcx or +# rts-static-sjlj. In the new directory, they change the value of +# System.ZCX_By_Default, and then they call gcc/ada/Makefile +# recursively in the new directory to build the library. + +# gcc/ada/Makefile.in has a .NOTPARALLEL directive preventing it from +# launching commands in parallel. However, libada/Makefile has no +# such directive and can invoke up to three instances of +# gcc/ada/Makefile.in in parallel. This is okay because each of them +# runs in a different directory. + +# This patch also updates libgnat{vsn,prj}/Makefile and +# gnattools/Makefile to look for the shared ZCX version of the library +# in the appropriate directory, rather than just "rts", and updates +# the "make install" and binary targets as well. + +Index: b/src/libada/Makefile.in +=================================================================== +--- a/src/libada/Makefile.in ++++ b/src/libada/Makefile.in +@@ -16,7 +16,8 @@ + # . + + # Default target; must be first. +-all: gnatlib ++GNATLIB = gnatlib-static-zcx gnatlib-static-sjlj gnatlib-shared-zcx ++all: $(GNATLIB) + $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE) + + .PHONY: all +@@ -97,26 +98,28 @@ + "CFLAGS=$(CFLAGS)" + + # Rules to build gnatlib. +-.PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared osconstool +-gnatlib: @default_gnatlib_target@ ++.PHONY: $(GNATLIB) osconstool + +-gnatlib-plain: osconstool $(GCC_DIR)/ada/Makefile +- test -f stamp-libada || \ +- $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) gnatlib \ +- && touch stamp-libada +- -rm -rf adainclude +- -rm -rf adalib +- $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adainclude +- $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adalib +- +-gnatlib-sjlj gnatlib-zcx gnatlib-shared: osconstool $(GCC_DIR)/ada/Makefile +- test -f stamp-libada || \ +- $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) $@ \ +- && touch stamp-libada +- -rm -rf adainclude +- -rm -rf adalib +- $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adainclude +- $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adalib ++$(GCC_DIR)/ada/gnatlib-sources-sjlj/a-except.ads: ++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) \ ++ EH_MECHANISM="" \ ++ gnatlib-sources-sjlj/a-except.ads ++ ++$(GCC_DIR)/ada/gnatlib-sources-zcx/a-except.ads: ++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) \ ++ EH_MECHANISM="-gcc" \ ++ gnatlib-sources-zcx/a-except.ads ++ ++$(GNATLIB): osconstool $(GCC_DIR)/ada/Makefile \ ++$(GCC_DIR)/ada/gnatlib-sources-zcx/a-except.ads \ ++$(GCC_DIR)/ada/gnatlib-sources-sjlj/a-except.ads ++ $(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) \ ++ GNATLIBFLAGS="$(GNATLIBFLAGS)" \ ++ GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ ++ TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \ ++ THREAD_KIND="$(THREAD_KIND)" \ ++ TRACE="$(TRACE)" \ ++ $@ + + osconstool: + $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) ./bldtools/oscons/xoscons +Index: b/src/gcc/ada/gcc-interface/Makefile.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -2459,84 +2459,107 @@ + $(patsubst %$(objext),%.adb,$(GNATRTL_OBJS)), \ + $(ADA_EXCLUDE_SRCS)) + +-../stamp-gnatlib-$(RTSDIR): +- @if [ ! -f stamp-gnatlib-$(RTSDIR) ] ; \ +- then \ +- $(ECHO) You must first build the GNAT library: make gnatlib; \ +- false; \ +- else \ +- true; \ +- fi ++libgnat = libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) + +-install-gnatlib: ../stamp-gnatlib-$(RTSDIR) ++install-gnatlib: $(GNATLIB_SHARED) + # Create the directory before deleting it, in case the directory is + # a list of directories (as it may be on VMS). This ensures we are + # deleting the right one. +- -$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR) +- -$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR) +- $(RMDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR) +- $(RMDIR) $(DESTDIR)$(ADA_INCLUDE_DIR) +- -$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR) +- -$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR) +- for file in $(RTSDIR)/*.ali; do \ +- $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ ++ -$(MKDIR) $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR) ++ -$(MKDIR) $(DESTDIR)$(ADA_NATIVE_INCLUDE_DIR) ++ $(RMDIR) $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR) ++ $(RMDIR) $(DESTDIR)$(ADA_NATIVE_INCLUDE_DIR) ++ -$(MKDIR) $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR) ++ -$(MKDIR) $(DESTDIR)$(ADA_NATIVE_INCLUDE_DIR) ++ ++ -$(MKDIR) $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR) ++ -$(MKDIR) $(DESTDIR)$(ADA_SJLJ_INCLUDE_DIR) ++ $(RMDIR) $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR) ++ $(RMDIR) $(DESTDIR)$(ADA_SJLJ_INCLUDE_DIR) ++ -$(MKDIR) $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR) ++ -$(MKDIR) $(DESTDIR)$(ADA_SJLJ_INCLUDE_DIR) ++ ++ for file in rts-shared-zcx/*.ali; do \ ++ $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR); \ ++ done ++ for file in rts-static-sjlj/*.ali; do \ ++ $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR); \ ++ done ++ ++ -cd rts-static-zcx; for file in *$(arext);do \ ++ $(INSTALL_DATA) $$file $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR); \ ++ $(RANLIB_FOR_TARGET) $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR)/$$file; \ + done +- -cd $(RTSDIR); for file in *$(arext);do \ +- $(INSTALL_DATA) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ +- $(RANLIB_FOR_TARGET) $(DESTDIR)$(ADA_RTL_OBJ_DIR)/$$file; \ ++ -cd rts-static-sjlj; for file in *$(arext);do \ ++ $(INSTALL_DATA) $$file $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR); \ ++ $(RANLIB_FOR_TARGET) $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR)/$$file; \ + done ++ ++ -$(foreach file, $(EXTRA_ADALIB_FILES), \ ++ $(INSTALL_DATA_DATE) rts-static-zcx/$(file) $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR) && \ ++ ) true + -$(foreach file, $(EXTRA_ADALIB_FILES), \ +- $(INSTALL_DATA_DATE) $(RTSDIR)/$(file) $(DESTDIR)$(ADA_RTL_OBJ_DIR) && \ ++ $(INSTALL_DATA_DATE) rts-static-sjlj/$(file) $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR) && \ + ) true + # Install the shared libraries, if any, using $(INSTALL) instead + # of $(INSTALL_DATA). The latter may force a mode inappropriate + # for shared libraries on some targets, e.g. on HP-UX where the x + # permission is required. +-# Also install the .dSYM directories if they exist (these directories +-# contain the debug information for the shared libraries on darwin) + for file in gnat gnarl; do \ +- if [ -f $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).1 ]; then \ +- $(INSTALL) $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ +- $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ +- fi; \ +- if [ -d $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).dSYM ]; then \ +- $(CP) -r $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).dSYM \ +- $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ ++ if [ -f rts-shared-zcx/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).1 ]; then \ ++ $(INSTALL) rts-shared-zcx/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ ++ $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR); \ + fi; \ + done + # This copy must be done preserving the date on the original file. +- for file in $(RTSDIR)/*.ad?; do \ +- $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_INCLUDE_DIR); \ ++ for file in rts-shared-zcx/*.adb rts-shared-zcx/*.ads; do \ ++ $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_NATIVE_INCLUDE_DIR); \ + done +- cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.adb +- cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.ads ++ $(CHMOD) u=rw,go=r $(DESTDIR)$(ADA_NATIVE_INCLUDE_DIR)/*.adb ++ $(CHMOD) u=rw,go=r $(DESTDIR)$(ADA_NATIVE_INCLUDE_DIR)/*.ads ++ for file in rts-static-sjlj/*.adb rts-static-sjlj/*.ads; do \ ++ $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_SJLJ_INCLUDE_DIR); \ ++ done ++ $(CHMOD) u=rw,go=r $(DESTDIR)$(ADA_SJLJ_INCLUDE_DIR)/*.adb ++ $(CHMOD) u=rw,go=r $(DESTDIR)$(ADA_SJLJ_INCLUDE_DIR)/*.ads ++ ++ (cd $(DESTDIR)$(libsubdir); \ ++ ln -s rts-native/adainclude adainclude; \ ++ ln -s rts-native/adalib adalib;) ++ ++replace_zcx_by_default=\ ++'s/ZCX_By_Default.*/ZCX_By_Default : constant Boolean := $(zcx_by_default);/' ++ ++gnatlib-sources-zcx/a-except.ads: dir=$(dir $@) ++gnatlib-sources-zcx/a-except.ads: zcx_by_default=True ++ ++gnatlib-sources-sjlj/a-except.ads: dir=$(dir $@) ++gnatlib-sources-sjlj/a-except.ads: zcx_by_default=False + +-../stamp-gnatlib1-$(RTSDIR): Makefile +- $(RMDIR) $(RTSDIR) +- $(MKDIR) $(RTSDIR) +- $(CHMOD) u+w $(RTSDIR) ++gnatlib-sources-zcx/a-except.ads gnatlib-sources-sjlj/a-except.ads: ++ $(MKDIR) $(dir) ++ $(CHMOD) u+w $(dir) + # Copy target independent sources + $(foreach f,$(ADA_INCLUDE_SRCS) $(LIBGNAT_SRCS), \ +- $(LN_S) $(fsrcpfx)ada/$(f) $(RTSDIR) ;) true ++ $(LN_S) $(fsrcpfx)ada/$(f) $(dir) ;) true + # Remove files not used +- $(RM) $(patsubst %,$(RTSDIR)/%,$(ADA_EXCLUDE_FILES)) ++ $(RM) $(patsubst %,$(dir)/%,$(ADA_EXCLUDE_FILES)) + # Remove files to be replaced by target dependent sources + $(RM) $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \ +- $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR)))) +- for f in $(RTSDIR)/*-*-*.ads $(RTSDIR)/*-*-*.adb; do \ ++ $(dir)/$(word 1,$(subst <, ,$(PAIR)))) ++ for f in $(dir)/*-*-*.ads $(dir)/*-*-*.adb; do \ + case "$$f" in \ +- $(RTSDIR)/s-stratt-*) ;; \ ++ $(dir)/s-stratt-*) ;; \ + *) $(RM) $$f ;; \ + esac; \ + done + # Copy new target dependent sources + $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \ + $(LN_S) $(fsrcpfx)ada/$(word 2,$(subst <, ,$(PAIR))) \ +- $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR)));) ++ $(dir)/$(word 1,$(subst <, ,$(PAIR)));) ++ sed -e $(replace_zcx_by_default) $(dir)/system.ads > $(dir)/s.ads + # Copy tsystem.h +- $(CP) $(srcdir)/tsystem.h $(RTSDIR) +- $(RM) ../stamp-gnatlib-$(RTSDIR) +- touch ../stamp-gnatlib1-$(RTSDIR) ++ $(CP) $(srcdir)/tsystem.h $(dir) + + ifeq ($(strip $(filter-out alpha64 ia64 dec hp vms% openvms% alphavms%, $(host_cpu) $(host_os))),) + OSCONS_CPP=../../$(DECC) -E /comment=as_is -DNATIVE \ +@@ -2563,9 +2586,11 @@ + $(CP) $^ ./bldtools/oscons + (cd ./bldtools/oscons ; gnatmake -q xoscons) + +-$(RTSDIR)/s-oscons.ads: ../stamp-gnatlib1-$(RTSDIR) s-oscons-tmplt.c gsocket.h ./bldtools/oscons/xoscons +- $(RM) $(RTSDIR)/s-oscons-tmplt.i $(RTSDIR)/s-oscons-tmplt.s +- (cd $(RTSDIR) ; \ ++.PRECIOUS: %/s-oscons.ads ++%/s-oscons.ads: dir = $(dir $@) ++%/s-oscons.ads: s-oscons-tmplt.c gsocket.h ./bldtools/oscons/xoscons ++ $(RM) $(dir)/s-oscons-tmplt.i $(dir)/s-oscons-tmplt.s ++ (cd $(dir) ; \ + $(OSCONS_CPP) ; \ + $(OSCONS_EXTRACT) ; \ + ../bldtools/oscons/xoscons s-oscons) +@@ -2576,9 +2601,12 @@ + # Example: cd $(RTSDIR); ar rc libfoo.a $(LONG_LIST_OF_OBJS) + # is guaranteed to overflow the buffer. + +-gnatlib: ../stamp-gnatlib1-$(RTSDIR) $(RTSDIR)/s-oscons.ads ++%/libgnat$(arext): build_dir = $(dir $@) ++%/libgnat$(arext): libgnarl = $(subst libgnat,libgnarl,$@) ++%/libgnat$(arext): libgnala = $(subst libgnat,libgnala,$@) ++%/libgnat$(arext): % %/s-oscons.ads + # C files +- $(MAKE) -C $(RTSDIR) \ ++ $(MAKE) -C $(build_dir) \ + CC="`echo \"$(GCC_FOR_TARGET)\" \ + | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ + INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \ +@@ -2587,7 +2615,7 @@ + srcdir=$(fsrcdir) \ + -f ../Makefile $(LIBGNAT_OBJS) + # Ada files +- $(MAKE) -C $(RTSDIR) \ ++ $(MAKE) -C $(build_dir) \ + CC="`echo \"$(GCC_FOR_TARGET)\" \ + | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ + ADA_INCLUDES="" \ +@@ -2596,24 +2624,24 @@ + FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ + srcdir=$(fsrcdir) \ + -f ../Makefile $(GNATRTL_OBJS) +- $(RM) $(RTSDIR)/libgnat$(arext) $(RTSDIR)/libgnarl$(arext) +- $(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgnat$(arext) \ +- $(addprefix $(RTSDIR)/,$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS)) +- $(RANLIB_FOR_TARGET) $(RTSDIR)/libgnat$(arext) +- $(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgnarl$(arext) \ +- $(addprefix $(RTSDIR)/,$(GNATRTL_TASKING_OBJS)) +- $(RANLIB_FOR_TARGET) $(RTSDIR)/libgnarl$(arext) ++ $(RM) $@ $(libgnarl) ++ $(AR_FOR_TARGET) $(AR_FLAGS) $@ \ ++ $(addprefix $(build_dir),$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) g-trasym.o) ++ $(RANLIB_FOR_TARGET) $@ ++ $(AR_FOR_TARGET) $(AR_FLAGS) $(libgnarl) \ ++ $(addprefix $(build_dir),$(GNATRTL_TASKING_OBJS)) ++ $(RANLIB_FOR_TARGET) $(libgnarl) + ifeq ($(GMEM_LIB),gmemlib) +- $(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgmem$(arext) \ +- $(RTSDIR)/memtrack.o +- $(RANLIB_FOR_TARGET) $(RTSDIR)/libgmem$(arext) ++ $(AR_FOR_TARGET) $(AR_FLAGS) $(build_dir)libgmem$(arext) \ ++ $(build_dir)memtrack.o ++ $(RANLIB_FOR_TARGET) $(build_dir)libgmem$(arext) + endif +- $(CHMOD) a-wx $(RTSDIR)/*.ali +- touch ../stamp-gnatlib-$(RTSDIR) + + # Warning: this target assumes that LIBRARY_VERSION has been set correctly. +-gnatlib-shared-default: +- $(MAKE) -C $(RTSDIR) \ ++%/$(libgnat): build_dir = $(dir $@) ++%/$(libgnat): libgnarl = $(notdir $(subst libgnat,libgnarl,$@)) ++%/$(libgnat): % %/s-oscons.ads ++ $(MAKE) -C $(build_dir) \ + CC="`echo \"$(GCC_FOR_TARGET)\" \ + | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ + INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \ +@@ -2621,7 +2649,7 @@ + FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ + srcdir=$(fsrcdir) \ + -f ../Makefile $(LIBGNAT_OBJS) +- $(MAKE) -C $(RTSDIR) \ ++ $(MAKE) -C $(build_dir) \ + CC="`echo \"$(GCC_FOR_TARGET)\" \ + | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ + ADA_INCLUDES="" \ +@@ -2631,176 +2659,46 @@ + srcdir=$(fsrcdir) \ + -f ../Makefile \ + $(GNATRTL_OBJS) +- $(RM) $(RTSDIR)/libgna*$(soext) $(RTSDIR)/libgna*$(soext).1 +- cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \ +- | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared $(GNATLIBCFLAGS) \ ++ $(RM) $(build_dir)/libgna*$(soext) $(build_dir)/libgna*$(soext).1 ++ cd $(build_dir); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \ + $(PICFLAG_FOR_TARGET) \ +- -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ ++ -o $(notdir $@).1 \ + $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \ +- $(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ ++ $(SO_OPTS)$(notdir $@).1 \ + $(MISCLIB) -lm +- cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \ +- | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared $(GNATLIBCFLAGS) \ ++ cd $(build_dir); $(LN_S) $(notdir $@).1 $(notdir $@) ++ cd $(build_dir); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \ + $(PICFLAG_FOR_TARGET) \ +- -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ ++ -o $(libgnarl).1 \ + $(GNATRTL_TASKING_OBJS) \ +- $(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ ++ $(SO_OPTS)$(libgnarl).1 \ + $(THREADSLIB) +- cd $(RTSDIR); for lib in gnat gnarl; do \ +- l=lib$${lib}$(hyphen)$(LIBRARY_VERSION)$(soext); \ +- $(LN_S) $$l.1 $$l; \ +- done +-# Delete the object files, lest they be linked statically into the tools +-# executables. Only the .ali, .a and .so files must remain. +- rm -f $(RTSDIR)/*.o +- $(CHMOD) a-wx $(RTSDIR)/*.ali ++ cd $(build_dir); $(LN_S) $(libgnarl).1 $(libgnarl) + +-gnatlib-shared-dual: +- $(MAKE) $(FLAGS_TO_PASS) \ +- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +- GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ +- GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ +- MULTISUBDIR="$(MULTISUBDIR)" \ +- THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib +- $(RM) $(RTSDIR)/*.o $(RTSDIR)/*.ali +- $(MAKE) $(FLAGS_TO_PASS) \ +- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +- GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ +- GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ +- MULTISUBDIR="$(MULTISUBDIR)" \ +- THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib-shared-default ++gnatlib-shared-dual: gnatlib-static-zcx gnatlib-static-sjlj gnatlib-shared-zcx + +-gnatlib-shared-dual-win32: +- $(MAKE) $(FLAGS_TO_PASS) \ +- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +- GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ +- GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ +- PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" \ +- MULTISUBDIR="$(MULTISUBDIR)" \ +- THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib +- $(RM) $(RTSDIR)/*.o $(RTSDIR)/*.ali +- $(MAKE) $(FLAGS_TO_PASS) \ +- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +- GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ +- GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ +- MULTISUBDIR="$(MULTISUBDIR)" \ +- THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib-shared-win32 +- +-# ??? we need to add the option to support auto-import of arrays/records to +-# the GNATLIBFLAGS when this will be supported by GNAT. At this point we will +-# use the gnatlib-shared-dual-win32 target to build the GNAT runtimes on +-# Windows. +-gnatlib-shared-win32: +- $(MAKE) $(FLAGS_TO_PASS) \ +- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +- GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(PICFLAG_FOR_TARGET)" \ +- GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C) $(PICFLAG_FOR_TARGET)" \ +- MULTISUBDIR="$(MULTISUBDIR)" \ +- THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib +- $(RM) $(RTSDIR)/libgna*$(soext) +- cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \ +- | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared -shared-libgcc \ +- $(PICFLAG_FOR_TARGET) \ +- -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \ +- $(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) $(MISCLIB) +- cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \ +- | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared -shared-libgcc \ +- $(PICFLAG_FOR_TARGET) \ +- -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- $(GNATRTL_TASKING_OBJS) \ +- $(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- $(THREADSLIB) -Wl,libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) +- +-gnatlib-shared-darwin: +- $(MAKE) $(FLAGS_TO_PASS) \ +- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +- GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(PICFLAG_FOR_TARGET)" \ +- GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C) $(PICFLAG_FOR_TARGET) -fno-common" \ +- MULTISUBDIR="$(MULTISUBDIR)" \ +- THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib +- $(RM) $(RTSDIR)/libgnat$(soext) $(RTSDIR)/libgnarl$(soext) +- cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \ +- | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -dynamiclib $(PICFLAG_FOR_TARGET) \ +- -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \ +- $(SO_OPTS) \ +- -Wl,-install_name,@rpath/libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- $(MISCLIB) +- cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \ +- | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -dynamiclib $(PICFLAG_FOR_TARGET) \ +- -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- $(GNATRTL_TASKING_OBJS) \ +- $(SO_OPTS) \ +- -Wl,-install_name,@rpath/libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- $(THREADSLIB) -Wl,libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) +- cd $(RTSDIR); $(LN_S) libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- libgnat$(soext) +- cd $(RTSDIR); $(LN_S) libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- libgnarl$(soext) +- cd $(RTSDIR); dsymutil libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) +- cd $(RTSDIR); dsymutil libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) +- +-gnatlib-shared-vms: +- $(MAKE) $(FLAGS_TO_PASS) \ +- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +- GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ +- GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ +- MULTISUBDIR="$(MULTISUBDIR)" \ +- THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib +- $(RM) $(RTSDIR)/libgna*$(soext) +- cd $(RTSDIR) && \ +- ../../gnatsym -s SYMVEC_$$$$.opt \ +- $(LIBGNAT_OBJS) $(GNATRTL_NONTASKING_OBJS) && \ +- ../../xgcc -g -B../../ -shared -shared-libgcc \ +- -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) libgnat.a \ +- sys\$$library:trace.exe \ +- --for-linker=/noinform \ +- --for-linker=SYMVEC_$$$$.opt \ +- --for-linker=gsmatch=equal,$(GSMATCH_VERSION) +- cd $(RTSDIR) && \ +- ../../gnatsym -s SYMVEC_$$$$.opt \ +- $(GNATRTL_TASKING_OBJS) && \ +- ../../xgcc -g -B../../ -shared -shared-libgcc \ +- -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- libgnarl.a libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- sys\$$library:trace.exe \ +- --for-linker=/noinform \ +- --for-linker=SYMVEC_$$$$.opt \ +- --for-linker=gsmatch=equal,$(GSMATCH_VERSION) +- +-gnatlib-shared: ++gnatlib-shared-zcx: rts = $(subst gnatlib,rts,$@) ++gnatlib-shared-zcx: gnatlib-sources-zcx/a-except.ads ++ if [ ! -d $(rts) ] ; then \ ++ cp -a gnatlib-sources-zcx $(rts); \ ++ $(MV) $(rts)/s.ads $(rts)/system.ads; \ ++ fi + $(MAKE) $(FLAGS_TO_PASS) \ ++ EH_MECHANISM="-gcc" \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ + GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ + GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ + PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" \ +- $(GNATLIB_SHARED) ++ $(rts)/$(libgnat) + +-# When building a SJLJ runtime for VxWorks, in addition to forcing +-# ZCX_By_default to False, we need to ensure that extra linker options +-# are not passed to prevent the inclusion of useless objects and +-# potential troubles from the presence of extra symbols and references +-# in some configurations. The inhibition is performed by commenting +-# the pragma instead of deleting the line, as the latter might result +-# in getting multiple blank lines, hence a style check error, as a +-# result. +-gnatlib-sjlj: +- $(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="" \ +- THREAD_KIND="$(THREAD_KIND)" ../stamp-gnatlib1-$(RTSDIR) +- sed -e 's/ZCX_By_Default.*/ZCX_By_Default : constant Boolean := False;/' $(RTSDIR)/system.ads > $(RTSDIR)/s.ads +- sed -e 's/\(pragma Linker.*crtbe.*\)/-- \1/' $(RTSDIR)/s.ads > $(RTSDIR)/s2.ads +- $(RM) $(RTSDIR)/s.ads +- $(MV) $(RTSDIR)/s2.ads $(RTSDIR)/system.ads ++gnatlib-static-sjlj: rts = $(subst gnatlib,rts,$@) ++gnatlib-static-sjlj: gnatlib-sources-sjlj/a-except.ads ++ if [ ! -d $(rts) ] ; then \ ++ cp -a gnatlib-sources-sjlj $(rts); \ ++ $(MV) $(rts)/s.ads $(rts)/system.ads; \ ++ fi + $(MAKE) $(FLAGS_TO_PASS) \ + EH_MECHANISM="" \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +@@ -2809,13 +2707,15 @@ + FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ +- PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" gnatlib ++ PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" \ ++ $(rts)/libgnat.a + +-gnatlib-zcx: +- $(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="-gcc" \ +- THREAD_KIND="$(THREAD_KIND)" ../stamp-gnatlib1-$(RTSDIR) +- sed -e 's/ZCX_By_Default.*/ZCX_By_Default : constant Boolean := True;/' $(RTSDIR)/system.ads > $(RTSDIR)/s.ads +- $(MV) $(RTSDIR)/s.ads $(RTSDIR)/system.ads ++gnatlib-static-zcx: rts = $(subst gnatlib,rts,$@) ++gnatlib-static-zcx: gnatlib-sources-zcx/a-except.ads ++ if [ ! -d $(rts) ] ; then \ ++ cp -a gnatlib-sources-zcx $(rts); \ ++ $(MV) $(rts)/s.ads $(rts)/system.ads; \ ++ fi + $(MAKE) $(FLAGS_TO_PASS) \ + EH_MECHANISM="-gcc" \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +@@ -2824,10 +2724,15 @@ + FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ +- PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" gnatlib ++ PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" \ ++ $(rts)/libgnat$(arext) + + ADA_INCLUDE_DIR = $(libsubdir)/adainclude + ADA_RTL_OBJ_DIR = $(libsubdir)/adalib ++ADA_NATIVE_INCLUDE_DIR = $(libsubdir)/rts-native/adainclude ++ADA_NATIVE_RTL_OBJ_DIR = $(libsubdir)/rts-native/adalib ++ADA_SJLJ_INCLUDE_DIR = $(libsubdir)/rts-sjlj/adainclude ++ADA_SJLJ_RTL_OBJ_DIR = $(libsubdir)/rts-sjlj/adalib + + # Special flags + +Index: b/src/gnattools/Makefile.in +=================================================================== +--- a/src/gnattools/Makefile.in ++++ b/src/gnattools/Makefile.in +@@ -44,15 +44,16 @@ + -L../../../$(target_noncanonical)/libstdc++-v3/src/.libs \ + -L../../../$(target_noncanonical)/libstdc++-v3/libsupc++/.libs + ++RTS=../gcc/ada/rts-shared-zcx + CFLAGS=-O2 -Wall + ADA_CFLAGS=-O2 -gnatn +-ADA_INCLUDES=-nostdinc -I- -I. -I../gcc/ada/rts -I../libgnatvsn -I../libgnatprj ++ADA_INCLUDES=-nostdinc -I- -I. -I$(RTS) -I../libgnatvsn -I../libgnatprj + LIB_VERSION=$(strip $(shell grep ' Library_Version :' \ + ../libgnatvsn/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/')) +-SHARED_ADA_LIBS := -L../gcc/ada/rts -lgnat-$(LIB_VERSION) ++SHARED_ADA_LIBS := -L$(RTS) -lgnat-$(LIB_VERSION) + SHARED_ADA_LIBS += -L../libgnatvsn -lgnatvsn + SHARED_ADA_LIBS += -L../libgnatprj -lgnatprj +-STATIC_ADA_LIBS := ../gcc/ada/rts/libgnat.a ++STATIC_ADA_LIBS := ../gcc/ada/rts-static-zcx/libgnat.a + STATIC_GCC_LIBS := ../gcc/libcommon-target.a ../gcc/libcommon.a ../libcpp/libcpp.a \ + ../libbacktrace/.libs/libbacktrace.a ../libiberty/libiberty.a + +@@ -126,6 +127,7 @@ + + .PHONY: gnattools gnattools-native gnattools-cross regnattools + gnattools: @default_gnattools_target@ ++ (cd $(RTS); if [ -d obj ]; then mv obj/* .; rmdir obj; fi) + + BODIES := $(foreach f,$(OBJECTS),$(wildcard $(patsubst %.o,@srcdir@/../gcc/ada/%.adb,$(f)))) + SPECS := $(foreach f,$(OBJECTS),$(wildcard $(patsubst %.o,@srcdir@/../gcc/ada/%.ads,$(f)))) +@@ -141,9 +143,12 @@ + rm -f $(word 1,$(subst <, ,$(PAIR)));\ + $(LN_S) @srcdir@/../gcc/ada/$(word 2,$(subst <, ,$(PAIR))) \ + $(word 1,$(subst <, ,$(PAIR)));) ++# Move the RTS object files away lest they be linked statically into the ++# tools. Only the .ali, .a and .so files must remain. ++ (cd $(RTS); mkdir obj; mv *.o obj; chmod a-wx *.ali) + touch $@ + +-gnattools-native: ../gcc/ada/rts/libgnat-$(LIB_VERSION).so ++gnattools-native: $(RTS)/libgnat-$(LIB_VERSION).so + gnattools-native: ../libgnatvsn/libgnatvsn.so + gnattools-native: stamp-gnattools-sources + gnattools-native: $(TOOLS) +@@ -159,7 +164,7 @@ + $(GCC) -o $@ $^ \ + ../libgnatprj/libgnatprj.a \ + ../libgnatvsn/libgnatvsn.a \ +- ../gcc/ada/rts/libgnat.a $(STATIC_GCC_LIBS) ++ $(STATIC_ADA_LIBS) $(STATIC_GCC_LIBS) + + gnatlink: $(GNATLINK_OBJS) b_gnatl.o + $(GCC) -o $@ $^ $(SHARED_ADA_LIBS) $(STATIC_GCC_LIBS) +Index: b/src/libgnatprj/Makefile.in +=================================================================== +--- a/src/libgnatprj/Makefile.in ++++ b/src/libgnatprj/Makefile.in +@@ -26,7 +26,8 @@ + sed -e 's/.*"\(.*\)".*/\1/')) + GCC=$(CC) + GPP=$(CXX) +-LIBGNAT_JUST_BUILT := -nostdinc -I../gcc/ada/rts ++RTS:=../gcc/ada/rts-shared-zcx ++LIBGNAT_JUST_BUILT := -nostdinc -I$(RTS) + LIBGNATVSN := -I../libgnatvsn + CFLAGS := -g -O2 + ADAFLAGS := -g -O2 -gnatn +@@ -76,7 +77,7 @@ + : # Make libgnatprj.so + $(GCC) -o $@ -shared -fPIC -Wl,--soname,$@ -Wl,--no-allow-shlib-undefined \ + $^ $(addprefix ../libiberty/pic/,$(LIBIBERTY_OBJECTS)) \ +- -L../gcc/ada/rts -lgnat-$(LIB_VERSION) \ ++ -L$(RTS) -lgnat-$(LIB_VERSION) \ + -L../libgnatvsn -lgnatvsn + $(LN_S) -f libgnatprj.so.$(LIB_VERSION) libgnatprj.so + chmod a=r obj-shared/*.ali +Index: b/src/libgnatvsn/Makefile.in +=================================================================== +--- a/src/libgnatvsn/Makefile.in ++++ b/src/libgnatvsn/Makefile.in +@@ -25,7 +25,8 @@ + @srcdir@/../gcc/ada/gnatvsn.ads | \ + sed -e 's/.*"\(.*\)".*/\1/')) + GCC:=../gcc/xgcc -B../gcc/ +-LIBGNAT_JUST_BUILT := -nostdinc -I../gcc/ada/rts ++RTS:=../gcc/ada/rts-shared-zcx ++LIBGNAT_JUST_BUILT := -nostdinc -I$(RTS) + CFLAGS := -g -O2 -gnatn + BASEVER := $(shell cat @srcdir@/../gcc/BASE-VER) + DEVPHASE := $(shell cat @srcdir@/../gcc/DEV-PHASE) +@@ -66,7 +67,7 @@ + libgnatvsn.so.$(LIB_VERSION): $(addprefix obj-shared/,$(OBJECTS)) + : # Make libgnatvsn.so + $(GCC) -o $@ -shared -fPIC -Wl,--soname,$@ $^ \ +- -L../gcc/ada/rts -lgnat-$(LIB_VERSION) ++ -L$(RTS) -lgnat-$(LIB_VERSION) + ln -s libgnatvsn.so.$(LIB_VERSION) libgnatvsn.so + chmod a=r obj-shared/*.ali + # Make the .ali files, but not the .o files, visible to the gnat tools. +Index: b/src/gcc/ada/gcc-interface/Make-lang.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/Make-lang.in ++++ b/src/gcc/ada/gcc-interface/Make-lang.in +@@ -85,7 +85,8 @@ + "ADA_FOR_TARGET=$(ADA_FOR_TARGET)" \ + "INSTALL=$(INSTALL)" \ + "INSTALL_DATA=$(INSTALL_DATA)" \ +- "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" ++ "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ ++ "GCC_FOR_TARGET=$(GCC_FOR_TARGET)" + + # Say how to compile Ada programs. + .SUFFIXES: .ada .adb .ads --- gcc-4.9-4.9.2.orig/debian/patches/ada-symbolic-tracebacks.diff +++ gcc-4.9-4.9.2/debian/patches/ada-symbolic-tracebacks.diff @@ -0,0 +1,401 @@ +# DP: - Enable support for symbolic tracebacks in exceptions (delete the dummy +# DP: convert_addresses from adaint.c, and provide a real one separately.) + +Ported Jürgen Pfeifer's patch to enable symbolic tracebacks on Debian +GNU/Linux. + +The binary distribution of GNAT 3.15p comes with an old version of +binutils that includes a library, libaddr2line.a. This library does +not exist in recent versions of binutils. The patch works around this +by calling /usr/bin/addr2line (still part of binutils) and parsing the +output. See debian/convert_addresses.c for the gory details. + +I have modified convert_addresses.c to not use a shell script anymore; +Debian controls the version of binutils which is installed. Also, I +use execve instead of execle. + +-- +Ludovic Brenta. + +# ' make emacs highlighting happy + +Index: b/src/gcc/ada/gcc-interface/Makefile.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -270,7 +270,8 @@ + # Both . and srcdir are used, in that order, + # so that tm.h and config.h will be found in the compilation + # subdirectory rather than in the source directory. +-INCLUDES = -I- -I. -I.. -I$(srcdir)/ada -I$(srcdir) -I$(ftop_srcdir)/include $(GMPINC) ++INCLUDES = -iquote . -iquote .. -iquote $(srcdir)/ada -iquote $(srcdir) \ ++ -iquote $(ftop_srcdir)/include $(GMPINC) + + ADA_INCLUDES = -I- -I. -I$(srcdir)/ada + +@@ -2426,7 +2427,7 @@ + # library. LIBGNAT_OBJS is the list of object files for libgnat. + # thread.c is special as put into GNATRTL_TASKING_OBJS by Makefile.rtl + LIBGNAT_OBJS = adadecode.o adaint.o argv.o aux-io.o \ +- cal.o cio.o cstreams.o ctrl_c.o \ ++ cal.o cio.o convert_addresses.o cstreams.o ctrl_c.o \ + env.o errno.o exit.o expect.o final.o \ + init.o initialize.o locales.o mkdir.o \ + raise.o seh_init.o socket.o sysdep.o \ +@@ -3104,6 +3105,7 @@ + socket.o : socket.c gsocket.h + sysdep.o : sysdep.c + raise.o : raise.c raise.h ++convert_addresses.o : convert_addresses.c + sigtramp-armdroid.o : sigtramp-armdroid.c sigtramp.h + sigtramp-armvxw.o : sigtramp-armvxw.c sigtramp.h + sigtramp-ppcvxw.o : sigtramp-ppcvxw.c sigtramp.h +Index: b/src/gcc/ada/adaint.c +=================================================================== +--- a/src/gcc/ada/adaint.c ++++ b/src/gcc/ada/adaint.c +@@ -3608,35 +3608,6 @@ + } + #endif + +-#if defined (IS_CROSS) \ +- || (! ((defined (sparc) || defined (i386)) && defined (sun) \ +- && defined (__SVR4)) \ +- && ! (defined (linux) && (defined (i386) || defined (__x86_64__))) \ +- && ! (defined (linux) && defined (__ia64__)) \ +- && ! (defined (linux) && defined (powerpc)) \ +- && ! defined (__FreeBSD__) \ +- && ! defined (__Lynx__) \ +- && ! defined (__hpux__) \ +- && ! defined (__APPLE__) \ +- && ! defined (_AIX) \ +- && ! defined (VMS) \ +- && ! defined (__MINGW32__)) +- +-/* Dummy function to satisfy g-trasym.o. See the preprocessor conditional +- just above for a list of native platforms that provide a non-dummy +- version of this procedure in libaddr2line.a. */ +- +-void +-convert_addresses (const char *file_name ATTRIBUTE_UNUSED, +- void *addrs ATTRIBUTE_UNUSED, +- int n_addr ATTRIBUTE_UNUSED, +- void *buf ATTRIBUTE_UNUSED, +- int *len ATTRIBUTE_UNUSED) +-{ +- *len = 0; +-} +-#endif +- + #if defined (_WIN32) + int __gnat_argument_needs_quote = 1; + #else +Index: b/src/gcc/ada/convert_addresses.c +=================================================================== +--- /dev/null ++++ b/src/gcc/ada/convert_addresses.c +@@ -0,0 +1,159 @@ ++/* ++ Copyright (C) 1999 by Juergen Pfeifer ++ Ada for Linux Team (ALT) ++ ++ Permission is hereby granted, free of charge, to any person obtaining a ++ copy of this software and associated documentation files (the ++ "Software"), to deal in the Software without restriction, including ++ without limitation the rights to use, copy, modify, merge, publish, ++ distribute, distribute with modifications, sublicense, and/or sell ++ copies of the Software, and to permit persons to whom the Software is ++ furnished to do so, subject to the following conditions: ++ ++ The above copyright notice and this permission notice shall be included ++ in all copies or substantial portions of the Software. ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ++ IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, ++ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR ++ OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR ++ THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++ ++ Except as contained in this notice, the name(s) of the above copyright ++ holders shall not be used in advertising or otherwise to promote the ++ sale, use or other dealings in this Software without prior written ++ authorization. ++*/ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#define STDIN_FILENO 0 ++#define STDOUT_FILENO 1 ++#define MAX_LINE 1024 ++ ++#define CLOSE1 close(fd1[0]); close(fd1[1]) ++#define CLOSE2 close(fd2[0]); close(fd2[1]) ++#define RESTSIG sigaction(SIGPIPE,&oact,NULL) ++ ++void convert_addresses ++(const char const *file_name, ++ void* addrs[], ++ int n_addr, ++ char* buf, ++ int* len) ++{ ++ int max_len = *len; ++ pid_t child; ++ ++ struct sigaction act, oact; ++ ++ int fd1[2], fd2[2]; ++ ++ if (!file_name) { ++ return; ++ } ++ ++ *buf = 0; *len = 0; ++ act.sa_handler = SIG_IGN; ++ sigemptyset(&act.sa_mask); ++ act.sa_flags = 0; ++ if (sigaction(SIGPIPE,&act,&oact) < 0) ++ return; ++ ++ if (pipe(fd1) >= 0) { ++ if (pipe(fd2)>=0) { ++ if ((child = fork()) < 0) { ++ CLOSE1; CLOSE2; RESTSIG; ++ return; ++ } ++ else { ++ if (0==child) { ++ close(fd1[1]); ++ close(fd2[0]); ++ if (fd1[0] != STDIN_FILENO) { ++ if (dup2(fd1[0],STDIN_FILENO) != STDIN_FILENO) { ++ CLOSE1; CLOSE2; ++ } ++ close(fd1[0]); ++ } ++ if (fd2[1] != STDOUT_FILENO) { ++ if (dup2(fd2[1],STDOUT_FILENO) != STDOUT_FILENO) { ++ CLOSE1; CLOSE2; ++ } ++ close(fd2[1]); ++ } ++ { ++ /* As pointed out by Florian Weimer to me, it is a ++ security threat to call the script with a user defined ++ environment and using the path. That would be Trojans ++ pleasure. Therefore we use the absolute path to ++ addr2line and an empty environment. That should be ++ safe. ++ */ ++ char *file_name_for_execve = strdup (file_name); /* non-const */ ++ char *const argv[] = { "addr2line", ++ "-e", ++ file_name_for_execve, ++ "--demangle=gnat", ++ "--functions", ++ "--basenames", ++ NULL }; ++ char *const envp[] = { NULL }; ++ if (execve("/usr/bin/addr2line", argv, envp) < 0) { ++ CLOSE1; CLOSE2; ++ } ++ if (file_name_for_execve) { free (file_name_for_execve); } ++ } ++ } ++ else { ++ int i, n; ++ char hex[16]; ++ char line[MAX_LINE + 1]; ++ char *p; ++ char *s = buf; ++ ++ /* Parent context */ ++ close(fd1[0]); ++ close(fd2[1]); ++ ++ for(i=0; i < n_addr; i++) { ++ snprintf(hex,sizeof(hex),"%p\n",addrs[i]); ++ write(fd1[1],hex,strlen(hex)); ++ n = read(fd2[0],line,MAX_LINE); ++ if (n<=0) ++ break; ++ line[n]=0; ++ /* We have approx. 16 additional chars for "%p in " clause. ++ We use this info to prevent a buffer overrun. ++ */ ++ if (n + 16 + (*len) > max_len) ++ break; ++ p = strchr(line,'\n'); ++ if (p) { ++ if (*(p+1)) { ++ *p = 0; ++ *len += snprintf(s, (max_len - (*len)), "%p in %s at %s",addrs[i], line, p+1); ++ } ++ else { ++ *len += snprintf(s, (max_len - (*len)), "%p at %s",addrs[i], line); ++ } ++ s = buf + (*len); ++ } ++ } ++ close(fd1[1]); ++ close(fd2[0]); ++ } ++ } ++ } ++ else { ++ CLOSE1; ++ } ++ } ++ RESTSIG; ++} +Index: b/src/gcc/ada/g-trasym.adb +=================================================================== +--- a/src/gcc/ada/g-trasym.adb ++++ b/src/gcc/ada/g-trasym.adb +@@ -33,40 +33,110 @@ + -- is not supported. It returns tracebacks as lists of LF separated strings of + -- the form "0x..." corresponding to the addresses. + ++with System.Soft_Links; + with Ada.Exceptions.Traceback; use Ada.Exceptions.Traceback; +-with System.Address_Image; + + package body GNAT.Traceback.Symbolic is + ++ package TSL renames System.Soft_Links; ++ ++ -- To perform the raw addresses to symbolic form translation we rely on a ++ -- libaddr2line symbolizer which examines debug info from a provided ++ -- executable file name, and an absolute path is needed to ensure the file ++ -- is always found. This is "__gnat_locate_exec_on_path (gnat_argv [0])" ++ -- for our executable file, a fairly heavy operation so we cache the ++ -- result. ++ ++ Exename : System.Address; ++ -- Pointer to the name of the executable file to be used on all ++ -- invocations of the libaddr2line symbolization service. ++ ++ Exename_Resolved : Boolean := False; ++ -- Flag to indicate whether we have performed the executable file name ++ -- resolution already. Relying on a not null Exename for this purpose ++ -- would be potentially inefficient as this is what we will get if the ++ -- resolution attempt fails. ++ + ------------------------ + -- Symbolic_Traceback -- + ------------------------ + + function Symbolic_Traceback (Traceback : Tracebacks_Array) return String is ++ ++ procedure convert_addresses ++ (filename : System.Address; ++ addrs : System.Address; ++ n_addrs : Integer; ++ buf : System.Address; ++ len : System.Address); ++ pragma Import (C, convert_addresses, "convert_addresses"); ++ -- This is the procedure version of the Ada-aware addr2line. It places ++ -- in BUF a string representing the symbolic translation of the N_ADDRS ++ -- raw addresses provided in ADDRS, looked up in debug information from ++ -- FILENAME. LEN points to an integer which contains the size of the ++ -- BUF buffer at input and the result length at output. ++ -- ++ -- Note that this procedure is *not* thread-safe. ++ ++ type Argv_Array is array (0 .. 0) of System.Address; ++ gnat_argv : access Argv_Array; ++ pragma Import (C, gnat_argv, "gnat_argv"); ++ ++ function locate_exec_on_path ++ (c_exename : System.Address) return System.Address; ++ pragma Import (C, locate_exec_on_path, "__gnat_locate_exec_on_path"); ++ ++ B_Size : constant Integer := 256 * Traceback'Length; ++ Len : Integer := B_Size; ++ Res : String (1 .. B_Size); ++ ++ use type System.Address; ++ + begin ++ -- The symbolic translation of an empty set of addresses is an empty ++ -- string. ++ + if Traceback'Length = 0 then + return ""; ++ end if; + +- else +- declare +- Img : String := System.Address_Image (Traceback (Traceback'First)); ++ -- If our input set of raw addresses is not empty, resort to the ++ -- libaddr2line service to symbolize it all. + +- Result : String (1 .. (Img'Length + 3) * Traceback'Length); +- Last : Natural := 0; ++ -- Compute, cache and provide the absolute path to our executable file ++ -- name as the binary file where the relevant debug information is to be ++ -- found. If the executable file name resolution fails, we have no ++ -- sensible basis to invoke the symbolizer at all. ++ ++ -- Protect all this against concurrent accesses explicitly, as the ++ -- underlying services are potentially thread unsafe. ++ ++ TSL.Lock_Task.all; ++ ++ if not Exename_Resolved then ++ Exename := locate_exec_on_path (gnat_argv (0)); ++ Exename_Resolved := True; ++ end if; ++ ++ if Exename /= System.Null_Address then ++ Len := Res'Length; ++ convert_addresses ++ (Exename, Traceback'Address, Traceback'Length, ++ Res (1)'Address, Len'Address); ++ end if; ++ ++ TSL.Unlock_Task.all; + +- begin +- for J in Traceback'Range loop +- Img := System.Address_Image (Traceback (J)); +- Result (Last + 1 .. Last + 2) := "0x"; +- Last := Last + 2; +- Result (Last + 1 .. Last + Img'Length) := Img; +- Last := Last + Img'Length + 1; +- Result (Last) := ASCII.LF; +- end loop; ++ -- Return what the addr2line symbolizer has produced if we have called ++ -- it (the executable name resolution succeeded), or an empty string ++ -- otherwise. + +- return Result (1 .. Last); +- end; ++ if Exename /= System.Null_Address then ++ return Res (1 .. Len); ++ else ++ return ""; + end if; ++ + end Symbolic_Traceback; + + function Symbolic_Traceback (E : Exception_Occurrence) return String is +Index: b/src/gcc/ada/tracebak.c +=================================================================== +--- a/src/gcc/ada/tracebak.c ++++ b/src/gcc/ada/tracebak.c +@@ -425,7 +425,7 @@ + /* Starting with GCC 4.6, -fomit-frame-pointer is turned on by default for + 32-bit x86/Linux as well and DWARF 2 unwind tables are emitted instead. + See the x86-64 case below for the drawbacks with this approach. */ +-#if defined (linux) && (__GNUC__ * 10 + __GNUC_MINOR__ > 45) ++#if (defined (linux) || defined(__GNU__)) && (__GNUC__ * 10 + __GNUC_MINOR__ > 45) + #define USE_GCC_UNWINDER + #else + #define USE_GENERIC_UNWINDER --- gcc-4.9-4.9.2.orig/debian/patches/alpha-ieee-doc.diff +++ gcc-4.9-4.9.2/debian/patches/alpha-ieee-doc.diff @@ -0,0 +1,24 @@ +# DP: #212912 +# DP: on alpha-linux, make -mieee default and add -mieee-disable switch +# DP: to turn default off (doc patch) + +--- + gcc/doc/invoke.texi | 7 +++++++ + 1 files changed, 7 insertions(+), 0 deletions(-) + +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -9980,6 +9980,13 @@ able to correctly support denormalized numbers and exceptional IEEE + values such as not-a-number and plus/minus infinity. Other Alpha + compilers call this option @option{-ieee_with_no_inexact}. + ++DEBIAN SPECIFIC: This option is on by default for alpha-linux-gnu, unless ++@option{-ffinite-math-only} (which is part of the @option{-ffast-math} ++set) is specified, because the software functions in the GNU libc math ++libraries generate denormalized numbers, NaNs, and infs (all of which ++will cause a programs to SIGFPE when it attempts to use the results without ++@option{-mieee}). ++ + @item -mieee-with-inexact + @opindex mieee-with-inexact + This is like @option{-mieee} except the generated code also maintains --- gcc-4.9-4.9.2.orig/debian/patches/alpha-ieee.diff +++ gcc-4.9-4.9.2/debian/patches/alpha-ieee.diff @@ -0,0 +1,21 @@ +# DP: #212912 +# DP: on alpha-linux, make -mieee default and add -mieee-disable switch +# DP: to turn default off + +--- + gcc/config/alpha/alpha.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +--- a/src/gcc/config/alpha/alpha.c ++++ b/src/gcc/config/alpha/alpha.c +@@ -259,6 +259,10 @@ + int line_size = 0, l1_size = 0, l2_size = 0; + int i; + ++ /* If not -ffinite-math-only, enable -mieee*/ ++ if (!flag_finite_math_only) ++ target_flags |= MASK_IEEE|MASK_IEEE_CONFORMANT; ++ + #ifdef SUBTARGET_OVERRIDE_OPTIONS + SUBTARGET_OVERRIDE_OPTIONS; + #endif --- gcc-4.9-4.9.2.orig/debian/patches/alpha-no-ev4-directive.diff +++ gcc-4.9-4.9.2/debian/patches/alpha-no-ev4-directive.diff @@ -0,0 +1,32 @@ +# DP: never emit .ev4 directive. + +--- + gcc/config/alpha/alpha.c | 7 +++---- + 1 files changed, 3 insertions(+), 4 deletions(-) + +Index: b/src/gcc/config/alpha/alpha.c +=================================================================== +--- a/src/gcc/config/alpha/alpha.c ++++ b/src/gcc/config/alpha/alpha.c +@@ -9426,7 +9426,7 @@ alpha_file_start (void) + fputs ("\t.set nomacro\n", asm_out_file); + if (TARGET_SUPPORT_ARCH | TARGET_BWX | TARGET_MAX | TARGET_FIX | TARGET_CIX) + { +- const char *arch; ++ const char *arch = NULL; + + if (alpha_cpu == PROCESSOR_EV6 || TARGET_FIX || TARGET_CIX) + arch = "ev6"; +@@ -9436,10 +9436,9 @@ alpha_file_start (void) + arch = "ev56"; + else if (alpha_cpu == PROCESSOR_EV5) + arch = "ev5"; +- else +- arch = "ev4"; + +- fprintf (asm_out_file, "\t.arch %s\n", arch); ++ if (arch) ++ fprintf (asm_out_file, "\t.arch %s\n", arch); + } + } + --- gcc-4.9-4.9.2.orig/debian/patches/aotcompile.diff +++ gcc-4.9-4.9.2/debian/patches/aotcompile.diff @@ -0,0 +1,51 @@ +--- ./build/aot/aotcompile.py.orig 2010-04-08 13:38:27.621086079 +0000 ++++ ./build/aot/aotcompile.py 2010-04-08 14:22:55.102335973 +0000 +@@ -31,12 +31,25 @@ + "dbtool": "/usr/lib/gcc-snapshot/bin/gcj-dbtool"} + + MAKEFLAGS = [] +-GCJFLAGS = ["-fPIC", "-findirect-dispatch", "-fjni"] ++GCJFLAGS = ["-O2 -fPIC", "-findirect-dispatch", "-fjni"] + LDFLAGS = ["-Wl,-Bsymbolic"] + + MAX_CLASSES_PER_JAR = 1024 + MAX_BYTES_PER_JAR = 1048576 + ++try: ++ for line in file('/proc/meminfo'): ++ if line.startswith('MemTotal:'): ++ memtotal = int(line.split()[1]) ++ if memtotal < 270000: ++ MAX_CLASSES_PER_JAR = 512 ++ MAX_BYTES_PER_JAR = 524288 ++ if memtotal < 140000: ++ MAX_CLASSES_PER_JAR = 256 ++ MAX_BYTES_PER_JAR = 262144 ++except: ++ pass ++ + MAKEFILE = "Makefile" + + MAKEFILE_HEADER = '''\ +@@ -49,7 +62,7 @@ + $(GCJ) -c $(GCJFLAGS) $< -o $@ + + TARGETS = \\ +-%(targets)s ++javac ecj1 + + all: $(TARGETS)''' + +@@ -63,6 +76,12 @@ + %(dso)s: $(%(base)s_OBJECTS) + $(GCJ) -shared $(GCJFLAGS) $(LDFLAGS) $^ -o $@ + ++javac: $(%(base)s_OBJECTS) resources.o ++ $(GCJ) $(GCJFLAGS) $(RPATH) -Wl,-O1 --main=org.eclipse.jdt.internal.compiler.batch.Main $^ -o $@ ++ ++ecj1: $(%(base)s_OBJECTS) resources.o ++ $(GCJ) $(GCJFLAGS) $(RPATH) -Wl,-O1 --main=org.eclipse.jdt.internal.compiler.batch.GCCMain $^ -o $@ ++ + %(db)s: $(%(base)s_SOURCES) + $(DBTOOL) -n $@ 64 + for jar in $^; do \\ --- gcc-4.9-4.9.2.orig/debian/patches/arm-multilib-defaults.diff +++ gcc-4.9-4.9.2/debian/patches/arm-multilib-defaults.diff @@ -0,0 +1,92 @@ +# DP: Set MULTILIB_DEFAULTS for ARM multilib builds + +Index: b/src/gcc/config.gcc +=================================================================== +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -3521,10 +3521,18 @@ case "${target}" in + fi + + case "$with_float" in +- "" \ +- | soft | hard | softfp) ++ "") + # OK + ;; ++ soft) ++ tm_defines="${tm_defines} TARGET_CONFIGURED_FLOAT_ABI=0" ++ ;; ++ softfp) ++ tm_defines="${tm_defines} TARGET_CONFIGURED_FLOAT_ABI=1" ++ ;; ++ hard) ++ tm_defines="${tm_defines} TARGET_CONFIGURED_FLOAT_ABI=2" ++ ;; + *) + echo "Unknown floating point type used in --with-float=$with_float" 1>&2 + exit 1 +@@ -3561,6 +3569,9 @@ case "${target}" in + "" \ + | arm | thumb ) + #OK ++ if test "$with_mode" = thumb; then ++ tm_defines="${tm_defines} TARGET_CONFIGURED_THUMB_MODE=1" ++ fi + ;; + *) + echo "Unknown mode used in --with-mode=$with_mode" +Index: b/src/gcc/config/arm/linux-eabi.h +=================================================================== +--- a/src/gcc/config/arm/linux-eabi.h ++++ b/src/gcc/config/arm/linux-eabi.h +@@ -43,7 +43,21 @@ + target hardware. If you override this to use the hard-float ABI then + change the setting of GLIBC_DYNAMIC_LINKER_DEFAULT as well. */ + #undef TARGET_DEFAULT_FLOAT_ABI ++#ifdef TARGET_CONFIGURED_FLOAT_ABI ++#if TARGET_CONFIGURED_FLOAT_ABI == 2 ++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD ++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=hard" ++#elif TARGET_CONFIGURED_FLOAT_ABI == 1 ++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFTFP ++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=softfp" ++#else ++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT ++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=soft" ++#endif ++#else + #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT ++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=soft" ++#endif + + /* We default to the "aapcs-linux" ABI so that enums are int-sized by + default. */ +@@ -86,6 +100,28 @@ + %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \ + %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}" + ++/* Set the multilib defaults according the configuration, needed to ++ let gcc -print-multi-dir do the right thing. */ ++ ++#if TARGET_BIG_ENDIAN_DEFAULT ++#define MULTILIB_DEFAULT_ENDIAN "mbig-endian" ++#else ++#define MULTILIB_DEFAULT_ENDIAN "mlittle-endian" ++#endif ++ ++#ifndef TARGET_CONFIGURED_THUMB_MODE ++#define MULTILIB_DEFAULT_MODE "marm" ++#elif TARGET_CONFIGURED_THUMB_MODE == 1 ++#define MULTILIB_DEFAULT_MODE "mthumb" ++#else ++#define MULTILIB_DEFAULT_MODE "marm" ++#endif ++ ++#undef MULTILIB_DEFAULTS ++#define MULTILIB_DEFAULTS \ ++ { MULTILIB_DEFAULT_MODE, MULTILIB_DEFAULT_ENDIAN, \ ++ MULTILIB_DEFAULT_FLOAT_ABI, "mno-thumb-interwork" } ++ + /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to + use the GNU/Linux version, not the generic BPABI version. */ + #undef LINK_SPEC --- gcc-4.9-4.9.2.orig/debian/patches/arm-multilib-soft-cross.diff +++ gcc-4.9-4.9.2/debian/patches/arm-multilib-soft-cross.diff @@ -0,0 +1,27 @@ +# DP: ARM hard/soft float multilib support + +Index: b/src/gcc/config/arm/t-linux-eabi +=================================================================== +--- a/src/gcc/config/arm/t-linux-eabi ++++ b/src/gcc/config/arm/t-linux-eabi +@@ -21,6 +21,20 @@ + MULTILIB_OPTIONS = + MULTILIB_DIRNAMES = + ++ifeq ($(with_float),hard) ++MULTILIB_OPTIONS = mfloat-abi=soft/mfloat-abi=hard ++MULTILIB_DIRNAMES = sf hf ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float mfloat-abi?soft=mfloat-abi?softfp ++MULTILIB_OSDIRNAMES = ../libsf:arm-linux-gnueabi ../lib:arm-linux-gnueabihf ++else ++MULTILIB_OPTIONS = mfloat-abi=soft/mfloat-abi=hard ++MULTILIB_DIRNAMES = sf hf ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float mfloat-abi?soft=mfloat-abi?softfp ++MULTILIB_OSDIRNAMES = ../lib:arm-linux-gnueabi ../libhf:arm-linux-gnueabihf ++endif ++ + #MULTILIB_OPTIONS += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te + #MULTILIB_DIRNAMES += fa606te fa626te fmp626 fa726te + #MULTILIB_EXCEPTIONS += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te* --- gcc-4.9-4.9.2.orig/debian/patches/arm-multilib-soft-float.diff +++ gcc-4.9-4.9.2/debian/patches/arm-multilib-soft-float.diff @@ -0,0 +1,26 @@ +--- a/src/gcc/config/arm/t-linux-eabi ++++ b/src/gcc/config/arm/t-linux-eabi +@@ -24,6 +24,23 @@ + MULTILIB_OPTIONS = + MULTILIB_DIRNAMES = + ++ifneq (,$(findstring MULTIARCH_DEFAULTS,$(tm_defines))) ++ifneq (,$(findstring __arm_linux_gnueabi__,$(tm_defines))) ++ MULTILIB_OPTIONS = mfloat-abi=softfp/mfloat-abi=hard/mfloat-abi=soft ++ MULTILIB_DIRNAMES = . hf soft-float ++ MULTILIB_EXCEPTIONS = ++ MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float ++ MULTILIB_OSDIRNAMES = ../../lib/arm-linux-gnueabi ../../lib/arm-linux-gnueabihf soft-float ++endif ++ifneq (,$(findstring __arm_linux_gnueabihf__,$(tm_defines))) ++ MULTILIB_OPTIONS = mfloat-abi=hard/mfloat-abi=softfp/mfloat-abi=soft ++ MULTILIB_DIRNAMES = . sf soft-float ++ MULTILIB_EXCEPTIONS = ++ MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float ++ MULTILIB_OSDIRNAMES = ../../lib/arm-linux-gnueabihf ../../lib/arm-linux-gnueabi soft-float ++endif ++endif ++ + #MULTILIB_OPTIONS += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te + #MULTILIB_DIRNAMES += fa606te fa626te fmp626 fa726te + #MULTILIB_EXCEPTIONS += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te* --- gcc-4.9-4.9.2.orig/debian/patches/arm-multilib-soft.diff +++ gcc-4.9-4.9.2/debian/patches/arm-multilib-soft.diff @@ -0,0 +1,27 @@ +# DP: ARM hard/soft float multilib support + +Index: b/src/gcc/config/arm/t-linux-eabi +=================================================================== +--- a/src/gcc/config/arm/t-linux-eabi ++++ b/src/gcc/config/arm/t-linux-eabi +@@ -23,6 +23,20 @@ + MULTILIB_OPTIONS = + MULTILIB_DIRNAMES = + ++ifeq ($(with_float),hard) ++MULTILIB_OPTIONS = mfloat-abi=soft/mfloat-abi=hard ++MULTILIB_DIRNAMES = sf hf ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float mfloat-abi?soft=mfloat-abi?softfp ++MULTILIB_OSDIRNAMES = arm-linux-gnueabi:arm-linux-gnueabi ../lib:arm-linux-gnueabihf ++else ++MULTILIB_OPTIONS = mfloat-abi=soft/mfloat-abi=hard ++MULTILIB_DIRNAMES = sf hf ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float mfloat-abi?soft=mfloat-abi?softfp ++MULTILIB_OSDIRNAMES = ../lib:arm-linux-gnueabi arm-linux-gnueabihf:arm-linux-gnueabihf ++endif ++ + #MULTILIB_OPTIONS += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te + #MULTILIB_DIRNAMES += fa606te fa626te fmp626 fa726te + #MULTILIB_EXCEPTIONS += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te* --- gcc-4.9-4.9.2.orig/debian/patches/arm-multilib-softfp-cross.diff +++ gcc-4.9-4.9.2/debian/patches/arm-multilib-softfp-cross.diff @@ -0,0 +1,27 @@ +# DP: ARM hard/softfp float multilib support + +Index: b/src/gcc/config/arm/t-linux-eabi +=================================================================== +--- a/src/gcc/config/arm/t-linux-eabi 2011-01-03 20:52:22.000000000 +0000 ++++ b/src/gcc/config/arm/t-linux-eabi 2011-08-21 21:08:47.583351817 +0000 +@@ -24,6 +24,20 @@ + MULTILIB_OPTIONS = + MULTILIB_DIRNAMES = + ++ifeq ($(with_float),hard) ++MULTILIB_OPTIONS = mfloat-abi=softfp/mfloat-abi=hard ++MULTILIB_DIRNAMES = sf hf ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?softfp=msoft-float mfloat-abi?softfp=mfloat-abi?soft ++MULTILIB_OSDIRNAMES = ../libsf:arm-linux-gnueabi ../lib:arm-linux-gnueabihf ++else ++MULTILIB_OPTIONS = mfloat-abi=softfp/mfloat-abi=hard ++MULTILIB_DIRNAMES = sf hf ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?softfp=msoft-float mfloat-abi?softfp=mfloat-abi?soft ++MULTILIB_OSDIRNAMES = ../lib:arm-linux-gnueabi ../libhf:arm-linux-gnueabihf ++endif ++ + #MULTILIB_OPTIONS += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te + #MULTILIB_DIRNAMES += fa606te fa626te fmp626 fa726te + #MULTILIB_EXCEPTIONS += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te* --- gcc-4.9-4.9.2.orig/debian/patches/arm-multilib-softfp.diff +++ gcc-4.9-4.9.2/debian/patches/arm-multilib-softfp.diff @@ -0,0 +1,27 @@ +# DP: ARM hard/softfp float multilib support + +Index: b/src/gcc/config/arm/t-linux-eabi +=================================================================== +--- a/src/gcc/config/arm/t-linux-eabi 2011-01-03 20:52:22.000000000 +0000 ++++ b/src/gcc/config/arm/t-linux-eabi 2011-08-21 21:08:47.583351817 +0000 +@@ -24,6 +24,20 @@ + MULTILIB_OPTIONS = + MULTILIB_DIRNAMES = + ++ifeq ($(with_float),hard) ++MULTILIB_OPTIONS = mfloat-abi=softfp/mfloat-abi=hard ++MULTILIB_DIRNAMES = sf hf ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?softfp=msoft-float mfloat-abi?softfp=mfloat-abi?soft ++MULTILIB_OSDIRNAMES = arm-linux-gnueabi:arm-linux-gnueabi ../lib:arm-linux-gnueabihf ++else ++MULTILIB_OPTIONS = mfloat-abi=softfp/mfloat-abi=hard ++MULTILIB_DIRNAMES = sf hf ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?softfp=msoft-float mfloat-abi?softfp=mfloat-abi?soft ++MULTILIB_OSDIRNAMES = ../lib:arm-linux-gnueabi arm-linux-gnueabihf:arm-linux-gnueabihf ++endif ++ + #MULTILIB_OPTIONS += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te + #MULTILIB_DIRNAMES += fa606te fa626te fmp626 fa726te + #MULTILIB_EXCEPTIONS += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te* --- gcc-4.9-4.9.2.orig/debian/patches/boehm-gc-getnprocs.diff +++ gcc-4.9-4.9.2/debian/patches/boehm-gc-getnprocs.diff @@ -0,0 +1,18 @@ +# DP: boehm-gc/pthread_support.c (GC_get_nprocs): Use sysconf as fallback. + +--- + boehm-gc/pthread_support.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +--- a/src/boehm-gc/pthread_support.c ++++ b/src/boehm-gc/pthread_support.c +@@ -724,7 +724,8 @@ + f = open("/proc/stat", O_RDONLY); + if (f < 0 || (len = STAT_READ(f, stat_buf, STAT_BUF_SIZE)) < 100) { + WARN("Couldn't read /proc/stat\n", 0); +- return -1; ++ /* Fallback to sysconf after the warning */ ++ return sysconf(_SC_NPROCESSORS_ONLN); + } + for (i = 0; i < len - 100; ++i) { + if (stat_buf[i] == '\n' && stat_buf[i+1] == 'c' --- gcc-4.9-4.9.2.orig/debian/patches/boehm-gc-nocheck.diff +++ gcc-4.9-4.9.2/debian/patches/boehm-gc-nocheck.diff @@ -0,0 +1,18 @@ +# DP: Disable running the boehm-gc testsuite. Hangs the buildd at least on hppa. + +--- + boehm-gc/Makefile.in | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +--- a/src/boehm-gc/Makefile.in ++++ b/src/boehm-gc/Makefile.in +@@ -684,7 +684,8 @@ check-TESTS: $(TESTS) + test "$$failed" -eq 0; \ + else :; fi + check-am: $(check_PROGRAMS) +- $(MAKE) $(AM_MAKEFLAGS) check-TESTS ++ : # $(MAKE) $(AM_MAKEFLAGS) check-TESTS ++ @echo target $@ disabled for Debian build. + check: check-recursive + all-am: Makefile $(LTLIBRARIES) all-multi + installdirs: installdirs-recursive --- gcc-4.9-4.9.2.orig/debian/patches/bootstrap-no-unneeded-libs.diff +++ gcc-4.9-4.9.2/debian/patches/bootstrap-no-unneeded-libs.diff @@ -0,0 +1,1422 @@ +# DP: For bootstrap builds, don't build unneeded libstdc++ things +# DP: (debug library, PCH headers). + +Index: b/src/Makefile.tpl +=================================================================== +--- a/src/Makefile.tpl ++++ b/src/Makefile.tpl +@@ -1060,7 +1060,9 @@ + --target=[+target_alias+] $${srcdiroption} [+ IF prev +]\ + --with-build-libsubdir=$(HOST_SUBDIR) [+ ENDIF prev +]\ + $(STAGE[+id+]_CONFIGURE_FLAGS)[+ IF extra_configure_flags +] \ +- [+extra_configure_flags+][+ ENDIF extra_configure_flags +] ++ [+extra_configure_flags+][+ ENDIF extra_configure_flags +] \ ++ [+ IF bootstrap_configure_flags +][+bootstrap_configure_flags+] \ ++ [+ ENDIF bootstrap_configure_flags +] + @endif [+prefix+][+module+]-bootstrap + [+ ENDFOR bootstrap_stage +] + [+ ENDIF bootstrap +] +Index: b/src/Makefile.def +=================================================================== +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -117,7 +117,8 @@ + target_modules = { module= libstdc++-v3; + bootstrap=true; + lib_path=src/.libs; +- raw_cxx=true; }; ++ raw_cxx=true; ++ bootstrap_configure_flags='--disable-libstdcxx-debug --disable-libstdcxx-pch'; }; + target_modules = { module= libmudflap; lib_path=.libs; }; + target_modules = { module= libsanitizer; lib_path=.libs; }; + target_modules = { module= libssp; lib_path=.libs; }; +Index: b/src/Makefile.in +=================================================================== +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -3007,7 +3007,8 @@ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ +- $(STAGE1_CONFIGURE_FLAGS) ++ $(STAGE1_CONFIGURE_FLAGS) \ ++ + @endif bfd-bootstrap + + .PHONY: configure-stage2-bfd maybe-configure-stage2-bfd +@@ -3040,7 +3041,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE2_CONFIGURE_FLAGS) ++ $(STAGE2_CONFIGURE_FLAGS) \ ++ + @endif bfd-bootstrap + + .PHONY: configure-stage3-bfd maybe-configure-stage3-bfd +@@ -3073,7 +3075,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE3_CONFIGURE_FLAGS) ++ $(STAGE3_CONFIGURE_FLAGS) \ ++ + @endif bfd-bootstrap + + .PHONY: configure-stage4-bfd maybe-configure-stage4-bfd +@@ -3106,7 +3109,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE4_CONFIGURE_FLAGS) ++ $(STAGE4_CONFIGURE_FLAGS) \ ++ + @endif bfd-bootstrap + + .PHONY: configure-stageprofile-bfd maybe-configure-stageprofile-bfd +@@ -3139,7 +3143,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEprofile_CONFIGURE_FLAGS) ++ $(STAGEprofile_CONFIGURE_FLAGS) \ ++ + @endif bfd-bootstrap + + .PHONY: configure-stagefeedback-bfd maybe-configure-stagefeedback-bfd +@@ -3172,7 +3177,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEfeedback_CONFIGURE_FLAGS) ++ $(STAGEfeedback_CONFIGURE_FLAGS) \ ++ + @endif bfd-bootstrap + + +@@ -3879,7 +3885,8 @@ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ +- $(STAGE1_CONFIGURE_FLAGS) ++ $(STAGE1_CONFIGURE_FLAGS) \ ++ + @endif opcodes-bootstrap + + .PHONY: configure-stage2-opcodes maybe-configure-stage2-opcodes +@@ -3912,7 +3919,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE2_CONFIGURE_FLAGS) ++ $(STAGE2_CONFIGURE_FLAGS) \ ++ + @endif opcodes-bootstrap + + .PHONY: configure-stage3-opcodes maybe-configure-stage3-opcodes +@@ -3945,7 +3953,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE3_CONFIGURE_FLAGS) ++ $(STAGE3_CONFIGURE_FLAGS) \ ++ + @endif opcodes-bootstrap + + .PHONY: configure-stage4-opcodes maybe-configure-stage4-opcodes +@@ -3978,7 +3987,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE4_CONFIGURE_FLAGS) ++ $(STAGE4_CONFIGURE_FLAGS) \ ++ + @endif opcodes-bootstrap + + .PHONY: configure-stageprofile-opcodes maybe-configure-stageprofile-opcodes +@@ -4011,7 +4021,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEprofile_CONFIGURE_FLAGS) ++ $(STAGEprofile_CONFIGURE_FLAGS) \ ++ + @endif opcodes-bootstrap + + .PHONY: configure-stagefeedback-opcodes maybe-configure-stagefeedback-opcodes +@@ -4044,7 +4055,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEfeedback_CONFIGURE_FLAGS) ++ $(STAGEfeedback_CONFIGURE_FLAGS) \ ++ + @endif opcodes-bootstrap + + +@@ -4751,7 +4763,8 @@ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ +- $(STAGE1_CONFIGURE_FLAGS) ++ $(STAGE1_CONFIGURE_FLAGS) \ ++ + @endif binutils-bootstrap + + .PHONY: configure-stage2-binutils maybe-configure-stage2-binutils +@@ -4784,7 +4797,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE2_CONFIGURE_FLAGS) ++ $(STAGE2_CONFIGURE_FLAGS) \ ++ + @endif binutils-bootstrap + + .PHONY: configure-stage3-binutils maybe-configure-stage3-binutils +@@ -4817,7 +4831,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE3_CONFIGURE_FLAGS) ++ $(STAGE3_CONFIGURE_FLAGS) \ ++ + @endif binutils-bootstrap + + .PHONY: configure-stage4-binutils maybe-configure-stage4-binutils +@@ -4850,7 +4865,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE4_CONFIGURE_FLAGS) ++ $(STAGE4_CONFIGURE_FLAGS) \ ++ + @endif binutils-bootstrap + + .PHONY: configure-stageprofile-binutils maybe-configure-stageprofile-binutils +@@ -4883,7 +4899,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEprofile_CONFIGURE_FLAGS) ++ $(STAGEprofile_CONFIGURE_FLAGS) \ ++ + @endif binutils-bootstrap + + .PHONY: configure-stagefeedback-binutils maybe-configure-stagefeedback-binutils +@@ -4916,7 +4933,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEfeedback_CONFIGURE_FLAGS) ++ $(STAGEfeedback_CONFIGURE_FLAGS) \ ++ + @endif binutils-bootstrap + + +@@ -8696,7 +8714,8 @@ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ +- $(STAGE1_CONFIGURE_FLAGS) ++ $(STAGE1_CONFIGURE_FLAGS) \ ++ + @endif gas-bootstrap + + .PHONY: configure-stage2-gas maybe-configure-stage2-gas +@@ -8729,7 +8748,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE2_CONFIGURE_FLAGS) ++ $(STAGE2_CONFIGURE_FLAGS) \ ++ + @endif gas-bootstrap + + .PHONY: configure-stage3-gas maybe-configure-stage3-gas +@@ -8762,7 +8782,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE3_CONFIGURE_FLAGS) ++ $(STAGE3_CONFIGURE_FLAGS) \ ++ + @endif gas-bootstrap + + .PHONY: configure-stage4-gas maybe-configure-stage4-gas +@@ -8795,7 +8816,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE4_CONFIGURE_FLAGS) ++ $(STAGE4_CONFIGURE_FLAGS) \ ++ + @endif gas-bootstrap + + .PHONY: configure-stageprofile-gas maybe-configure-stageprofile-gas +@@ -8828,7 +8850,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEprofile_CONFIGURE_FLAGS) ++ $(STAGEprofile_CONFIGURE_FLAGS) \ ++ + @endif gas-bootstrap + + .PHONY: configure-stagefeedback-gas maybe-configure-stagefeedback-gas +@@ -8861,7 +8884,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEfeedback_CONFIGURE_FLAGS) ++ $(STAGEfeedback_CONFIGURE_FLAGS) \ ++ + @endif gas-bootstrap + + +@@ -9568,7 +9592,8 @@ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ +- $(STAGE1_CONFIGURE_FLAGS) ++ $(STAGE1_CONFIGURE_FLAGS) \ ++ + @endif gcc-bootstrap + + .PHONY: configure-stage2-gcc maybe-configure-stage2-gcc +@@ -9601,7 +9626,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE2_CONFIGURE_FLAGS) ++ $(STAGE2_CONFIGURE_FLAGS) \ ++ + @endif gcc-bootstrap + + .PHONY: configure-stage3-gcc maybe-configure-stage3-gcc +@@ -9634,7 +9660,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE3_CONFIGURE_FLAGS) ++ $(STAGE3_CONFIGURE_FLAGS) \ ++ + @endif gcc-bootstrap + + .PHONY: configure-stage4-gcc maybe-configure-stage4-gcc +@@ -9667,7 +9694,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE4_CONFIGURE_FLAGS) ++ $(STAGE4_CONFIGURE_FLAGS) \ ++ + @endif gcc-bootstrap + + .PHONY: configure-stageprofile-gcc maybe-configure-stageprofile-gcc +@@ -9700,7 +9728,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEprofile_CONFIGURE_FLAGS) ++ $(STAGEprofile_CONFIGURE_FLAGS) \ ++ + @endif gcc-bootstrap + + .PHONY: configure-stagefeedback-gcc maybe-configure-stagefeedback-gcc +@@ -9733,7 +9762,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEfeedback_CONFIGURE_FLAGS) ++ $(STAGEfeedback_CONFIGURE_FLAGS) \ ++ + @endif gcc-bootstrap + + +@@ -10441,7 +10471,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ + --target=none-${host_vendor}-${host_os} $${srcdiroption} \ + $(STAGE1_CONFIGURE_FLAGS) \ +- --disable-shared ++ --disable-shared \ ++ + @endif gmp-bootstrap + + .PHONY: configure-stage2-gmp maybe-configure-stage2-gmp +@@ -10475,7 +10506,8 @@ + --target=none-${host_vendor}-${host_os} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE2_CONFIGURE_FLAGS) \ +- --disable-shared ++ --disable-shared \ ++ + @endif gmp-bootstrap + + .PHONY: configure-stage3-gmp maybe-configure-stage3-gmp +@@ -10509,7 +10541,8 @@ + --target=none-${host_vendor}-${host_os} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE3_CONFIGURE_FLAGS) \ +- --disable-shared ++ --disable-shared \ ++ + @endif gmp-bootstrap + + .PHONY: configure-stage4-gmp maybe-configure-stage4-gmp +@@ -10543,7 +10576,8 @@ + --target=none-${host_vendor}-${host_os} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE4_CONFIGURE_FLAGS) \ +- --disable-shared ++ --disable-shared \ ++ + @endif gmp-bootstrap + + .PHONY: configure-stageprofile-gmp maybe-configure-stageprofile-gmp +@@ -10577,7 +10611,8 @@ + --target=none-${host_vendor}-${host_os} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEprofile_CONFIGURE_FLAGS) \ +- --disable-shared ++ --disable-shared \ ++ + @endif gmp-bootstrap + + .PHONY: configure-stagefeedback-gmp maybe-configure-stagefeedback-gmp +@@ -10611,7 +10646,8 @@ + --target=none-${host_vendor}-${host_os} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEfeedback_CONFIGURE_FLAGS) \ +- --disable-shared ++ --disable-shared \ ++ + @endif gmp-bootstrap + + +@@ -11307,7 +11343,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + $(STAGE1_CONFIGURE_FLAGS) \ +- --disable-shared @extra_mpfr_configure_flags@ ++ --disable-shared @extra_mpfr_configure_flags@ \ ++ + @endif mpfr-bootstrap + + .PHONY: configure-stage2-mpfr maybe-configure-stage2-mpfr +@@ -11341,7 +11378,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE2_CONFIGURE_FLAGS) \ +- --disable-shared @extra_mpfr_configure_flags@ ++ --disable-shared @extra_mpfr_configure_flags@ \ ++ + @endif mpfr-bootstrap + + .PHONY: configure-stage3-mpfr maybe-configure-stage3-mpfr +@@ -11375,7 +11413,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE3_CONFIGURE_FLAGS) \ +- --disable-shared @extra_mpfr_configure_flags@ ++ --disable-shared @extra_mpfr_configure_flags@ \ ++ + @endif mpfr-bootstrap + + .PHONY: configure-stage4-mpfr maybe-configure-stage4-mpfr +@@ -11409,7 +11448,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE4_CONFIGURE_FLAGS) \ +- --disable-shared @extra_mpfr_configure_flags@ ++ --disable-shared @extra_mpfr_configure_flags@ \ ++ + @endif mpfr-bootstrap + + .PHONY: configure-stageprofile-mpfr maybe-configure-stageprofile-mpfr +@@ -11443,7 +11483,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEprofile_CONFIGURE_FLAGS) \ +- --disable-shared @extra_mpfr_configure_flags@ ++ --disable-shared @extra_mpfr_configure_flags@ \ ++ + @endif mpfr-bootstrap + + .PHONY: configure-stagefeedback-mpfr maybe-configure-stagefeedback-mpfr +@@ -11477,7 +11518,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEfeedback_CONFIGURE_FLAGS) \ +- --disable-shared @extra_mpfr_configure_flags@ ++ --disable-shared @extra_mpfr_configure_flags@ \ ++ + @endif mpfr-bootstrap + + +@@ -12173,7 +12215,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + $(STAGE1_CONFIGURE_FLAGS) \ +- --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ ++ --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ \ ++ + @endif mpc-bootstrap + + .PHONY: configure-stage2-mpc maybe-configure-stage2-mpc +@@ -12207,7 +12250,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE2_CONFIGURE_FLAGS) \ +- --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ ++ --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ \ ++ + @endif mpc-bootstrap + + .PHONY: configure-stage3-mpc maybe-configure-stage3-mpc +@@ -12241,7 +12285,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE3_CONFIGURE_FLAGS) \ +- --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ ++ --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ \ ++ + @endif mpc-bootstrap + + .PHONY: configure-stage4-mpc maybe-configure-stage4-mpc +@@ -12275,7 +12320,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE4_CONFIGURE_FLAGS) \ +- --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ ++ --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ \ ++ + @endif mpc-bootstrap + + .PHONY: configure-stageprofile-mpc maybe-configure-stageprofile-mpc +@@ -12309,7 +12355,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEprofile_CONFIGURE_FLAGS) \ +- --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ ++ --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ \ ++ + @endif mpc-bootstrap + + .PHONY: configure-stagefeedback-mpc maybe-configure-stagefeedback-mpc +@@ -12343,7 +12390,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEfeedback_CONFIGURE_FLAGS) \ +- --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ ++ --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ \ ++ + @endif mpc-bootstrap + + +@@ -13039,7 +13087,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + $(STAGE1_CONFIGURE_FLAGS) \ +- --disable-shared @extra_isl_gmp_configure_flags@ ++ --disable-shared @extra_isl_gmp_configure_flags@ \ ++ + @endif isl-bootstrap + + .PHONY: configure-stage2-isl maybe-configure-stage2-isl +@@ -13073,7 +13122,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE2_CONFIGURE_FLAGS) \ +- --disable-shared @extra_isl_gmp_configure_flags@ ++ --disable-shared @extra_isl_gmp_configure_flags@ \ ++ + @endif isl-bootstrap + + .PHONY: configure-stage3-isl maybe-configure-stage3-isl +@@ -13107,7 +13157,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE3_CONFIGURE_FLAGS) \ +- --disable-shared @extra_isl_gmp_configure_flags@ ++ --disable-shared @extra_isl_gmp_configure_flags@ \ ++ + @endif isl-bootstrap + + .PHONY: configure-stage4-isl maybe-configure-stage4-isl +@@ -13141,7 +13192,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE4_CONFIGURE_FLAGS) \ +- --disable-shared @extra_isl_gmp_configure_flags@ ++ --disable-shared @extra_isl_gmp_configure_flags@ \ ++ + @endif isl-bootstrap + + .PHONY: configure-stageprofile-isl maybe-configure-stageprofile-isl +@@ -13175,7 +13227,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEprofile_CONFIGURE_FLAGS) \ +- --disable-shared @extra_isl_gmp_configure_flags@ ++ --disable-shared @extra_isl_gmp_configure_flags@ \ ++ + @endif isl-bootstrap + + .PHONY: configure-stagefeedback-isl maybe-configure-stagefeedback-isl +@@ -13209,7 +13262,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEfeedback_CONFIGURE_FLAGS) \ +- --disable-shared @extra_isl_gmp_configure_flags@ ++ --disable-shared @extra_isl_gmp_configure_flags@ \ ++ + @endif isl-bootstrap + + +@@ -13905,7 +13959,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + $(STAGE1_CONFIGURE_FLAGS) \ +- --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system ++ --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system \ ++ + @endif cloog-bootstrap + + .PHONY: configure-stage2-cloog maybe-configure-stage2-cloog +@@ -13939,7 +13994,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE2_CONFIGURE_FLAGS) \ +- --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system ++ --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system \ ++ + @endif cloog-bootstrap + + .PHONY: configure-stage3-cloog maybe-configure-stage3-cloog +@@ -13973,7 +14029,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE3_CONFIGURE_FLAGS) \ +- --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system ++ --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system \ ++ + @endif cloog-bootstrap + + .PHONY: configure-stage4-cloog maybe-configure-stage4-cloog +@@ -14007,7 +14064,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE4_CONFIGURE_FLAGS) \ +- --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system ++ --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system \ ++ + @endif cloog-bootstrap + + .PHONY: configure-stageprofile-cloog maybe-configure-stageprofile-cloog +@@ -14041,7 +14099,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEprofile_CONFIGURE_FLAGS) \ +- --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system ++ --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system \ ++ + @endif cloog-bootstrap + + .PHONY: configure-stagefeedback-cloog maybe-configure-stagefeedback-cloog +@@ -14075,7 +14134,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEfeedback_CONFIGURE_FLAGS) \ +- --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system ++ --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system \ ++ + @endif cloog-bootstrap + + +@@ -14771,7 +14831,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + $(STAGE1_CONFIGURE_FLAGS) \ +- --disable-shared ++ --disable-shared \ ++ + @endif libelf-bootstrap + + .PHONY: configure-stage2-libelf maybe-configure-stage2-libelf +@@ -14805,7 +14866,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE2_CONFIGURE_FLAGS) \ +- --disable-shared ++ --disable-shared \ ++ + @endif libelf-bootstrap + + .PHONY: configure-stage3-libelf maybe-configure-stage3-libelf +@@ -14839,7 +14901,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE3_CONFIGURE_FLAGS) \ +- --disable-shared ++ --disable-shared \ ++ + @endif libelf-bootstrap + + .PHONY: configure-stage4-libelf maybe-configure-stage4-libelf +@@ -14873,7 +14936,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE4_CONFIGURE_FLAGS) \ +- --disable-shared ++ --disable-shared \ ++ + @endif libelf-bootstrap + + .PHONY: configure-stageprofile-libelf maybe-configure-stageprofile-libelf +@@ -14907,7 +14971,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEprofile_CONFIGURE_FLAGS) \ +- --disable-shared ++ --disable-shared \ ++ + @endif libelf-bootstrap + + .PHONY: configure-stagefeedback-libelf maybe-configure-stagefeedback-libelf +@@ -14941,7 +15006,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEfeedback_CONFIGURE_FLAGS) \ +- --disable-shared ++ --disable-shared \ ++ + @endif libelf-bootstrap + + +@@ -15636,7 +15702,8 @@ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ +- $(STAGE1_CONFIGURE_FLAGS) ++ $(STAGE1_CONFIGURE_FLAGS) \ ++ + @endif gold-bootstrap + + .PHONY: configure-stage2-gold maybe-configure-stage2-gold +@@ -15669,7 +15736,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE2_CONFIGURE_FLAGS) ++ $(STAGE2_CONFIGURE_FLAGS) \ ++ + @endif gold-bootstrap + + .PHONY: configure-stage3-gold maybe-configure-stage3-gold +@@ -15702,7 +15770,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE3_CONFIGURE_FLAGS) ++ $(STAGE3_CONFIGURE_FLAGS) \ ++ + @endif gold-bootstrap + + .PHONY: configure-stage4-gold maybe-configure-stage4-gold +@@ -15735,7 +15804,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE4_CONFIGURE_FLAGS) ++ $(STAGE4_CONFIGURE_FLAGS) \ ++ + @endif gold-bootstrap + + .PHONY: configure-stageprofile-gold maybe-configure-stageprofile-gold +@@ -15768,7 +15838,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEprofile_CONFIGURE_FLAGS) ++ $(STAGEprofile_CONFIGURE_FLAGS) \ ++ + @endif gold-bootstrap + + .PHONY: configure-stagefeedback-gold maybe-configure-stagefeedback-gold +@@ -15801,7 +15872,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEfeedback_CONFIGURE_FLAGS) ++ $(STAGEfeedback_CONFIGURE_FLAGS) \ ++ + @endif gold-bootstrap + + +@@ -16948,7 +17020,8 @@ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ +- $(STAGE1_CONFIGURE_FLAGS) ++ $(STAGE1_CONFIGURE_FLAGS) \ ++ + @endif intl-bootstrap + + .PHONY: configure-stage2-intl maybe-configure-stage2-intl +@@ -16981,7 +17054,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE2_CONFIGURE_FLAGS) ++ $(STAGE2_CONFIGURE_FLAGS) \ ++ + @endif intl-bootstrap + + .PHONY: configure-stage3-intl maybe-configure-stage3-intl +@@ -17014,7 +17088,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE3_CONFIGURE_FLAGS) ++ $(STAGE3_CONFIGURE_FLAGS) \ ++ + @endif intl-bootstrap + + .PHONY: configure-stage4-intl maybe-configure-stage4-intl +@@ -17047,7 +17122,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE4_CONFIGURE_FLAGS) ++ $(STAGE4_CONFIGURE_FLAGS) \ ++ + @endif intl-bootstrap + + .PHONY: configure-stageprofile-intl maybe-configure-stageprofile-intl +@@ -17080,7 +17156,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEprofile_CONFIGURE_FLAGS) ++ $(STAGEprofile_CONFIGURE_FLAGS) \ ++ + @endif intl-bootstrap + + .PHONY: configure-stagefeedback-intl maybe-configure-stagefeedback-intl +@@ -17113,7 +17190,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEfeedback_CONFIGURE_FLAGS) ++ $(STAGEfeedback_CONFIGURE_FLAGS) \ ++ + @endif intl-bootstrap + + +@@ -18685,7 +18763,8 @@ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ +- $(STAGE1_CONFIGURE_FLAGS) ++ $(STAGE1_CONFIGURE_FLAGS) \ ++ + @endif ld-bootstrap + + .PHONY: configure-stage2-ld maybe-configure-stage2-ld +@@ -18718,7 +18797,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE2_CONFIGURE_FLAGS) ++ $(STAGE2_CONFIGURE_FLAGS) \ ++ + @endif ld-bootstrap + + .PHONY: configure-stage3-ld maybe-configure-stage3-ld +@@ -18751,7 +18831,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE3_CONFIGURE_FLAGS) ++ $(STAGE3_CONFIGURE_FLAGS) \ ++ + @endif ld-bootstrap + + .PHONY: configure-stage4-ld maybe-configure-stage4-ld +@@ -18784,7 +18865,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE4_CONFIGURE_FLAGS) ++ $(STAGE4_CONFIGURE_FLAGS) \ ++ + @endif ld-bootstrap + + .PHONY: configure-stageprofile-ld maybe-configure-stageprofile-ld +@@ -18817,7 +18899,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEprofile_CONFIGURE_FLAGS) ++ $(STAGEprofile_CONFIGURE_FLAGS) \ ++ + @endif ld-bootstrap + + .PHONY: configure-stagefeedback-ld maybe-configure-stagefeedback-ld +@@ -18850,7 +18933,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEfeedback_CONFIGURE_FLAGS) ++ $(STAGEfeedback_CONFIGURE_FLAGS) \ ++ + @endif ld-bootstrap + + +@@ -19557,7 +19641,8 @@ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ +- $(STAGE1_CONFIGURE_FLAGS) ++ $(STAGE1_CONFIGURE_FLAGS) \ ++ + @endif libbacktrace-bootstrap + + .PHONY: configure-stage2-libbacktrace maybe-configure-stage2-libbacktrace +@@ -19590,7 +19675,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE2_CONFIGURE_FLAGS) ++ $(STAGE2_CONFIGURE_FLAGS) \ ++ + @endif libbacktrace-bootstrap + + .PHONY: configure-stage3-libbacktrace maybe-configure-stage3-libbacktrace +@@ -19623,7 +19709,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE3_CONFIGURE_FLAGS) ++ $(STAGE3_CONFIGURE_FLAGS) \ ++ + @endif libbacktrace-bootstrap + + .PHONY: configure-stage4-libbacktrace maybe-configure-stage4-libbacktrace +@@ -19656,7 +19743,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE4_CONFIGURE_FLAGS) ++ $(STAGE4_CONFIGURE_FLAGS) \ ++ + @endif libbacktrace-bootstrap + + .PHONY: configure-stageprofile-libbacktrace maybe-configure-stageprofile-libbacktrace +@@ -19689,7 +19777,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEprofile_CONFIGURE_FLAGS) ++ $(STAGEprofile_CONFIGURE_FLAGS) \ ++ + @endif libbacktrace-bootstrap + + .PHONY: configure-stagefeedback-libbacktrace maybe-configure-stagefeedback-libbacktrace +@@ -19722,7 +19811,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEfeedback_CONFIGURE_FLAGS) ++ $(STAGEfeedback_CONFIGURE_FLAGS) \ ++ + @endif libbacktrace-bootstrap + + +@@ -20429,7 +20519,8 @@ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ +- $(STAGE1_CONFIGURE_FLAGS) ++ $(STAGE1_CONFIGURE_FLAGS) \ ++ + @endif libcpp-bootstrap + + .PHONY: configure-stage2-libcpp maybe-configure-stage2-libcpp +@@ -20462,7 +20553,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE2_CONFIGURE_FLAGS) ++ $(STAGE2_CONFIGURE_FLAGS) \ ++ + @endif libcpp-bootstrap + + .PHONY: configure-stage3-libcpp maybe-configure-stage3-libcpp +@@ -20495,7 +20587,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE3_CONFIGURE_FLAGS) ++ $(STAGE3_CONFIGURE_FLAGS) \ ++ + @endif libcpp-bootstrap + + .PHONY: configure-stage4-libcpp maybe-configure-stage4-libcpp +@@ -20528,7 +20621,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE4_CONFIGURE_FLAGS) ++ $(STAGE4_CONFIGURE_FLAGS) \ ++ + @endif libcpp-bootstrap + + .PHONY: configure-stageprofile-libcpp maybe-configure-stageprofile-libcpp +@@ -20561,7 +20655,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEprofile_CONFIGURE_FLAGS) ++ $(STAGEprofile_CONFIGURE_FLAGS) \ ++ + @endif libcpp-bootstrap + + .PHONY: configure-stagefeedback-libcpp maybe-configure-stagefeedback-libcpp +@@ -20594,7 +20689,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEfeedback_CONFIGURE_FLAGS) ++ $(STAGEfeedback_CONFIGURE_FLAGS) \ ++ + @endif libcpp-bootstrap + + +@@ -21301,7 +21397,8 @@ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ +- $(STAGE1_CONFIGURE_FLAGS) ++ $(STAGE1_CONFIGURE_FLAGS) \ ++ + @endif libdecnumber-bootstrap + + .PHONY: configure-stage2-libdecnumber maybe-configure-stage2-libdecnumber +@@ -21334,7 +21431,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE2_CONFIGURE_FLAGS) ++ $(STAGE2_CONFIGURE_FLAGS) \ ++ + @endif libdecnumber-bootstrap + + .PHONY: configure-stage3-libdecnumber maybe-configure-stage3-libdecnumber +@@ -21367,7 +21465,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE3_CONFIGURE_FLAGS) ++ $(STAGE3_CONFIGURE_FLAGS) \ ++ + @endif libdecnumber-bootstrap + + .PHONY: configure-stage4-libdecnumber maybe-configure-stage4-libdecnumber +@@ -21400,7 +21499,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE4_CONFIGURE_FLAGS) ++ $(STAGE4_CONFIGURE_FLAGS) \ ++ + @endif libdecnumber-bootstrap + + .PHONY: configure-stageprofile-libdecnumber maybe-configure-stageprofile-libdecnumber +@@ -21433,7 +21533,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEprofile_CONFIGURE_FLAGS) ++ $(STAGEprofile_CONFIGURE_FLAGS) \ ++ + @endif libdecnumber-bootstrap + + .PHONY: configure-stagefeedback-libdecnumber maybe-configure-stagefeedback-libdecnumber +@@ -21466,7 +21567,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEfeedback_CONFIGURE_FLAGS) ++ $(STAGEfeedback_CONFIGURE_FLAGS) \ ++ + @endif libdecnumber-bootstrap + + +@@ -22614,7 +22716,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + $(STAGE1_CONFIGURE_FLAGS) \ +- @extra_host_libiberty_configure_flags@ ++ @extra_host_libiberty_configure_flags@ \ ++ + @endif libiberty-bootstrap + + .PHONY: configure-stage2-libiberty maybe-configure-stage2-libiberty +@@ -22648,7 +22751,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE2_CONFIGURE_FLAGS) \ +- @extra_host_libiberty_configure_flags@ ++ @extra_host_libiberty_configure_flags@ \ ++ + @endif libiberty-bootstrap + + .PHONY: configure-stage3-libiberty maybe-configure-stage3-libiberty +@@ -22682,7 +22786,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE3_CONFIGURE_FLAGS) \ +- @extra_host_libiberty_configure_flags@ ++ @extra_host_libiberty_configure_flags@ \ ++ + @endif libiberty-bootstrap + + .PHONY: configure-stage4-libiberty maybe-configure-stage4-libiberty +@@ -22716,7 +22821,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE4_CONFIGURE_FLAGS) \ +- @extra_host_libiberty_configure_flags@ ++ @extra_host_libiberty_configure_flags@ \ ++ + @endif libiberty-bootstrap + + .PHONY: configure-stageprofile-libiberty maybe-configure-stageprofile-libiberty +@@ -22750,7 +22856,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEprofile_CONFIGURE_FLAGS) \ +- @extra_host_libiberty_configure_flags@ ++ @extra_host_libiberty_configure_flags@ \ ++ + @endif libiberty-bootstrap + + .PHONY: configure-stagefeedback-libiberty maybe-configure-stagefeedback-libiberty +@@ -22784,7 +22891,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEfeedback_CONFIGURE_FLAGS) \ +- @extra_host_libiberty_configure_flags@ ++ @extra_host_libiberty_configure_flags@ \ ++ + @endif libiberty-bootstrap + + +@@ -26056,7 +26164,8 @@ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ +- $(STAGE1_CONFIGURE_FLAGS) ++ $(STAGE1_CONFIGURE_FLAGS) \ ++ + @endif zlib-bootstrap + + .PHONY: configure-stage2-zlib maybe-configure-stage2-zlib +@@ -26089,7 +26198,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE2_CONFIGURE_FLAGS) ++ $(STAGE2_CONFIGURE_FLAGS) \ ++ + @endif zlib-bootstrap + + .PHONY: configure-stage3-zlib maybe-configure-stage3-zlib +@@ -26122,7 +26232,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE3_CONFIGURE_FLAGS) ++ $(STAGE3_CONFIGURE_FLAGS) \ ++ + @endif zlib-bootstrap + + .PHONY: configure-stage4-zlib maybe-configure-stage4-zlib +@@ -26155,7 +26266,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE4_CONFIGURE_FLAGS) ++ $(STAGE4_CONFIGURE_FLAGS) \ ++ + @endif zlib-bootstrap + + .PHONY: configure-stageprofile-zlib maybe-configure-stageprofile-zlib +@@ -26188,7 +26300,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEprofile_CONFIGURE_FLAGS) ++ $(STAGEprofile_CONFIGURE_FLAGS) \ ++ + @endif zlib-bootstrap + + .PHONY: configure-stagefeedback-zlib maybe-configure-stagefeedback-zlib +@@ -26221,7 +26334,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEfeedback_CONFIGURE_FLAGS) ++ $(STAGEfeedback_CONFIGURE_FLAGS) \ ++ + @endif zlib-bootstrap + + +@@ -29919,7 +30033,8 @@ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + $(STAGE1_CONFIGURE_FLAGS) \ +- --enable-shared ++ --enable-shared \ ++ + @endif lto-plugin-bootstrap + + .PHONY: configure-stage2-lto-plugin maybe-configure-stage2-lto-plugin +@@ -29953,7 +30068,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE2_CONFIGURE_FLAGS) \ +- --enable-shared ++ --enable-shared \ ++ + @endif lto-plugin-bootstrap + + .PHONY: configure-stage3-lto-plugin maybe-configure-stage3-lto-plugin +@@ -29987,7 +30103,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE3_CONFIGURE_FLAGS) \ +- --enable-shared ++ --enable-shared \ ++ + @endif lto-plugin-bootstrap + + .PHONY: configure-stage4-lto-plugin maybe-configure-stage4-lto-plugin +@@ -30021,7 +30138,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE4_CONFIGURE_FLAGS) \ +- --enable-shared ++ --enable-shared \ ++ + @endif lto-plugin-bootstrap + + .PHONY: configure-stageprofile-lto-plugin maybe-configure-stageprofile-lto-plugin +@@ -30055,7 +30173,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEprofile_CONFIGURE_FLAGS) \ +- --enable-shared ++ --enable-shared \ ++ + @endif lto-plugin-bootstrap + + .PHONY: configure-stagefeedback-lto-plugin maybe-configure-stagefeedback-lto-plugin +@@ -30089,7 +30208,8 @@ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEfeedback_CONFIGURE_FLAGS) \ +- --enable-shared ++ --enable-shared \ ++ + @endif lto-plugin-bootstrap + + +@@ -30829,7 +30949,9 @@ + $(SHELL) $${libsrcdir}/configure \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ +- $(STAGE1_CONFIGURE_FLAGS) ++ $(STAGE1_CONFIGURE_FLAGS) \ ++ --disable-libstdcxx-debug --disable-libstdcxx-pch \ ++ + @endif target-libstdc++-v3-bootstrap + + .PHONY: configure-stage2-target-libstdc++-v3 maybe-configure-stage2-target-libstdc++-v3 +@@ -30874,7 +30996,9 @@ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE2_CONFIGURE_FLAGS) ++ $(STAGE2_CONFIGURE_FLAGS) \ ++ --disable-libstdcxx-debug --disable-libstdcxx-pch \ ++ + @endif target-libstdc++-v3-bootstrap + + .PHONY: configure-stage3-target-libstdc++-v3 maybe-configure-stage3-target-libstdc++-v3 +@@ -30919,7 +31043,9 @@ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE3_CONFIGURE_FLAGS) ++ $(STAGE3_CONFIGURE_FLAGS) \ ++ --disable-libstdcxx-debug --disable-libstdcxx-pch \ ++ + @endif target-libstdc++-v3-bootstrap + + .PHONY: configure-stage4-target-libstdc++-v3 maybe-configure-stage4-target-libstdc++-v3 +@@ -30964,7 +31090,9 @@ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE4_CONFIGURE_FLAGS) ++ $(STAGE4_CONFIGURE_FLAGS) \ ++ --disable-libstdcxx-debug --disable-libstdcxx-pch \ ++ + @endif target-libstdc++-v3-bootstrap + + .PHONY: configure-stageprofile-target-libstdc++-v3 maybe-configure-stageprofile-target-libstdc++-v3 +@@ -31009,7 +31137,9 @@ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEprofile_CONFIGURE_FLAGS) ++ $(STAGEprofile_CONFIGURE_FLAGS) \ ++ --disable-libstdcxx-debug --disable-libstdcxx-pch \ ++ + @endif target-libstdc++-v3-bootstrap + + .PHONY: configure-stagefeedback-target-libstdc++-v3 maybe-configure-stagefeedback-target-libstdc++-v3 +@@ -31054,7 +31184,9 @@ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEfeedback_CONFIGURE_FLAGS) ++ $(STAGEfeedback_CONFIGURE_FLAGS) \ ++ --disable-libstdcxx-debug --disable-libstdcxx-pch \ ++ + @endif target-libstdc++-v3-bootstrap + + +@@ -33631,7 +33763,8 @@ + $(SHELL) $${libsrcdir}/configure \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ +- $(STAGE1_CONFIGURE_FLAGS) ++ $(STAGE1_CONFIGURE_FLAGS) \ ++ + @endif target-libgcc-bootstrap + + .PHONY: configure-stage2-target-libgcc maybe-configure-stage2-target-libgcc +@@ -33676,7 +33809,8 @@ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE2_CONFIGURE_FLAGS) ++ $(STAGE2_CONFIGURE_FLAGS) \ ++ + @endif target-libgcc-bootstrap + + .PHONY: configure-stage3-target-libgcc maybe-configure-stage3-target-libgcc +@@ -33721,7 +33855,8 @@ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE3_CONFIGURE_FLAGS) ++ $(STAGE3_CONFIGURE_FLAGS) \ ++ + @endif target-libgcc-bootstrap + + .PHONY: configure-stage4-target-libgcc maybe-configure-stage4-target-libgcc +@@ -33766,7 +33901,8 @@ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE4_CONFIGURE_FLAGS) ++ $(STAGE4_CONFIGURE_FLAGS) \ ++ + @endif target-libgcc-bootstrap + + .PHONY: configure-stageprofile-target-libgcc maybe-configure-stageprofile-target-libgcc +@@ -33811,7 +33947,8 @@ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEprofile_CONFIGURE_FLAGS) ++ $(STAGEprofile_CONFIGURE_FLAGS) \ ++ + @endif target-libgcc-bootstrap + + .PHONY: configure-stagefeedback-target-libgcc maybe-configure-stagefeedback-target-libgcc +@@ -33856,7 +33993,8 @@ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEfeedback_CONFIGURE_FLAGS) ++ $(STAGEfeedback_CONFIGURE_FLAGS) \ ++ + @endif target-libgcc-bootstrap + + +@@ -40928,7 +41066,8 @@ + $(SHELL) $${libsrcdir}/configure \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ +- $(STAGE1_CONFIGURE_FLAGS) ++ $(STAGE1_CONFIGURE_FLAGS) \ ++ + @endif target-libgomp-bootstrap + + .PHONY: configure-stage2-target-libgomp maybe-configure-stage2-target-libgomp +@@ -40973,7 +41112,8 @@ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE2_CONFIGURE_FLAGS) ++ $(STAGE2_CONFIGURE_FLAGS) \ ++ + @endif target-libgomp-bootstrap + + .PHONY: configure-stage3-target-libgomp maybe-configure-stage3-target-libgomp +@@ -41018,7 +41158,8 @@ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE3_CONFIGURE_FLAGS) ++ $(STAGE3_CONFIGURE_FLAGS) \ ++ + @endif target-libgomp-bootstrap + + .PHONY: configure-stage4-target-libgomp maybe-configure-stage4-target-libgomp +@@ -41063,7 +41204,8 @@ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGE4_CONFIGURE_FLAGS) ++ $(STAGE4_CONFIGURE_FLAGS) \ ++ + @endif target-libgomp-bootstrap + + .PHONY: configure-stageprofile-target-libgomp maybe-configure-stageprofile-target-libgomp +@@ -41108,7 +41250,8 @@ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEprofile_CONFIGURE_FLAGS) ++ $(STAGEprofile_CONFIGURE_FLAGS) \ ++ + @endif target-libgomp-bootstrap + + .PHONY: configure-stagefeedback-target-libgomp maybe-configure-stagefeedback-target-libgomp +@@ -41153,7 +41296,8 @@ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ +- $(STAGEfeedback_CONFIGURE_FLAGS) ++ $(STAGEfeedback_CONFIGURE_FLAGS) \ ++ + @endif target-libgomp-bootstrap + + --- gcc-4.9-4.9.2.orig/debian/patches/config-ml-trunk.diff +++ gcc-4.9-4.9.2/debian/patches/config-ml-trunk.diff @@ -0,0 +1,167 @@ +# DP: - Disable some biarch libraries for biarch builds. +# DP: - Fix multilib builds on kernels which don't support all multilibs. + +Index: b/src/config-ml.in +=================================================================== +--- a/src/config-ml.in ++++ b/src/config-ml.in +@@ -475,6 +475,25 @@ powerpc*-*-* | rs6000*-*-*) + ;; + esac + ++if [ -z "$biarch_multidir_names" ]; then ++ biarch_multidir_names="libiberty libstdc++-v3 libgfortran libmudflap libssp libffi libobjc libgomp" ++ echo "WARNING: biarch_multidir_names is unset. Use default value:" ++ echo " $biarch_multidir_names" ++fi ++ml_srcbase=`basename $ml_realsrcdir` ++old_multidirs="${multidirs}" ++multidirs="" ++for x in ${old_multidirs}; do ++ case " $x " in ++ " 32 "|" n32 "|" x32 "|" 64 "|" hf "|" sf ") ++ case "$biarch_multidir_names" in ++ *"$ml_srcbase"*) multidirs="${multidirs} ${x}" ;; ++ esac ++ ;; ++ *) multidirs="${multidirs} ${x}" ;; ++ esac ++done ++ + # Remove extraneous blanks from multidirs. + # Tests like `if [ -n "$multidirs" ]' require it. + multidirs=`echo "$multidirs" | sed -e 's/^[ ][ ]*//' -e 's/[ ][ ]*$//' -e 's/[ ][ ]*/ /g'` +@@ -662,6 +681,35 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + + for ml_dir in ${multidirs}; do + ++ # a native build fails if the running kernel doesn't support the multilib ++ # variant; force cross compilation for these cases. ++ ml_host_arg= ++ case "${host}" in ++ i[34567]86-*-linux*) ++ case "${ml_dir}" in ++ 64) ml_host_arg="--host=x86_64-linux-gnu";; ++ x32) ml_host_arg="--host=x86_64-linux-gnux32";; ++ esac ++ ;; ++ powerpc-*-linux*) ++ case "${ml_dir}" in ++ 64) ml_host_arg="--host=powerpc64-linux-gnu" ++ esac ++ ;; ++ s390-*-linux*) ++ case "${ml_dir}" in ++ 64) ml_host_arg="--host=s390x-linux-gnu" ++ esac ++ ;; ++ x86_64-*-linux*) ++ case "${ml_dir}" in ++ x32) ml_host_arg="--host=x86_64-linux-gnux32" ++ esac ++ esac ++ if [ -n "${ml_host_arg}" ]; then ++ ml_host_arg="${ml_host_arg} --with-default-host-alias=${host_alias}" ++ fi ++ + if [ "${ml_verbose}" = --verbose ]; then + echo "Running configure in multilib subdir ${ml_dir}" + echo "pwd: `${PWDCMD-pwd}`" +@@ -866,9 +914,20 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + fi + fi + ++ ml_configure_args= ++ for arg in ${ac_configure_args} ++ do ++ case $arg in ++ *CC=*) ml_configure_args=${ml_config_env} ;; ++ *CXX=*) ml_configure_args=${ml_config_env} ;; ++ *GCJ=*) ml_configure_args=${ml_config_env} ;; ++ *) ;; ++ esac ++ done ++ + if eval ${ml_config_env} ${ml_config_shell} ${ml_recprog} \ + --with-multisubdir=${ml_dir} --with-multisrctop=${multisrctop} \ +- "${ac_configure_args}" ${ml_config_env} ${ml_srcdiroption} ; then ++ "${ac_configure_args}" ${ml_configure_args} ${ml_config_env} ${ml_srcdiroption} ; then + true + else + exit 1 +Index: b/src/libstdc++-v3/include/Makefile.am +=================================================================== +--- a/src/libstdc++-v3/include/Makefile.am ++++ b/src/libstdc++-v3/include/Makefile.am +@@ -847,8 +847,9 @@ c_compatibility_headers_extra = + endif + + host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR) +-host_builddir = ./${host_alias}/bits +-host_installdir = ${gxx_include_dir}/${host_alias}$(MULTISUBDIR)/bits ++default_host_alias = @default_host_alias@ ++host_builddir = ./${default_host_alias}/bits ++host_installdir = ${gxx_include_dir}/${default_host_alias}$(MULTISUBDIR)/bits + host_headers = \ + ${host_srcdir}/ctype_base.h \ + ${host_srcdir}/ctype_inline.h \ +@@ -1074,6 +1075,7 @@ stamp-profile-impl: ${profile_impl_heade + stamp-${host_alias}: + @-mkdir -p ${host_builddir} + @-mkdir -p ${host_builddir}/../ext ++ @test ${default_host_alias} = ${host_alias} || ln -sf ${default_host_alias} ${host_alias} + @$(STAMP) stamp-${host_alias} + + # Host includes static. +Index: b/src/libstdc++-v3/include/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/include/Makefile.in ++++ b/src/libstdc++-v3/include/Makefile.in +@@ -205,6 +205,7 @@ builddir = @builddir@ + check_msgfmt = @check_msgfmt@ + datadir = @datadir@ + datarootdir = @datarootdir@ ++default_host_alias = @default_host_alias@ + docdir = @docdir@ + dvidir = @dvidir@ + enable_shared = @enable_shared@ +@@ -1108,8 +1109,8 @@ profile_impl_headers = \ + # For --enable-cheaders=c_std + @GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE@c_compatibility_headers_extra = ${c_compatibility_headers} + host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR) +-host_builddir = ./${host_alias}/bits +-host_installdir = ${gxx_include_dir}/${host_alias}$(MULTISUBDIR)/bits ++host_builddir = ./${default_host_alias}/bits ++host_installdir = ${gxx_include_dir}/${default_host_alias}$(MULTISUBDIR)/bits + host_headers = \ + ${host_srcdir}/ctype_base.h \ + ${host_srcdir}/ctype_inline.h \ +@@ -1493,6 +1494,7 @@ stamp-profile-impl: ${profile_impl_heade + stamp-${host_alias}: + @-mkdir -p ${host_builddir} + @-mkdir -p ${host_builddir}/../ext ++ @test ${default_host_alias} = ${host_alias} || ln -sf ${default_host_alias} ${host_alias} + @$(STAMP) stamp-${host_alias} + + # Host includes static. +Index: b/src/libstdc++-v3/configure.ac +=================================================================== +--- a/src/libstdc++-v3/configure.ac ++++ b/src/libstdc++-v3/configure.ac +@@ -476,6 +476,16 @@ else + multilib_arg= + fi + ++AC_ARG_WITH(default-host-alias, ++[AS_HELP_STRING([--with-default-host-alias=TRIPLET], ++ [specifies host triplet used for the default multilib build])], ++[case "${withval}" in ++yes) AC_MSG_ERROR(bad value ${withval} given for default host triplet) ;; ++no) default_host_alias='${host_alias}' ;; ++*) default_host_alias=${withval} ;; ++esac],[default_host_alias='${host_alias}']) ++AC_SUBST(default_host_alias) ++ + # Export all the install information. + GLIBCXX_EXPORT_INSTALL_INFO + --- gcc-4.9-4.9.2.orig/debian/patches/config-ml.diff +++ gcc-4.9-4.9.2/debian/patches/config-ml.diff @@ -0,0 +1,131 @@ +# DP: - Disable some biarch libraries for biarch builds. +# DP: - Fix multilib builds on kernels which don't support all multilibs. + +Index: b/src/config-ml.in +=================================================================== +--- a/src/config-ml.in ++++ b/src/config-ml.in +@@ -467,6 +467,25 @@ powerpc*-*-* | rs6000*-*-*) + ;; + esac + ++if [ -z "$biarch_multidir_names" ]; then ++ biarch_multidir_names="libiberty libstdc++-v3 libgfortran libmudflap libssp libffi libobjc libgomp" ++ echo "WARNING: biarch_multidir_names is unset. Use default value:" ++ echo " $biarch_multidir_names" ++fi ++ml_srcbase=`basename $ml_realsrcdir` ++old_multidirs="${multidirs}" ++multidirs="" ++for x in ${old_multidirs}; do ++ case " $x " in ++ " 32 "|" n32 "|" x32 "|" 64 "|" hf "|" sf ") ++ case "$biarch_multidir_names" in ++ *"$ml_srcbase"*) multidirs="${multidirs} ${x}" ;; ++ esac ++ ;; ++ *) multidirs="${multidirs} ${x}" ;; ++ esac ++done ++ + # Remove extraneous blanks from multidirs. + # Tests like `if [ -n "$multidirs" ]' require it. + multidirs=`echo "$multidirs" | sed -e 's/^[ ][ ]*//' -e 's/[ ][ ]*$//' -e 's/[ ][ ]*/ /g'` +@@ -858,9 +906,20 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + fi + fi + ++ ml_configure_args= ++ for arg in ${ac_configure_args} ++ do ++ case $arg in ++ *CC=*) ml_configure_args=${ml_config_env} ;; ++ *CXX=*) ml_configure_args=${ml_config_env} ;; ++ *GCJ=*) ml_configure_args=${ml_config_env} ;; ++ *) ;; ++ esac ++ done ++ + if eval ${ml_config_env} ${ml_config_shell} ${ml_recprog} \ + --with-multisubdir=${ml_dir} --with-multisrctop=${multisrctop} \ +- ${ac_configure_args} ${ml_config_env} ${ml_srcdiroption} ; then ++ ${ac_configure_args} ${ml_configure_args} ${ml_host_arg} ${ml_srcdiroption} ; then + true + else + exit 1 +Index: b/src/libstdc++-v3/include/Makefile.am +=================================================================== +--- a/src/libstdc++-v3/include/Makefile.am ++++ b/src/libstdc++-v3/include/Makefile.am +@@ -844,8 +844,9 @@ c_compatibility_headers_extra = + endif + + host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR) +-host_builddir = ./${host_alias}/bits +-host_installdir = ${gxx_include_dir}/${host_alias}$(MULTISUBDIR)/bits ++default_host_alias = @default_host_alias@ ++host_builddir = ./${default_host_alias}/bits ++host_installdir = ${gxx_include_dir}/${default_host_alias}$(MULTISUBDIR)/bits + host_headers = \ + ${host_srcdir}/ctype_base.h \ + ${host_srcdir}/ctype_inline.h \ +@@ -1071,6 +1072,7 @@ stamp-profile-impl: ${profile_impl_heade + stamp-${host_alias}: + @-mkdir -p ${host_builddir} + @-mkdir -p ${host_builddir}/../ext ++ @test ${default_host_alias} = ${host_alias} || ln -sf ${default_host_alias} ${host_alias} + @$(STAMP) stamp-${host_alias} + + # Host includes static. +Index: b/src/libstdc++-v3/include/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/include/Makefile.in ++++ b/src/libstdc++-v3/include/Makefile.in +@@ -205,6 +205,7 @@ builddir = @builddir@ + check_msgfmt = @check_msgfmt@ + datadir = @datadir@ + datarootdir = @datarootdir@ ++default_host_alias = @default_host_alias@ + docdir = @docdir@ + dvidir = @dvidir@ + enable_shared = @enable_shared@ +@@ -1105,8 +1106,8 @@ profile_impl_headers = \ + # For --enable-cheaders=c_std + @GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE@c_compatibility_headers_extra = ${c_compatibility_headers} + host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR) +-host_builddir = ./${host_alias}/bits +-host_installdir = ${gxx_include_dir}/${host_alias}$(MULTISUBDIR)/bits ++host_builddir = ./${default_host_alias}/bits ++host_installdir = ${gxx_include_dir}/${default_host_alias}$(MULTISUBDIR)/bits + host_headers = \ + ${host_srcdir}/ctype_base.h \ + ${host_srcdir}/ctype_inline.h \ +@@ -1490,6 +1491,7 @@ stamp-profile-impl: ${profile_impl_heade + stamp-${host_alias}: + @-mkdir -p ${host_builddir} + @-mkdir -p ${host_builddir}/../ext ++ @test ${default_host_alias} = ${host_alias} || ln -sf ${default_host_alias} ${host_alias} + @$(STAMP) stamp-${host_alias} + + # Host includes static. +Index: b/src/libstdc++-v3/configure.ac +=================================================================== +--- a/src/libstdc++-v3/configure.ac ++++ b/src/libstdc++-v3/configure.ac +@@ -476,6 +476,16 @@ else + multilib_arg= + fi + ++AC_ARG_WITH(default-host-alias, ++[AS_HELP_STRING([--with-default-host-alias=TRIPLET], ++ [specifies host triplet used for the default multilib build])], ++[case "${withval}" in ++yes) AC_MSG_ERROR(bad value ${withval} given for default host triplet) ;; ++no) default_host_alias='${host_alias}' ;; ++*) default_host_alias=${withval} ;; ++esac],[default_host_alias='${host_alias}']) ++AC_SUBST(default_host_alias) ++ + # Export all the install information. + GLIBCXX_EXPORT_INSTALL_INFO + --- gcc-4.9-4.9.2.orig/debian/patches/cross-biarch.diff +++ gcc-4.9-4.9.2/debian/patches/cross-biarch.diff @@ -0,0 +1,88 @@ +# DP: Fix the location of target's libs in cross-build for biarch + +Index: b/src/config-ml.in +=================================================================== +--- a/src/config-ml.in ++++ b/src/config-ml.in +@@ -514,7 +514,12 @@ multi-do: + else \ + if [ -d ../$${dir}/$${lib} ]; then \ + flags=`echo $$i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \ +- if (cd ../$${dir}/$${lib}; $(MAKE) $(FLAGS_TO_PASS) \ ++ libsuffix_="$${dir}"; \ ++ if [ "$${dir}" = "n32" ]; then libsuffix_=32; fi; \ ++ if (cd ../$${dir}/$${lib}; $(MAKE) $(subst \ ++ -B$(build_tooldir)/lib/, \ ++ -B$(build_tooldir)/lib$${libsuffix_}/, \ ++ $(FLAGS_TO_PASS)) \ + CFLAGS="$(CFLAGS) $${flags}" \ + CCASFLAGS="$(CCASFLAGS) $${flags}" \ + FCFLAGS="$(FCFLAGS) $${flags}" \ +@@ -798,6 +803,13 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + GOC_=$GOC' ' + GDC_=$GDC' ' + else ++ if [ "${ml_dir}" = "." ]; then ++ FILTER_="s!X\\(.*\\)!\\1!p" ++ elif [ "${ml_dir}" = "n32" ]; then # mips n32 -> lib32 ++ FILTER_="s!X\\(.*\\)/!\\132/!p" ++ else ++ FILTER_="s!X\\(.*\\)/!\\1${ml_dir}/!p" ++ fi + # Create a regular expression that matches any string as long + # as ML_POPDIR. + popdir_rx=`echo "${ML_POPDIR}" | sed 's,.,.,g'` +@@ -806,6 +818,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\1/p"`' ' ;; ++ -B*/lib/) ++ CC_="${CC_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + *) +@@ -818,6 +832,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++ CXX_="${CXX_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + *) +@@ -830,6 +846,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + F77_="${F77_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++ F77_="${F77_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + F77_="${F77_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + *) +@@ -842,6 +860,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + GCJ_="${GCJ_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++ GCJ_="${GCJ_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + GCJ_="${GCJ_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + *) +@@ -854,6 +874,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++ GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + *) +@@ -866,6 +888,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + GOC_="${GOC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++ GOC_="${GOC_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + GOC_="${GOC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + *) --- gcc-4.9-4.9.2.orig/debian/patches/cross-fixes.diff +++ gcc-4.9-4.9.2/debian/patches/cross-fixes.diff @@ -0,0 +1,81 @@ +# DP: Fix the linker error when creating an xcc for ia64 + +--- + gcc/config/ia64/fde-glibc.c | 3 +++ + gcc/config/ia64/unwind-ia64.c | 3 ++- + gcc/unwind-compat.c | 2 ++ + gcc/unwind-generic.h | 2 ++ + 6 files changed, 14 insertions(+), 1 deletions(-) + +Index: b/src/libgcc/config/ia64/fde-glibc.c +=================================================================== +--- a/src/libgcc/config/ia64/fde-glibc.c ++++ b/src/libgcc/config/ia64/fde-glibc.c +@@ -28,6 +28,7 @@ + #ifndef _GNU_SOURCE + #define _GNU_SOURCE 1 + #endif ++#ifndef inhibit_libc + #include "config.h" + #include + #include +@@ -159,3 +160,5 @@ + + return data.ret; + } ++ ++#endif +Index: b/src/libgcc/config/ia64/unwind-ia64.c +=================================================================== +--- a/src/libgcc/config/ia64/unwind-ia64.c ++++ b/src/libgcc/config/ia64/unwind-ia64.c +@@ -27,6 +27,7 @@ + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + . */ + ++#ifndef inhibit_libc + #include "tconfig.h" + #include "tsystem.h" + #include "coretypes.h" +@@ -2467,3 +2468,4 @@ + #endif + + #endif ++#endif +Index: b/src/libgcc/unwind-compat.c +=================================================================== +--- a/src/libgcc/unwind-compat.c ++++ b/src/libgcc/unwind-compat.c +@@ -24,6 +24,7 @@ + . */ + + #if defined (USE_GAS_SYMVER) && defined (USE_LIBUNWIND_EXCEPTIONS) ++#ifndef inhibit_libc + #include "tconfig.h" + #include "tsystem.h" + #include "unwind.h" +@@ -208,3 +209,4 @@ + } + symver (_Unwind_SetIP, GCC_3.0); + #endif ++#endif +Index: b/src/libgcc/unwind-generic.h +=================================================================== +--- a/src/libgcc/unwind-generic.h ++++ b/src/libgcc/unwind-generic.h +@@ -221,6 +221,7 @@ + compatible with the standard ABI for IA-64, we inline these. */ + + #ifdef __ia64__ ++#ifndef inhibit_libc + #include + + static inline _Unwind_Ptr +@@ -239,6 +240,7 @@ + + /* @@@ Retrieve the Backing Store Pointer of the given context. */ + extern _Unwind_Word _Unwind_GetBSP (struct _Unwind_Context *); ++#endif + #else + extern _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *); + extern _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *); --- gcc-4.9-4.9.2.orig/debian/patches/cross-install-location.diff +++ gcc-4.9-4.9.2/debian/patches/cross-install-location.diff @@ -0,0 +1,382 @@ +Index: b/src/fixincludes/Makefile.in +=================================================================== +--- a/src/fixincludes/Makefile.in ++++ b/src/fixincludes/Makefile.in +@@ -52,9 +52,9 @@ target_noncanonical:=@target_noncanonica + gcc_version := $(shell cat $(srcdir)/../gcc/BASE-VER) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) + # Directory in which the compiler finds executables +-libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libexecsubdir = $(libexecdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) + # Where our executable files go + itoolsdir = $(libexecsubdir)/install-tools + # Where our data files go +Index: b/src/libgfortran/Makefile.in +=================================================================== +--- a/src/libgfortran/Makefile.in ++++ b/src/libgfortran/Makefile.in +@@ -506,12 +506,12 @@ libgfortran_la_LDFLAGS = -version-info ` + + libgfortran_la_DEPENDENCIES = $(version_dep) libgfortran.spec $(LIBQUADLIB_DEP) + myexeclib_LTLIBRARIES = libgfortranbegin.la +-myexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR) ++myexeclibdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR) + libgfortranbegin_la_SOURCES = fmain.c + libgfortranbegin_la_LDFLAGS = -static + libgfortranbegin_la_LINK = $(LINK) $(libgfortranbegin_la_LDFLAGS) + cafexeclib_LTLIBRARIES = libcaf_single.la +-cafexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR) ++cafexeclibdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR) + libcaf_single_la_SOURCES = caf/single.c + libcaf_single_la_LDFLAGS = -static + libcaf_single_la_DEPENDENCIES = caf/libcaf.h +Index: b/src/libgfortran/Makefile.am +=================================================================== +--- a/src/libgfortran/Makefile.am ++++ b/src/libgfortran/Makefile.am +@@ -42,13 +42,13 @@ libgfortran_la_LDFLAGS = -version-info ` + libgfortran_la_DEPENDENCIES = $(version_dep) libgfortran.spec $(LIBQUADLIB_DEP) + + myexeclib_LTLIBRARIES = libgfortranbegin.la +-myexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR) ++myexeclibdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR) + libgfortranbegin_la_SOURCES = fmain.c + libgfortranbegin_la_LDFLAGS = -static + libgfortranbegin_la_LINK = $(LINK) $(libgfortranbegin_la_LDFLAGS) + + cafexeclib_LTLIBRARIES = libcaf_single.la +-cafexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR) ++cafexeclibdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR) + libcaf_single_la_SOURCES = caf/single.c + libcaf_single_la_LDFLAGS = -static + libcaf_single_la_DEPENDENCIES = caf/libcaf.h +Index: b/src/lto-plugin/Makefile.in +=================================================================== +--- a/src/lto-plugin/Makefile.in ++++ b/src/lto-plugin/Makefile.in +@@ -228,7 +228,7 @@ top_srcdir = @top_srcdir@ + ACLOCAL_AMFLAGS = -I .. -I ../config + AUTOMAKE_OPTIONS = no-dependencies + gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) +-libexecsubdir := $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libexecsubdir := $(libexecdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) + AM_CPPFLAGS = -I$(top_srcdir)/../include $(DEFS) + AM_CFLAGS = @ac_lto_plugin_warn_cflags@ + AM_LDFLAGS = @ac_lto_plugin_ldflags@ +Index: b/src/lto-plugin/Makefile.am +=================================================================== +--- a/src/lto-plugin/Makefile.am ++++ b/src/lto-plugin/Makefile.am +@@ -5,7 +5,7 @@ AUTOMAKE_OPTIONS = no-dependencies + + gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) + target_noncanonical := @target_noncanonical@ +-libexecsubdir := $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libexecsubdir := $(libexecdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) + + AM_CPPFLAGS = -I$(top_srcdir)/../include $(DEFS) + AM_CFLAGS = @ac_lto_plugin_warn_cflags@ +Index: b/src/libitm/Makefile.in +=================================================================== +--- a/src/libitm/Makefile.in ++++ b/src/libitm/Makefile.in +@@ -306,8 +306,8 @@ SUBDIRS = testsuite + gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) + abi_version = -fabi-version=4 + search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir) +-fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/finclude +-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/finclude ++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + AM_CPPFLAGS = $(addprefix -I, $(search_path)) + AM_CFLAGS = $(XCFLAGS) + AM_CXXFLAGS = $(XCFLAGS) -std=gnu++0x -funwind-tables -fno-exceptions \ +Index: b/src/libitm/Makefile.am +=================================================================== +--- a/src/libitm/Makefile.am ++++ b/src/libitm/Makefile.am +@@ -11,8 +11,8 @@ abi_version = -fabi-version=4 + config_path = @config_path@ + search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir) + +-fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/finclude +-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/finclude ++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + + vpath % $(strip $(search_path)) + +Index: b/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -3789,7 +3789,7 @@ process_command (unsigned int decoded_op + GCC_EXEC_PREFIX is typically a directory name with a trailing + / (which is ignored by make_relative_prefix), so append a + program name. */ +- char *tmp_prefix = concat (gcc_exec_prefix, "gcc", NULL); ++ char *tmp_prefix = concat (gcc_exec_prefix, "gcc-cross", NULL); + gcc_libexec_prefix = get_relative_prefix (tmp_prefix, + standard_exec_prefix, + standard_libexec_prefix); +@@ -3815,15 +3815,15 @@ process_command (unsigned int decoded_op + { + int len = strlen (gcc_exec_prefix); + +- if (len > (int) sizeof ("/lib/gcc/") - 1 ++ if (len > (int) sizeof ("/lib/gcc-cross/") - 1 + && (IS_DIR_SEPARATOR (gcc_exec_prefix[len-1]))) + { +- temp = gcc_exec_prefix + len - sizeof ("/lib/gcc/") + 1; ++ temp = gcc_exec_prefix + len - sizeof ("/lib/gcc-cross/") + 1; + if (IS_DIR_SEPARATOR (*temp) + && filename_ncmp (temp + 1, "lib", 3) == 0 + && IS_DIR_SEPARATOR (temp[4]) +- && filename_ncmp (temp + 5, "gcc", 3) == 0) +- len -= sizeof ("/lib/gcc/") - 1; ++ && filename_ncmp (temp + 5, "gcc-cross", 3) == 0) ++ len -= sizeof ("/lib/gcc-cross/") - 1; + } + + set_std_prefix (gcc_exec_prefix, len); +Index: b/src/gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -586,9 +586,9 @@ libexecdir = @libexecdir@ + # -------- + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(version) ++libsubdir = $(libdir)/gcc-cross/$(target_noncanonical)/$(version) + # Directory in which the compiler finds executables +-libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(version) ++libexecsubdir = $(libexecdir)/gcc-cross/$(target_noncanonical)/$(version) + # Directory in which all plugin resources are installed + plugin_resourcesdir = $(libsubdir)/plugin + # Directory in which plugin headers are installed +@@ -1942,8 +1942,8 @@ prefix.o: $(FULLVER) + + DRIVER_DEFINES = \ + -DSTANDARD_STARTFILE_PREFIX=\"$(unlibsubdir)/\" \ +- -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \ +- -DSTANDARD_LIBEXEC_PREFIX=\"$(libexecdir)/gcc/\" \ ++ -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc-cross/\" \ ++ -DSTANDARD_LIBEXEC_PREFIX=\"$(libexecdir)/gcc-cross/\" \ + -DDEFAULT_TARGET_VERSION=\"$(BASEVER_c)\" \ + -DDEFAULT_TARGET_FULL_VERSION=\"$(FULLVER_c)\" \ + -DDEFAULT_TARGET_MACHINE=\"$(target_noncanonical)\" \ +@@ -2529,7 +2529,7 @@ PREPROCESSOR_DEFINES = \ + -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \ + -DNATIVE_SYSTEM_HEADER_DIR=\"$(NATIVE_SYSTEM_HEADER_DIR)\" \ + -DPREFIX=\"$(prefix)/\" \ +- -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \ ++ -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc-cross/\" \ + @TARGET_SYSTEM_ROOT_DEFINE@ + + CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(FULLVER_s) +Index: b/src/libssp/Makefile.in +=================================================================== +--- a/src/libssp/Makefile.in ++++ b/src/libssp/Makefile.in +@@ -259,7 +259,7 @@ gcc_version := $(shell cat $(top_srcdir) + @LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@version_dep = ssp.map-sun + AM_CFLAGS = -Wall + toolexeclib_LTLIBRARIES = libssp.la libssp_nonshared.la +-libsubincludedir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/include ++libsubincludedir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)/include + nobase_libsubinclude_HEADERS = ssp/ssp.h ssp/string.h ssp/stdio.h ssp/unistd.h + libssp_la_SOURCES = \ + ssp.c gets-chk.c memcpy-chk.c memmove-chk.c mempcpy-chk.c \ +Index: b/src/libssp/Makefile.am +=================================================================== +--- a/src/libssp/Makefile.am ++++ b/src/libssp/Makefile.am +@@ -39,7 +39,7 @@ AM_CFLAGS = -Wall + toolexeclib_LTLIBRARIES = libssp.la libssp_nonshared.la + + target_noncanonical = @target_noncanonical@ +-libsubincludedir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/include ++libsubincludedir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)/include + nobase_libsubinclude_HEADERS = ssp/ssp.h ssp/string.h ssp/stdio.h ssp/unistd.h + + libssp_la_SOURCES = \ +Index: b/src/libquadmath/Makefile.in +=================================================================== +--- a/src/libquadmath/Makefile.in ++++ b/src/libquadmath/Makefile.in +@@ -325,7 +325,7 @@ AUTOMAKE_OPTIONS = 1.8 foreign + + @BUILD_LIBQUADMATH_TRUE@libquadmath_la_DEPENDENCIES = $(version_dep) $(libquadmath_la_LIBADD) + @BUILD_LIBQUADMATH_TRUE@nodist_libsubinclude_HEADERS = quadmath.h quadmath_weak.h +-@BUILD_LIBQUADMATH_TRUE@libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++@BUILD_LIBQUADMATH_TRUE@libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + @BUILD_LIBQUADMATH_TRUE@libquadmath_la_SOURCES = \ + @BUILD_LIBQUADMATH_TRUE@ math/x2y2m1q.c math/isinf_nsq.c math/acoshq.c math/fmodq.c \ + @BUILD_LIBQUADMATH_TRUE@ math/acosq.c math/frexpq.c \ +Index: b/src/libquadmath/Makefile.am +=================================================================== +--- a/src/libquadmath/Makefile.am ++++ b/src/libquadmath/Makefile.am +@@ -41,7 +41,7 @@ libquadmath_la_LDFLAGS = -version-info ` + libquadmath_la_DEPENDENCIES = $(version_dep) $(libquadmath_la_LIBADD) + + nodist_libsubinclude_HEADERS = quadmath.h quadmath_weak.h +-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + + libquadmath_la_SOURCES = \ + math/x2y2m1q.c math/isinf_nsq.c math/acoshq.c math/fmodq.c \ +Index: b/src/libobjc/Makefile.in +=================================================================== +--- a/src/libobjc/Makefile.in ++++ b/src/libobjc/Makefile.in +@@ -50,7 +50,7 @@ top_builddir = . + -include ../boehm-gc/threads.mk + + libdir = $(exec_prefix)/lib +-libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) + + # Multilib support variables. + MULTISRCTOP = +Index: b/src/libada/Makefile.in +=================================================================== +--- a/src/libada/Makefile.in ++++ b/src/libada/Makefile.in +@@ -68,7 +68,7 @@ GCC_DIR=$(MULTIBUILDTOP)../../$(host_sub + + target_noncanonical:=@target_noncanonical@ + version := $(shell cat $(srcdir)/../gcc/BASE-VER) +-libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR) ++libsubdir := $(libdir)/gcc-cross/$(target_noncanonical)/$(version)$(MULTISUBDIR) + ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR)) + ADA_RTS_SUBDIR=./rts$(subst /,_,$(MULTISUBDIR)) + +Index: b/src/libgomp/Makefile.in +=================================================================== +--- a/src/libgomp/Makefile.in ++++ b/src/libgomp/Makefile.in +@@ -291,8 +291,8 @@ ACLOCAL_AMFLAGS = -I .. -I ../config + SUBDIRS = testsuite + gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) + search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir) +-fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/finclude +-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/finclude ++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + AM_CPPFLAGS = $(addprefix -I, $(search_path)) + AM_CFLAGS = $(XCFLAGS) + AM_LDFLAGS = $(XLDFLAGS) $(SECTION_LDFLAGS) $(OPT_LDFLAGS) +Index: b/src/libgomp/Makefile.am +=================================================================== +--- a/src/libgomp/Makefile.am ++++ b/src/libgomp/Makefile.am +@@ -9,8 +9,8 @@ gcc_version := $(shell cat $(top_srcdir) + config_path = @config_path@ + search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir) + +-fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/finclude +-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/finclude ++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + + vpath % $(strip $(search_path)) + +Index: b/src/libgcc/Makefile.in +=================================================================== +--- a/src/libgcc/Makefile.in ++++ b/src/libgcc/Makefile.in +@@ -182,7 +182,7 @@ STRIP = @STRIP@ + STRIP_FOR_TARGET = $(STRIP) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(host_noncanonical)/$(version) ++libsubdir = $(libdir)/gcc-cross/$(host_noncanonical)/$(version) + # Used to install the shared libgcc. + slibdir = @slibdir@ + # Maybe used for DLLs on Windows targets. +Index: b/src/libjava/Makefile.in +=================================================================== +--- a/src/libjava/Makefile.in ++++ b/src/libjava/Makefile.in +@@ -797,8 +797,8 @@ write_entries_to_file = $(shell rm -f $( + + + # This is required by TL_AC_GXX_INCLUDE_DIR. +-libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) +-libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) ++libexecsubdir = $(libexecdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) + toolexeclib_LTLIBRARIES = libgcj.la libgij.la libgcj-tools.la \ + $(am__append_2) $(am__append_3) $(am__append_4) + toolexecmainlib_DATA = libgcj.spec +Index: b/src/libjava/Makefile.am +=================================================================== +--- a/src/libjava/Makefile.am ++++ b/src/libjava/Makefile.am +@@ -35,9 +35,9 @@ write_entries_to_file = $(shell rm -f $( + target_noncanonical = @target_noncanonical@ + + # This is required by TL_AC_GXX_INCLUDE_DIR. +-libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) + +-libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libexecsubdir = $(libexecdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) + + ## + ## What gets installed, and where. +Index: b/src/libffi/include/Makefile.am +=================================================================== +--- a/src/libffi/include/Makefile.am ++++ b/src/libffi/include/Makefile.am +@@ -7,6 +7,6 @@ EXTRA_DIST=ffi.h.in ffi_common.h + + # Where generated headers like ffitarget.h get installed. + gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) +-toollibffidir := $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++toollibffidir := $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + + toollibffi_HEADERS = ffi.h ffitarget.h +Index: b/src/libffi/include/Makefile.in +=================================================================== +--- a/src/libffi/include/Makefile.in ++++ b/src/libffi/include/Makefile.in +@@ -216,7 +216,7 @@ EXTRA_DIST = ffi.h.in ffi_common.h + + # Where generated headers like ffitarget.h get installed. + gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) +-toollibffidir := $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++toollibffidir := $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + toollibffi_HEADERS = ffi.h ffitarget.h + all: all-am + +Index: b/src/libsanitizer/Makefile.am +=================================================================== +--- a/src/libsanitizer/Makefile.am ++++ b/src/libsanitizer/Makefile.am +@@ -1,6 +1,6 @@ + ACLOCAL_AMFLAGS = -I .. -I ../config + +-sanincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include/sanitizer ++sanincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include/sanitizer + + nodist_saninclude_HEADERS = + +Index: b/src/libsanitizer/Makefile.in +=================================================================== +--- a/src/libsanitizer/Makefile.in ++++ b/src/libsanitizer/Makefile.in +@@ -254,7 +254,7 @@ top_build_prefix = @top_build_prefix@ + top_builddir = @top_builddir@ + top_srcdir = @top_srcdir@ + ACLOCAL_AMFLAGS = -I .. -I ../config +-sanincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include/sanitizer ++sanincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include/sanitizer + nodist_saninclude_HEADERS = $(am__append_1) + @SANITIZER_SUPPORTED_TRUE@SUBDIRS = sanitizer_common $(am__append_2) \ + @SANITIZER_SUPPORTED_TRUE@ $(am__append_3) lsan asan ubsan \ --- gcc-4.9-4.9.2.orig/debian/patches/cross-no-locale-include.diff +++ gcc-4.9-4.9.2/debian/patches/cross-no-locale-include.diff @@ -0,0 +1,17 @@ +# DP: Don't add /usr/local/include for cross compilers. Assume that +# DP: /usr/include is ready for multiarch, but not /usr/local/include. + +--- a/src/gcc/cppdefault.c ++++ b/src/gcc/cppdefault.c +@@ -66,8 +66,11 @@ + #ifdef LOCAL_INCLUDE_DIR + /* /usr/local/include comes before the fixincluded header files. */ + { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, ++#if 0 ++ /* Unsafe to assume that /usr/local/include is ready for multiarch. */ + { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 }, + #endif ++#endif + #ifdef PREFIX_INCLUDE_DIR + { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0 }, + #endif --- gcc-4.9-4.9.2.orig/debian/patches/disable-gdc-tests.diff +++ gcc-4.9-4.9.2/debian/patches/disable-gdc-tests.diff @@ -0,0 +1,15 @@ +# DP: Disable D tests, hang on many buildds + +--- a/src/gcc/d/Make-lang.in ++++ b/src/gcc/d/Make-lang.in +@@ -358,8 +358,8 @@ + # entry point. We feed the former to the latter here. + check-d: check-gdc + # List of targets that can use the generic check- rule and its // variant. +-lang_checks += check-gdc +-lang_checks_parallelized += check-gdc ++#lang_checks += check-gdc ++#lang_checks_parallelized += check-gdc + # For description see comment above check_gcc_parallelize in gcc/Makefile.in. + check_gdc_parallelize = d_do_test.exp=runnable/* + --- gcc-4.9-4.9.2.orig/debian/patches/fix-ffi_call_VFP-with-no-VFP-argument.diff +++ gcc-4.9-4.9.2/debian/patches/fix-ffi_call_VFP-with-no-VFP-argument.diff @@ -0,0 +1,12 @@ +# DP: armhf: Fix ffi_call_VFP with no VFP arguments. + +--- a/src/libffi/src/arm/sysv.S ++++ b/src/libffi/src/arm/sysv.S +@@ -368,6 +368,7 @@ ARM_FUNC_START ffi_call_VFP + + @ Load VFP register args if needed + cmp r0, #0 ++ mov ip, fp + beq LSYM(Lbase_args) + + @ Load only d0 if possible --- gcc-4.9-4.9.2.orig/debian/patches/fix-powerpcspe.diff +++ gcc-4.9-4.9.2/debian/patches/fix-powerpcspe.diff @@ -0,0 +1,165 @@ +--- a/src/gcc/config/rs6000/rs6000.c 2014-11-28 13:37:46.330028430 +0100 ++++ b/src/gcc/config/rs6000/rs6000.c 2014-11-28 13:39:15.634789216 +0100 +@@ -1703,7 +1703,7 @@ rs6000_hard_regno_nregs_internal (int re + SCmode so as to pass the value correctly in a pair of + registers. */ + else if (TARGET_E500_DOUBLE && FLOAT_MODE_P (mode) && mode != SCmode +- && !DECIMAL_FLOAT_MODE_P (mode)) ++ && !DECIMAL_FLOAT_MODE_P (mode) && SPE_SIMD_REGNO_P (regno)) + reg_size = UNITS_PER_FP_WORD; + + else +--- a/src/gcc/defaults.h 2014-11-28 13:37:11.173728954 +0100 ++++ b/src/gcc/defaults.h 2014-11-28 13:37:56.326113532 +0100 +@@ -438,6 +438,11 @@ + #define DWARF_FRAME_REGNUM(REG) DBX_REGISTER_NUMBER (REG) + #endif + ++/* The mapping from dwarf CFA reg number to internal dwarf reg numbers. */ ++#ifndef DWARF_REG_TO_UNWIND_COLUMN ++#define DWARF_REG_TO_UNWIND_COLUMN(REGNO) (REGNO) ++#endif ++ + /* Map register numbers held in the call frame info that gcc has + collected using DWARF_FRAME_REGNUM to those that should be output in + .debug_frame and .eh_frame. */ +--- a/src/gcc/dwarf2cfi.c 2014-11-28 13:37:16.549775962 +0100 ++++ b/src/gcc/dwarf2cfi.c 2014-11-28 13:37:56.330113659 +0100 +@@ -252,7 +252,66 @@ + gen_int_mode (size, mode)); + } + +-/* Generate code to initialize the register size table. */ ++/* Datastructure used by expand_builtin_init_dwarf_reg_sizes and ++ init_one_dwarf_reg_size to communicate on what has been done by the ++ latter. */ ++ ++typedef struct ++{ ++ /* Whether the dwarf return column was initialized. */ ++ bool wrote_return_column; ++ ++ /* For each hard register REGNO, whether init_one_dwarf_reg_size ++ was given REGNO to process already. */ ++ bool processed_regno [FIRST_PSEUDO_REGISTER]; ++ ++} init_one_dwarf_reg_state; ++ ++/* Helper for expand_builtin_init_dwarf_reg_sizes. Generate code to ++ initialize the dwarf register size table entry corresponding to register ++ REGNO in REGMODE. TABLE is the table base address, SLOTMODE is the mode to ++ use for the size entry to initialize, and INIT_STATE is the communication ++ datastructure conveying what we're doing to our caller. */ ++ ++static ++void init_one_dwarf_reg_size (int regno, enum machine_mode regmode, ++ rtx table, enum machine_mode slotmode, ++ init_one_dwarf_reg_state *init_state) ++{ ++ const unsigned int dnum = DWARF_FRAME_REGNUM (regno); ++ const unsigned int rnum = DWARF2_FRAME_REG_OUT (dnum, 1); ++ const unsigned int dcol = DWARF_REG_TO_UNWIND_COLUMN (rnum); ++ ++ const HOST_WIDE_INT slotoffset = dcol * GET_MODE_SIZE (slotmode); ++ const HOST_WIDE_INT regsize = GET_MODE_SIZE (regmode); ++ ++ /* No point in redoing things if we have processed this register already. ++ This could happen with register spans, e.g. when regno is first processed ++ as a piece of a span, then as a register on its own later on. */ ++ ++ if (init_state->processed_regno[regno]) ++ return; ++ init_state->processed_regno[regno] = true; ++ ++ if (rnum >= DWARF_FRAME_REGISTERS) ++ return; ++ ++ if (dnum == DWARF_FRAME_RETURN_COLUMN) ++ { ++ if (regmode == VOIDmode) ++ return; ++ init_state->wrote_return_column = true; ++ } ++ ++ if (slotoffset < 0) ++ return; ++ ++ emit_move_insn (adjust_address (table, slotmode, slotoffset), ++ gen_int_mode (regsize, slotmode)); ++} ++ ++/* Generate code to initialize the dwarf register size table located ++ at the provided ADDRESS. */ + + void + expand_builtin_init_dwarf_reg_sizes (tree address) +@@ -261,37 +320,35 @@ + enum machine_mode mode = TYPE_MODE (char_type_node); + rtx addr = expand_normal (address); + rtx mem = gen_rtx_MEM (BLKmode, addr); +- bool wrote_return_column = false; ++ ++ init_one_dwarf_reg_state init_state; ++ ++ memset ((char *)&init_state, 0, sizeof (init_state)); + + for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) + { +- unsigned int dnum = DWARF_FRAME_REGNUM (i); +- unsigned int rnum = DWARF2_FRAME_REG_OUT (dnum, 1); ++ enum machine_mode save_mode = reg_raw_mode[i]; ++ rtx span; + +- if (rnum < DWARF_FRAME_REGISTERS) ++ if (HARD_REGNO_CALL_PART_CLOBBERED (i, save_mode)) ++ save_mode = choose_hard_reg_mode (i, 1, true); ++ ++ span = targetm.dwarf_register_span (gen_rtx_REG (save_mode, i)); ++ if (!span) ++ init_one_dwarf_reg_size (i, save_mode, mem, mode, &init_state); ++ else + { +- HOST_WIDE_INT offset = rnum * GET_MODE_SIZE (mode); +- enum machine_mode save_mode = reg_raw_mode[i]; +- HOST_WIDE_INT size; +- +- if (HARD_REGNO_CALL_PART_CLOBBERED (i, save_mode)) +- save_mode = choose_hard_reg_mode (i, 1, true); +- if (dnum == DWARF_FRAME_RETURN_COLUMN) ++ for (int si = 0; si < XVECLEN (span, 0); si++) + { +- if (save_mode == VOIDmode) +- continue; +- wrote_return_column = true; +- } +- size = GET_MODE_SIZE (save_mode); +- if (offset < 0) +- continue; ++ rtx reg = XVECEXP (span, 0, si); + +- emit_move_insn (adjust_address (mem, mode, offset), +- gen_int_mode (size, mode)); ++ init_one_dwarf_reg_size ++ (REGNO (reg), GET_MODE (reg), mem, mode, &init_state); ++ } + } + } + +- if (!wrote_return_column) ++ if (!init_state.wrote_return_column) + init_return_column_size (mode, mem, DWARF_FRAME_RETURN_COLUMN); + + #ifdef DWARF_ALT_FRAME_RETURN_COLUMN +--- a/src/libgcc/unwind-dw2.c 2014-11-28 13:37:22.765829633 +0100 ++++ b/src/libgcc/unwind-dw2.c 2014-11-28 13:37:56.334113765 +0100 +@@ -55,10 +55,6 @@ + #define PRE_GCC3_DWARF_FRAME_REGISTERS DWARF_FRAME_REGISTERS + #endif + +-#ifndef DWARF_REG_TO_UNWIND_COLUMN +-#define DWARF_REG_TO_UNWIND_COLUMN(REGNO) (REGNO) +-#endif +- + /* ??? For the public function interfaces, we tend to gcc_assert that the + column numbers are in range. For the dwarf2 unwind info this does happen, + although so far in a case that doesn't actually matter. --- gcc-4.9-4.9.2.orig/debian/patches/g++-multiarch-incdir.diff +++ gcc-4.9-4.9.2/debian/patches/g++-multiarch-incdir.diff @@ -0,0 +1,119 @@ +# DP: Use /usr/include//c++/4.x as the include directory +# DP: for host dependent c++ header files. + +Index: b/src/libstdc++-v3/include/Makefile.am +=================================================================== +--- a/src/libstdc++-v3/include/Makefile.am ++++ b/src/libstdc++-v3/include/Makefile.am +@@ -846,7 +846,7 @@ endif + host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR) + default_host_alias = @default_host_alias@ + host_builddir = ./${default_host_alias}/bits +-host_installdir = ${gxx_include_dir}/${default_host_alias}$(MULTISUBDIR)/bits ++host_installdir = $(if $(shell $(CC) -print-multiarch),/usr/include/$(shell $(filter-out -m%,$(CC)) -print-multiarch)/c++/$(notdir ${gxx_include_dir})$(MULTISUBDIR)/bits,${gxx_include_dir}/${default_host_alias}$(MULTISUBDIR)/bits) + host_headers = \ + ${host_srcdir}/ctype_base.h \ + ${host_srcdir}/ctype_inline.h \ +Index: b/src/libstdc++-v3/include/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/include/Makefile.in ++++ b/src/libstdc++-v3/include/Makefile.in +@@ -1107,7 +1107,7 @@ profile_impl_headers = \ + @GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE@c_compatibility_headers_extra = ${c_compatibility_headers} + host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR) + host_builddir = ./${default_host_alias}/bits +-host_installdir = ${gxx_include_dir}/${default_host_alias}$(MULTISUBDIR)/bits ++host_installdir = $(if $(shell $(CC) -print-multiarch),/usr/include/$(shell $(filter-out -m%,$(CC)) -print-multiarch)/c++/$(notdir ${gxx_include_dir})$(MULTISUBDIR)/bits,${gxx_include_dir}/${default_host_alias}$(MULTISUBDIR)/bits) + host_headers = \ + ${host_srcdir}/ctype_base.h \ + ${host_srcdir}/ctype_inline.h \ +Index: b/src/gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -1107,6 +1107,7 @@ FLAGS_TO_PASS = \ + "prefix=$(prefix)" \ + "local_prefix=$(local_prefix)" \ + "gxx_include_dir=$(gcc_gxx_include_dir)" \ ++ "gxx_tool_include_dir=$(gcc_gxx_tool_include_dir)" \ + "build_tooldir=$(build_tooldir)" \ + "gcc_tooldir=$(gcc_tooldir)" \ + "bindir=$(bindir)" \ +@@ -1553,6 +1554,14 @@ ifneq ($(xmake_file),) + include $(xmake_file) + endif + ++# Directory in which the compiler finds target-dependent g++ includes. ++ifneq ($(call if_multiarch,non-empty),) ++ gcc_gxx_tool_include_dir = /usr/include/$(MULTIARCH_DIRNAME)/c++/$(BASEVER_c) ++else ++ gcc_gxx_tool_include_dir = $(gcc_gxx_include_dir)/$(target_noncanonical) ++endif ++ ++ + # all-tree.def includes all the tree.def files. + all-tree.def: s-alltree; @true + s-alltree: Makefile +@@ -2510,7 +2519,7 @@ PREPROCESSOR_DEFINES = \ + -DFIXED_INCLUDE_DIR=\"$(libsubdir)/include-fixed\" \ + -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \ + -DGPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT=$(gcc_gxx_include_dir_add_sysroot) \ +- -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_noncanonical)\" \ ++ -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_tool_include_dir)\" \ + -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \ + -DLOCAL_INCLUDE_DIR=\"$(local_includedir)\" \ + -DCROSS_INCLUDE_DIR=\"$(CROSS_SYSTEM_HEADER_DIR)\" \ +Index: b/src/gcc/cppdefault.c +=================================================================== +--- a/src/gcc/cppdefault.c ++++ b/src/gcc/cppdefault.c +@@ -49,6 +49,8 @@ const struct default_include cpp_include + /* Pick up GNU C++ target-dependent include files. */ + { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, + GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 }, ++ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 2 }, + #endif + #ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR + /* Pick up GNU C++ backward and deprecated include files. */ +Index: b/src/gcc/incpath.c +=================================================================== +--- a/src/gcc/incpath.c ++++ b/src/gcc/incpath.c +@@ -160,6 +160,18 @@ add_standard_paths (const char *sysroot, + } + str = reconcat (str, str, dir_separator_str, + imultiarch, NULL); ++ if (p->cplusplus) ++ { ++ char *suffix = strstr (str, "/c++/"); ++ *suffix++ = '\0'; ++ suffix = xstrdup (suffix); ++ str = reconcat (str, str, dir_separator_str, ++ imultiarch, ++ dir_separator_str, suffix, NULL); ++ } ++ else ++ str = reconcat (str, str, dir_separator_str, ++ imultiarch, NULL); + } + add_path (str, SYSTEM, p->cxx_aware, false); + } +@@ -224,7 +236,16 @@ add_standard_paths (const char *sysroot, + free (str); + continue; + } +- str = reconcat (str, str, dir_separator_str, imultiarch, NULL); ++ if (p->cplusplus) ++ { ++ char *suffix = strstr (str, "/c++/"); ++ *suffix++ = '\0'; ++ suffix = xstrdup (suffix); ++ str = reconcat (str, str, dir_separator_str, imultiarch, ++ dir_separator_str, suffix, NULL); ++ } ++ else ++ str = reconcat (str, str, dir_separator_str, imultiarch, NULL); + } + + add_path (str, SYSTEM, p->cxx_aware, false); --- gcc-4.9-4.9.2.orig/debian/patches/gcc-as-needed.diff +++ gcc-4.9-4.9.2/debian/patches/gcc-as-needed.diff @@ -0,0 +1,184 @@ +# DP: On linux targets pass --as-needed by default to the linker. + +Index: b/src/gcc/config/aarch64/aarch64-linux.h +=================================================================== +--- a/src/gcc/config/aarch64/aarch64-linux.h ++++ b/src/gcc/config/aarch64/aarch64-linux.h +@@ -27,6 +27,7 @@ + + #define LINUX_TARGET_LINK_SPEC "%{h*} \ + --hash-style=gnu \ ++ --as-needed \ + %{static:-Bstatic} \ + %{shared:-shared} \ + %{symbolic:-Bsymbolic} \ +Index: b/src/gcc/config/ia64/linux.h +=================================================================== +--- a/src/gcc/config/ia64/linux.h ++++ b/src/gcc/config/ia64/linux.h +@@ -58,7 +58,7 @@ do { \ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC " --hash-style=gnu \ ++#define LINK_SPEC " --hash-style=gnu --as-needed \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +Index: b/src/gcc/config/sparc/linux.h +=================================================================== +--- a/src/gcc/config/sparc/linux.h ++++ b/src/gcc/config/sparc/linux.h +@@ -86,7 +86,7 @@ extern const char *host_detect_local_cpu + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "-m elf32_sparc --hash-style=gnu %{shared:-shared} \ ++#define LINK_SPEC "-m elf32_sparc --hash-style=gnu --as-needed %{shared:-shared} \ + %{!mno-relax:%{!r:-relax}} \ + %{!shared: \ + %{!static: \ +Index: b/src/gcc/config/s390/linux.h +=================================================================== +--- a/src/gcc/config/s390/linux.h ++++ b/src/gcc/config/s390/linux.h +@@ -65,7 +65,7 @@ along with GCC; see the file COPYING3. + + #undef LINK_SPEC + #define LINK_SPEC \ +- "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=gnu \ ++ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=gnu --as-needed \ + %{shared:-shared} \ + %{!shared: \ + %{static:-static} \ +Index: b/src/gcc/config/rs6000/linux64.h +=================================================================== +--- a/src/gcc/config/rs6000/linux64.h ++++ b/src/gcc/config/rs6000/linux64.h +@@ -417,11 +417,11 @@ extern int dot_symbols; + " -m elf64ppc") + #endif + +-#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " --hash-style=gnu %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " --hash-style=gnu --as-needed %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}}" + +-#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " --hash-style=gnu %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " --hash-style=gnu --as-needed %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}}" + +Index: b/src/gcc/config/rs6000/sysv4.h +=================================================================== +--- a/src/gcc/config/rs6000/sysv4.h ++++ b/src/gcc/config/rs6000/sysv4.h +@@ -773,7 +773,7 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEF + #define GNU_USER_DYNAMIC_LINKER \ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER) + +-#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=gnu %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=gnu --as-needed %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}" + +Index: b/src/gcc/config/i386/gnu-user64.h +=================================================================== +--- a/src/gcc/config/i386/gnu-user64.h ++++ b/src/gcc/config/i386/gnu-user64.h +@@ -57,6 +57,7 @@ see the files COPYING3 and COPYING.RUNTI + %{" SPEC_32 ":-m " GNU_USER_LINK_EMULATION32 "} \ + %{" SPEC_X32 ":-m " GNU_USER_LINK_EMULATIONX32 "} \ + --hash-style=gnu \ ++ --as-needed \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +Index: b/src/gcc/config/i386/gnu-user.h +=================================================================== +--- a/src/gcc/config/i386/gnu-user.h ++++ b/src/gcc/config/i386/gnu-user.h +@@ -74,7 +74,7 @@ along with GCC; see the file COPYING3. + { "link_emulation", GNU_USER_LINK_EMULATION },\ + { "dynamic_linker", GNU_USER_DYNAMIC_LINKER } + +-#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) --hash-style=gnu %{shared:-shared} \ ++#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) --hash-style=gnu --as-needed %{shared:-shared} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +Index: b/src/gcc/config/alpha/linux-elf.h +=================================================================== +--- a/src/gcc/config/alpha/linux-elf.h ++++ b/src/gcc/config/alpha/linux-elf.h +@@ -37,7 +37,7 @@ along with GCC; see the file COPYING3. + + #define ELF_DYNAMIC_LINKER GNU_USER_DYNAMIC_LINKER + +-#define LINK_SPEC "-m elf64alpha --hash-style=gnu %{G*} %{relax:-relax} \ ++#define LINK_SPEC "-m elf64alpha --hash-style=gnu --as-needed %{G*} %{relax:-relax} \ + %{O*:-O3} %{!O*:-O1} \ + %{shared:-shared} \ + %{!shared: \ +Index: b/src/gcc/config/arm/linux-elf.h +=================================================================== +--- a/src/gcc/config/arm/linux-elf.h ++++ b/src/gcc/config/arm/linux-elf.h +@@ -73,6 +73,7 @@ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER "} \ + -X \ + --hash-style=gnu \ ++ --as-needed \ + %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ + SUBTARGET_EXTRA_LINK_SPEC + +Index: b/src/gcc/config/mips/gnu-user.h +=================================================================== +--- a/src/gcc/config/mips/gnu-user.h ++++ b/src/gcc/config/mips/gnu-user.h +@@ -56,6 +56,7 @@ along with GCC; see the file COPYING3. + #undef GNU_USER_TARGET_LINK_SPEC + #define GNU_USER_TARGET_LINK_SPEC \ + "%(endian_spec) \ ++ -as-needed \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +Index: b/src/gcc/config/mips/gnu-user64.h +=================================================================== +--- a/src/gcc/config/mips/gnu-user64.h ++++ b/src/gcc/config/mips/gnu-user64.h +@@ -34,6 +34,7 @@ along with GCC; see the file COPYING3. + #define GNU_USER_TARGET_LINK_SPEC "\ + %{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} %{mips4} \ + %{shared} \ ++ -as-needed \ + %(endian_spec) \ + %{!shared: \ + %{!static: \ +Index: b/src/libjava/Makefile.am +=================================================================== +--- a/src/libjava/Makefile.am ++++ b/src/libjava/Makefile.am +@@ -628,7 +628,7 @@ libgcj_bc.la: $(libgcj_bc_la_OBJECTS) $( + rm .libs/libgcj_bc.so; \ + mv .libs/libgcj_bc.so.1.0.0 .libs/libgcj_bc.so; \ + $(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \ +- -o .libs/libgcj_bc.so.1.0.0 -lgcj || exit; \ ++ -o .libs/libgcj_bc.so.1.0.0 -Wl,--no-as-needed -lgcj || exit; \ + rm .libs/libgcj_bc.so.1; \ + $(LN_S) libgcj_bc.so.1.0.0 .libs/libgcj_bc.so.1 + +Index: b/src/libjava/Makefile.in +=================================================================== +--- a/src/libjava/Makefile.in ++++ b/src/libjava/Makefile.in +@@ -10600,7 +10600,7 @@ libgcj_bc.la: $(libgcj_bc_la_OBJECTS) $( + rm .libs/libgcj_bc.so; \ + mv .libs/libgcj_bc.so.1.0.0 .libs/libgcj_bc.so; \ + $(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \ +- -o .libs/libgcj_bc.so.1.0.0 -lgcj || exit; \ ++ -o .libs/libgcj_bc.so.1.0.0 -Wl,--no-as-needed -lgcj || exit; \ + rm .libs/libgcj_bc.so.1; \ + $(LN_S) libgcj_bc.so.1.0.0 .libs/libgcj_bc.so.1 + --- gcc-4.9-4.9.2.orig/debian/patches/gcc-auto-build.diff +++ gcc-4.9-4.9.2/debian/patches/gcc-auto-build.diff @@ -0,0 +1,15 @@ +# DP: Fix cross building a native compiler. + +Index: b/src/gcc/configure.ac +=================================================================== +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -1536,7 +1536,7 @@ else + # Clearing GMPINC is necessary to prevent host headers being + # used by the build compiler. Defining GENERATOR_FILE stops + # system.h from including gmp.h. +- CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \ ++ CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD} -DGENERATOR_FILE" \ + CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \ + LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \ + GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \ --- gcc-4.9-4.9.2.orig/debian/patches/gcc-base-version.diff +++ gcc-4.9-4.9.2/debian/patches/gcc-base-version.diff @@ -0,0 +1,216 @@ +# DP: Set base version to 4.9, introduce full version 4.9.x. + +Index: b/src/gcc/BASE-VER +=================================================================== +--- a/src/gcc/BASE-VER ++++ b/src/gcc/BASE-VER +@@ -1 +1 @@ +-4.9.2 ++4.9 +Index: b/src/gcc/FULL-VER +=================================================================== +--- /dev/null ++++ b/src/gcc/FULL-VER +@@ -0,0 +1 @@ ++4.9.2 +Index: b/src/gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -810,11 +810,13 @@ + TM_H = $(GTM_H) insn-flags.h $(OPTIONS_H) + + # Variables for version information. +-BASEVER := $(srcdir)/BASE-VER # 4.x.y ++FULLVER := $(srcdir)/FULL-VER # 4.x.y ++BASEVER := $(srcdir)/BASE-VER # 4.x + DEVPHASE := $(srcdir)/DEV-PHASE # experimental, prerelease, "" + DATESTAMP := $(srcdir)/DATESTAMP # YYYYMMDD or empty + REVISION := $(srcdir)/REVISION # [BRANCH revision XXXXXX] + ++FULLVER_c := $(shell cat $(FULLVER)) + BASEVER_c := $(shell cat $(BASEVER)) + DEVPHASE_c := $(shell cat $(DEVPHASE)) + DATESTAMP_c := $(shell cat $(DATESTAMP)) +@@ -833,7 +835,7 @@ + # development phase collapsed to the empty string in release mode + # (i.e. if DEVPHASE_c is empty). The space immediately after the + # comma in the $(if ...) constructs is significant - do not remove it. +-BASEVER_s := "\"$(BASEVER_c)\"" ++FULLVER_s := "\"$(FULLVER_c)\"" + DEVPHASE_s := "\"$(if $(DEVPHASE_c), ($(DEVPHASE_c)))\"" + DATESTAMP_s := "\"$(if $(DEVPHASE_c), $(DATESTAMP_c))\"" + PKGVERSION_s:= "\"@PKGVERSION@\"" +@@ -1924,8 +1926,8 @@ + + # Files used by all variants of C and some other languages. + +-CFLAGS-prefix.o += -DPREFIX=\"$(prefix)\" -DBASEVER=$(BASEVER_s) +-prefix.o: $(BASEVER) ++CFLAGS-prefix.o += -DPREFIX=\"$(prefix)\" -DBASEVER=$(FULLVER_s) ++prefix.o: $(FULLVER) + + # Language-independent files. + +@@ -1933,7 +1935,8 @@ + -DSTANDARD_STARTFILE_PREFIX=\"$(unlibsubdir)/\" \ + -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \ + -DSTANDARD_LIBEXEC_PREFIX=\"$(libexecdir)/gcc/\" \ +- -DDEFAULT_TARGET_VERSION=\"$(version)\" \ ++ -DDEFAULT_TARGET_VERSION=\"$(BASEVER_c)\" \ ++ -DDEFAULT_TARGET_FULL_VERSION=\"$(FULLVER_c)\" \ + -DDEFAULT_TARGET_MACHINE=\"$(target_noncanonical)\" \ + -DSTANDARD_BINDIR_PREFIX=\"$(bindir)/\" \ + -DTOOLDIR_BASE_PREFIX=\"$(libsubdir_to_prefix)$(prefix_to_exec_prefix)\" \ +@@ -1981,20 +1984,20 @@ + + dumpvers: dumpvers.c + +-CFLAGS-version.o += -DBASEVER=$(BASEVER_s) -DDATESTAMP=$(DATESTAMP_s) \ ++CFLAGS-version.o += -DBASEVER=$(FULLVER_s) -DDATESTAMP=$(DATESTAMP_s) \ + -DREVISION=$(REVISION_s) \ + -DDEVPHASE=$(DEVPHASE_s) -DPKGVERSION=$(PKGVERSION_s) \ + -DBUGURL=$(BUGURL_s) +-version.o: $(REVISION) $(DATESTAMP) $(BASEVER) $(DEVPHASE) ++version.o: $(REVISION) $(DATESTAMP) $(FULLVER) $(DEVPHASE) + + # lto-compress.o needs $(ZLIBINC) added to the include flags. + CFLAGS-lto-compress.o += $(ZLIBINC) + + bversion.h: s-bversion; @true +-s-bversion: BASE-VER +- echo "#define BUILDING_GCC_MAJOR `echo $(BASEVER_c) | sed -e 's/^\([0-9]*\).*$$/\1/'`" > bversion.h +- echo "#define BUILDING_GCC_MINOR `echo $(BASEVER_c) | sed -e 's/^[0-9]*\.\([0-9]*\).*$$/\1/'`" >> bversion.h +- echo "#define BUILDING_GCC_PATCHLEVEL `echo $(BASEVER_c) | sed -e 's/^[0-9]*\.[0-9]*\.\([0-9]*\)$$/\1/'`" >> bversion.h ++s-bversion: FULL-VER ++ echo "#define BUILDING_GCC_MAJOR `echo $(FULLVER_c) | sed -e 's/^\([0-9]*\).*$$/\1/'`" > bversion.h ++ echo "#define BUILDING_GCC_MINOR `echo $(FULLVER_c) | sed -e 's/^[0-9]*\.\([0-9]*\).*$$/\1/'`" >> bversion.h ++ echo "#define BUILDING_GCC_PATCHLEVEL `echo $(FULLVER_c) | sed -e 's/^[0-9]*\.[0-9]*\.\([0-9]*\)$$/\1/'`" >> bversion.h + echo "#define BUILDING_GCC_VERSION (BUILDING_GCC_MAJOR * 1000 + BUILDING_GCC_MINOR)" >> bversion.h + $(STAMP) s-bversion + +@@ -2323,9 +2326,9 @@ + ## build/version.o is compiled by the $(COMPILER_FOR_BUILD) but needs + ## several C macro definitions, just like version.o + build/version.o: version.c version.h \ +- $(REVISION) $(DATESTAMP) $(BASEVER) $(DEVPHASE) ++ $(REVISION) $(DATESTAMP) $(FULLVER) $(DEVPHASE) + $(COMPILER_FOR_BUILD) -c $(BUILD_COMPILERFLAGS) $(BUILD_CPPFLAGS) \ +- -DBASEVER=$(BASEVER_s) -DDATESTAMP=$(DATESTAMP_s) \ ++ -DBASEVER=$(FULLVER_s) -DDATESTAMP=$(DATESTAMP_s) \ + -DREVISION=$(REVISION_s) \ + -DDEVPHASE=$(DEVPHASE_s) -DPKGVERSION=$(PKGVERSION_s) \ + -DBUGURL=$(BUGURL_s) -o $@ $< +@@ -2518,8 +2521,8 @@ + -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \ + @TARGET_SYSTEM_ROOT_DEFINE@ + +-CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(BASEVER_s) +-cppbuiltin.o: $(BASEVER) ++CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(FULLVER_s) ++cppbuiltin.o: $(FULLVER) + + CFLAGS-cppdefault.o += $(PREPROCESSOR_DEFINES) + +@@ -2535,8 +2538,8 @@ + build/gcov-iov.o -o $@ + + gcov-iov.h: s-iov +-s-iov: build/gcov-iov$(build_exeext) $(BASEVER) $(DEVPHASE) +- build/gcov-iov$(build_exeext) '$(BASEVER_c)' '$(DEVPHASE_c)' \ ++s-iov: build/gcov-iov$(build_exeext) $(FULLVER) $(DEVPHASE) ++ build/gcov-iov$(build_exeext) '$(FULLVER_c)' '$(DEVPHASE_c)' \ + > tmp-gcov-iov.h + $(SHELL) $(srcdir)/../move-if-change tmp-gcov-iov.h gcov-iov.h + $(STAMP) s-iov +@@ -2797,8 +2800,8 @@ + TEXI_CPPINT_FILES = cppinternals.texi gcc-common.texi gcc-vers.texi + + # gcc-vers.texi is generated from the version files. +-gcc-vers.texi: $(BASEVER) $(DEVPHASE) +- (echo "@set version-GCC $(BASEVER_c)"; \ ++gcc-vers.texi: $(FULLVER) $(DEVPHASE) ++ (echo "@set version-GCC $(FULLVER_c)"; \ + if [ "$(DEVPHASE_c)" = "experimental" ]; \ + then echo "@set DEVELOPMENT"; \ + else echo "@clear DEVELOPMENT"; \ +Index: b/src/libjava/Makefile.am +=================================================================== +--- a/src/libjava/Makefile.am ++++ b/src/libjava/Makefile.am +@@ -780,7 +780,7 @@ + install-data-local: + $(PRE_INSTALL) + ## Install the .pc file. +- @pc_version=`echo $(GCJVERSION) | sed -e 's/[.][^.]*$$//'`; \ ++ @pc_version=$(GCJVERSION); \ + file="libgcj-$${pc_version}.pc"; \ + $(mkinstalldirs) $(DESTDIR)$(pkgconfigdir); \ + echo " $(INSTALL_DATA) libgcj.pc $(DESTDIR)$(pkgconfigdir)/$$file"; \ +Index: b/src/libjava/Makefile.in +=================================================================== +--- a/src/libjava/Makefile.in ++++ b/src/libjava/Makefile.in +@@ -12457,7 +12457,7 @@ + @BUILD_ECJ1_TRUE@ mv $(DESTDIR)$(libexecsubdir)/`echo ecjx | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` $(DESTDIR)$(libexecsubdir)/ecj1$(host_exeext) + install-data-local: + $(PRE_INSTALL) +- @pc_version=`echo $(GCJVERSION) | sed -e 's/[.][^.]*$$//'`; \ ++ @pc_version=$(GCJVERSION); \ + file="libgcj-$${pc_version}.pc"; \ + $(mkinstalldirs) $(DESTDIR)$(pkgconfigdir); \ + echo " $(INSTALL_DATA) libgcj.pc $(DESTDIR)$(pkgconfigdir)/$$file"; \ +Index: b/src/libjava/testsuite/lib/libjava.exp +=================================================================== +--- a/src/libjava/testsuite/lib/libjava.exp ++++ b/src/libjava/testsuite/lib/libjava.exp +@@ -177,7 +177,7 @@ + + set text [eval exec "$GCJ_UNDER_TEST -B$specdir -v 2>@ stdout"] + regexp " version \[^\n\r\]*" $text version +- set libjava_version [lindex $version 1] ++ set libjava_version 4.9 + + verbose "version: $libjava_version" + +Index: b/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -152,7 +152,8 @@ + + /* The target version. */ + +-static const char *const spec_version = DEFAULT_TARGET_VERSION; ++static const char *const base_version = DEFAULT_TARGET_VERSION; ++static const char *const spec_version = DEFAULT_TARGET_FULL_VERSION; + + /* The target machine. */ + +@@ -4058,7 +4059,7 @@ + tooldir_prefix + = concat (gcc_exec_prefix ? gcc_exec_prefix : standard_exec_prefix, + spec_machine, dir_separator_str, +- spec_version, dir_separator_str, tooldir_prefix2, NULL); ++ base_version, dir_separator_str, tooldir_prefix2, NULL); + free (tooldir_prefix2); + + add_prefix (&exec_prefixes, +@@ -6465,7 +6466,7 @@ + /* Read specs from a file if there is one. */ + + machine_suffix = concat (spec_machine, dir_separator_str, +- spec_version, dir_separator_str, NULL); ++ base_version, dir_separator_str, NULL); + just_machine_suffix = concat (spec_machine, dir_separator_str, NULL); + + specs_file = find_a_file (&startfile_prefixes, "specs", R_OK, true); +@@ -6664,7 +6665,7 @@ + /* If we have a GCC_EXEC_PREFIX envvar, modify it for cpp's sake. */ + if (gcc_exec_prefix) + gcc_exec_prefix = concat (gcc_exec_prefix, spec_machine, dir_separator_str, +- spec_version, dir_separator_str, NULL); ++ base_version, dir_separator_str, NULL); + + /* Now we have the specs. + Set the `valid' bits for switches that match anything in any spec. */ --- gcc-4.9-4.9.2.orig/debian/patches/gcc-cloog-dl.diff +++ gcc-4.9-4.9.2/debian/patches/gcc-cloog-dl.diff @@ -0,0 +1,487 @@ +# DP: Link against -ldl instead of -lcloog -lppl. Exit with an error when using +# DP: the Graphite loop transformation infrastructure without having the +# DP: libcloog-ppl0 package installed. Packages using these optimizations +# DP: should build-depend on libcloog-ppl0. + +2011-01-04 Jakub Jelinek + + * Makefile.in (BACKENDLIBS): Link against -ldl instead of + -lcloog -lppl. + (graphite.o, graphite%.o): Force -O, remove -fkeep-inline-functions. + (GRAPHITE_CLOOG_UTIL_H, GRAPHITE_POLY_H): New. + (graphite*.o): Adjust dependencies. + * graphite-cloog-compat.h: Include . Reference libcloog and + libppl symbols through pointers in cloog_pointers__ variable. + * graphite.c (init_cloog_pointers): New function. + (graphite_transform_loops): Call init_cloog_pointers. + * graphite-clast-to-gimple.c (gcc_type_for_iv_of_clast_loop): Rename + stmt_for argument to stmt_fora. + * graphite-poly.h: Include graphite-cloog-util.h. + +Index: b/src/gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -965,6 +965,8 @@ + PLUGIN_H = plugin.h $(GCC_PLUGIN_H) + PLUGIN_VERSION_H = plugin-version.h configargs.h + LIBFUNCS_H = libfuncs.h $(HASHTAB_H) ++GRAPHITE_CLOOG_UTIL_H = graphite-cloog-util.h graphite-cloog-compat.h ++GRAPHITE_POLY_H = graphite-poly.h $(GRAPHITE_CLOOG_UTIL_H) + + # + # Now figure out from those variables how to compile and link. +@@ -1019,7 +1021,7 @@ + # and the system's installed libraries. + LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBIBERTY) \ + $(LIBDECNUMBER) $(HOST_LIBS) +-BACKENDLIBS = $(CLOOGLIBS) $(PPLLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \ ++BACKENDLIBS = $(GMPLIBS) $(if $(CLOOGLIBS),-ldl) $(PLUGINLIBS) $(HOST_LIBS) \ + $(ZLIB) + # Any system libraries needed just for GNAT. + SYSLIBS = @GNAT_LIBEXC@ +@@ -2605,40 +2607,40 @@ + $(TREE_FLOW_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) tree-pass.h value-prof.h + graphite.o : graphite.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(DIAGNOSTIC_CORE_H) \ + $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) sese.h \ +- $(DBGCNT_H) graphite-ppl.h graphite-poly.h graphite-scop-detection.h \ ++ $(DBGCNT_H) graphite-ppl.h $(GRAPHITE_POLY_H) graphite-scop-detection.h \ + graphite-clast-to-gimple.h graphite-sese-to-poly.h + graphite-blocking.o : graphite-blocking.c $(CONFIG_H) $(SYSTEM_H) \ + coretypes.h $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) \ +- sese.h graphite-ppl.h graphite-poly.h ++ sese.h graphite-ppl.h $(GRAPHITE_POLY_H) + graphite-clast-to-gimple.o : graphite-clast-to-gimple.c $(CONFIG_H) \ + $(SYSTEM_H) coretypes.h $(DIAGNOSTIC_CORE_H) $(TREE_FLOW_H) $(TREE_DUMP_H) \ +- $(CFGLOOP_H) $(TREE_DATA_REF_H) sese.h graphite-cloog-util.h \ +- graphite-ppl.h graphite-poly.h graphite-clast-to-gimple.h \ ++ $(CFGLOOP_H) $(TREE_DATA_REF_H) sese.h $(GRAPHITE_CLOOG_UTIL_H) \ ++ graphite-ppl.h $(GRAPHITE_POLY_H) graphite-clast-to-gimple.h \ + graphite-dependences.h graphite-cloog-compat.h + graphite-cloog-util.o : graphite-cloog-util.c $(CONFIG_H) $(SYSTEM_H) \ +- coretypes.h graphite-cloog-util.h graphite-cloog-compat.h ++ coretypes.h $(GRAPHITE_CLOOG_UTIL_H) graphite-cloog-compat.h + graphite-dependences.o : graphite-dependences.c $(CONFIG_H) $(SYSTEM_H) \ + coretypes.h $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) \ +- sese.h graphite-ppl.h graphite-poly.h graphite-dependences.h \ +- graphite-cloog-util.h ++ sese.h graphite-ppl.h $(GRAPHITE_POLY_H) graphite-dependences.h \ ++ $(GRAPHITE_CLOOG_UTIL_H) + graphite-flattening.o : graphite-flattening.c $(CONFIG_H) $(SYSTEM_H) \ + coretypes.h $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) \ +- sese.h graphite-ppl.h graphite-poly.h ++ sese.h graphite-ppl.h $(GRAPHITE_POLY_H) + graphite-interchange.o : graphite-interchange.c $(CONFIG_H) $(SYSTEM_H) \ + coretypes.h $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) \ +- sese.h graphite-ppl.h graphite-poly.h ++ sese.h graphite-ppl.h $(GRAPHITE_POLY_H) + graphite-poly.o : graphite-poly.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ + $(DIAGNOSTIC_CORE_H) $(TREE_FLOW_H) $(TREE_DUMP_H) gimple-pretty-print.h \ +- $(CFGLOOP_H) $(TREE_DATA_REF_H) sese.h graphite-ppl.h graphite-poly.h \ +- graphite-dependences.h graphite-cloog-util.h ++ $(CFGLOOP_H) $(TREE_DATA_REF_H) sese.h graphite-ppl.h $(GRAPHITE_POLY_H) \ ++ graphite-dependences.h $(GRAPHITE_CLOOG_UTIL_H) + graphite-ppl.o : graphite-ppl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ +- graphite-cloog-util.h graphite-ppl.h ++ $(GRAPHITE_CLOOG_UTIL_H) graphite-ppl.h + graphite-scop-detection.o : graphite-scop-detection.c $(CONFIG_H) $(SYSTEM_H) \ + coretypes.h $(TREE_FLOW_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) $(TREE_PASS_H) \ +- sese.h graphite-ppl.h graphite-poly.h graphite-scop-detection.h ++ sese.h graphite-ppl.h $(GRAPHITE_POLY_H) graphite-scop-detection.h + graphite-sese-to-poly.o : graphite-sese-to-poly.c $(CONFIG_H) \ + $(SYSTEM_H) coretypes.h $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) \ +- $(TREE_DATA_REF_H) domwalk.h sese.h graphite-ppl.h graphite-poly.h \ ++ $(TREE_DATA_REF_H) domwalk.h sese.h graphite-ppl.h $(GRAPHITE_POLY_H) \ + graphite-sese-to-poly.h + tree-vect-loop.o: tree-vect-loop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ + $(TM_H) $(GGC_H) $(TREE_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) \ +@@ -3457,6 +3459,15 @@ + $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) \ + $< $(OUTPUT_OPTION) + ++graphite%.o : \ ++ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS)) ++graphite.o : \ ++ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS)) ++graphite%.o : \ ++ ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS)) ++graphite.o : \ ++ ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS)) ++ + # Build auxiliary files that support ecoff format. + mips-tfile: mips-tfile.o $(LIBDEPS) + $(LINKER) $(LINKERFLAGS) $(LDFLAGS) -o $@ \ +Index: b/src/gcc/graphite-cloog-compat.h +=================================================================== +--- a/src/gcc/graphite-cloog-compat.h ++++ b/src/gcc/graphite-cloog-compat.h +@@ -272,4 +272,279 @@ + return m->NbRows; + } + #endif /* CLOOG_ORG */ ++ ++#include ++#if PPL_VERSION_MAJOR == 0 && PPL_VERSION_MINOR < 11 ++#define DYNSYMS_PPL11 ++#else ++#define DYNSYMS_PPL11 \ ++ DYNSYM (ppl_new_PIP_Problem_from_constraints); \ ++ DYNSYM (ppl_PIP_Problem_is_satisfiable); \ ++ DYNSYM (ppl_delete_PIP_Problem); ++#endif ++#define DYNSYMS \ ++ DYNSYM (cloog_block_alloc); \ ++ DYNSYM (cloog_block_list_free); \ ++ DYNSYM (cloog_block_list_malloc); \ ++ DYNSYM (cloog_clast_create); \ ++ DYNSYM (cloog_clast_free); \ ++ DYNSYM (cloog_domain_free); \ ++ DYNSYM (cloog_domain_matrix2domain); \ ++ DYNSYM (cloog_initialize); \ ++ DYNSYM (cloog_loop_malloc); \ ++ DYNSYM (cloog_matrix_alloc); \ ++ DYNSYM (cloog_matrix_copy); \ ++ DYNSYM (cloog_matrix_free); \ ++ DYNSYM (cloog_matrix_print); \ ++ DYNSYM (cloog_names_malloc); \ ++ DYNSYM (cloog_names_scalarize); \ ++ DYNSYM (cloog_options_free); \ ++ DYNSYM (cloog_options_malloc); \ ++ DYNSYM (cloog_program_dump_cloog); \ ++ DYNSYM (cloog_program_extract_scalars); \ ++ DYNSYM (cloog_program_free); \ ++ DYNSYM (cloog_program_generate); \ ++ DYNSYM (cloog_program_malloc); \ ++ DYNSYM (cloog_program_print); \ ++ DYNSYM (cloog_program_scatter); \ ++ DYNSYM (cloog_statement_alloc); \ ++ DYNSYM (cloog_domain_union); \ ++ DYNSYM (cloog_matrix_read); \ ++ DYNSYM (cloog_new_pol); \ ++ DYNSYM (cloog_vector_gcd); \ ++ DYNSYM (ppl_finalize); \ ++ DYNSYM (ppl_assign_Coefficient_from_mpz_t); \ ++ DYNSYM (ppl_assign_Linear_Expression_from_Linear_Expression); \ ++ DYNSYM (ppl_Coefficient_to_mpz_t); \ ++ DYNSYM (ppl_Constraint_coefficient); \ ++ DYNSYM (ppl_Constraint_inhomogeneous_term); \ ++ DYNSYM (ppl_Constraint_space_dimension); \ ++ DYNSYM (ppl_Constraint_System_begin); \ ++ DYNSYM (ppl_Constraint_System_const_iterator_dereference); \ ++ DYNSYM (ppl_Constraint_System_const_iterator_equal_test); \ ++ DYNSYM (ppl_Constraint_System_const_iterator_increment); \ ++ DYNSYM (ppl_Constraint_System_end); \ ++ DYNSYM (ppl_Constraint_System_insert_Constraint); \ ++ DYNSYM (ppl_Constraint_System_space_dimension); \ ++ DYNSYM (ppl_Constraint_type); \ ++ DYNSYM (ppl_delete_Coefficient); \ ++ DYNSYM (ppl_delete_Constraint); \ ++ DYNSYM (ppl_delete_Constraint_System_const_iterator); \ ++ DYNSYM (ppl_delete_Linear_Expression); \ ++ DYNSYM (ppl_delete_Pointset_Powerset_C_Polyhedron); \ ++ DYNSYM (ppl_delete_Pointset_Powerset_C_Polyhedron_iterator); \ ++ DYNSYM (ppl_delete_Polyhedron); \ ++ DYNSYM (ppl_Linear_Expression_add_to_coefficient); \ ++ DYNSYM (ppl_Linear_Expression_add_to_inhomogeneous); \ ++ DYNSYM (ppl_Linear_Expression_coefficient); \ ++ DYNSYM (ppl_Linear_Expression_inhomogeneous_term); \ ++ DYNSYM (ppl_Linear_Expression_space_dimension); \ ++ DYNSYM (ppl_new_Coefficient); \ ++ DYNSYM (ppl_new_Coefficient_from_mpz_t); \ ++ DYNSYM (ppl_new_Constraint); \ ++ DYNSYM (ppl_new_Constraint_System); \ ++ DYNSYM (ppl_new_Constraint_System_const_iterator); \ ++ DYNSYM (ppl_new_C_Polyhedron_from_C_Polyhedron); \ ++ DYNSYM (ppl_new_C_Polyhedron_from_space_dimension); \ ++ DYNSYM (ppl_new_C_Polyhedron_recycle_Constraint_System); \ ++ DYNSYM (ppl_new_Linear_Expression); \ ++ DYNSYM (ppl_new_Linear_Expression_from_Constraint); \ ++ DYNSYM (ppl_new_Linear_Expression_from_Linear_Expression); \ ++ DYNSYM (ppl_new_Linear_Expression_with_dimension); \ ++ DYNSYM (ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron); \ ++ DYNSYM (ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron); \ ++ DYNSYM (ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension); \ ++ DYNSYM (ppl_new_Pointset_Powerset_C_Polyhedron_iterator); \ ++ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_add_constraint); \ ++ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_add_space_dimensions_and_embed); \ ++ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_difference_assign); \ ++ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_intersection_assign); \ ++ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_is_empty); \ ++ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_iterator_begin); \ ++ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_iterator_dereference); \ ++ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_iterator_end); \ ++ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_iterator_equal_test); \ ++ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_iterator_increment); \ ++ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_map_space_dimensions); \ ++ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_maximize); \ ++ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_minimize); \ ++ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_remove_space_dimensions); \ ++ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_size); \ ++ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_space_dimension); \ ++ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_upper_bound_assign); \ ++ DYNSYM (ppl_Polyhedron_add_constraint); \ ++ DYNSYM (ppl_Polyhedron_add_constraints); \ ++ DYNSYM (ppl_Polyhedron_add_space_dimensions_and_embed); \ ++ DYNSYM (ppl_Polyhedron_get_constraints); \ ++ DYNSYM (ppl_Polyhedron_map_space_dimensions); \ ++ DYNSYM (ppl_Polyhedron_remove_space_dimensions); \ ++ DYNSYM (ppl_Polyhedron_space_dimension); \ ++ DYNSYM (ppl_subtract_Linear_Expression_from_Linear_Expression); \ ++ DYNSYM (pprint); \ ++ DYNSYM (stmt_block); \ ++ DYNSYM (stmt_for); \ ++ DYNSYM (stmt_guard); \ ++ DYNSYM (stmt_root); \ ++ DYNSYM (stmt_user); \ ++ DYNSYM (stmt_ass); \ ++ DYNSYM (ppl_delete_Constraint_System); \ ++ DYNSYM (ppl_initialize); \ ++ DYNSYM (ppl_new_Constraint_System_from_Constraint); \ ++ DYNSYM (ppl_new_C_Polyhedron_from_Constraint_System); \ ++ DYNSYM (ppl_Polyhedron_affine_image); \ ++ DYNSYM (ppl_io_fprint_Pointset_Powerset_C_Polyhedron); \ ++ DYNSYMS_PPL11 ++extern struct cloog_pointers_s__ ++{ ++ bool inited; ++ void *h; ++#define DYNSYM(x) __typeof (x) *p_##x ++ DYNSYMS ++#undef DYNSYM ++} cloog_pointers__; ++ ++#define cloog_block_alloc (*cloog_pointers__.p_cloog_block_alloc) ++#define cloog_block_list_free (*cloog_pointers__.p_cloog_block_list_free) ++#define cloog_block_list_malloc (*cloog_pointers__.p_cloog_block_list_malloc) ++#define cloog_clast_create (*cloog_pointers__.p_cloog_clast_create) ++#define cloog_clast_free (*cloog_pointers__.p_cloog_clast_free) ++#define cloog_domain_free (*cloog_pointers__.p_cloog_domain_free) ++#define cloog_domain_matrix2domain (*cloog_pointers__.p_cloog_domain_matrix2domain) ++#define cloog_initialize (*cloog_pointers__.p_cloog_initialize) ++#ifndef CLOOG_ORG ++#undef cloog_loop_malloc ++#define cloog_loop_malloc(STATE) (*cloog_pointers__.p_cloog_loop_malloc) () ++#else ++#define cloog_loop_malloc (*cloog_pointers__.p_cloog_loop_malloc) ++#endif ++#define cloog_matrix_alloc (*cloog_pointers__.p_cloog_matrix_alloc) ++#define cloog_matrix_copy (*cloog_pointers__.p_cloog_matrix_copy) ++#define cloog_matrix_free (*cloog_pointers__.p_cloog_matrix_free) ++#define cloog_matrix_print (*cloog_pointers__.p_cloog_matrix_print) ++#define cloog_names_malloc (*cloog_pointers__.p_cloog_names_malloc) ++#define cloog_names_scalarize (*cloog_pointers__.p_cloog_names_scalarize) ++#define cloog_options_free (*cloog_pointers__.p_cloog_options_free) ++#ifndef CLOOG_ORG ++#undef cloog_options_malloc ++#define cloog_options_malloc(STATE) (*cloog_pointers__.p_cloog_options_malloc) () ++#undef cloog_program_dump_cloog ++#define cloog_program_dump_cloog(DUMPFILE, PROGRAM, SCATTERINGLIST) \ ++ (*cloog_pointers__.p_cloog_program_dump_cloog) (DUMPFILE, PROGRAM) ++#undef cloog_program_extract_scalars ++#define cloog_program_extract_scalars(PROG, SCATT, OPT) \ ++ (*cloog_pointers__.p_cloog_program_extract_scalars) (PROG, SCATT) ++#else ++#define cloog_options_malloc (*cloog_pointers__.p_cloog_options_malloc) ++#define cloog_program_dump_cloog (*cloog_pointers__.p_cloog_program_dump_cloog) ++#define cloog_program_extract_scalars (*cloog_pointers__.p_cloog_program_extract_scalars) ++#endif ++#define cloog_program_free (*cloog_pointers__.p_cloog_program_free) ++#define cloog_program_generate (*cloog_pointers__.p_cloog_program_generate) ++#define cloog_program_malloc (*cloog_pointers__.p_cloog_program_malloc) ++#define cloog_program_print (*cloog_pointers__.p_cloog_program_print) ++#ifndef CLOOG_ORG ++#undef cloog_program_scatter ++#define cloog_program_scatter(PROG, SCATT, OPT) \ ++ (*cloog_pointers__.p_cloog_program_scatter) (PROG, SCATT) ++#undef cloog_statement_alloc ++#define cloog_statement_alloc(STATE, INDEX) \ ++ (*cloog_pointers__.p_cloog_statement_alloc) (INDEX) ++#else ++#define cloog_program_scatter (*cloog_pointers__.p_cloog_program_scatter) ++#define cloog_statement_alloc (*cloog_pointers__.p_cloog_statement_alloc) ++#endif ++#define cloog_domain_union (*cloog_pointers__.p_cloog_domain_union) ++#define cloog_matrix_read (*cloog_pointers__.p_cloog_matrix_read) ++#define cloog_new_pol (*cloog_pointers__.p_cloog_new_pol) ++#define cloog_vector_gcd (*cloog_pointers__.p_cloog_vector_gcd) ++#define ppl_finalize (*cloog_pointers__.p_ppl_finalize) ++#define ppl_assign_Coefficient_from_mpz_t (*cloog_pointers__.p_ppl_assign_Coefficient_from_mpz_t) ++#define ppl_assign_Linear_Expression_from_Linear_Expression (*cloog_pointers__.p_ppl_assign_Linear_Expression_from_Linear_Expression) ++#define ppl_Coefficient_to_mpz_t (*cloog_pointers__.p_ppl_Coefficient_to_mpz_t) ++#define ppl_Constraint_coefficient (*cloog_pointers__.p_ppl_Constraint_coefficient) ++#define ppl_Constraint_inhomogeneous_term (*cloog_pointers__.p_ppl_Constraint_inhomogeneous_term) ++#define ppl_Constraint_space_dimension (*cloog_pointers__.p_ppl_Constraint_space_dimension) ++#define ppl_Constraint_System_begin (*cloog_pointers__.p_ppl_Constraint_System_begin) ++#define ppl_Constraint_System_const_iterator_dereference (*cloog_pointers__.p_ppl_Constraint_System_const_iterator_dereference) ++#define ppl_Constraint_System_const_iterator_equal_test (*cloog_pointers__.p_ppl_Constraint_System_const_iterator_equal_test) ++#define ppl_Constraint_System_const_iterator_increment (*cloog_pointers__.p_ppl_Constraint_System_const_iterator_increment) ++#define ppl_Constraint_System_end (*cloog_pointers__.p_ppl_Constraint_System_end) ++#define ppl_Constraint_System_insert_Constraint (*cloog_pointers__.p_ppl_Constraint_System_insert_Constraint) ++#define ppl_Constraint_System_space_dimension (*cloog_pointers__.p_ppl_Constraint_System_space_dimension) ++#define ppl_Constraint_type (*cloog_pointers__.p_ppl_Constraint_type) ++#define ppl_delete_Coefficient (*cloog_pointers__.p_ppl_delete_Coefficient) ++#define ppl_delete_Constraint (*cloog_pointers__.p_ppl_delete_Constraint) ++#define ppl_delete_Constraint_System_const_iterator (*cloog_pointers__.p_ppl_delete_Constraint_System_const_iterator) ++#define ppl_delete_Linear_Expression (*cloog_pointers__.p_ppl_delete_Linear_Expression) ++#define ppl_delete_Pointset_Powerset_C_Polyhedron (*cloog_pointers__.p_ppl_delete_Pointset_Powerset_C_Polyhedron) ++#define ppl_delete_Pointset_Powerset_C_Polyhedron_iterator (*cloog_pointers__.p_ppl_delete_Pointset_Powerset_C_Polyhedron_iterator) ++#define ppl_delete_Polyhedron (*cloog_pointers__.p_ppl_delete_Polyhedron) ++#define ppl_Linear_Expression_add_to_coefficient (*cloog_pointers__.p_ppl_Linear_Expression_add_to_coefficient) ++#define ppl_Linear_Expression_add_to_inhomogeneous (*cloog_pointers__.p_ppl_Linear_Expression_add_to_inhomogeneous) ++#define ppl_Linear_Expression_coefficient (*cloog_pointers__.p_ppl_Linear_Expression_coefficient) ++#define ppl_Linear_Expression_inhomogeneous_term (*cloog_pointers__.p_ppl_Linear_Expression_inhomogeneous_term) ++#define ppl_Linear_Expression_space_dimension (*cloog_pointers__.p_ppl_Linear_Expression_space_dimension) ++#define ppl_new_Coefficient (*cloog_pointers__.p_ppl_new_Coefficient) ++#define ppl_new_Coefficient_from_mpz_t (*cloog_pointers__.p_ppl_new_Coefficient_from_mpz_t) ++#define ppl_new_Constraint (*cloog_pointers__.p_ppl_new_Constraint) ++#define ppl_new_Constraint_System (*cloog_pointers__.p_ppl_new_Constraint_System) ++#define ppl_new_Constraint_System_const_iterator (*cloog_pointers__.p_ppl_new_Constraint_System_const_iterator) ++#define ppl_new_C_Polyhedron_from_C_Polyhedron (*cloog_pointers__.p_ppl_new_C_Polyhedron_from_C_Polyhedron) ++#define ppl_new_C_Polyhedron_from_space_dimension (*cloog_pointers__.p_ppl_new_C_Polyhedron_from_space_dimension) ++#define ppl_new_C_Polyhedron_recycle_Constraint_System (*cloog_pointers__.p_ppl_new_C_Polyhedron_recycle_Constraint_System) ++#define ppl_new_Linear_Expression (*cloog_pointers__.p_ppl_new_Linear_Expression) ++#define ppl_new_Linear_Expression_from_Constraint (*cloog_pointers__.p_ppl_new_Linear_Expression_from_Constraint) ++#define ppl_new_Linear_Expression_from_Linear_Expression (*cloog_pointers__.p_ppl_new_Linear_Expression_from_Linear_Expression) ++#define ppl_new_Linear_Expression_with_dimension (*cloog_pointers__.p_ppl_new_Linear_Expression_with_dimension) ++#define ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron (*cloog_pointers__.p_ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron) ++#define ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron (*cloog_pointers__.p_ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron) ++#define ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension (*cloog_pointers__.p_ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension) ++#define ppl_new_Pointset_Powerset_C_Polyhedron_iterator (*cloog_pointers__.p_ppl_new_Pointset_Powerset_C_Polyhedron_iterator) ++#define ppl_Pointset_Powerset_C_Polyhedron_add_constraint (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_add_constraint) ++#define ppl_Pointset_Powerset_C_Polyhedron_add_space_dimensions_and_embed (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_add_space_dimensions_and_embed) ++#define ppl_Pointset_Powerset_C_Polyhedron_difference_assign (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_difference_assign) ++#define ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_intersection_assign) ++#define ppl_Pointset_Powerset_C_Polyhedron_is_empty (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_is_empty) ++#define ppl_Pointset_Powerset_C_Polyhedron_iterator_begin (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_iterator_begin) ++#define ppl_Pointset_Powerset_C_Polyhedron_iterator_dereference (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_iterator_dereference) ++#define ppl_Pointset_Powerset_C_Polyhedron_iterator_end (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_iterator_end) ++#define ppl_Pointset_Powerset_C_Polyhedron_iterator_equal_test (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_iterator_equal_test) ++#define ppl_Pointset_Powerset_C_Polyhedron_iterator_increment (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_iterator_increment) ++#define ppl_Pointset_Powerset_C_Polyhedron_map_space_dimensions (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_map_space_dimensions) ++#define ppl_Pointset_Powerset_C_Polyhedron_maximize (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_maximize) ++#define ppl_Pointset_Powerset_C_Polyhedron_minimize (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_minimize) ++#define ppl_Pointset_Powerset_C_Polyhedron_remove_space_dimensions (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_remove_space_dimensions) ++#define ppl_Pointset_Powerset_C_Polyhedron_size (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_size) ++#define ppl_Pointset_Powerset_C_Polyhedron_space_dimension (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_space_dimension) ++#define ppl_Pointset_Powerset_C_Polyhedron_upper_bound_assign (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_upper_bound_assign) ++#define ppl_Polyhedron_add_constraint (*cloog_pointers__.p_ppl_Polyhedron_add_constraint) ++#define ppl_Polyhedron_add_constraints (*cloog_pointers__.p_ppl_Polyhedron_add_constraints) ++#define ppl_Polyhedron_add_space_dimensions_and_embed (*cloog_pointers__.p_ppl_Polyhedron_add_space_dimensions_and_embed) ++#define ppl_Polyhedron_get_constraints (*cloog_pointers__.p_ppl_Polyhedron_get_constraints) ++#define ppl_Polyhedron_map_space_dimensions (*cloog_pointers__.p_ppl_Polyhedron_map_space_dimensions) ++#define ppl_Polyhedron_remove_space_dimensions (*cloog_pointers__.p_ppl_Polyhedron_remove_space_dimensions) ++#define ppl_Polyhedron_space_dimension (*cloog_pointers__.p_ppl_Polyhedron_space_dimension) ++#define ppl_subtract_Linear_Expression_from_Linear_Expression (*cloog_pointers__.p_ppl_subtract_Linear_Expression_from_Linear_Expression) ++#define pprint (*cloog_pointers__.p_pprint) ++#define stmt_block (*cloog_pointers__.p_stmt_block) ++#define stmt_for (*cloog_pointers__.p_stmt_for) ++#define stmt_guard (*cloog_pointers__.p_stmt_guard) ++#define stmt_root (*cloog_pointers__.p_stmt_root) ++#define stmt_user (*cloog_pointers__.p_stmt_user) ++#define stmt_ass (*cloog_pointers__.p_stmt_ass) ++#define ppl_delete_Constraint_System (*cloog_pointers__.p_ppl_delete_Constraint_System) ++#define ppl_initialize (*cloog_pointers__.p_ppl_initialize) ++#define ppl_new_Constraint_System_from_Constraint (*cloog_pointers__.p_ppl_new_Constraint_System_from_Constraint) ++#define ppl_new_C_Polyhedron_from_Constraint_System (*cloog_pointers__.p_ppl_new_C_Polyhedron_from_Constraint_System) ++#define ppl_Polyhedron_affine_image (*cloog_pointers__.p_ppl_Polyhedron_affine_image) ++#define ppl_io_fprint_Pointset_Powerset_C_Polyhedron (*cloog_pointers__.p_ppl_io_fprint_Pointset_Powerset_C_Polyhedron) ++#if !(PPL_VERSION_MAJOR == 0 && PPL_VERSION_MINOR < 11) ++#define ppl_new_PIP_Problem_from_constraints (*cloog_pointers__.p_ppl_new_PIP_Problem_from_constraints) ++#define ppl_PIP_Problem_is_satisfiable (*cloog_pointers__.p_ppl_PIP_Problem_is_satisfiable) ++#define ppl_delete_PIP_Problem (*cloog_pointers__.p_ppl_delete_PIP_Problem) ++#endif ++ ++#define cloog_finalize (*cloog_pointers__.p_ppl_finalize) ++ ++ + #endif /* GRAPHITE_CLOOG_COMPAT_H */ +Index: b/src/gcc/graphite.c +=================================================================== +--- a/src/gcc/graphite.c ++++ b/src/gcc/graphite.c +@@ -56,6 +56,35 @@ + + CloogState *cloog_state; + ++__typeof (cloog_pointers__) cloog_pointers__; ++ ++static bool ++init_cloog_pointers (void) ++{ ++ void *h; ++ ++ if (cloog_pointers__.inited) ++ return cloog_pointers__.h != NULL; ++ h = dlopen ("libcloog-isl.so.4", RTLD_LAZY); ++ cloog_pointers__.h = h; ++ if (h == NULL) ++ return false; ++#define DYNSYM(x) \ ++ do \ ++ { \ ++ union { __typeof (cloog_pointers__.p_##x) p; void *q; } u; \ ++ u.q = dlsym (h, #x); \ ++ if (u.q == NULL) \ ++ return false; \ ++ cloog_pointers__.p_##x = u.p; \ ++ } \ ++ while (0) ++ DYNSYMS ++#undef DYNSYM ++ return true; ++} ++ ++ + /* Print global statistics to FILE. */ + + static void +@@ -201,6 +230,12 @@ + return false; + } + ++ if (!init_cloog_pointers ()) ++ { ++ sorry ("Graphite loop optimizations can only be used if the libcloog-isl4 package is installed"); ++ return false; ++ } ++ + scev_reset (); + recompute_all_dominators (); + initialize_original_copy_tables (); +Index: b/src/gcc/graphite-clast-to-gimple.c +=================================================================== +--- a/src/gcc/graphite-clast-to-gimple.c ++++ b/src/gcc/graphite-clast-to-gimple.c +@@ -836,7 +836,7 @@ + from STMT_FOR. */ + + static tree +-type_for_clast_for (struct clast_for *stmt_for, ivs_params_p ip) ++type_for_clast_for (struct clast_for *stmt_fora, ivs_params_p ip) + { + mpz_t bound_one, bound_two; + tree lb_type, ub_type; +@@ -844,8 +844,8 @@ + mpz_init (bound_one); + mpz_init (bound_two); + +- lb_type = type_for_clast_expr (stmt_for->LB, ip, bound_one, bound_two); +- ub_type = type_for_clast_expr (stmt_for->UB, ip, bound_one, bound_two); ++ lb_type = type_for_clast_expr (stmt_fora->LB, ip, bound_one, bound_two); ++ ub_type = type_for_clast_expr (stmt_fora->UB, ip, bound_one, bound_two); + + mpz_clear (bound_one); + mpz_clear (bound_two); +Index: b/src/gcc/graphite-poly.h +=================================================================== +--- a/src/gcc/graphite-poly.h ++++ b/src/gcc/graphite-poly.h +@@ -22,6 +22,8 @@ + #ifndef GCC_GRAPHITE_POLY_H + #define GCC_GRAPHITE_POLY_H + ++#include "graphite-cloog-util.h" ++ + typedef struct poly_dr *poly_dr_p; + DEF_VEC_P(poly_dr_p); + DEF_VEC_ALLOC_P (poly_dr_p, heap); --- gcc-4.9-4.9.2.orig/debian/patches/gcc-d-lang.diff +++ gcc-4.9-4.9.2/debian/patches/gcc-d-lang.diff @@ -0,0 +1,251 @@ +# DP: Add D options and specs for the gcc driver. + +Index: b/src/gcc/d/lang-specs.h +=================================================================== +--- /dev/null ++++ b/src/gcc/d/lang-specs.h +@@ -0,0 +1,31 @@ ++/* lang-specs.h -- D frontend for GCC. ++ Copyright (C) 2011, 2012 Free Software Foundation, Inc. ++ ++ GCC is free software; you can redistribute it and/or modify it under ++ the terms of the GNU General Public License as published by the Free ++ Software Foundation; either version 3, or (at your option) any later ++ version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . ++*/ ++ ++/* %{!M} probably doesn't make sense because we would need ++ to do that -- -MD and -MMD doesn't sound like a plan for D.... */ ++ ++{".d", "@d", 0, 1, 0 }, ++{".D", "@d", 0, 1, 0 }, ++{".dd", "@d", 0, 1, 0 }, ++{".DD", "@d", 0, 1, 0 }, ++{".di", "@d", 0, 1, 0 }, ++{".DI", "@d", 0, 1, 0 }, ++{"@d", ++ "%{!E:cc1d %i %(cc1_options) %(cc1d) %I %{nostdinc*} %{+e*} %{I*} %{J*}\ ++ %{M} %{MM} %{!fsyntax-only:%(invoke_as)}}", 0, 1, 0 }, ++ +Index: b/src/gcc/d/lang.opt +=================================================================== +--- /dev/null ++++ b/src/gcc/d/lang.opt +@@ -0,0 +1,208 @@ ++; GDC -- D front-end for GCC ++; Copyright (C) 2011, 2012 Free Software Foundation, Inc. ++; ++; This program is free software; you can redistribute it and/or modify ++; it under the terms of the GNU General Public License as published by ++; the Free Software Foundation; either version 2 of the License, or ++; (at your option) any later version. ++; ++; This program is distributed in the hope that it will be useful, ++; but WITHOUT ANY WARRANTY; without even the implied warranty of ++; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++; GNU General Public License for more details. ++; ++; You should have received a copy of the GNU General Public License ++; along with GCC; see the file COPYING3. If not see ++; . ++ ++Language ++D ++ ++debuglib= ++Driver Joined ++Debug library to use instead of phobos ++ ++defaultlib= ++Driver Joined ++Default library to use instead of phobos ++ ++fassert ++D ++Permit the use of the assert keyword ++ ++; For D: defaults to on ++fbounds-check ++D ++Generate code to check bounds before indexing arrays ++ ++fbuiltin ++D Var(flag_no_builtin, 0) ++Recognize built-in functions ++ ++fdebug ++D ++Compile in debug code ++ ++fdebug= ++D Joined RejectNegative ++-fdebug,-fdebug=,-fdebug= Compile in debug code, code <= level, or code identified by ident ++ ++fdeps= ++D Joined RejectNegative ++-fdeps= Write module dependencies to filename ++ ++fdoc ++D ++Generate documentation ++ ++fdoc-dir= ++D Joined RejectNegative ++-fdoc-dir= Write documentation file to docdir directory ++ ++fdoc-file= ++D Joined RejectNegative ++-fdoc-file= Write documentation file to filename ++ ++fdoc-inc= ++D Joined RejectNegative ++-fdoc-inc= Include a Ddoc macro file ++ ++fdump-source ++D RejectNegative ++Dump decoded UTF-8 text and source from HTML ++ ++fd-verbose ++D ++Print information about D language processing to stdout ++ ++fd-vtls ++D ++List all variables going into thread local storage ++ ++femit-templates ++D ++-femit-templates Emit templates code and data even if the linker cannot merge multiple copies ++ ++fignore-unknown-pragmas ++D ++Ignore unsupported pragmas ++ ++fin ++D ++Generate runtime code for in() contracts ++ ++fintfc ++Generate D interface files ++ ++fintfc-dir= ++D Joined RejectNegative ++-fintfc-dir= Write D interface files to directory ++ ++fintfc-file= ++D Joined RejectNegative ++-fintfc-file= Write D interface file to ++ ++finvariants ++D ++Generate runtime code for invariant()'s ++ ++fmake-deps= ++D Joined RejectNegative ++-fmake-deps= Write dependency output to the given file ++ ++fmake-mdeps= ++D Joined RejectNegative ++Like -fmake-deps= but ignore system modules ++ ++femit-moduleinfo ++D ++Generate ModuleInfo struct for output module ++ ++fonly= ++D Joined RejectNegative ++Process all modules specified on the command line, but only generate code for the module specified by the argument ++ ++fout ++D ++Generate runtime code for out() contracts ++ ++fproperty ++D ++Enforce property syntax ++ ++frelease ++D ++Compile release version ++ ++fsplit-dynamic-arrays ++D Var(flag_split_darrays) ++Split dynamic arrays into length and pointer when passing to functions ++ ++funittest ++D ++Compile in unittest code ++ ++fversion= ++D Joined RejectNegative ++-fversion= Compile in version code >= or identified by ++ ++fXf= ++D Joined RejectNegative ++-fXf= Write JSON file to ++ ++imultilib ++D Joined Separate ++-imultilib Set to be the multilib include subdirectory ++ ++iprefix ++D Joined Separate ++-iprefix Specify as a prefix for next two options ++ ++isysroot ++D Joined Separate ++-isysroot Set to be the system root directory ++ ++isystem ++D Joined Separate ++-isystem Add to the start of the system include path ++ ++I ++D Joined Separate ++-I Add to the end of the main include path ++ ++J ++D Joined Separate ++-J Put MODULE files in 'directory' ++ ++nophoboslib ++Driver ++Do not link the standard D library in the compilation ++ ++nostdinc ++D ++Do not search standard system include directories (those specified with -isystem will still be used) ++ ++static-libphobos ++Driver ++Link the standard D library statically in the compilation ++ ++Wall ++D ++; Documented in c.opt ++ ++Wcast-result ++D Warning Var(warn_cast_result) ++Warn about casts that will produce a null or nil result ++ ++Wdeprecated ++D ++; Documented in c.opt ++ ++Werror ++D ++; Documented in common.opt ++ ++Wunknown-pragmas ++D ++; Documented in c.opt ++ --- gcc-4.9-4.9.2.orig/debian/patches/gcc-default-format-security.diff +++ gcc-4.9-4.9.2/debian/patches/gcc-default-format-security.diff @@ -0,0 +1,39 @@ +# DP: Turn on -Wformat -Wformat-security by default for C, C++, ObjC, ObjC++. + +Index: b/src/gcc/doc/invoke.texi +=================================================================== +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -3573,6 +3573,11 @@ currently a subset of what @option{-Wfor + in future warnings may be added to @option{-Wformat-security} that are not + included in @option{-Wformat-nonliteral}.) + ++NOTE: In Ubuntu 8.10 and later versions this option is enabled by default ++for C, C++, ObjC, ObjC++. To disable, use @option{-Wno-format-security}, ++or disable all format warnings with @option{-Wformat=0}. To make format ++security warnings fatal, specify @option{-Werror=format-security}. ++ + @item -Wformat-y2k + @opindex Wformat-y2k + @opindex Wno-format-y2k +Index: b/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -665,11 +665,14 @@ proper position among the other output f + #define LINK_GCC_C_SEQUENCE_SPEC "%G %L %G" + #endif + ++/* no separate spec, just shove it into the ssp default spec */ ++#define FORMAT_SECURITY_SPEC "%{!Wformat:%{!Wformat=2:%{!Wformat=0:%{!Wall:-Wformat} %{!Wno-format-security:-Wformat-security}}}}" ++ + #ifndef SSP_DEFAULT_SPEC + #ifdef TARGET_LIBC_PROVIDES_SSP +-#define SSP_DEFAULT_SPEC "%{!fno-stack-protector:%{!fstack-protector-all:%{!ffreestanding:%{!nostdlib:-fstack-protector}}}}" ++#define SSP_DEFAULT_SPEC "%{!fno-stack-protector:%{!fstack-protector-all:%{!ffreestanding:%{!nostdlib:-fstack-protector}}}} " FORMAT_SECURITY_SPEC + #else +-#define SSP_DEFAULT_SPEC "" ++#define SSP_DEFAULT_SPEC FORMAT_SECURITY_SPEC + #endif + #endif + --- gcc-4.9-4.9.2.orig/debian/patches/gcc-default-fortify-source.diff +++ gcc-4.9-4.9.2/debian/patches/gcc-default-fortify-source.diff @@ -0,0 +1,40 @@ +# DP: Turn on -D_FORTIFY_SOURCE=2 by default for C, C++, ObjC, ObjC++, +# DP: if the optimization level is > 0 + +--- + gcc/doc/invoke.texi | 6 ++++++ + gcc/c-family/c-cppbuiltin.c | 3 + + 2 files changed, 9 insertions(+), 0 deletions(-) + +Index: b/src/gcc/doc/invoke.texi +=================================================================== +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -6886,6 +6886,12 @@ also turns on the following optimization + Please note the warning under @option{-fgcse} about + invoking @option{-O2} on programs that use computed gotos. + ++NOTE: In Ubuntu 8.10 and later versions, @option{-D_FORTIFY_SOURCE=2} is ++set by default, and is activated when @option{-O} is set to 2 or higher. ++This enables additional compile-time and run-time checks for several libc ++functions. To disable, specify either @option{-U_FORTIFY_SOURCE} or ++@option{-D_FORTIFY_SOURCE=0}. ++ + @item -O3 + @opindex O3 + Optimize yet more. @option{-O3} turns on all optimizations specified +Index: b/src/gcc/c-family/c-cppbuiltin.c +=================================================================== +--- a/src/gcc/c-family/c-cppbuiltin.c ++++ b/src/gcc/c-family/c-cppbuiltin.c +@@ -951,6 +951,10 @@ c_cpp_builtins (cpp_reader *pfile) + builtin_define_with_value ("__REGISTER_PREFIX__", REGISTER_PREFIX, 0); + builtin_define_with_value ("__USER_LABEL_PREFIX__", user_label_prefix, 0); + ++ /* Fortify Source enabled by default for optimization levels > 0 */ ++ if (optimize) ++ builtin_define_with_int_value ("_FORTIFY_SOURCE", 2); ++ + /* Misc. */ + if (flag_gnu89_inline) + cpp_define (pfile, "__GNUC_GNU_INLINE__"); --- gcc-4.9-4.9.2.orig/debian/patches/gcc-default-relro.diff +++ gcc-4.9-4.9.2/debian/patches/gcc-default-relro.diff @@ -0,0 +1,33 @@ +# DP: Turn on -Wl,-z,relro by default. + +--- + gcc/doc/invoke.texi | 3 +++ + gcc/gcc.c | 1 + + 2 files changed, 4 insertions(+), 0 deletions(-) + +Index: b/src/gcc/doc/invoke.texi +=================================================================== +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -10529,6 +10529,9 @@ For example, @option{-Wl,-Map,output.map + linker. When using the GNU linker, you can also get the same effect with + @option{-Wl,-Map=output.map}. + ++NOTE: In Ubuntu 8.10 and later versions, for LDFLAGS, the option ++@option{-Wl,-z,relro} is used. To disable, use @option{-Wl,-z,norelro}. ++ + @item -u @var{symbol} + @opindex u + Pretend the symbol @var{symbol} is undefined, to force linking of +Index: b/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -776,6 +776,7 @@ proper position among the other output f + "%{flto|flto=*:% tmp-tm.texi +- case `echo X|tr X '\101'` in \ +- A) tr -d '\015' < tmp-tm.texi > tmp2-tm.texi ;; \ +- *) tr -d '\r' < tmp-tm.texi > tmp2-tm.texi ;; \ +- esac +- mv tmp2-tm.texi tmp-tm.texi +- $(SHELL) $(srcdir)/../move-if-change tmp-tm.texi tm.texi +- @if cmp -s $(srcdir)/doc/tm.texi tm.texi; then \ +- $(STAMP) $@; \ +- elif test $(srcdir)/doc/tm.texi -nt $(srcdir)/doc/tm.texi.in \ +- && ( test $(srcdir)/doc/tm.texi -nt $(srcdir)/target.def \ +- || test $(srcdir)/doc/tm.texi -nt $(srcdir)/c-family/c-target.def \ +- || test $(srcdir)/doc/tm.texi -nt $(srcdir)/common/common-target.def \ +- ); then \ +- echo >&2 ; \ +- echo You should edit $(srcdir)/doc/tm.texi.in rather than $(srcdir)/doc/tm.texi . >&2 ; \ +- false; \ +- else \ +- echo >&2 ; \ +- echo Verify that you have permission to grant a GFDL license for all >&2 ; \ +- echo new text in tm.texi, then copy it to $(srcdir)/doc/tm.texi. >&2 ; \ +- false; \ +- fi ++ cat $(srcdir)/doc/tm.texi.in > tmp-tm.texi ++ $(STAMP) $@ + + GTFILES = $(CPP_ID_DATA_H) $(srcdir)/input.h $(srcdir)/coretypes.h \ + $(host_xm_file_list) \ --- gcc-4.9-4.9.2.orig/debian/patches/gcc-hash-style-both.diff +++ gcc-4.9-4.9.2/debian/patches/gcc-hash-style-both.diff @@ -0,0 +1,167 @@ +# DP: Link using --hash-style=both (alpha, amd64, armel, armhf, ia64, i386, powerpc, ppc64, s390, sparc) + +2006-07-11 Jakub Jelinek + + * config/i386/linux.h (LINK_SPEC): Add --hash-style=both. + * config/i386/linux64.h (LINK_SPEC): Likewise. + * config/rs6000/sysv4.h (LINK_OS_LINUX_SPEC): Likewise. + * config/rs6000/linux64.h (LINK_OS_LINUX_SPEC32, + LINK_OS_LINUX_SPEC64): Likewise. + * config/s390/linux.h (LINK_SPEC): Likewise. + * config/ia64/linux.h (LINK_SPEC): Likewise. + * config/sparc/linux.h (LINK_SPEC): Likewise. + * config/sparc/linux64.h (LINK_SPEC, LINK_ARCH32_SPEC, + LINK_ARCH64_SPEC): Likewise. + * config/alpha/linux-elf.h (LINK_SPEC): Likewise. + +2009-12-21 Matthias Klose + + * config/arm/linux-elf.h (LINK_SPEC): Add --hash-style=both. + +2012-11-17 Matthias Klose + + * config/aarch64/aarch64-linux.h (LINK_SPEC): Add --hash-style=both. + +--- + gcc/config/alpha/linux-elf.h | 2 +- + gcc/config/i386/linux.h | 2 +- + gcc/config/i386/linux64.h | 2 +- + gcc/config/ia64/linux.h | 2 +- + gcc/config/rs6000/linux64.h | 4 ++-- + gcc/config/rs6000/sysv4.h | 2 +- + gcc/config/s390/linux.h | 2 +- + gcc/config/sparc/linux.h | 2 +- + 8 files changed, 9 insertions(+), 9 deletions(-) + +Index: b/src/gcc/config/alpha/linux-elf.h +=================================================================== +--- a/src/gcc/config/alpha/linux-elf.h ++++ b/src/gcc/config/alpha/linux-elf.h +@@ -37,7 +37,7 @@ + + #define ELF_DYNAMIC_LINKER GNU_USER_DYNAMIC_LINKER + +-#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ ++#define LINK_SPEC "-m elf64alpha --hash-style=both %{G*} %{relax:-relax} \ + %{O*:-O3} %{!O*:-O1} \ + %{shared:-shared} \ + %{!shared: \ +Index: b/src/gcc/config/ia64/linux.h +=================================================================== +--- a/src/gcc/config/ia64/linux.h ++++ b/src/gcc/config/ia64/linux.h +@@ -58,7 +58,7 @@ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "\ ++#define LINK_SPEC " --hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +Index: b/src/gcc/config/rs6000/linux64.h +=================================================================== +--- a/src/gcc/config/rs6000/linux64.h ++++ b/src/gcc/config/rs6000/linux64.h +@@ -385,11 +385,11 @@ + " -m elf64ppc") + #endif + +-#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " --hash-style=both %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}}" + +-#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " --hash-style=both %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}}" + +Index: b/src/gcc/config/rs6000/sysv4.h +=================================================================== +--- a/src/gcc/config/rs6000/sysv4.h ++++ b/src/gcc/config/rs6000/sysv4.h +@@ -788,7 +788,7 @@ + #define GNU_USER_DYNAMIC_LINKER \ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER) + +-#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=both %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}" + +Index: b/src/gcc/config/s390/linux.h +=================================================================== +--- a/src/gcc/config/s390/linux.h ++++ b/src/gcc/config/s390/linux.h +@@ -65,7 +65,7 @@ + + #undef LINK_SPEC + #define LINK_SPEC \ +- "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ ++ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{static:-static} \ +Index: b/src/gcc/config/sparc/linux.h +=================================================================== +--- a/src/gcc/config/sparc/linux.h ++++ b/src/gcc/config/sparc/linux.h +@@ -86,7 +86,7 @@ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "-m elf32_sparc %{shared:-shared} \ ++#define LINK_SPEC "-m elf32_sparc --hash-style=both %{shared:-shared} \ + %{!mno-relax:%{!r:-relax}} \ + %{!shared: \ + %{!static: \ +Index: b/src/gcc/config/arm/linux-elf.h +=================================================================== +--- a/src/gcc/config/arm/linux-elf.h ++++ b/src/gcc/config/arm/linux-elf.h +@@ -67,6 +67,7 @@ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER "} \ + -X \ ++ --hash-style=both \ + %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ + SUBTARGET_EXTRA_LINK_SPEC + +Index: b/src/gcc/config/i386/gnu-user.h +=================================================================== +--- a/src/gcc/config/i386/gnu-user.h ++++ b/src/gcc/config/i386/gnu-user.h +@@ -74,7 +74,7 @@ + { "link_emulation", GNU_USER_LINK_EMULATION },\ + { "dynamic_linker", GNU_USER_DYNAMIC_LINKER } + +-#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) %{shared:-shared} \ ++#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) --hash-style=both %{shared:-shared} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +Index: b/src/gcc/config/i386/gnu-user64.h +=================================================================== +--- a/src/gcc/config/i386/gnu-user64.h ++++ b/src/gcc/config/i386/gnu-user64.h +@@ -56,6 +56,7 @@ + "%{" SPEC_64 ":-m " GNU_USER_LINK_EMULATION64 "} \ + %{" SPEC_32 ":-m " GNU_USER_LINK_EMULATION32 "} \ + %{" SPEC_X32 ":-m " GNU_USER_LINK_EMULATIONX32 "} \ ++ --hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +Index: b/src/gcc/config/aarch64/aarch64-linux.h +=================================================================== +--- a/src/gcc/config/aarch64/aarch64-linux.h ++++ b/src/gcc/config/aarch64/aarch64-linux.h +@@ -24,6 +24,7 @@ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64.so.1" + + #define LINUX_TARGET_LINK_SPEC "%{h*} \ ++ --hash-style=both \ + %{static:-Bstatic} \ + %{shared:-shared} \ + %{symbolic:-Bsymbolic} \ --- gcc-4.9-4.9.2.orig/debian/patches/gcc-hash-style-gnu.diff +++ gcc-4.9-4.9.2/debian/patches/gcc-hash-style-gnu.diff @@ -0,0 +1,168 @@ +# DP: Link using --hash-style=gnu (aarch64, alpha, amd64, armel, armhf, ia64, +# DP: i386, powerpc, ppc64, s390, sparc) + +2006-07-11 Jakub Jelinek + + * config/i386/linux.h (LINK_SPEC): Add --hash-style=gnu. + * config/i386/linux64.h (LINK_SPEC): Likewise. + * config/rs6000/sysv4.h (LINK_OS_LINUX_SPEC): Likewise. + * config/rs6000/linux64.h (LINK_OS_LINUX_SPEC32, + LINK_OS_LINUX_SPEC64): Likewise. + * config/s390/linux.h (LINK_SPEC): Likewise. + * config/ia64/linux.h (LINK_SPEC): Likewise. + * config/sparc/linux.h (LINK_SPEC): Likewise. + * config/sparc/linux64.h (LINK_SPEC, LINK_ARCH32_SPEC, + LINK_ARCH64_SPEC): Likewise. + * config/alpha/linux-elf.h (LINK_SPEC): Likewise. + +2009-12-21 Matthias Klose + + * config/arm/linux-elf.h (LINK_SPEC): Add --hash-style=gnu. + +2012-11-17 Matthias Klose + + * config/aarch64/aarch64-linux.h (LINK_SPEC): Add --hash-style=gnu. + +--- + gcc/config/alpha/linux-elf.h | 2 +- + gcc/config/i386/linux.h | 2 +- + gcc/config/i386/linux64.h | 2 +- + gcc/config/ia64/linux.h | 2 +- + gcc/config/rs6000/linux64.h | 4 ++-- + gcc/config/rs6000/sysv4.h | 2 +- + gcc/config/s390/linux.h | 2 +- + gcc/config/sparc/linux.h | 2 +- + 8 files changed, 9 insertions(+), 9 deletions(-) + +Index: b/src/gcc/config/alpha/linux-elf.h +=================================================================== +--- a/src/gcc/config/alpha/linux-elf.h ++++ b/src/gcc/config/alpha/linux-elf.h +@@ -37,7 +37,7 @@ along with GCC; see the file COPYING3. + + #define ELF_DYNAMIC_LINKER GNU_USER_DYNAMIC_LINKER + +-#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ ++#define LINK_SPEC "-m elf64alpha --hash-style=gnu %{G*} %{relax:-relax} \ + %{O*:-O3} %{!O*:-O1} \ + %{shared:-shared} \ + %{!shared: \ +Index: b/src/gcc/config/ia64/linux.h +=================================================================== +--- a/src/gcc/config/ia64/linux.h ++++ b/src/gcc/config/ia64/linux.h +@@ -58,7 +58,7 @@ do { \ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "\ ++#define LINK_SPEC " --hash-style=gnu \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +Index: b/src/gcc/config/rs6000/linux64.h +=================================================================== +--- a/src/gcc/config/rs6000/linux64.h ++++ b/src/gcc/config/rs6000/linux64.h +@@ -406,11 +406,11 @@ extern int dot_symbols; + " -m elf64ppc") + #endif + +-#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " --hash-style=gnu %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}}" + +-#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " --hash-style=gnu %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}}" + +Index: b/src/gcc/config/rs6000/sysv4.h +=================================================================== +--- a/src/gcc/config/rs6000/sysv4.h ++++ b/src/gcc/config/rs6000/sysv4.h +@@ -773,7 +773,7 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEF + #define GNU_USER_DYNAMIC_LINKER \ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER) + +-#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=gnu %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}" + +Index: b/src/gcc/config/s390/linux.h +=================================================================== +--- a/src/gcc/config/s390/linux.h ++++ b/src/gcc/config/s390/linux.h +@@ -65,7 +65,7 @@ along with GCC; see the file COPYING3. + + #undef LINK_SPEC + #define LINK_SPEC \ +- "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ ++ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=gnu \ + %{shared:-shared} \ + %{!shared: \ + %{static:-static} \ +Index: b/src/gcc/config/sparc/linux.h +=================================================================== +--- a/src/gcc/config/sparc/linux.h ++++ b/src/gcc/config/sparc/linux.h +@@ -86,7 +86,7 @@ extern const char *host_detect_local_cpu + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "-m elf32_sparc %{shared:-shared} \ ++#define LINK_SPEC "-m elf32_sparc --hash-style=gnu %{shared:-shared} \ + %{!mno-relax:%{!r:-relax}} \ + %{!shared: \ + %{!static: \ +Index: b/src/gcc/config/arm/linux-elf.h +=================================================================== +--- a/src/gcc/config/arm/linux-elf.h ++++ b/src/gcc/config/arm/linux-elf.h +@@ -72,6 +72,7 @@ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER "} \ + -X \ ++ --hash-style=gnu \ + %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ + SUBTARGET_EXTRA_LINK_SPEC + +Index: b/src/gcc/config/i386/gnu-user.h +=================================================================== +--- a/src/gcc/config/i386/gnu-user.h ++++ b/src/gcc/config/i386/gnu-user.h +@@ -74,7 +74,7 @@ along with GCC; see the file COPYING3. + { "link_emulation", GNU_USER_LINK_EMULATION },\ + { "dynamic_linker", GNU_USER_DYNAMIC_LINKER } + +-#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) %{shared:-shared} \ ++#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) --hash-style=gnu %{shared:-shared} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +Index: b/src/gcc/config/i386/gnu-user64.h +=================================================================== +--- a/src/gcc/config/i386/gnu-user64.h ++++ b/src/gcc/config/i386/gnu-user64.h +@@ -56,6 +56,7 @@ see the files COPYING3 and COPYING.RUNTI + "%{" SPEC_64 ":-m " GNU_USER_LINK_EMULATION64 "} \ + %{" SPEC_32 ":-m " GNU_USER_LINK_EMULATION32 "} \ + %{" SPEC_X32 ":-m " GNU_USER_LINK_EMULATIONX32 "} \ ++ --hash-style=gnu \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +Index: b/src/gcc/config/aarch64/aarch64-linux.h +=================================================================== +--- a/src/gcc/config/aarch64/aarch64-linux.h ++++ b/src/gcc/config/aarch64/aarch64-linux.h +@@ -26,6 +26,7 @@ + #define CPP_SPEC "%{pthread:-D_REENTRANT}" + + #define LINUX_TARGET_LINK_SPEC "%{h*} \ ++ --hash-style=gnu \ + %{static:-Bstatic} \ + %{shared:-shared} \ + %{symbolic:-Bsymbolic} \ --- gcc-4.9-4.9.2.orig/debian/patches/gcc-ice-apport.diff +++ gcc-4.9-4.9.2/debian/patches/gcc-ice-apport.diff @@ -0,0 +1,24 @@ +# DP: Report an ICE to apport (if apport is available +# DP: and the environment variable GCC_NOAPPORT is not set) + +Index: b/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -6341,6 +6341,16 @@ retry_ice (const char *prog, const char + fflush(stderr); + free(cmd); + } ++ if (!getenv ("GCC_NOAPPORT") ++ && !access ("/usr/share/apport/gcc_ice_hook", R_OK | X_OK)) ++ { ++ char *cmd = XNEWVEC (char, 50 + strlen (temp_filenames[attempt * 2]) ++ + strlen (new_argv[0])); ++ sprintf (cmd, "/usr/share/apport/gcc_ice_hook %s %s", ++ new_argv[0], temp_filenames[attempt * 2]); ++ system (cmd); ++ free (cmd); ++ } + /* Make sure it is not deleted. */ + free (temp_filenames[attempt * 2]); + temp_filenames[attempt * 2] = NULL; --- gcc-4.9-4.9.2.orig/debian/patches/gcc-ice-dump.diff +++ gcc-4.9-4.9.2/debian/patches/gcc-ice-dump.diff @@ -0,0 +1,32 @@ +# DP: For ICEs, dump the preprocessed source file to stderr +# DP: when in a distro build environment. + +Index: b/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -6323,9 +6323,24 @@ retry_ice (const char *prog, const char + if (WIFEXITED (status) + && WEXITSTATUS (status) == SUCCESS_EXIT_CODE) + { ++ char *deb_build_options = getenv("DEB_BUILD_OPTIONS"); ++ + fnotice (stderr, "Preprocessed source stored into %s file," + " please attach this to your bugreport.\n", + temp_filenames[attempt * 2]); ++ if (deb_build_options) ++ { ++ char *cmd = XNEWVEC (char, 50 + strlen (temp_filenames[attempt * 2])); ++ ++ sprintf (cmd, "/bin/cat %s >&2", temp_filenames[attempt * 2]); ++ fprintf (stderr, "=== BEGIN GCC DUMP ===\n"); ++ fflush (stderr); ++ system (cmd); ++ fflush (stderr); ++ fprintf (stderr, "=== END GCC DUMP ===\n"); ++ fflush (stderr); ++ free (cmd); ++ } + /* Make sure it is not deleted. */ + free (temp_filenames[attempt * 2]); + temp_filenames[attempt * 2] = NULL; --- gcc-4.9-4.9.2.orig/debian/patches/gcc-ice-hack.diff +++ gcc-4.9-4.9.2/debian/patches/gcc-ice-hack.diff @@ -0,0 +1,315 @@ +# DP: Retry the build on an ice, save the calling options and preprocessed +# DP: source when the ice is reproducible. + +2004-01-23 Jakub Jelinek + + * gcc.c (execute): Don't free first string early, but at the end + of the function. Call retry_ice if compiler exited with + ICE_EXIT_CODE. + (retry_ice): New function. + * diagnostic.c (diagnostic_count_diagnostic, + diagnostic_action_after_output, error_recursion): Exit with + ICE_EXIT_CODE instead of FATAL_EXIT_CODE. + +#--- a/src/gcc/Makefile.in +#+++ b/src/gcc/Makefile.in +#@@ -181,6 +181,8 @@ SYSCALLS.c.X-warn = -Wno-strict-prototypes -Wno-error +# dfp.o-warn = -Wno-error +# # mips-tfile.c contains -Wcast-qual warnings. +# mips-tfile.o-warn = -Wno-error +#+# gcc-ice-hack +#+gcc.o-warn = -Wno-error +# +# # All warnings have to be shut off in stage1 if the compiler used then +# # isn't gcc; configure determines that. WARN_CFLAGS will be either +Index: b/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -252,6 +252,9 @@ static void init_gcc_specs (struct obsta + #if defined(HAVE_TARGET_OBJECT_SUFFIX) || defined(HAVE_TARGET_EXECUTABLE_SUFFIX) + static const char *convert_filename (const char *, int, int); + #endif ++#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS)) ++static void retry_ice (const char *prog, const char **argv); ++#endif + + static const char *getenv_spec_function (int, const char **); + static const char *if_exists_spec_function (int, const char **); +@@ -2798,7 +2801,7 @@ execute (void) + } + } + +- if (string != commands[i].prog) ++ if (i && string != commands[i].prog) + free (CONST_CAST (char *, string)); + } + +@@ -2851,6 +2854,16 @@ execute (void) + else if (WIFEXITED (status) + && WEXITSTATUS (status) >= MIN_FATAL_STATUS) + { ++#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS)) ++ /* For ICEs in cc1, cc1obj, cc1plus see if it is ++ reproducible or not. */ ++ const char *p; ++ if (WEXITSTATUS (status) == ICE_EXIT_CODE ++ && i == 0 ++ && (p = strrchr (commands[0].argv[0], DIR_SEPARATOR)) ++ && ! strncmp (p + 1, "cc1", 3)) ++ retry_ice (commands[0].prog, commands[0].argv); ++#endif + if (WEXITSTATUS (status) > greatest_status) + greatest_status = WEXITSTATUS (status); + ret_code = -1; +@@ -2908,6 +2921,9 @@ execute (void) + } + } + ++ if (commands[0].argv[0] != commands[0].prog) ++ free (CONST_CAST (char *, commands[0].argv[0])); ++ + return ret_code; + } + } +@@ -6099,6 +6115,227 @@ give_switch (int switchnum, int omit_fir + switches[switchnum].validated = true; + } + ++#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS)) ++#define RETRY_ICE_ATTEMPTS 2 ++ ++static void ++retry_ice (const char *prog, const char **argv) ++{ ++ int nargs, out_arg = -1, quiet = 0, attempt; ++ int pid, retries, sleep_interval; ++ const char **new_argv; ++ char *temp_filenames[RETRY_ICE_ATTEMPTS * 2 + 2]; ++ ++ if (gcc_input_filename == NULL || ! strcmp (gcc_input_filename, "-")) ++ return; ++ ++ for (nargs = 0; argv[nargs] != NULL; ++nargs) ++ /* Only retry compiler ICEs, not preprocessor ones. */ ++ if (! strcmp (argv[nargs], "-E")) ++ return; ++ else if (argv[nargs][0] == '-' && argv[nargs][1] == 'o') ++ { ++ if (out_arg == -1) ++ out_arg = nargs; ++ else ++ return; ++ } ++ /* If the compiler is going to output any time information, ++ it might varry between invocations. */ ++ else if (! strcmp (argv[nargs], "-quiet")) ++ quiet = 1; ++ else if (! strcmp (argv[nargs], "-ftime-report")) ++ return; ++ ++ if (out_arg == -1 || !quiet) ++ return; ++ ++ memset (temp_filenames, '\0', sizeof (temp_filenames)); ++ new_argv = XALLOCAVEC (const char *, nargs + 3); ++ memcpy (new_argv, argv, (nargs + 1) * sizeof (const char *)); ++ new_argv[nargs++] = "-frandom-seed=0"; ++ new_argv[nargs] = NULL; ++ if (new_argv[out_arg][2] == '\0') ++ new_argv[out_arg + 1] = "-"; ++ else ++ new_argv[out_arg] = "-o-"; ++ ++ for (attempt = 0; attempt < RETRY_ICE_ATTEMPTS + 1; ++attempt) ++ { ++ int fd = -1; ++ int status; ++ ++ temp_filenames[attempt * 2] = make_temp_file (".out"); ++ temp_filenames[attempt * 2 + 1] = make_temp_file (".err"); ++ ++ if (attempt == RETRY_ICE_ATTEMPTS) ++ { ++ int i; ++ int fd1, fd2; ++ struct stat st1, st2; ++ size_t n, len; ++ char *buf; ++ ++ buf = XNEWVEC (char, 8192); ++ ++ for (i = 0; i < 2; ++i) ++ { ++ fd1 = open (temp_filenames[i], O_RDONLY); ++ fd2 = open (temp_filenames[2 + i], O_RDONLY); ++ ++ if (fd1 < 0 || fd2 < 0) ++ { ++ i = -1; ++ close (fd1); ++ close (fd2); ++ break; ++ } ++ ++ if (fstat (fd1, &st1) < 0 || fstat (fd2, &st2) < 0) ++ { ++ i = -1; ++ close (fd1); ++ close (fd2); ++ break; ++ } ++ ++ if (st1.st_size != st2.st_size) ++ { ++ close (fd1); ++ close (fd2); ++ break; ++ } ++ ++ len = 0; ++ for (n = st1.st_size; n; n -= len) ++ { ++ len = n; ++ if (len > 4096) ++ len = 4096; ++ ++ if (read (fd1, buf, len) != (int) len ++ || read (fd2, buf + 4096, len) != (int) len) ++ { ++ i = -1; ++ break; ++ } ++ ++ if (memcmp (buf, buf + 4096, len) != 0) ++ break; ++ } ++ ++ close (fd1); ++ close (fd2); ++ ++ if (n) ++ break; ++ } ++ ++ free (buf); ++ if (i == -1) ++ break; ++ ++ if (i != 2) ++ { ++ fnotice (stderr, "The bug is not reproducible, so it is" ++ " likely a hardware or OS problem.\n"); ++ break; ++ } ++ ++ fd = open (temp_filenames[attempt * 2], O_RDWR); ++ if (fd < 0) ++ break; ++ write (fd, "//", 2); ++ for (i = 0; i < nargs; i++) ++ { ++ write (fd, " ", 1); ++ write (fd, new_argv[i], strlen (new_argv[i])); ++ } ++ write (fd, "\n", 1); ++ new_argv[nargs] = "-E"; ++ new_argv[nargs + 1] = NULL; ++ } ++ ++ /* Fork a subprocess; wait and retry if it fails. */ ++ sleep_interval = 1; ++ pid = -1; ++ for (retries = 0; retries < 4; retries++) ++ { ++ pid = fork (); ++ if (pid >= 0) ++ break; ++ sleep (sleep_interval); ++ sleep_interval *= 2; ++ } ++ ++ if (pid < 0) ++ break; ++ else if (pid == 0) ++ { ++ if (attempt != RETRY_ICE_ATTEMPTS) ++ fd = open (temp_filenames[attempt * 2], O_RDWR); ++ if (fd < 0) ++ exit (-1); ++ if (fd != 1) ++ { ++ close (1); ++ dup (fd); ++ close (fd); ++ } ++ ++ fd = open (temp_filenames[attempt * 2 + 1], O_RDWR); ++ if (fd < 0) ++ exit (-1); ++ if (fd != 2) ++ { ++ close (2); ++ dup (fd); ++ close (fd); ++ } ++ ++ if (prog == new_argv[0]) ++ execvp (prog, CONST_CAST2 (char *const *, const char **, new_argv)); ++ else ++ execv (new_argv[0], CONST_CAST2 (char *const *, const char **, new_argv)); ++ exit (-1); ++ } ++ ++ if (waitpid (pid, &status, 0) < 0) ++ break; ++ ++ if (attempt < RETRY_ICE_ATTEMPTS ++ && (! WIFEXITED (status) || WEXITSTATUS (status) != ICE_EXIT_CODE)) ++ { ++ fnotice (stderr, "The bug is not reproducible, so it is" ++ " likely a hardware or OS problem.\n"); ++ break; ++ } ++ else if (attempt == RETRY_ICE_ATTEMPTS) ++ { ++ close (fd); ++ if (WIFEXITED (status) ++ && WEXITSTATUS (status) == SUCCESS_EXIT_CODE) ++ { ++ fnotice (stderr, "Preprocessed source stored into %s file," ++ " please attach this to your bugreport.\n", ++ temp_filenames[attempt * 2]); ++ /* Make sure it is not deleted. */ ++ free (temp_filenames[attempt * 2]); ++ temp_filenames[attempt * 2] = NULL; ++ break; ++ } ++ } ++ } ++ ++ for (attempt = 0; attempt < RETRY_ICE_ATTEMPTS * 2 + 2; attempt++) ++ if (temp_filenames[attempt]) ++ { ++ unlink (temp_filenames[attempt]); ++ free (temp_filenames[attempt]); ++ } ++} ++#endif ++ + /* Search for a file named NAME trying various prefixes including the + user's -B prefix and some standard ones. + Return the absolute file name found. If nothing is found, return NAME. */ +Index: b/src/gcc/diagnostic.c +=================================================================== +--- a/src/gcc/diagnostic.c ++++ b/src/gcc/diagnostic.c +@@ -492,7 +492,7 @@ diagnostic_action_after_output (diagnost + real_abort (); + diagnostic_finish (context); + fnotice (stderr, "compilation terminated.\n"); +- exit (FATAL_EXIT_CODE); ++ exit (ICE_EXIT_CODE); + + default: + gcc_unreachable (); --- gcc-4.9-4.9.2.orig/debian/patches/gcc-linaro-doc.diff +++ gcc-4.9-4.9.2/debian/patches/gcc-linaro-doc.diff @@ -0,0 +1,651 @@ +# DP: Changes for the Linaro 4.9-2015.04 release (documentation). + +--- a/src/gcc/doc/extend.texi ++++ b/src/gcc/doc/extend.texi +@@ -9112,13 +9112,14 @@ + instructions, but allow the compiler to schedule those calls. + + @menu ++* AArch64 Built-in Functions:: + * Alpha Built-in Functions:: + * Altera Nios II Built-in Functions:: + * ARC Built-in Functions:: + * ARC SIMD Built-in Functions:: + * ARM iWMMXt Built-in Functions:: +-* ARM NEON Intrinsics:: +-* ARM ACLE Intrinsics:: ++* ARM C Language Extensions (ACLE):: ++* ARM Floating Point Status and Control Intrinsics:: + * AVR Built-in Functions:: + * Blackfin Built-in Functions:: + * FR-V Built-in Functions:: +@@ -9144,6 +9145,18 @@ + * TILEPro Built-in Functions:: + @end menu + ++@node AArch64 Built-in Functions ++@subsection AArch64 Built-in Functions ++ ++These built-in functions are available for the AArch64 family of ++processors. ++@smallexample ++unsigned int __builtin_aarch64_get_fpcr () ++void __builtin_aarch64_set_fpcr (unsigned int) ++unsigned int __builtin_aarch64_get_fpsr () ++void __builtin_aarch64_set_fpsr (unsigned int) ++@end smallexample ++ + @node Alpha Built-in Functions + @subsection Alpha Built-in Functions + +@@ -9907,19 +9920,41 @@ + long long __builtin_arm_wzero () + @end smallexample + +-@node ARM NEON Intrinsics +-@subsection ARM NEON Intrinsics + +-These built-in intrinsics for the ARM Advanced SIMD extension are available +-when the @option{-mfpu=neon} switch is used: ++@node ARM C Language Extensions (ACLE) ++@subsection ARM C Language Extensions (ACLE) + +-@include arm-neon-intrinsics.texi ++GCC implements extensions for C as described in the ARM C Language ++Extensions (ACLE) specification, which can be found at ++@uref{http://infocenter.arm.com/help/topic/com.arm.doc.ihi0053c/IHI0053C_acle_2_0.pdf}. + +-@node ARM ACLE Intrinsics +-@subsection ARM ACLE Intrinsics ++As a part of ACLE, GCC implements extensions for Advanced SIMD as described in ++the ARM C Language Extensions Specification. The complete list of Advanced SIMD ++intrinsics can be found at ++@uref{http://infocenter.arm.com/help/topic/com.arm.doc.ihi0073a/IHI0073A_arm_neon_intrinsics_ref.pdf}. ++The built-in intrinsics for the Advanced SIMD extension are available when ++NEON is enabled. + +-@include arm-acle-intrinsics.texi ++Currently, ARM and AArch64 back-ends do not support ACLE 2.0 fully. Both ++back-ends support CRC32 intrinsics from @file{arm_acle.h}. The ARM backend's ++16-bit floating-point Advanded SIMD Intrinsics currently comply to ACLE v1.1. ++AArch64's backend does not have support for 16-bit floating point Advanced SIMD ++Intrinsics yet. + ++See @ref{ARM Options} and @ref{AArch64 Options} for more information on the ++availability of extensions. ++ ++@node ARM Floating Point Status and Control Intrinsics ++@subsection ARM Floating Point Status and Control Intrinsics ++ ++These built-in functions are available for the ARM family of ++processors with floating-point unit. ++ ++@smallexample ++unsigned int __builtin_arm_get_fpscr () ++void __builtin_arm_set_fpscr (unsigned int) ++@end smallexample ++ + @node AVR Built-in Functions + @subsection AVR Built-in Functions + +--- a/src/gcc/doc/aarch64-acle-intrinsics.texi ++++ b/src/gcc/doc/aarch64-acle-intrinsics.texi +@@ -0,0 +1,55 @@ ++@c Copyright (C) 2014 Free Software Foundation, Inc. ++@c This is part of the GCC manual. ++@c For copying conditions, see the file gcc.texi. ++ ++@subsubsection CRC32 intrinsics ++ ++These intrinsics are available when the CRC32 architecture extension is ++specified, e.g. when the @option{-march=armv8-a+crc} switch is used, or when ++the target processor specified with @option{-mcpu} supports it. ++ ++@itemize @bullet ++@item uint32_t __crc32b (uint32_t, uint8_t) ++@*@emph{Form of expected instruction(s):} @code{crc32b @var{w0}, @var{w1}, @var{w2}} ++@end itemize ++ ++ ++@itemize @bullet ++@item uint32_t __crc32h (uint32_t, uint16_t) ++@*@emph{Form of expected instruction(s):} @code{crc32h @var{w0}, @var{w1}, @var{w2}} ++@end itemize ++ ++ ++@itemize @bullet ++@item uint32_t __crc32w (uint32_t, uint32_t) ++@*@emph{Form of expected instruction(s):} @code{crc32w @var{w0}, @var{w1}, @var{w2}} ++@end itemize ++ ++ ++@itemize @bullet ++@item uint32_t __crc32d (uint32_t, uint64_t) ++@*@emph{Form of expected instruction(s):} @code{crc32x @var{w0}, @var{w1}, @var{x2}} ++@end itemize ++ ++@itemize @bullet ++@item uint32_t __crc32cb (uint32_t, uint8_t) ++@*@emph{Form of expected instruction(s):} @code{crc32cb @var{w0}, @var{w1}, @var{w2}} ++@end itemize ++ ++ ++@itemize @bullet ++@item uint32_t __crc32ch (uint32_t, uint16_t) ++@*@emph{Form of expected instruction(s):} @code{crc32ch @var{w0}, @var{w1}, @var{w2}} ++@end itemize ++ ++ ++@itemize @bullet ++@item uint32_t __crc32cw (uint32_t, uint32_t) ++@*@emph{Form of expected instruction(s):} @code{crc32cw @var{w0}, @var{w1}, @var{w2}} ++@end itemize ++ ++ ++@itemize @bullet ++@item uint32_t __crc32cd (uint32_t, uint64_t) ++@*@emph{Form of expected instruction(s):} @code{crc32cx @var{w0}, @var{w1}, @var{x2}} ++@end itemize +--- a/src/gcc/doc/tm.texi ++++ b/src/gcc/doc/tm.texi +@@ -1342,27 +1342,6 @@ + The default is to use @code{word_mode}. + @end deftypefn + +-@defmac ROUND_TOWARDS_ZERO +-If defined, this macro should be true if the prevailing rounding +-mode is towards zero. +- +-Defining this macro only affects the way @file{libgcc.a} emulates +-floating-point arithmetic. +- +-Not defining this macro is equivalent to returning zero. +-@end defmac +- +-@defmac LARGEST_EXPONENT_IS_NORMAL (@var{size}) +-This macro should return true if floats with @var{size} +-bits do not have a NaN or infinity representation, but use the largest +-exponent for normal numbers instead. +- +-Defining this macro only affects the way @file{libgcc.a} emulates +-floating-point arithmetic. +- +-The default definition of this macro returns false for all sizes. +-@end defmac +- + @deftypefn {Target Hook} bool TARGET_MS_BITFIELD_LAYOUT_P (const_tree @var{record_type}) + This target hook returns @code{true} if bit-fields in the given + @var{record_type} are to be laid out following the rules of Microsoft +@@ -6311,13 +6290,40 @@ + If you don't define this, a reasonable default is used. + @end defmac + +-@defmac MOVE_BY_PIECES_P (@var{size}, @var{alignment}) +-A C expression used to determine whether @code{move_by_pieces} will be used to +-copy a chunk of memory, or whether some other block move mechanism +-will be used. Defaults to 1 if @code{move_by_pieces_ninsns} returns less +-than @code{MOVE_RATIO}. +-@end defmac ++@deftypefn {Target Hook} bool TARGET_USE_BY_PIECES_INFRASTRUCTURE_P (unsigned HOST_WIDE_INT @var{size}, unsigned int @var{alignment}, enum by_pieces_operation @var{op}, bool @var{speed_p}) ++GCC will attempt several strategies when asked to copy between ++two areas of memory, or to set, clear or store to memory, for example ++when copying a @code{struct}. The @code{by_pieces} infrastructure ++implements such memory operations as a sequence of load, store or move ++insns. Alternate strategies are to expand the ++@code{movmem} or @code{setmem} optabs, to emit a library call, or to emit ++unit-by-unit, loop-based operations. + ++This target hook should return true if, for a memory operation with a ++given @var{size} and @var{alignment}, using the @code{by_pieces} ++infrastructure is expected to result in better code generation. ++Both @var{size} and @var{alignment} are measured in terms of storage ++units. ++ ++The parameter @var{op} is one of: @code{CLEAR_BY_PIECES}, ++@code{MOVE_BY_PIECES}, @code{SET_BY_PIECES}, @code{STORE_BY_PIECES}. ++These describe the type of memory operation under consideration. ++ ++The parameter @var{speed_p} is true if the code is currently being ++optimized for speed rather than size. ++ ++Returning true for higher values of @var{size} can improve code generation ++for speed if the target does not provide an implementation of the ++@code{movmem} or @code{setmem} standard names, if the @code{movmem} or ++@code{setmem} implementation would be more expensive than a sequence of ++insns, or if the overhead of a library call would dominate that of ++the body of the memory operation. ++ ++Returning true for higher values of @code{size} may also cause an increase ++in code size, for example where the number of insns emitted to perform a ++move would be greater than that of a library call. ++@end deftypefn ++ + @defmac MOVE_MAX_PIECES + A C expression used by @code{move_by_pieces} to determine the largest unit + a load or store used to copy memory is. Defaults to @code{MOVE_MAX}. +@@ -6335,13 +6341,6 @@ + If you don't define this, a reasonable default is used. + @end defmac + +-@defmac CLEAR_BY_PIECES_P (@var{size}, @var{alignment}) +-A C expression used to determine whether @code{clear_by_pieces} will be used +-to clear a chunk of memory, or whether some other block clear mechanism +-will be used. Defaults to 1 if @code{move_by_pieces_ninsns} returns less +-than @code{CLEAR_RATIO}. +-@end defmac +- + @defmac SET_RATIO (@var{speed}) + The threshold of number of scalar move insns, @emph{below} which a sequence + of insns should be generated to set memory to a constant value, instead of +@@ -6355,24 +6354,6 @@ + If you don't define this, it defaults to the value of @code{MOVE_RATIO}. + @end defmac + +-@defmac SET_BY_PIECES_P (@var{size}, @var{alignment}) +-A C expression used to determine whether @code{store_by_pieces} will be +-used to set a chunk of memory to a constant value, or whether some +-other mechanism will be used. Used by @code{__builtin_memset} when +-storing values other than constant zero. +-Defaults to 1 if @code{move_by_pieces_ninsns} returns less +-than @code{SET_RATIO}. +-@end defmac +- +-@defmac STORE_BY_PIECES_P (@var{size}, @var{alignment}) +-A C expression used to determine whether @code{store_by_pieces} will be +-used to set a chunk of memory to a constant string value, or whether some +-other mechanism will be used. Used by @code{__builtin_strcpy} when +-called with a constant source string. +-Defaults to 1 if @code{move_by_pieces_ninsns} returns less +-than @code{MOVE_RATIO}. +-@end defmac +- + @defmac USE_LOAD_POST_INCREMENT (@var{mode}) + A C expression used to determine whether a load postincrement is a good + thing to use for a given mode. Defaults to the value of +@@ -6588,11 +6569,13 @@ + This hook is used to check whether target platform supports macro fusion. + @end deftypefn + +-@deftypefn {Target Hook} bool TARGET_SCHED_MACRO_FUSION_PAIR_P (rtx @var{condgen}, rtx @var{condjmp}) +-This hook is used to check whether two insns could be macro fused for +-target microarchitecture. If this hook returns true for the given insn pair +-(@var{condgen} and @var{condjmp}), scheduler will put them into a sched +-group, and they will not be scheduled apart. ++@deftypefn {Target Hook} bool TARGET_SCHED_MACRO_FUSION_PAIR_P (rtx @var{prev}, rtx @var{curr}) ++This hook is used to check whether two insns should be macro fused for ++a target microarchitecture. If this hook returns true for the given insn pair ++(@var{prev} and @var{curr}), the scheduler will put them into a sched ++group, and they will not be scheduled apart. The two insns will be either ++two SET insns or a compare and a conditional jump and this hook should ++validate any dependencies needed to fuse the two insns together. + @end deftypefn + + @deftypefn {Target Hook} void TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK (rtx @var{head}, rtx @var{tail}) +@@ -6705,26 +6688,32 @@ + The default is no multipass scheduling. + @end deftypefn + +-@deftypefn {Target Hook} int TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD (rtx @var{insn}) ++@deftypefn {Target Hook} int TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD (rtx @var{insn}, int @var{ready_index}) + + This hook controls what insns from the ready insn queue will be + considered for the multipass insn scheduling. If the hook returns +-zero for @var{insn}, the insn will be not chosen to +-be issued. ++zero for @var{insn}, the insn will be considered in multipass scheduling. ++Positive return values will remove @var{insn} from consideration on ++the current round of multipass scheduling. ++Negative return values will remove @var{insn} from consideration for given ++number of cycles. ++Backends should be careful about returning non-zero for highest priority ++instruction at position 0 in the ready list. @var{ready_index} is passed ++to allow backends make correct judgements. + + The default is that any ready insns can be chosen to be issued. + @end deftypefn + +-@deftypefn {Target Hook} void TARGET_SCHED_FIRST_CYCLE_MULTIPASS_BEGIN (void *@var{data}, char *@var{ready_try}, int @var{n_ready}, bool @var{first_cycle_insn_p}) ++@deftypefn {Target Hook} void TARGET_SCHED_FIRST_CYCLE_MULTIPASS_BEGIN (void *@var{data}, signed char *@var{ready_try}, int @var{n_ready}, bool @var{first_cycle_insn_p}) + This hook prepares the target backend for a new round of multipass + scheduling. + @end deftypefn + +-@deftypefn {Target Hook} void TARGET_SCHED_FIRST_CYCLE_MULTIPASS_ISSUE (void *@var{data}, char *@var{ready_try}, int @var{n_ready}, rtx @var{insn}, const void *@var{prev_data}) ++@deftypefn {Target Hook} void TARGET_SCHED_FIRST_CYCLE_MULTIPASS_ISSUE (void *@var{data}, signed char *@var{ready_try}, int @var{n_ready}, rtx @var{insn}, const void *@var{prev_data}) + This hook is called when multipass scheduling evaluates instruction INSN. + @end deftypefn + +-@deftypefn {Target Hook} void TARGET_SCHED_FIRST_CYCLE_MULTIPASS_BACKTRACK (const void *@var{data}, char *@var{ready_try}, int @var{n_ready}) ++@deftypefn {Target Hook} void TARGET_SCHED_FIRST_CYCLE_MULTIPASS_BACKTRACK (const void *@var{data}, signed char *@var{ready_try}, int @var{n_ready}) + This is called when multipass scheduling backtracks from evaluation of + an instruction. + @end deftypefn +@@ -6832,19 +6821,6 @@ + @var{insn} should be generated. In this case @var{label} can't be null. + @end deftypefn + +-@deftypefn {Target Hook} bool TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC (const_rtx @var{insn}) +-This hook is used as a workaround for +-@samp{TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD} not being +-called on the first instruction of the ready list. The hook is used to +-discard speculative instructions that stand first in the ready list from +-being scheduled on the current cycle. If the hook returns @code{false}, +-@var{insn} will not be chosen to be issued. +-For non-speculative instructions, +-the hook should always return @code{true}. For example, in the ia64 backend +-the hook is used to cancel data speculative insns when the ALAT table +-is nearly full. +-@end deftypefn +- + @deftypefn {Target Hook} void TARGET_SCHED_SET_SCHED_FLAGS (struct spec_info_def *@var{spec_info}) + This hook is used by the insn scheduler to find out what features should be + enabled/used. +--- a/src/gcc/doc/tm.texi.in ++++ b/src/gcc/doc/tm.texi.in +@@ -1256,27 +1256,6 @@ + + @hook TARGET_UNWIND_WORD_MODE + +-@defmac ROUND_TOWARDS_ZERO +-If defined, this macro should be true if the prevailing rounding +-mode is towards zero. +- +-Defining this macro only affects the way @file{libgcc.a} emulates +-floating-point arithmetic. +- +-Not defining this macro is equivalent to returning zero. +-@end defmac +- +-@defmac LARGEST_EXPONENT_IS_NORMAL (@var{size}) +-This macro should return true if floats with @var{size} +-bits do not have a NaN or infinity representation, but use the largest +-exponent for normal numbers instead. +- +-Defining this macro only affects the way @file{libgcc.a} emulates +-floating-point arithmetic. +- +-The default definition of this macro returns false for all sizes. +-@end defmac +- + @hook TARGET_MS_BITFIELD_LAYOUT_P + + @hook TARGET_DECIMAL_FLOAT_SUPPORTED_P +@@ -4810,12 +4789,7 @@ + If you don't define this, a reasonable default is used. + @end defmac + +-@defmac MOVE_BY_PIECES_P (@var{size}, @var{alignment}) +-A C expression used to determine whether @code{move_by_pieces} will be used to +-copy a chunk of memory, or whether some other block move mechanism +-will be used. Defaults to 1 if @code{move_by_pieces_ninsns} returns less +-than @code{MOVE_RATIO}. +-@end defmac ++@hook TARGET_USE_BY_PIECES_INFRASTRUCTURE_P + + @defmac MOVE_MAX_PIECES + A C expression used by @code{move_by_pieces} to determine the largest unit +@@ -4834,13 +4808,6 @@ + If you don't define this, a reasonable default is used. + @end defmac + +-@defmac CLEAR_BY_PIECES_P (@var{size}, @var{alignment}) +-A C expression used to determine whether @code{clear_by_pieces} will be used +-to clear a chunk of memory, or whether some other block clear mechanism +-will be used. Defaults to 1 if @code{move_by_pieces_ninsns} returns less +-than @code{CLEAR_RATIO}. +-@end defmac +- + @defmac SET_RATIO (@var{speed}) + The threshold of number of scalar move insns, @emph{below} which a sequence + of insns should be generated to set memory to a constant value, instead of +@@ -4854,24 +4821,6 @@ + If you don't define this, it defaults to the value of @code{MOVE_RATIO}. + @end defmac + +-@defmac SET_BY_PIECES_P (@var{size}, @var{alignment}) +-A C expression used to determine whether @code{store_by_pieces} will be +-used to set a chunk of memory to a constant value, or whether some +-other mechanism will be used. Used by @code{__builtin_memset} when +-storing values other than constant zero. +-Defaults to 1 if @code{move_by_pieces_ninsns} returns less +-than @code{SET_RATIO}. +-@end defmac +- +-@defmac STORE_BY_PIECES_P (@var{size}, @var{alignment}) +-A C expression used to determine whether @code{store_by_pieces} will be +-used to set a chunk of memory to a constant string value, or whether some +-other mechanism will be used. Used by @code{__builtin_strcpy} when +-called with a constant source string. +-Defaults to 1 if @code{move_by_pieces_ninsns} returns less +-than @code{MOVE_RATIO}. +-@end defmac +- + @defmac USE_LOAD_POST_INCREMENT (@var{mode}) + A C expression used to determine whether a load postincrement is a good + thing to use for a given mode. Defaults to the value of +@@ -5019,8 +4968,6 @@ + + @hook TARGET_SCHED_GEN_SPEC_CHECK + +-@hook TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC +- + @hook TARGET_SCHED_SET_SCHED_FLAGS + + @hook TARGET_SCHED_SMS_RES_MII +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -10155,6 +10155,18 @@ + E.g. to disable inline code use + @option{--param asan-instrumentation-with-call-threshold=0}. + ++@item max-fsm-thread-path-insns ++Maximum number of instructions to copy when duplicating blocks on a ++finite state automaton jump thread path. The default is 100. ++ ++@item max-fsm-thread-length ++Maximum number of basic blocks on a finite state automaton jump thread ++path. The default is 10. ++ ++@item max-fsm-thread-paths ++Maximum number of new jump thread paths to create for a finite state ++automaton. The default is 50. ++ + @end table + @end table + +@@ -11460,11 +11472,12 @@ + @opindex mtune + Specify the name of the target processor for which GCC should tune the + performance of the code. Permissible values for this option are: +-@samp{generic}, @samp{cortex-a53}, @samp{cortex-a57}. ++@samp{generic}, @samp{cortex-a53}, @samp{cortex-a57}, ++@samp{cortex-a72}, @samp{thunderx}, @samp{xgene1}. + + Additionally, this option can specify that GCC should tune the performance +-of the code for a big.LITTLE system. The only permissible value is +-@samp{cortex-a57.cortex-a53}. ++of the code for a big.LITTLE system. Permissible values for this ++option are: @samp{cortex-a57.cortex-a53}, @samp{cortex-a72.cortex-a53}. + + Where none of @option{-mtune=}, @option{-mcpu=} or @option{-march=} + are specified, the code will be tuned to perform well across a range +@@ -12178,8 +12191,7 @@ + @subsection ARM Options + @cindex ARM options + +-These @samp{-m} options are defined for Advanced RISC Machines (ARM) +-architectures: ++These @samp{-m} options are defined for the ARM port: + + @table @gcctabopt + @item -mabi=@var{name} +@@ -12332,21 +12344,28 @@ + @samp{arm1136j-s}, @samp{arm1136jf-s}, @samp{mpcore}, @samp{mpcorenovfp}, + @samp{arm1156t2-s}, @samp{arm1156t2f-s}, @samp{arm1176jz-s}, @samp{arm1176jzf-s}, + @samp{cortex-a5}, @samp{cortex-a7}, @samp{cortex-a8}, @samp{cortex-a9}, +-@samp{cortex-a12}, @samp{cortex-a15}, @samp{cortex-a53}, @samp{cortex-a57}, ++@samp{cortex-a12}, @samp{cortex-a15}, @samp{cortex-a53}, ++@samp{cortex-a57}, @samp{cortex-a72}, + @samp{cortex-r4}, +-@samp{cortex-r4f}, @samp{cortex-r5}, @samp{cortex-r7}, @samp{cortex-m4}, ++@samp{cortex-r4f}, @samp{cortex-r5}, @samp{cortex-r7}, @samp{cortex-m7}, ++@samp{cortex-m4}, + @samp{cortex-m3}, + @samp{cortex-m1}, + @samp{cortex-m0}, + @samp{cortex-m0plus}, ++@samp{cortex-m1.small-multiply}, ++@samp{cortex-m0.small-multiply}, ++@samp{cortex-m0plus.small-multiply}, + @samp{marvell-pj4}, + @samp{xscale}, @samp{iwmmxt}, @samp{iwmmxt2}, @samp{ep9312}, + @samp{fa526}, @samp{fa626}, +-@samp{fa606te}, @samp{fa626te}, @samp{fmp626}, @samp{fa726te}. ++@samp{fa606te}, @samp{fa626te}, @samp{fmp626}, @samp{fa726te}, ++@samp{xgene1}. + + Additionally, this option can specify that GCC should tune the performance + of the code for a big.LITTLE system. Permissible names are: +-@samp{cortex-a15.cortex-a7}, @samp{cortex-a57.cortex-a53}. ++@samp{cortex-a15.cortex-a7}, @samp{cortex-a57.cortex-a53}, ++@samp{cortex-a72.cortex-a53}. + + @option{-mtune=generic-@var{arch}} specifies that GCC should tune the + performance for a blend of processors within architecture @var{arch}. +@@ -12388,6 +12407,7 @@ + @samp{vfpv3-fp16}, @samp{vfpv3-d16}, @samp{vfpv3-d16-fp16}, @samp{vfpv3xd}, + @samp{vfpv3xd-fp16}, @samp{neon}, @samp{neon-fp16}, @samp{vfpv4}, + @samp{vfpv4-d16}, @samp{fpv4-sp-d16}, @samp{neon-vfpv4}, ++@samp{fpv5-d16}, @samp{fpv5-sp-d16}, + @samp{fp-armv8}, @samp{neon-fp-armv8}, and @samp{crypto-neon-fp-armv8}. + + If @option{-msoft-float} is specified this specifies the format of +--- a/src/gcc/doc/md.texi ++++ b/src/gcc/doc/md.texi +@@ -4824,30 +4824,49 @@ + @cindex @code{reduc_smax_@var{m}} instruction pattern + @item @samp{reduc_smin_@var{m}}, @samp{reduc_smax_@var{m}} + Find the signed minimum/maximum of the elements of a vector. The vector is +-operand 1, and the scalar result is stored in the least significant bits of ++operand 1, and the result is stored in the least significant bits of + operand 0 (also a vector). The output and input vector should have the same +-modes. ++modes. These are legacy optabs, and platforms should prefer to implement ++@samp{reduc_smin_scal_@var{m}} and @samp{reduc_smax_scal_@var{m}}. + + @cindex @code{reduc_umin_@var{m}} instruction pattern + @cindex @code{reduc_umax_@var{m}} instruction pattern + @item @samp{reduc_umin_@var{m}}, @samp{reduc_umax_@var{m}} + Find the unsigned minimum/maximum of the elements of a vector. The vector is +-operand 1, and the scalar result is stored in the least significant bits of ++operand 1, and the result is stored in the least significant bits of + operand 0 (also a vector). The output and input vector should have the same +-modes. ++modes. These are legacy optabs, and platforms should prefer to implement ++@samp{reduc_umin_scal_@var{m}} and @samp{reduc_umax_scal_@var{m}}. + + @cindex @code{reduc_splus_@var{m}} instruction pattern +-@item @samp{reduc_splus_@var{m}} +-Compute the sum of the signed elements of a vector. The vector is operand 1, +-and the scalar result is stored in the least significant bits of operand 0 +-(also a vector). The output and input vector should have the same modes. +- + @cindex @code{reduc_uplus_@var{m}} instruction pattern +-@item @samp{reduc_uplus_@var{m}} +-Compute the sum of the unsigned elements of a vector. The vector is operand 1, +-and the scalar result is stored in the least significant bits of operand 0 ++@item @samp{reduc_splus_@var{m}}, @samp{reduc_uplus_@var{m}} ++Compute the sum of the signed/unsigned elements of a vector. The vector is ++operand 1, and the result is stored in the least significant bits of operand 0 + (also a vector). The output and input vector should have the same modes. ++These are legacy optabs, and platforms should prefer to implement ++@samp{reduc_plus_scal_@var{m}}. + ++@cindex @code{reduc_smin_scal_@var{m}} instruction pattern ++@cindex @code{reduc_smax_scal_@var{m}} instruction pattern ++@item @samp{reduc_smin_scal_@var{m}}, @samp{reduc_smax_scal_@var{m}} ++Find the signed minimum/maximum of the elements of a vector. The vector is ++operand 1, and operand 0 is the scalar result, with mode equal to the mode of ++the elements of the input vector. ++ ++@cindex @code{reduc_umin_scal_@var{m}} instruction pattern ++@cindex @code{reduc_umax_scal_@var{m}} instruction pattern ++@item @samp{reduc_umin_scal_@var{m}}, @samp{reduc_umax_scal_@var{m}} ++Find the unsigned minimum/maximum of the elements of a vector. The vector is ++operand 1, and operand 0 is the scalar result, with mode equal to the mode of ++the elements of the input vector. ++ ++@cindex @code{reduc_plus_scal_@var{m}} instruction pattern ++@item @samp{reduc_plus_scal_@var{m}} ++Compute the sum of the elements of a vector. The vector is operand 1, and ++operand 0 is the scalar result, with mode equal to the mode of the elements of ++the input vector. ++ + @cindex @code{sdot_prod@var{m}} instruction pattern + @item @samp{sdot_prod@var{m}} + @cindex @code{udot_prod@var{m}} instruction pattern +@@ -4867,10 +4886,9 @@ + operand 0. (This is used express accumulation of elements into an accumulator + of a wider mode.) + +-@cindex @code{vec_shl_@var{m}} instruction pattern + @cindex @code{vec_shr_@var{m}} instruction pattern +-@item @samp{vec_shl_@var{m}}, @samp{vec_shr_@var{m}} +-Whole vector left/right shift in bits. ++@item @samp{vec_shr_@var{m}} ++Whole vector right shift in bits. + Operand 1 is a vector to be shifted. + Operand 2 is an integer shift amount in bits. + Operand 0 is where the resulting shifted vector is stored. +@@ -5319,10 +5337,18 @@ + The @code{ffs} built-in function of C always uses the mode which + corresponds to the C data type @code{int}. + ++@cindex @code{clrsb@var{m}2} instruction pattern ++@item @samp{clrsb@var{m}2} ++Count leading redundant sign bits. ++Store into operand 0 the number of redundant sign bits in operand 1, starting ++at the most significant bit position. ++A redundant sign bit is defined as any sign bit after the first. As such, ++this count will be one less than the count of leading sign bits. ++ + @cindex @code{clz@var{m}2} instruction pattern + @item @samp{clz@var{m}2} +-Store into operand 0 the number of leading 0-bits in @var{x}, starting +-at the most significant bit position. If @var{x} is 0, the ++Store into operand 0 the number of leading 0-bits in operand 1, starting ++at the most significant bit position. If operand 1 is 0, the + @code{CLZ_DEFINED_VALUE_AT_ZERO} (@pxref{Misc}) macro defines if + the result is undefined or has a useful value. + @var{m} is the mode of operand 0; operand 1's mode is +@@ -5331,8 +5357,8 @@ + + @cindex @code{ctz@var{m}2} instruction pattern + @item @samp{ctz@var{m}2} +-Store into operand 0 the number of trailing 0-bits in @var{x}, starting +-at the least significant bit position. If @var{x} is 0, the ++Store into operand 0 the number of trailing 0-bits in operand 1, starting ++at the least significant bit position. If operand 1 is 0, the + @code{CTZ_DEFINED_VALUE_AT_ZERO} (@pxref{Misc}) macro defines if + the result is undefined or has a useful value. + @var{m} is the mode of operand 0; operand 1's mode is +@@ -5341,7 +5367,7 @@ + + @cindex @code{popcount@var{m}2} instruction pattern + @item @samp{popcount@var{m}2} +-Store into operand 0 the number of 1-bits in @var{x}. @var{m} is the ++Store into operand 0 the number of 1-bits in operand 1. @var{m} is the + mode of operand 0; operand 1's mode is specified by the instruction + pattern, and the compiler will convert the operand to that mode before + generating the instruction. +@@ -5348,8 +5374,8 @@ + + @cindex @code{parity@var{m}2} instruction pattern + @item @samp{parity@var{m}2} +-Store into operand 0 the parity of @var{x}, i.e.@: the number of 1-bits +-in @var{x} modulo 2. @var{m} is the mode of operand 0; operand 1's mode ++Store into operand 0 the parity of operand 1, i.e.@: the number of 1-bits ++in operand 1 modulo 2. @var{m} is the mode of operand 0; operand 1's mode + is specified by the instruction pattern, and the compiler will convert + the operand to that mode before generating the instruction. + --- gcc-4.9-4.9.2.orig/debian/patches/gcc-linaro-no-macros.diff +++ gcc-4.9-4.9.2/debian/patches/gcc-linaro-no-macros.diff @@ -0,0 +1,107 @@ +# DP : Don't add the __LINARO_RELEASE__ and __LINARO_SPIN__ macros for distro builds. + +Index: b/src/gcc/ChangeLog.linaro +=================================================================== +--- a/src/gcc/ChangeLog.linaro ++++ b/src/gcc/ChangeLog.linaro +@@ -3,16 +3,6 @@ + GCC Linaro 4.9-2014.11 released. + * LINARO-VERSION: Update. + +-2014-11-14 Yvan Roux +- +- Add Linaro release macros (Linaro only patch.) +- +- * Makefile.in (LINAROVER, LINAROVER_C, LINAROVER_S): Define. +- (CFLAGS-cppbuiltin.o): Add LINAROVER macro definition. +- (cppbuiltin.o): Depend on $(LINAROVER). +- * cppbuiltin.c (parse_linarover): New. +- (define_GNUC__): Define __LINARO_RELEASE__ and __LINARO_SPIN__ macros. +- + 2014-11-13 Yvan Roux + + Backport from trunk r216229, r216230. +Index: b/src/gcc/cppbuiltin.c +=================================================================== +--- a/src/gcc/cppbuiltin.c ++++ b/src/gcc/cppbuiltin.c +@@ -53,41 +53,18 @@ parse_basever (int *major, int *minor, i + *patchlevel = s_patchlevel; + } + +-/* Parse a LINAROVER version string of the format "M.m-year.month[-spin][~dev]" +- to create Linaro release number YYYYMM and spin version. */ +-static void +-parse_linarover (int *release, int *spin) +-{ +- static int s_year = -1, s_month, s_spin; +- +- if (s_year == -1) +- if (sscanf (LINAROVER, "%*[^-]-%d.%d-%d", &s_year, &s_month, &s_spin) != 3) +- { +- sscanf (LINAROVER, "%*[^-]-%d.%d", &s_year, &s_month); +- s_spin = 0; +- } +- +- if (release) +- *release = s_year * 100 + s_month; +- +- if (spin) +- *spin = s_spin; +-} + + /* Define __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__ and __VERSION__. */ + static void + define__GNUC__ (cpp_reader *pfile) + { +- int major, minor, patchlevel, linaro_release, linaro_spin; ++ int major, minor, patchlevel; + + parse_basever (&major, &minor, &patchlevel); +- parse_linarover (&linaro_release, &linaro_spin); + cpp_define_formatted (pfile, "__GNUC__=%d", major); + cpp_define_formatted (pfile, "__GNUC_MINOR__=%d", minor); + cpp_define_formatted (pfile, "__GNUC_PATCHLEVEL__=%d", patchlevel); + cpp_define_formatted (pfile, "__VERSION__=\"%s\"", version_string); +- cpp_define_formatted (pfile, "__LINARO_RELEASE__=%d", linaro_release); +- cpp_define_formatted (pfile, "__LINARO_SPIN__=%d", linaro_spin); + cpp_define_formatted (pfile, "__ATOMIC_RELAXED=%d", MEMMODEL_RELAXED); + cpp_define_formatted (pfile, "__ATOMIC_SEQ_CST=%d", MEMMODEL_SEQ_CST); + cpp_define_formatted (pfile, "__ATOMIC_ACQUIRE=%d", MEMMODEL_ACQUIRE); +Index: b/src/gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -814,12 +814,10 @@ BASEVER := $(srcdir)/BASE-VER # 4.x + DEVPHASE := $(srcdir)/DEV-PHASE # experimental, prerelease, "" + DATESTAMP := $(srcdir)/DATESTAMP # YYYYMMDD or empty + REVISION := $(srcdir)/REVISION # [BRANCH revision XXXXXX] +-LINAROVER := $(srcdir)/LINARO-VERSION # M.x-YYYY.MM[-S][~dev] + + BASEVER_c := $(shell cat $(BASEVER)) + DEVPHASE_c := $(shell cat $(DEVPHASE)) + DATESTAMP_c := $(shell cat $(DATESTAMP)) +-LINAROVER_c := $(shell cat $(LINAROVER)) + + ifeq (,$(wildcard $(REVISION))) + REVISION_c := +@@ -840,7 +838,6 @@ DEVPHASE_s := "\"$(if $(DEVPHASE_c), ($ + DATESTAMP_s := "\"$(if $(DEVPHASE_c), $(DATESTAMP_c))\"" + PKGVERSION_s:= "\"@PKGVERSION@\"" + BUGURL_s := "\"@REPORT_BUGS_TO@\"" +-LINAROVER_s := "\"$(LINAROVER_c)\"" + + PKGVERSION := @PKGVERSION@ + BUGURL_TEXI := @REPORT_BUGS_TEXI@ +@@ -2545,9 +2542,8 @@ PREPROCESSOR_DEFINES = \ + -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \ + @TARGET_SYSTEM_ROOT_DEFINE@ + +-CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(BASEVER_s) \ +- -DLINAROVER=$(LINAROVER_s) +-cppbuiltin.o: $(BASEVER) $(LINAROVER) ++CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(BASEVER_s) ++cppbuiltin.o: $(BASEVER) + + CFLAGS-cppdefault.o += $(PREPROCESSOR_DEFINES) + --- gcc-4.9-4.9.2.orig/debian/patches/gcc-linaro-updates.diff +++ gcc-4.9-4.9.2/debian/patches/gcc-linaro-updates.diff @@ -0,0 +1,2 @@ +# DP: Linaro updates from the linaro/gcc-4_9-branch: + --- gcc-4.9-4.9.2.orig/debian/patches/gcc-linaro.diff +++ gcc-4.9-4.9.2/debian/patches/gcc-linaro.diff @@ -0,0 +1,75402 @@ +# DP: Changes for the Linaro 4.9-2015.04 release. + +LANG=C svn diff svn://gcc.gnu.org/svn/gcc/branches/gcc-4_9-branch@222035 \ + svn://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@222155 \ + | filterdiff --remove-timestamps --addoldprefix=a/src/ --addnewprefix=b/src/ + +--- a/src/libitm/ChangeLog.linaro ++++ b/src/libitm/ChangeLog.linaro +@@ -0,0 +1,80 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-10-03 Yvan Roux ++ ++ Backport from trunk r213035. ++ 2014-07-24 Richard Henderson ++ ++ * config/aarch64/sjlj.S (_ITM_beginTransaction): Use post-inc ++ addressing mode in epilogue. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-26 Yvan Roux ++ ++ Backport from trunk r210615. ++ 2014-05-19 Richard Henderson ++ ++ * config/aarch64/sjlj.S: New file. ++ * config/aarch64/target.h: New file. ++ * configure.tgt: Enable aarch64. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/libgomp/ChangeLog.linaro ++++ b/src/libgomp/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/libquadmath/ChangeLog.linaro ++++ b/src/libquadmath/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/libsanitizer/ChangeLog.linaro ++++ b/src/libsanitizer/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/zlib/ChangeLog.linaro ++++ b/src/zlib/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/libstdc++-v3/ChangeLog.linaro ++++ b/src/libstdc++-v3/ChangeLog.linaro +@@ -0,0 +1,82 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r216444. ++ 2014-10-19 Maxim Kuvyrkov ++ ++ * testsuite/lib/libstdc++.exp (v3-copy-file): New proc split from ... ++ (v3-copy-files): ... this. Update. ++ (check_v3_target_fileio): Fix race on cin_unget-1.txt file. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-10-06 Yvan Roux ++ ++ Backport from trunk r215101. ++ 2014-09-10 Tony Wang ++ ++ PR target/56846 ++ * libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): ++ Return with CONTINUE_UNWINDING when the state pattern ++ contains: _US_VIRTUAL_UNWIND_FRAME | _US_FORCE_UNWIND ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/libstdc++-v3/testsuite/lib/libstdc++.exp ++++ b/src/libstdc++-v3/testsuite/lib/libstdc++.exp +@@ -63,19 +63,24 @@ + verbose "++ $var is $val" $n + } + ++# Copy file to the target. ++proc v3-copy-file {src dst} { ++ if { [catch { set symlink [file readlink $src] } x] } then { ++ remote_download target $src $dst ++ } else { ++ if { [regexp "^/" "$symlink"] } then { ++ remote_download target $symlink $dst ++ } else { ++ set dirname [file dirname $f] ++ remote_download target $dirname/$symlink $dst ++ } ++ } ++} ++ + # Called by v3-init below. "Static" to this file. + proc v3-copy-files {srcfiles} { + foreach f $srcfiles { +- if { [catch { set symlink [file readlink $f] } x] } then { +- remote_download target $f +- } else { +- if { [regexp "^/" "$symlink"] } then { +- remote_download target $symlink +- } else { +- set dirname [file dirname $f] +- remote_download target $dirname/$symlink +- } +- } ++ v3-copy-file $f [file tail $f] + } + } + +@@ -681,8 +686,8 @@ + # the file functions + set src fileio[pid].cc + set exe fileio[pid].x +- set testfile "cin_unget-1.txt" +- v3-copy-files "$srcdir/data/$testfile" ++ set testfile "cin_unget-1.[pid].txt" ++ v3-copy-file "$srcdir/data/cin_unget-1.txt" "$testfile" + + set f [open $src "w"] + puts $f "#include " +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -331,7 +331,8 @@ + if test "$is_elf" = "yes"; then + # Check for target supported by gold. + case "${target}" in +- i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-* | tilegx*-*-*) ++ i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-* \ ++ | aarch64*-*-* | tilegx*-*-*) + configdirs="$configdirs gold" + if test x${ENABLE_GOLD} = xdefault; then + default_ld=gold +--- a/src/intl/ChangeLog.linaro ++++ b/src/intl/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/ChangeLog.linaro ++++ b/src/ChangeLog.linaro +@@ -0,0 +1,71 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r215865. ++ 2014-10-03 Jing Yu ++ ++ * configure.ac: Add aarch64 to list of targets that support gold. ++ * configure: Regenerate. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/boehm-gc/ChangeLog.linaro ++++ b/src/boehm-gc/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/include/ChangeLog.linaro ++++ b/src/include/ChangeLog.linaro +@@ -0,0 +1,70 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209649. ++ 2014-04-22 Yufeng Zhang ++ ++ * longlong.h: Merge from glibc. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/include/longlong.h ++++ b/src/include/longlong.h +@@ -1,5 +1,5 @@ + /* longlong.h -- definitions for mixed size 32/64 bit arithmetic. +- Copyright (C) 1991-2013 Free Software Foundation, Inc. ++ Copyright (C) 1991-2014 Free Software Foundation, Inc. + + This file is part of the GNU C Library. + +@@ -122,6 +122,22 @@ + #define __AND_CLOBBER_CC , "cc" + #endif /* __GNUC__ < 2 */ + ++#if defined (__aarch64__) ++ ++#if W_TYPE_SIZE == 32 ++#define count_leading_zeros(COUNT, X) ((COUNT) = __builtin_clz (X)) ++#define count_trailing_zeros(COUNT, X) ((COUNT) = __builtin_ctz (X)) ++#define COUNT_LEADING_ZEROS_0 32 ++#endif /* W_TYPE_SIZE == 32 */ ++ ++#if W_TYPE_SIZE == 64 ++#define count_leading_zeros(COUNT, X) ((COUNT) = __builtin_clzll (X)) ++#define count_trailing_zeros(COUNT, X) ((COUNT) = __builtin_ctzll (X)) ++#define COUNT_LEADING_ZEROS_0 64 ++#endif /* W_TYPE_SIZE == 64 */ ++ ++#endif /* __aarch64__ */ ++ + #if defined (__alpha) && W_TYPE_SIZE == 64 + #define umul_ppmm(ph, pl, m0, m1) \ + do { \ +--- a/src/libiberty/ChangeLog.linaro ++++ b/src/libiberty/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/lto-plugin/ChangeLog.linaro ++++ b/src/lto-plugin/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/contrib/regression/ChangeLog.linaro ++++ b/src/contrib/regression/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/contrib/ChangeLog.linaro ++++ b/src/contrib/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/contrib/reghunt/ChangeLog.linaro ++++ b/src/contrib/reghunt/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/libatomic/ChangeLog.linaro ++++ b/src/libatomic/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/config/ChangeLog.linaro ++++ b/src/config/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/libbacktrace/ChangeLog.linaro ++++ b/src/libbacktrace/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/libjava/libltdl/ChangeLog.linaro ++++ b/src/libjava/libltdl/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/libjava/ChangeLog.linaro ++++ b/src/libjava/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/libjava/classpath/ChangeLog.linaro ++++ b/src/libjava/classpath/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/gnattools/ChangeLog.linaro ++++ b/src/gnattools/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/maintainer-scripts/ChangeLog.linaro ++++ b/src/maintainer-scripts/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/configure ++++ b/src/configure +@@ -2971,7 +2971,8 @@ + if test "$is_elf" = "yes"; then + # Check for target supported by gold. + case "${target}" in +- i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-* | tilegx*-*-*) ++ i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-* \ ++ | aarch64*-*-* | tilegx*-*-*) + configdirs="$configdirs gold" + if test x${ENABLE_GOLD} = xdefault; then + default_ld=gold +--- a/src/libgcc/config.host ++++ b/src/libgcc/config.host +@@ -316,13 +316,15 @@ + case ${host} in + aarch64*-*-elf) + extra_parts="$extra_parts crtbegin.o crtend.o crti.o crtn.o" ++ extra_parts="$extra_parts crtfastmath.o" + tmake_file="${tmake_file} ${cpu_type}/t-aarch64" +- tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp" ++ tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm" + ;; + aarch64*-*-linux*) ++ extra_parts="$extra_parts crtfastmath.o" + md_unwind_header=aarch64/linux-unwind.h + tmake_file="${tmake_file} ${cpu_type}/t-aarch64" +- tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp" ++ tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm" + ;; + alpha*-*-linux*) + tmake_file="${tmake_file} alpha/t-alpha alpha/t-ieee t-crtfm alpha/t-linux" +--- a/src/libgcc/ChangeLog.linaro ++++ b/src/libgcc/ChangeLog.linaro +@@ -0,0 +1,81 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r215013. ++ 2014-09-08 Joseph Myers ++ ++ * fp-bit.c (pack_d, unpack_d): Remove LARGEST_EXPONENT_IS_NORMAL ++ and ROUND_TOWARDS_ZERO conditionals. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-10-06 Yvan Roux ++ ++ Backport from trunk r215086. ++ 2014-09-09 Marcus Shawcroft ++ Ramana Radhakrishnan ++ ++ * config.host (aarch64*): Include crtfastmath.o and ++ t-crtfm. ++ * config/aarch64/crtfastmath.c: New file. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/libgcc/config/aarch64/crtfastmath.c ++++ b/src/libgcc/config/aarch64/crtfastmath.c +@@ -0,0 +1,36 @@ ++/* ++ * Copyright (C) 2014 Free Software Foundation, Inc. ++ * ++ * This file is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License as published by the ++ * Free Software Foundation; either version 3, or (at your option) any ++ * later version. ++ * ++ * This file is distributed in the hope that it will be useful, but ++ * WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * General Public License for more details. ++ * ++ * Under Section 7 of GPL version 3, you are granted additional ++ * permissions described in the GCC Runtime Library Exception, version ++ * 3.1, as published by the Free Software Foundation. ++ * ++ * You should have received a copy of the GNU General Public License and ++ * a copy of the GCC Runtime Library Exception along with this program; ++ * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++ * . ++ */ ++ ++#define _FPU_FPCR_FZ 0x1000000 ++ ++#define _FPU_SETCW(fpcr) \ ++ { \ ++ __asm__ __volatile__ ("msr fpcr, %0" : : "r" (fpcr)); \ ++ } ++ ++static void __attribute__((constructor)) ++set_fast_math (void) ++{ ++ /* Flush to zero, round to nearest, IEEE exceptions disabled. */ ++ _FPU_SETCW (_FPU_FPCR_FZ); ++} +--- a/src/libgcc/config/arm/bpabi-v6m.S ++++ b/src/libgcc/config/arm/bpabi-v6m.S +@@ -150,7 +150,7 @@ + mov r0, sp + push {r0, lr} + ldr r0, [sp, #8] +- bl SYM(__gnu_uldivmod_helper) ++ bl SYM(__udivmoddi4) + ldr r3, [sp, #4] + mov lr, r3 + add sp, sp, #8 +--- a/src/libgcc/config/arm/bpabi.c ++++ b/src/libgcc/config/arm/bpabi.c +@@ -26,9 +26,6 @@ + extern unsigned long long __udivdi3 (unsigned long long, + unsigned long long); + extern long long __gnu_ldivmod_helper (long long, long long, long long *); +-extern unsigned long long __gnu_uldivmod_helper (unsigned long long, +- unsigned long long, +- unsigned long long *); + + + long long +@@ -43,14 +40,3 @@ + return quotient; + } + +-unsigned long long +-__gnu_uldivmod_helper (unsigned long long a, +- unsigned long long b, +- unsigned long long *remainder) +-{ +- unsigned long long quotient; +- +- quotient = __udivdi3 (a, b); +- *remainder = a - b * quotient; +- return quotient; +-} +--- a/src/libgcc/config/arm/bpabi.S ++++ b/src/libgcc/config/arm/bpabi.S +@@ -22,6 +22,8 @@ + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + . */ + ++ .cfi_sections .debug_frame ++ + #ifdef __ARM_EABI__ + /* Some attributes that are common to all routines in this file. */ + /* Tag_ABI_align_needed: This code does not require 8-byte +@@ -126,49 +128,137 @@ + #endif + .endm + ++/* we can use STRD/LDRD on v5TE and later, and any Thumb-2 architecture. */ ++#if (defined(__ARM_EABI__) \ ++ && (defined(__thumb2__) \ ++ || (__ARM_ARCH >= 5 && defined(__TARGET_FEATURE_DSP)))) ++#define CAN_USE_LDRD 1 ++#else ++#define CAN_USE_LDRD 0 ++#endif ++ ++/* set up stack from for call to __udivmoddi4. At the end of the macro the ++ stack is arranged as follows: ++ sp+12 / space for remainder ++ sp+8 \ (written by __udivmoddi4) ++ sp+4 lr ++ sp+0 sp+8 [rp (remainder pointer) argument for __udivmoddi4] ++ ++ */ ++.macro push_for_divide fname ++#if defined(__thumb2__) && CAN_USE_LDRD ++ sub ip, sp, #8 ++ strd ip, lr, [sp, #-16]! ++#else ++ sub sp, sp, #8 ++ do_push {sp, lr} ++#endif ++ .cfi_adjust_cfa_offset 16 ++ .cfi_offset 14, -12 ++.endm ++ ++/* restore stack */ ++.macro pop_for_divide ++ ldr lr, [sp, #4] ++#if CAN_USE_LDRD ++ ldrd r2, r3, [sp, #8] ++ add sp, sp, #16 ++#else ++ add sp, sp, #8 ++ do_pop {r2, r3} ++#endif ++ .cfi_restore 14 ++ .cfi_adjust_cfa_offset 0 ++.endm ++ + #ifdef L_aeabi_ldivmod + ++/* Perform 64 bit signed division. ++ Inputs: ++ r0:r1 numerator ++ r2:r3 denominator ++ Outputs: ++ r0:r1 quotient ++ r2:r3 remainder ++ */ + ARM_FUNC_START aeabi_ldivmod +- cfi_start __aeabi_ldivmod, LSYM(Lend_aeabi_ldivmod) +- test_div_by_zero signed ++ .cfi_startproc ++ test_div_by_zero signed + +- sub sp, sp, #8 +-#if defined(__thumb2__) +- mov ip, sp +- push {ip, lr} +-#else +- do_push {sp, lr} +-#endif +-98: cfi_push 98b - __aeabi_ldivmod, 0xe, -0xc, 0x10 +- bl SYM(__gnu_ldivmod_helper) __PLT__ +- ldr lr, [sp, #4] +- add sp, sp, #8 +- do_pop {r2, r3} ++ push_for_divide __aeabi_ldivmod ++ cmp xxh, #0 ++ blt 1f ++ cmp yyh, #0 ++ blt 2f ++ /* arguments in (r0:r1), (r2:r3) and *sp */ ++ bl SYM(__udivmoddi4) __PLT__ ++ .cfi_remember_state ++ pop_for_divide + RET +- cfi_end LSYM(Lend_aeabi_ldivmod) ++ ++1: /* xxh:xxl is negative */ ++ .cfi_restore_state ++ negs xxl, xxl ++ sbc xxh, xxh, xxh, lsl #1 /* Thumb-2 has no RSC, so use X - 2X */ ++ cmp yyh, #0 ++ blt 3f ++ /* arguments in (r0:r1), (r2:r3) and *sp */ ++ bl SYM(__udivmoddi4) __PLT__ ++ .cfi_remember_state ++ pop_for_divide ++ negs xxl, xxl ++ sbc xxh, xxh, xxh, lsl #1 /* Thumb-2 has no RSC, so use X - 2X */ ++ negs yyl, yyl ++ sbc yyh, yyh, yyh, lsl #1 /* Thumb-2 has no RSC, so use X - 2X */ ++ RET ++ ++2: /* only yyh:yyl is negative */ ++ .cfi_restore_state ++ negs yyl, yyl ++ sbc yyh, yyh, yyh, lsl #1 /* Thumb-2 has no RSC, so use X - 2X */ ++ /* arguments in (r0:r1), (r2:r3) and *sp */ ++ bl SYM(__udivmoddi4) __PLT__ ++ .cfi_remember_state ++ pop_for_divide ++ negs xxl, xxl ++ sbc xxh, xxh, xxh, lsl #1 /* Thumb-2 has no RSC, so use X - 2X */ ++ RET ++ ++3: /* both xxh:xxl and yyh:yyl are negative */ ++ .cfi_restore_state ++ negs yyl, yyl ++ sbc yyh, yyh, yyh, lsl #1 /* Thumb-2 has no RSC, so use X - 2X */ ++ /* arguments in (r0:r1), (r2:r3) and *sp */ ++ bl SYM(__udivmoddi4) __PLT__ ++ pop_for_divide ++ negs yyl, yyl ++ sbc yyh, yyh, yyh, lsl #1 /* Thumb-2 has no RSC, so use X - 2X */ ++ RET ++ ++ .cfi_endproc + + #endif /* L_aeabi_ldivmod */ + + #ifdef L_aeabi_uldivmod + ++/* Perform 64 bit signed division. ++ Inputs: ++ r0:r1 numerator ++ r2:r3 denominator ++ Outputs: ++ r0:r1 quotient ++ r2:r3 remainder ++ */ + ARM_FUNC_START aeabi_uldivmod +- cfi_start __aeabi_uldivmod, LSYM(Lend_aeabi_uldivmod) +- test_div_by_zero unsigned ++ .cfi_startproc ++ test_div_by_zero unsigned + +- sub sp, sp, #8 +-#if defined(__thumb2__) +- mov ip, sp +- push {ip, lr} +-#else +- do_push {sp, lr} +-#endif +-98: cfi_push 98b - __aeabi_uldivmod, 0xe, -0xc, 0x10 +- bl SYM(__gnu_uldivmod_helper) __PLT__ +- ldr lr, [sp, #4] +- add sp, sp, #8 +- do_pop {r2, r3} ++ push_for_divide __aeabi_uldivmod ++ /* arguments in (r0:r1), (r2:r3) and *sp */ ++ bl SYM(__udivmoddi4) __PLT__ ++ pop_for_divide + RET +- cfi_end LSYM(Lend_aeabi_uldivmod) ++ .cfi_endproc + + #endif /* L_aeabi_divmod */ + +--- a/src/libgcc/config/libbid/ChangeLog.linaro ++++ b/src/libgcc/config/libbid/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/libgcc/fp-bit.c ++++ b/src/libgcc/fp-bit.c +@@ -202,17 +202,9 @@ + int sign = src->sign; + int exp = 0; + +- if (LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && (isnan (src) || isinf (src))) ++ if (isnan (src)) + { +- /* We can't represent these values accurately. By using the +- largest possible magnitude, we guarantee that the conversion +- of infinity is at least as big as any finite number. */ + exp = EXPMAX; +- fraction = ((fractype) 1 << FRACBITS) - 1; +- } +- else if (isnan (src)) +- { +- exp = EXPMAX; + /* Restore the NaN's payload. */ + fraction >>= NGARDS; + fraction &= QUIET_NAN - 1; +@@ -291,8 +283,7 @@ + fraction >>= NGARDS; + #endif /* NO_DENORMALS */ + } +- else if (!LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) +- && __builtin_expect (src->normal_exp > EXPBIAS, 0)) ++ else if (__builtin_expect (src->normal_exp > EXPBIAS, 0)) + { + exp = EXPMAX; + fraction = 0; +@@ -300,35 +291,25 @@ + else + { + exp = src->normal_exp + EXPBIAS; +- if (!ROUND_TOWARDS_ZERO) ++ /* IF the gard bits are the all zero, but the first, then we're ++ half way between two numbers, choose the one which makes the ++ lsb of the answer 0. */ ++ if ((fraction & GARDMASK) == GARDMSB) + { +- /* IF the gard bits are the all zero, but the first, then we're +- half way between two numbers, choose the one which makes the +- lsb of the answer 0. */ +- if ((fraction & GARDMASK) == GARDMSB) +- { +- if (fraction & (1 << NGARDS)) +- fraction += GARDROUND + 1; +- } +- else +- { +- /* Add a one to the guards to round up */ +- fraction += GARDROUND; +- } +- if (fraction >= IMPLICIT_2) +- { +- fraction >>= 1; +- exp += 1; +- } ++ if (fraction & (1 << NGARDS)) ++ fraction += GARDROUND + 1; + } +- fraction >>= NGARDS; +- +- if (LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && exp > EXPMAX) ++ else + { +- /* Saturate on overflow. */ +- exp = EXPMAX; +- fraction = ((fractype) 1 << FRACBITS) - 1; ++ /* Add a one to the guards to round up */ ++ fraction += GARDROUND; + } ++ if (fraction >= IMPLICIT_2) ++ { ++ fraction >>= 1; ++ exp += 1; ++ } ++ fraction >>= NGARDS; + } + } + +@@ -556,8 +537,7 @@ + dst->fraction.ll = fraction; + } + } +- else if (!LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) +- && __builtin_expect (exp == EXPMAX, 0)) ++ else if (__builtin_expect (exp == EXPMAX, 0)) + { + /* Huge exponent*/ + if (fraction == 0) +@@ -915,7 +895,7 @@ + low <<= 1; + } + +- if (!ROUND_TOWARDS_ZERO && (high & GARDMASK) == GARDMSB) ++ if ((high & GARDMASK) == GARDMSB) + { + if (high & (1 << NGARDS)) + { +@@ -1035,7 +1015,7 @@ + numerator *= 2; + } + +- if (!ROUND_TOWARDS_ZERO && (quotient & GARDMASK) == GARDMSB) ++ if ((quotient & GARDMASK) == GARDMSB) + { + if (quotient & (1 << NGARDS)) + { +--- a/src/libdecnumber/ChangeLog.linaro ++++ b/src/libdecnumber/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/gcc/LINARO-VERSION ++++ b/src/gcc/LINARO-VERSION +@@ -0,0 +1 @@ ++Snapshot 4.9-2015.04 +--- a/src/gcc/ira-conflicts.c ++++ b/src/gcc/ira-conflicts.c +@@ -774,6 +774,27 @@ + temp_hard_reg_set); + } + ++ /* Now we deal with paradoxical subreg cases where certain registers ++ cannot be accessed in the widest mode. */ ++ enum machine_mode outer_mode = ALLOCNO_WMODE (a); ++ enum machine_mode inner_mode = ALLOCNO_MODE (a); ++ if (GET_MODE_SIZE (outer_mode) > GET_MODE_SIZE (inner_mode)) ++ { ++ enum reg_class aclass = ALLOCNO_CLASS (a); ++ for (int j = ira_class_hard_regs_num[aclass] - 1; j >= 0; --j) ++ { ++ int inner_regno = ira_class_hard_regs[aclass][j]; ++ int outer_regno = simplify_subreg_regno (inner_regno, ++ inner_mode, 0, ++ outer_mode); ++ if (outer_regno < 0 ++ || !in_hard_reg_set_p (reg_class_contents[aclass], ++ outer_mode, outer_regno)) ++ SET_HARD_REG_BIT (OBJECT_CONFLICT_HARD_REGS (obj), ++ inner_regno); ++ } ++ } ++ + if (ALLOCNO_CALLS_CROSSED_NUM (a) != 0) + { + int regno; +--- a/src/gcc/targhooks.c ++++ b/src/gcc/targhooks.c +@@ -1357,7 +1357,62 @@ + #endif + } + ++/* For hooks which use the MOVE_RATIO macro, this gives the legacy default ++ behaviour. SPEED_P is true if we are compiling for speed. */ ++ ++static unsigned int ++get_move_ratio (bool speed_p ATTRIBUTE_UNUSED) ++{ ++ unsigned int move_ratio; ++#ifdef MOVE_RATIO ++ move_ratio = (unsigned int) MOVE_RATIO (speed_p); ++#else ++#if defined (HAVE_movmemqi) || defined (HAVE_movmemhi) || defined (HAVE_movmemsi) || defined (HAVE_movmemdi) || defined (HAVE_movmemti) ++ move_ratio = 2; ++#else /* No movmem patterns, pick a default. */ ++ move_ratio = ((speed_p) ? 15 : 3); ++#endif ++#endif ++ return move_ratio; ++} ++ ++/* Return TRUE if the move_by_pieces/set_by_pieces infrastructure should be ++ used; return FALSE if the movmem/setmem optab should be expanded, or ++ a call to memcpy emitted. */ ++ + bool ++default_use_by_pieces_infrastructure_p (unsigned HOST_WIDE_INT size, ++ unsigned int alignment, ++ enum by_pieces_operation op, ++ bool speed_p) ++{ ++ unsigned int max_size = 0; ++ unsigned int ratio = 0; ++ ++ switch (op) ++ { ++ case CLEAR_BY_PIECES: ++ max_size = STORE_MAX_PIECES; ++ ratio = CLEAR_RATIO (speed_p); ++ break; ++ case MOVE_BY_PIECES: ++ max_size = MOVE_MAX_PIECES; ++ ratio = get_move_ratio (speed_p); ++ break; ++ case SET_BY_PIECES: ++ max_size = STORE_MAX_PIECES; ++ ratio = SET_RATIO (speed_p); ++ break; ++ case STORE_BY_PIECES: ++ max_size = STORE_MAX_PIECES; ++ ratio = get_move_ratio (speed_p); ++ break; ++ } ++ ++ return move_by_pieces_ninsns (size, alignment, max_size + 1) < ratio; ++} ++ ++bool + default_profile_before_prologue (void) + { + #ifdef PROFILE_BEFORE_PROLOGUE +--- a/src/gcc/targhooks.h ++++ b/src/gcc/targhooks.h +@@ -177,6 +177,11 @@ + extern int default_register_move_cost (enum machine_mode, reg_class_t, + reg_class_t); + ++extern bool default_use_by_pieces_infrastructure_p (unsigned HOST_WIDE_INT, ++ unsigned int, ++ enum by_pieces_operation, ++ bool); ++ + extern bool default_profile_before_prologue (void); + extern reg_class_t default_preferred_reload_class (rtx, reg_class_t); + extern reg_class_t default_preferred_output_reload_class (rtx, reg_class_t); +--- a/src/gcc/cppbuiltin.c ++++ b/src/gcc/cppbuiltin.c +@@ -53,18 +53,41 @@ + *patchlevel = s_patchlevel; + } + ++/* Parse a LINAROVER version string of the format "M.m-year.month[-spin][~dev]" ++ to create Linaro release number YYYYMM and spin version. */ ++static void ++parse_linarover (int *release, int *spin) ++{ ++ static int s_year = -1, s_month, s_spin; + ++ if (s_year == -1) ++ if (sscanf (LINAROVER, "%*[^-]-%d.%d-%d", &s_year, &s_month, &s_spin) != 3) ++ { ++ sscanf (LINAROVER, "%*[^-]-%d.%d", &s_year, &s_month); ++ s_spin = 0; ++ } ++ ++ if (release) ++ *release = s_year * 100 + s_month; ++ ++ if (spin) ++ *spin = s_spin; ++} ++ + /* Define __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__ and __VERSION__. */ + static void + define__GNUC__ (cpp_reader *pfile) + { +- int major, minor, patchlevel; ++ int major, minor, patchlevel, linaro_release, linaro_spin; + + parse_basever (&major, &minor, &patchlevel); ++ parse_linarover (&linaro_release, &linaro_spin); + cpp_define_formatted (pfile, "__GNUC__=%d", major); + cpp_define_formatted (pfile, "__GNUC_MINOR__=%d", minor); + cpp_define_formatted (pfile, "__GNUC_PATCHLEVEL__=%d", patchlevel); + cpp_define_formatted (pfile, "__VERSION__=\"%s\"", version_string); ++ cpp_define_formatted (pfile, "__LINARO_RELEASE__=%d", linaro_release); ++ cpp_define_formatted (pfile, "__LINARO_SPIN__=%d", linaro_spin); + cpp_define_formatted (pfile, "__ATOMIC_RELAXED=%d", MEMMODEL_RELAXED); + cpp_define_formatted (pfile, "__ATOMIC_SEQ_CST=%d", MEMMODEL_SEQ_CST); + cpp_define_formatted (pfile, "__ATOMIC_ACQUIRE=%d", MEMMODEL_ACQUIRE); +--- a/src/gcc/tree-ssa-threadupdate.c ++++ b/src/gcc/tree-ssa-threadupdate.c +@@ -156,8 +156,9 @@ + bool registering) + { + fprintf (dump_file, +- " %s jump thread: (%d, %d) incoming edge; ", ++ " %s%s jump thread: (%d, %d) incoming edge; ", + (registering ? "Registering" : "Cancelling"), ++ (path[0]->type == EDGE_FSM_THREAD ? " FSM": ""), + path[0]->e->src->index, path[0]->e->dest->index); + + for (unsigned int i = 1; i < path.length (); i++) +@@ -699,6 +700,10 @@ + if ((*path)[1]->type != EDGE_COPY_SRC_JOINER_BLOCK) + EDGE_SUCC (rd->dup_blocks[0], 0)->count += e->count; + ++ /* If we redirect a loop latch edge cancel its loop. */ ++ if (e->src == e->src->loop_father->latch) ++ mark_loop_for_removal (e->src->loop_father); ++ + /* Redirect the incoming edge (possibly to the joiner block) to the + appropriate duplicate block. */ + e2 = redirect_edge_and_branch (e, rd->dup_blocks[0]); +@@ -779,7 +784,6 @@ + edge e, e2; + edge_iterator ei; + ssa_local_info_t local_info; +- struct loop *loop = bb->loop_father; + + /* To avoid scanning a linear array for the element we need we instead + use a hash table. For normal code there should be no noticeable +@@ -787,32 +791,6 @@ + incoming and outgoing edges such linear searches can get expensive. */ + redirection_data.create (EDGE_COUNT (bb->succs)); + +- /* If we thread the latch of the loop to its exit, the loop ceases to +- exist. Make sure we do not restrict ourselves in order to preserve +- this loop. */ +- if (loop->header == bb) +- { +- e = loop_latch_edge (loop); +- vec *path = THREAD_PATH (e); +- +- if (path +- && (((*path)[1]->type == EDGE_COPY_SRC_JOINER_BLOCK && joiners) +- || ((*path)[1]->type == EDGE_COPY_SRC_BLOCK && !joiners))) +- { +- for (unsigned int i = 1; i < path->length (); i++) +- { +- edge e2 = (*path)[i]->e; +- +- if (loop_exit_edge_p (loop, e2)) +- { +- loop->header = NULL; +- loop->latch = NULL; +- loops_state_set (LOOPS_NEED_FIXUP); +- } +- } +- } +- } +- + /* Record each unique threaded destination into a hash table for + efficient lookups. */ + FOR_EACH_EDGE (e, ei, bb->preds) +@@ -1256,9 +1234,7 @@ + { + /* If the loop ceased to exist, mark it as such, and thread through its + original header. */ +- loop->header = NULL; +- loop->latch = NULL; +- loops_state_set (LOOPS_NEED_FIXUP); ++ mark_loop_for_removal (loop); + return thread_block (header, false); + } + +@@ -1622,6 +1598,154 @@ + return false; + } + ++/* Verify that the REGION is a Single Entry Multiple Exits region: make sure no ++ edge other than ENTRY is entering the REGION. */ ++ ++DEBUG_FUNCTION void ++verify_seme (edge entry, basic_block *region, unsigned n_region) ++{ ++ bitmap bbs = BITMAP_ALLOC (NULL); ++ ++ for (unsigned i = 0; i < n_region; i++) ++ bitmap_set_bit (bbs, region[i]->index); ++ ++ for (unsigned i = 0; i < n_region; i++) ++ { ++ edge e; ++ edge_iterator ei; ++ basic_block bb = region[i]; ++ ++ /* All predecessors other than ENTRY->src should be in the region. */ ++ for (ei = ei_start (bb->preds); (e = ei_safe_edge (ei)); ei_next (&ei)) ++ if (e != entry) ++ gcc_assert (bitmap_bit_p (bbs, e->src->index)); ++ } ++ ++ BITMAP_FREE (bbs); ++} ++ ++/* Duplicates a Single Entry Multiple Exit REGION (set of N_REGION basic ++ blocks). The ENTRY edge is redirected to the duplicate of the region. If ++ REGION is not a Single Entry region, ignore any incoming edges other than ++ ENTRY: this makes the copied region a Single Entry region. ++ ++ Remove the last conditional statement in the last basic block in the REGION, ++ and create a single fallthru edge pointing to the same destination as the ++ EXIT edge. ++ ++ The new basic blocks are stored to REGION_COPY in the same order as they had ++ in REGION, provided that REGION_COPY is not NULL. ++ ++ Returns false if it is unable to copy the region, true otherwise. */ ++ ++static bool ++duplicate_seme_region (edge entry, edge exit, ++ basic_block *region, unsigned n_region, ++ basic_block *region_copy) ++{ ++ unsigned i; ++ bool free_region_copy = false; ++ struct loop *loop = entry->dest->loop_father; ++ edge exit_copy; ++ edge redirected; ++ int total_freq = 0, entry_freq = 0; ++ gcov_type total_count = 0, entry_count = 0; ++ ++ if (!can_copy_bbs_p (region, n_region)) ++ return false; ++ ++ /* Some sanity checking. Note that we do not check for all possible ++ missuses of the functions. I.e. if you ask to copy something weird, ++ it will work, but the state of structures probably will not be ++ correct. */ ++ for (i = 0; i < n_region; i++) ++ { ++ /* We do not handle subloops, i.e. all the blocks must belong to the ++ same loop. */ ++ if (region[i]->loop_father != loop) ++ return false; ++ } ++ ++ initialize_original_copy_tables (); ++ ++ set_loop_copy (loop, loop); ++ ++ if (!region_copy) ++ { ++ region_copy = XNEWVEC (basic_block, n_region); ++ free_region_copy = true; ++ } ++ ++ if (entry->dest->count) ++ { ++ total_count = entry->dest->count; ++ entry_count = entry->count; ++ /* Fix up corner cases, to avoid division by zero or creation of negative ++ frequencies. */ ++ if (entry_count > total_count) ++ entry_count = total_count; ++ } ++ else ++ { ++ total_freq = entry->dest->frequency; ++ entry_freq = EDGE_FREQUENCY (entry); ++ /* Fix up corner cases, to avoid division by zero or creation of negative ++ frequencies. */ ++ if (total_freq == 0) ++ total_freq = 1; ++ else if (entry_freq > total_freq) ++ entry_freq = total_freq; ++ } ++ ++ copy_bbs (region, n_region, region_copy, &exit, 1, &exit_copy, loop, ++ split_edge_bb_loc (entry), 0); ++ if (total_count) ++ { ++ scale_bbs_frequencies_gcov_type (region, n_region, ++ total_count - entry_count, ++ total_count); ++ scale_bbs_frequencies_gcov_type (region_copy, n_region, entry_count, ++ total_count); ++ } ++ else ++ { ++ scale_bbs_frequencies_int (region, n_region, total_freq - entry_freq, ++ total_freq); ++ scale_bbs_frequencies_int (region_copy, n_region, entry_freq, total_freq); ++ } ++ ++#ifdef ENABLE_CHECKING ++ /* Make sure no edge other than ENTRY is entering the copied region. */ ++ verify_seme (entry, region_copy, n_region); ++#endif ++ ++ /* Remove the last branch in the jump thread path. */ ++ remove_ctrl_stmt_and_useless_edges (region_copy[n_region - 1], exit->dest); ++ edge e = make_edge (region_copy[n_region - 1], exit->dest, EDGE_FALLTHRU); ++ ++ if (e) { ++ rescan_loop_exit (e, true, false); ++ e->probability = REG_BR_PROB_BASE; ++ e->count = region_copy[n_region - 1]->count; ++ } ++ ++ /* Redirect the entry and add the phi node arguments. */ ++ if (entry->dest == loop->header) ++ mark_loop_for_removal (loop); ++ redirected = redirect_edge_and_branch (entry, get_bb_copy (entry->dest)); ++ gcc_assert (redirected != NULL); ++ flush_pending_stmts (entry); ++ ++ /* Add the other PHI node arguments. */ ++ add_phi_args_after_copy (region_copy, n_region, NULL); ++ ++ if (free_region_copy) ++ free (region_copy); ++ ++ free_original_copy_tables (); ++ return true; ++} ++ + /* Walk through all blocks and thread incoming edges to the appropriate + outgoing edge for each edge pair recorded in THREADED_EDGES. + +@@ -1651,6 +1775,57 @@ + threaded_blocks = BITMAP_ALLOC (NULL); + memset (&thread_stats, 0, sizeof (thread_stats)); + ++ /* Jump-thread all FSM threads before other jump-threads. */ ++ for (i = 0; i < paths.length ();) ++ { ++ vec *path = paths[i]; ++ edge entry = (*path)[0]->e; ++ ++ if ((*path)[0]->type != EDGE_FSM_THREAD ++ /* Do not jump-thread twice from the same block. */ ++ || bitmap_bit_p (threaded_blocks, entry->src->index)) { ++ i++; ++ continue; ++ } ++ ++ unsigned len = path->length (); ++ edge exit = (*path)[len - 1]->e; ++ basic_block *region = XNEWVEC (basic_block, len - 1); ++ ++ for (unsigned int j = 0; j < len - 1; j++) ++ region[j] = (*path)[j]->e->dest; ++ ++ if (duplicate_seme_region (entry, exit, region, len - 1, NULL)) ++ { ++ /* We do not update dominance info. */ ++ free_dominance_info (CDI_DOMINATORS); ++ bitmap_set_bit (threaded_blocks, entry->src->index); ++ retval = true; ++ } ++ ++ delete_jump_thread_path (path); ++ paths.unordered_remove (i); ++ } ++ ++ /* Remove from PATHS all the jump-threads starting with an edge already ++ jump-threaded. */ ++ for (i = 0; i < paths.length ();) ++ { ++ vec *path = paths[i]; ++ edge entry = (*path)[0]->e; ++ ++ /* Do not jump-thread twice from the same block. */ ++ if (bitmap_bit_p (threaded_blocks, entry->src->index)) ++ { ++ delete_jump_thread_path (path); ++ paths.unordered_remove (i); ++ } ++ else ++ i++; ++ } ++ ++ bitmap_clear (threaded_blocks); ++ + mark_threaded_blocks (threaded_blocks); + + initialize_original_copy_tables (); +@@ -1736,16 +1911,8 @@ + /* Our path is still valid, thread it. */ + if (e->aux) + { +- struct loop *loop = (*path)[0]->e->dest->loop_father; +- + if (thread_block ((*path)[0]->e->dest, false)) +- { +- /* This jump thread likely totally scrambled this loop. +- So arrange for it to be fixed up. */ +- loop->header = NULL; +- loop->latch = NULL; +- e->aux = NULL; +- } ++ e->aux = NULL; + else + { + delete_jump_thread_path (path); +--- a/src/gcc/tree-ssa-threadupdate.h ++++ b/src/gcc/tree-ssa-threadupdate.h +@@ -26,6 +26,7 @@ + enum jump_thread_edge_type + { + EDGE_START_JUMP_THREAD, ++ EDGE_FSM_THREAD, + EDGE_COPY_SRC_BLOCK, + EDGE_COPY_SRC_JOINER_BLOCK, + EDGE_NO_COPY_SRC_BLOCK +--- a/src/gcc/tree-pretty-print.c ++++ b/src/gcc/tree-pretty-print.c +@@ -1820,7 +1820,6 @@ + case RSHIFT_EXPR: + case LROTATE_EXPR: + case RROTATE_EXPR: +- case VEC_LSHIFT_EXPR: + case VEC_RSHIFT_EXPR: + case WIDEN_LSHIFT_EXPR: + case BIT_IOR_EXPR: +@@ -2977,7 +2976,6 @@ + case REDUC_MAX_EXPR: + case REDUC_MIN_EXPR: + case REDUC_PLUS_EXPR: +- case VEC_LSHIFT_EXPR: + case VEC_RSHIFT_EXPR: + case VEC_UNPACK_HI_EXPR: + case VEC_UNPACK_LO_EXPR: +@@ -3088,9 +3086,6 @@ + case RROTATE_EXPR: + return "r>>"; + +- case VEC_LSHIFT_EXPR: +- return "v<<"; +- + case VEC_RSHIFT_EXPR: + return "v>>"; + +--- a/src/gcc/c-family/ChangeLog.linaro ++++ b/src/gcc/c-family/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/gcc/java/ChangeLog.linaro ++++ b/src/gcc/java/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/gcc/c/c-parser.c ++++ b/src/gcc/c/c-parser.c +@@ -4210,7 +4210,8 @@ + init.original_type = NULL; + c_parser_error (parser, "expected identifier"); + c_parser_skip_until_found (parser, CPP_COMMA, NULL); +- process_init_element (init, false, braced_init_obstack); ++ process_init_element (input_location, init, false, ++ braced_init_obstack); + return; + } + } +@@ -4342,7 +4343,8 @@ + init.original_type = NULL; + c_parser_error (parser, "expected %<=%>"); + c_parser_skip_until_found (parser, CPP_COMMA, NULL); +- process_init_element (init, false, braced_init_obstack); ++ process_init_element (input_location, init, false, ++ braced_init_obstack); + return; + } + } +@@ -4363,11 +4365,12 @@ + { + struct c_expr init; + gcc_assert (!after || c_dialect_objc ()); ++ location_t loc = c_parser_peek_token (parser)->location; ++ + if (c_parser_next_token_is (parser, CPP_OPEN_BRACE) && !after) + init = c_parser_braced_init (parser, NULL_TREE, true); + else + { +- location_t loc = c_parser_peek_token (parser)->location; + init = c_parser_expr_no_commas (parser, after); + if (init.value != NULL_TREE + && TREE_CODE (init.value) != STRING_CST +@@ -4374,7 +4377,7 @@ + && TREE_CODE (init.value) != COMPOUND_LITERAL_EXPR) + init = convert_lvalue_to_rvalue (loc, init, true, true); + } +- process_init_element (init, false, braced_init_obstack); ++ process_init_element (loc, init, false, braced_init_obstack); + } + + /* Parse a compound statement (possibly a function body) (C90 6.6.2, +--- a/src/gcc/c/c-typeck.c ++++ b/src/gcc/c/c-typeck.c +@@ -102,8 +102,8 @@ + static char *print_spelling (char *); + static void warning_init (int, const char *); + static tree digest_init (location_t, tree, tree, tree, bool, bool, int); +-static void output_init_element (tree, tree, bool, tree, tree, int, bool, +- struct obstack *); ++static void output_init_element (location_t, tree, tree, bool, tree, tree, int, ++ bool, struct obstack *); + static void output_pending_init_elements (int, struct obstack *); + static int set_designator (int, struct obstack *); + static void push_range_stack (tree, struct obstack *); +@@ -7188,13 +7188,15 @@ + if ((TREE_CODE (constructor_type) == RECORD_TYPE + || TREE_CODE (constructor_type) == UNION_TYPE) + && constructor_fields == 0) +- process_init_element (pop_init_level (1, braced_init_obstack), ++ process_init_element (input_location, ++ pop_init_level (1, braced_init_obstack), + true, braced_init_obstack); + else if (TREE_CODE (constructor_type) == ARRAY_TYPE + && constructor_max_index + && tree_int_cst_lt (constructor_max_index, + constructor_index)) +- process_init_element (pop_init_level (1, braced_init_obstack), ++ process_init_element (input_location, ++ pop_init_level (1, braced_init_obstack), + true, braced_init_obstack); + else + break; +@@ -7394,10 +7396,9 @@ + /* When we come to an explicit close brace, + pop any inner levels that didn't have explicit braces. */ + while (constructor_stack->implicit) +- { +- process_init_element (pop_init_level (1, braced_init_obstack), +- true, braced_init_obstack); +- } ++ process_init_element (input_location, ++ pop_init_level (1, braced_init_obstack), ++ true, braced_init_obstack); + gcc_assert (!constructor_range_stack); + } + +@@ -7575,10 +7576,9 @@ + /* Designator list starts at the level of closest explicit + braces. */ + while (constructor_stack->implicit) +- { +- process_init_element (pop_init_level (1, braced_init_obstack), +- true, braced_init_obstack); +- } ++ process_init_element (input_location, ++ pop_init_level (1, braced_init_obstack), ++ true, braced_init_obstack); + constructor_designated = 1; + return 0; + } +@@ -8198,9 +8198,9 @@ + existing initializer. */ + + static void +-output_init_element (tree value, tree origtype, bool strict_string, tree type, +- tree field, int pending, bool implicit, +- struct obstack * braced_init_obstack) ++output_init_element (location_t loc, tree value, tree origtype, ++ bool strict_string, tree type, tree field, int pending, ++ bool implicit, struct obstack * braced_init_obstack) + { + tree semantic_type = NULL_TREE; + bool maybe_const = true; +@@ -8298,8 +8298,8 @@ + + if (semantic_type) + value = build1 (EXCESS_PRECISION_EXPR, semantic_type, value); +- value = digest_init (input_location, type, value, origtype, npc, +- strict_string, require_constant_value); ++ value = digest_init (loc, type, value, origtype, npc, strict_string, ++ require_constant_value); + if (value == error_mark_node) + { + constructor_erroneous = 1; +@@ -8426,8 +8426,8 @@ + { + if (tree_int_cst_equal (elt->purpose, + constructor_unfilled_index)) +- output_init_element (elt->value, elt->origtype, true, +- TREE_TYPE (constructor_type), ++ output_init_element (input_location, elt->value, elt->origtype, ++ true, TREE_TYPE (constructor_type), + constructor_unfilled_index, 0, false, + braced_init_obstack); + else if (tree_int_cst_lt (constructor_unfilled_index, +@@ -8481,8 +8481,8 @@ + if (tree_int_cst_equal (elt_bitpos, ctor_unfilled_bitpos)) + { + constructor_unfilled_fields = elt->purpose; +- output_init_element (elt->value, elt->origtype, true, +- TREE_TYPE (elt->purpose), ++ output_init_element (input_location, elt->value, elt->origtype, ++ true, TREE_TYPE (elt->purpose), + elt->purpose, 0, false, + braced_init_obstack); + } +@@ -8555,7 +8555,7 @@ + existing initializer. */ + + void +-process_init_element (struct c_expr value, bool implicit, ++process_init_element (location_t loc, struct c_expr value, bool implicit, + struct obstack * braced_init_obstack) + { + tree orig_value = value.value; +@@ -8599,7 +8599,7 @@ + if ((TREE_CODE (constructor_type) == RECORD_TYPE + || TREE_CODE (constructor_type) == UNION_TYPE) + && constructor_fields == 0) +- process_init_element (pop_init_level (1, braced_init_obstack), ++ process_init_element (loc, pop_init_level (1, braced_init_obstack), + true, braced_init_obstack); + else if ((TREE_CODE (constructor_type) == ARRAY_TYPE + || TREE_CODE (constructor_type) == VECTOR_TYPE) +@@ -8606,7 +8606,7 @@ + && constructor_max_index + && tree_int_cst_lt (constructor_max_index, + constructor_index)) +- process_init_element (pop_init_level (1, braced_init_obstack), ++ process_init_element (loc, pop_init_level (1, braced_init_obstack), + true, braced_init_obstack); + else + break; +@@ -8684,7 +8684,7 @@ + if (value.value) + { + push_member_name (constructor_fields); +- output_init_element (value.value, value.original_type, ++ output_init_element (loc, value.value, value.original_type, + strict_string, fieldtype, + constructor_fields, 1, implicit, + braced_init_obstack); +@@ -8776,7 +8776,7 @@ + if (value.value) + { + push_member_name (constructor_fields); +- output_init_element (value.value, value.original_type, ++ output_init_element (loc, value.value, value.original_type, + strict_string, fieldtype, + constructor_fields, 1, implicit, + braced_init_obstack); +@@ -8828,7 +8828,7 @@ + if (value.value) + { + push_array_bounds (tree_to_uhwi (constructor_index)); +- output_init_element (value.value, value.original_type, ++ output_init_element (loc, value.value, value.original_type, + strict_string, elttype, + constructor_index, 1, implicit, + braced_init_obstack); +@@ -8863,7 +8863,7 @@ + { + if (TREE_CODE (value.value) == VECTOR_CST) + elttype = TYPE_MAIN_VARIANT (constructor_type); +- output_init_element (value.value, value.original_type, ++ output_init_element (loc, value.value, value.original_type, + strict_string, elttype, + constructor_index, 1, implicit, + braced_init_obstack); +@@ -8892,7 +8892,7 @@ + else + { + if (value.value) +- output_init_element (value.value, value.original_type, ++ output_init_element (loc, value.value, value.original_type, + strict_string, constructor_type, + NULL_TREE, 1, implicit, + braced_init_obstack); +@@ -8911,8 +8911,8 @@ + while (constructor_stack != range_stack->stack) + { + gcc_assert (constructor_stack->implicit); +- process_init_element (pop_init_level (1, +- braced_init_obstack), ++ process_init_element (loc, ++ pop_init_level (1, braced_init_obstack), + true, braced_init_obstack); + } + for (p = range_stack; +@@ -8920,7 +8920,8 @@ + p = p->prev) + { + gcc_assert (constructor_stack->implicit); +- process_init_element (pop_init_level (1, braced_init_obstack), ++ process_init_element (loc, ++ pop_init_level (1, braced_init_obstack), + true, braced_init_obstack); + } + +--- a/src/gcc/c/c-tree.h ++++ b/src/gcc/c/c-tree.h +@@ -612,7 +612,8 @@ + extern struct c_expr pop_init_level (int, struct obstack *); + extern void set_init_index (tree, tree, struct obstack *); + extern void set_init_label (tree, struct obstack *); +-extern void process_init_element (struct c_expr, bool, struct obstack *); ++extern void process_init_element (location_t, struct c_expr, bool, ++ struct obstack *); + extern tree build_compound_literal (location_t, tree, tree, bool); + extern void check_compound_literal_type (location_t, struct c_type_name *); + extern tree c_start_case (location_t, location_t, tree); +--- a/src/gcc/c/ChangeLog.linaro ++++ b/src/gcc/c/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/gcc/target.def ++++ b/src/gcc/target.def +@@ -1048,11 +1048,13 @@ + + DEFHOOK + (macro_fusion_pair_p, +- "This hook is used to check whether two insns could be macro fused for\n\ +-target microarchitecture. If this hook returns true for the given insn pair\n\ +-(@var{condgen} and @var{condjmp}), scheduler will put them into a sched\n\ +-group, and they will not be scheduled apart.", +- bool, (rtx condgen, rtx condjmp), NULL) ++ "This hook is used to check whether two insns should be macro fused for\n\ ++a target microarchitecture. If this hook returns true for the given insn pair\n\ ++(@var{prev} and @var{curr}), the scheduler will put them into a sched\n\ ++group, and they will not be scheduled apart. The two insns will be either\n\ ++two SET insns or a compare and a conditional jump and this hook should\n\ ++validate any dependencies needed to fuse the two insns together.", ++ bool, (rtx prev, rtx curr), NULL) + + /* The following member value is a pointer to a function called + after evaluation forward dependencies of insns in chain given +@@ -1174,11 +1176,17 @@ + "\n\ + This hook controls what insns from the ready insn queue will be\n\ + considered for the multipass insn scheduling. If the hook returns\n\ +-zero for @var{insn}, the insn will be not chosen to\n\ +-be issued.\n\ ++zero for @var{insn}, the insn will be considered in multipass scheduling.\n\ ++Positive return values will remove @var{insn} from consideration on\n\ ++the current round of multipass scheduling.\n\ ++Negative return values will remove @var{insn} from consideration for given\n\ ++number of cycles.\n\ ++Backends should be careful about returning non-zero for highest priority\n\ ++instruction at position 0 in the ready list. @var{ready_index} is passed\n\ ++to allow backends make correct judgements.\n\ + \n\ + The default is that any ready insns can be chosen to be issued.", +- int, (rtx insn), NULL) ++ int, (rtx insn, int ready_index), NULL) + + /* This hook prepares the target for a new round of multipass + scheduling. +@@ -1193,7 +1201,7 @@ + (first_cycle_multipass_begin, + "This hook prepares the target backend for a new round of multipass\n\ + scheduling.", +- void, (void *data, char *ready_try, int n_ready, bool first_cycle_insn_p), ++ void, (void *data, signed char *ready_try, int n_ready, bool first_cycle_insn_p), + NULL) + + /* This hook is called when multipass scheduling evaluates instruction INSN. +@@ -1209,7 +1217,7 @@ + DEFHOOK + (first_cycle_multipass_issue, + "This hook is called when multipass scheduling evaluates instruction INSN.", +- void, (void *data, char *ready_try, int n_ready, rtx insn, ++ void, (void *data, signed char *ready_try, int n_ready, rtx insn, + const void *prev_data), NULL) + + /* This hook is called when multipass scheduling backtracks from evaluation of +@@ -1225,7 +1233,7 @@ + (first_cycle_multipass_backtrack, + "This is called when multipass scheduling backtracks from evaluation of\n\ + an instruction.", +- void, (const void *data, char *ready_try, int n_ready), NULL) ++ void, (const void *data, signed char *ready_try, int n_ready), NULL) + + /* This hook notifies the target about the result of the concluded current + round of multipass scheduling. +@@ -1421,26 +1429,6 @@ + @var{insn} should be generated. In this case @var{label} can't be null.", + rtx, (rtx insn, rtx label, unsigned int ds), NULL) + +-/* The following member value is a pointer to a function controlling +- what insns from the ready insn queue will be considered for the +- multipass insn scheduling. If the hook returns zero for the insn +- passed as the parameter, the insn will not be chosen to be +- issued. This hook is used to discard speculative instructions, +- that stand at the first position of the ready list. */ +-DEFHOOK +-(first_cycle_multipass_dfa_lookahead_guard_spec, +- "This hook is used as a workaround for\n\ +-@samp{TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD} not being\n\ +-called on the first instruction of the ready list. The hook is used to\n\ +-discard speculative instructions that stand first in the ready list from\n\ +-being scheduled on the current cycle. If the hook returns @code{false},\n\ +-@var{insn} will not be chosen to be issued.\n\ +-For non-speculative instructions,\n\ +-the hook should always return @code{true}. For example, in the ia64 backend\n\ +-the hook is used to cancel data speculative insns when the ALAT table\n\ +-is nearly full.", +- bool, (const_rtx insn), NULL) +- + /* The following member value is a pointer to a function that provides + information about the speculation capabilities of the target. + The parameter is a pointer to spec_info variable. */ +@@ -3039,6 +3027,43 @@ + int, (enum machine_mode mode, reg_class_t rclass, bool in), + default_memory_move_cost) + ++DEFHOOK ++(use_by_pieces_infrastructure_p, ++ "GCC will attempt several strategies when asked to copy between\n\ ++two areas of memory, or to set, clear or store to memory, for example\n\ ++when copying a @code{struct}. The @code{by_pieces} infrastructure\n\ ++implements such memory operations as a sequence of load, store or move\n\ ++insns. Alternate strategies are to expand the\n\ ++@code{movmem} or @code{setmem} optabs, to emit a library call, or to emit\n\ ++unit-by-unit, loop-based operations.\n\ ++\n\ ++This target hook should return true if, for a memory operation with a\n\ ++given @var{size} and @var{alignment}, using the @code{by_pieces}\n\ ++infrastructure is expected to result in better code generation.\n\ ++Both @var{size} and @var{alignment} are measured in terms of storage\n\ ++units.\n\ ++\n\ ++The parameter @var{op} is one of: @code{CLEAR_BY_PIECES},\n\ ++@code{MOVE_BY_PIECES}, @code{SET_BY_PIECES}, @code{STORE_BY_PIECES}.\n\ ++These describe the type of memory operation under consideration.\n\ ++\n\ ++The parameter @var{speed_p} is true if the code is currently being\n\ ++optimized for speed rather than size.\n\ ++\n\ ++Returning true for higher values of @var{size} can improve code generation\n\ ++for speed if the target does not provide an implementation of the\n\ ++@code{movmem} or @code{setmem} standard names, if the @code{movmem} or\n\ ++@code{setmem} implementation would be more expensive than a sequence of\n\ ++insns, or if the overhead of a library call would dominate that of\n\ ++the body of the memory operation.\n\ ++\n\ ++Returning true for higher values of @code{size} may also cause an increase\n\ ++in code size, for example where the number of insns emitted to perform a\n\ ++move would be greater than that of a library call.", ++ bool, (unsigned HOST_WIDE_INT size, unsigned int alignment, ++ enum by_pieces_operation op, bool speed_p), ++ default_use_by_pieces_infrastructure_p) ++ + /* True for MODE if the target expects that registers in this mode will + be allocated to registers in a small register class. The compiler is + allowed to use registers explicitly used in the rtl as spill registers +--- a/src/gcc/optabs.c ++++ b/src/gcc/optabs.c +@@ -483,17 +483,16 @@ + return fma_optab; + + case REDUC_MAX_EXPR: +- return TYPE_UNSIGNED (type) ? reduc_umax_optab : reduc_smax_optab; ++ return TYPE_UNSIGNED (type) ++ ? reduc_umax_scal_optab : reduc_smax_scal_optab; + + case REDUC_MIN_EXPR: +- return TYPE_UNSIGNED (type) ? reduc_umin_optab : reduc_smin_optab; ++ return TYPE_UNSIGNED (type) ++ ? reduc_umin_scal_optab : reduc_smin_scal_optab; + + case REDUC_PLUS_EXPR: +- return TYPE_UNSIGNED (type) ? reduc_uplus_optab : reduc_splus_optab; ++ return reduc_plus_scal_optab; + +- case VEC_LSHIFT_EXPR: +- return vec_shl_optab; +- + case VEC_RSHIFT_EXPR: + return vec_shr_optab; + +@@ -585,8 +584,27 @@ + return unknown_optab; + } + } +- + ++/* Given optab UNOPTAB that reduces a vector to a scalar, find instead the old ++ optab that produces a vector with the reduction result in one element, ++ for a tree with type TYPE. */ ++ ++optab ++scalar_reduc_to_vector (optab unoptab, const_tree type) ++{ ++ switch (unoptab) ++ { ++ case reduc_plus_scal_optab: ++ return TYPE_UNSIGNED (type) ? reduc_uplus_optab : reduc_splus_optab; ++ ++ case reduc_smin_scal_optab: return reduc_smin_optab; ++ case reduc_umin_scal_optab: return reduc_umin_optab; ++ case reduc_smax_scal_optab: return reduc_smax_optab; ++ case reduc_umax_scal_optab: return reduc_umax_optab; ++ default: return unknown_optab; ++ } ++} ++ + /* Expand vector widening operations. + + There are two different classes of operations handled here: +@@ -726,7 +744,7 @@ + return true; + } + +-/* Generate insns for VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR. */ ++/* Generate insns for VEC_RSHIFT_EXPR. */ + + rtx + expand_vec_shift_expr (sepops ops, rtx target) +@@ -737,21 +755,10 @@ + enum machine_mode mode = TYPE_MODE (ops->type); + tree vec_oprnd = ops->op0; + tree shift_oprnd = ops->op1; +- optab shift_optab; + +- switch (ops->code) +- { +- case VEC_RSHIFT_EXPR: +- shift_optab = vec_shr_optab; +- break; +- case VEC_LSHIFT_EXPR: +- shift_optab = vec_shl_optab; +- break; +- default: +- gcc_unreachable (); +- } ++ gcc_assert (ops->code == VEC_RSHIFT_EXPR); + +- icode = optab_handler (shift_optab, mode); ++ icode = optab_handler (vec_shr_optab, mode); + gcc_assert (icode != CODE_FOR_nothing); + + rtx_op1 = expand_normal (vec_oprnd); +@@ -4234,7 +4241,7 @@ + y = const0_rtx; + } + +- *pmode = word_mode; ++ *pmode = ret_mode; + prepare_cmp_insn (x, y, comparison, NULL_RTX, unsignedp, methods, + ptest, pmode); + } +--- a/src/gcc/optabs.h ++++ b/src/gcc/optabs.h +@@ -160,6 +160,11 @@ + vector shifts and rotates */ + extern optab optab_for_tree_code (enum tree_code, const_tree, enum optab_subtype); + ++/* Given an optab that reduces a vector to a scalar, find instead the old ++ optab that produces a vector with the reduction result in one element, ++ for a tree with the specified type. */ ++extern optab scalar_reduc_to_vector (optab, const_tree type); ++ + /* The various uses that a comparison can have; used by can_compare_p: + jumps, conditional moves, store flag operations. */ + enum can_compare_purpose +@@ -233,7 +238,7 @@ + + /* Generate code for VEC_COND_EXPR. */ + extern rtx expand_vec_cond_expr (tree, tree, tree, tree, rtx); +-/* Generate code for VEC_LSHIFT_EXPR and VEC_RSHIFT_EXPR. */ ++/* Generate code for VEC_RSHIFT_EXPR. */ + extern rtx expand_vec_shift_expr (sepops, rtx); + + /* Return true if target supports vector operations for VEC_PERM_EXPR. */ +--- a/src/gcc/defaults.h ++++ b/src/gcc/defaults.h +@@ -914,14 +914,6 @@ + #define PREFERRED_DEBUGGING_TYPE NO_DEBUG + #endif + +-#ifndef LARGEST_EXPONENT_IS_NORMAL +-#define LARGEST_EXPONENT_IS_NORMAL(SIZE) 0 +-#endif +- +-#ifndef ROUND_TOWARDS_ZERO +-#define ROUND_TOWARDS_ZERO 0 +-#endif +- + #ifndef FLOAT_LIB_COMPARE_RETURNS_BOOL + #define FLOAT_LIB_COMPARE_RETURNS_BOOL(MODE, COMPARISON) false + #endif +@@ -1065,6 +1057,15 @@ + #define MOVE_MAX_PIECES MOVE_MAX + #endif + ++/* STORE_MAX_PIECES is the number of bytes at a time that we can ++ store efficiently. Due to internal GCC limitations, this is ++ MOVE_MAX_PIECES limited by the number of bytes GCC can represent ++ for an immediate constant. */ ++ ++#ifndef STORE_MAX_PIECES ++#define STORE_MAX_PIECES MIN (MOVE_MAX_PIECES, 2 * sizeof (HOST_WIDE_INT)) ++#endif ++ + #ifndef MAX_MOVE_MAX + #define MAX_MOVE_MAX MOVE_MAX + #endif +--- a/src/gcc/optabs.def ++++ b/src/gcc/optabs.def +@@ -243,6 +243,13 @@ + OPTAB_D (sincos_optab, "sincos$a3") + OPTAB_D (tan_optab, "tan$a2") + ++/* Vector reduction to a scalar. */ ++OPTAB_D (reduc_smax_scal_optab, "reduc_smax_scal_$a") ++OPTAB_D (reduc_smin_scal_optab, "reduc_smin_scal_$a") ++OPTAB_D (reduc_plus_scal_optab, "reduc_plus_scal_$a") ++OPTAB_D (reduc_umax_scal_optab, "reduc_umax_scal_$a") ++OPTAB_D (reduc_umin_scal_optab, "reduc_umin_scal_$a") ++/* (Old) Vector reduction, returning a vector with the result in one lane. */ + OPTAB_D (reduc_smax_optab, "reduc_smax_$a") + OPTAB_D (reduc_smin_optab, "reduc_smin_$a") + OPTAB_D (reduc_splus_optab, "reduc_splus_$a") +@@ -249,6 +256,7 @@ + OPTAB_D (reduc_umax_optab, "reduc_umax_$a") + OPTAB_D (reduc_umin_optab, "reduc_umin_$a") + OPTAB_D (reduc_uplus_optab, "reduc_uplus_$a") ++ + OPTAB_D (sdot_prod_optab, "sdot_prod$I$a") + OPTAB_D (ssum_widen_optab, "widen_ssum$I$a3") + OPTAB_D (udot_prod_optab, "udot_prod$I$a") +@@ -266,7 +274,6 @@ + OPTAB_D (vec_perm_optab, "vec_perm$a") + OPTAB_D (vec_realign_load_optab, "vec_realign_load_$a") + OPTAB_D (vec_set_optab, "vec_set$a") +-OPTAB_D (vec_shl_optab, "vec_shl_$a") + OPTAB_D (vec_shr_optab, "vec_shr_$a") + OPTAB_D (vec_unpacks_float_hi_optab, "vec_unpacks_float_hi_$a") + OPTAB_D (vec_unpacks_float_lo_optab, "vec_unpacks_float_lo_$a") +--- a/src/gcc/target.h ++++ b/src/gcc/target.h +@@ -78,6 +78,17 @@ + SWITCH_TYPE_LINE_END /* Please emit a line terminator. */ + }; + ++/* Types of memory operation understood by the "by_pieces" infrastructure. ++ Used by the TARGET_USE_BY_PIECES_INFRASTRUCTURE_P target hook. */ ++ ++enum by_pieces_operation ++{ ++ CLEAR_BY_PIECES, ++ MOVE_BY_PIECES, ++ SET_BY_PIECES, ++ STORE_BY_PIECES ++}; ++ + typedef int (* print_switch_fn_type) (print_switch_type, const char *); + + /* An example implementation for ELF targets. Defined in varasm.c */ +--- a/src/gcc/rtlanal.c ++++ b/src/gcc/rtlanal.c +@@ -5606,7 +5606,8 @@ + inner = strip_address_mutations (&XEXP (*inner, 0)); + if (REG_P (*inner) + || MEM_P (*inner) +- || GET_CODE (*inner) == SUBREG) ++ || GET_CODE (*inner) == SUBREG ++ || GET_CODE (*inner) == SCRATCH) + return inner; + return 0; + } +--- a/src/gcc/lra-eliminations.c ++++ b/src/gcc/lra-eliminations.c +@@ -1164,7 +1164,9 @@ + ep->from, ep->to); + /* If after processing RTL we decides that SP can be used as + a result of elimination, it can not be changed. */ +- gcc_assert (ep->to_rtx != stack_pointer_rtx); ++ gcc_assert ((ep->to_rtx != stack_pointer_rtx) ++ || (ep->from < FIRST_PSEUDO_REGISTER ++ && fixed_regs [ep->from])); + /* Mark that is not eliminable anymore. */ + elimination_map[ep->from] = NULL; + for (ep1 = ep + 1; ep1 < ®_eliminate[NUM_ELIMINABLE_REGS]; ep1++) +--- a/src/gcc/cfghooks.c ++++ b/src/gcc/cfghooks.c +@@ -569,14 +569,10 @@ + struct loop *loop = bb->loop_father; + + /* If we remove the header or the latch of a loop, mark the loop for +- removal by setting its header and latch to NULL. */ ++ removal. */ + if (loop->latch == bb + || loop->header == bb) +- { +- loop->header = NULL; +- loop->latch = NULL; +- loops_state_set (LOOPS_NEED_FIXUP); +- } ++ mark_loop_for_removal (loop); + + remove_bb_from_loops (bb); + } +@@ -760,11 +756,7 @@ + /* ... we merge two loop headers, in which case we kill + the inner loop. */ + if (b->loop_father->header == b) +- { +- b->loop_father->header = NULL; +- b->loop_father->latch = NULL; +- loops_state_set (LOOPS_NEED_FIXUP); +- } ++ mark_loop_for_removal (b->loop_father); + } + /* If we merge a loop header into its predecessor, update the loop + structure. */ +@@ -1103,9 +1095,7 @@ + && cloop->header == bb) + { + add_bb_to_loop (new_bb, loop_outer (cloop)); +- cloop->header = NULL; +- cloop->latch = NULL; +- loops_state_set (LOOPS_NEED_FIXUP); ++ mark_loop_for_removal (cloop); + } + else + { +--- a/src/gcc/fold-const.c ++++ b/src/gcc/fold-const.c +@@ -1446,8 +1446,7 @@ + int count = TYPE_VECTOR_SUBPARTS (type), i; + tree *elts = XALLOCAVEC (tree, count); + +- if (code == VEC_LSHIFT_EXPR +- || code == VEC_RSHIFT_EXPR) ++ if (code == VEC_RSHIFT_EXPR) + { + if (!tree_fits_uhwi_p (arg2)) + return NULL_TREE; +@@ -1459,11 +1458,10 @@ + if (shiftc >= outerc || (shiftc % innerc) != 0) + return NULL_TREE; + int offset = shiftc / innerc; +- /* The direction of VEC_[LR]SHIFT_EXPR is endian dependent. +- For reductions, compiler emits VEC_RSHIFT_EXPR always, +- for !BYTES_BIG_ENDIAN picks first vector element, but +- for BYTES_BIG_ENDIAN last element from the vector. */ +- if ((code == VEC_RSHIFT_EXPR) ^ (!BYTES_BIG_ENDIAN)) ++ /* The direction of VEC_RSHIFT_EXPR is endian dependent. ++ For reductions, if !BYTES_BIG_ENDIAN then compiler picks first ++ vector element, but last element if BYTES_BIG_ENDIAN. */ ++ if (BYTES_BIG_ENDIAN) + offset = -offset; + tree zero = build_zero_cst (TREE_TYPE (type)); + for (i = 0; i < count; i++) +@@ -8529,12 +8527,13 @@ + case REDUC_MAX_EXPR: + case REDUC_PLUS_EXPR: + { +- unsigned int nelts = TYPE_VECTOR_SUBPARTS (type), i; ++ unsigned int nelts, i; + tree *elts; + enum tree_code subcode; + + if (TREE_CODE (op0) != VECTOR_CST) + return NULL_TREE; ++ nelts = TYPE_VECTOR_SUBPARTS (TREE_TYPE (op0)); + + elts = XALLOCAVEC (tree, nelts); + if (!vec_cst_ctor_to_array (op0, elts)) +@@ -8553,10 +8552,9 @@ + elts[0] = const_binop (subcode, elts[0], elts[i]); + if (elts[0] == NULL_TREE || !CONSTANT_CLASS_P (elts[0])) + return NULL_TREE; +- elts[i] = build_zero_cst (TREE_TYPE (type)); + } + +- return build_vector (type, elts); ++ return elts[0]; + } + + default: +--- a/src/gcc/omp-low.c ++++ b/src/gcc/omp-low.c +@@ -11708,6 +11708,7 @@ + iteration increment and the condition/branch. */ + basic_block orig_exit = EDGE_PRED (EXIT_BLOCK_PTR_FOR_FN (cfun), 0)->src; + basic_block incr_bb = create_empty_bb (orig_exit); ++ add_bb_to_loop (incr_bb, body_bb->loop_father); + /* The succ of orig_exit was EXIT_BLOCK_PTR_FOR_FN (cfun), with an empty + flag. Set it now to be a FALLTHRU_EDGE. */ + gcc_assert (EDGE_COUNT (orig_exit->succs) == 1); +@@ -11732,7 +11733,6 @@ + loop->safelen = node->simdclone->simdlen; + loop->force_vect = true; + loop->header = body_bb; +- add_bb_to_loop (incr_bb, loop); + + /* Branch around the body if the mask applies. */ + if (node->simdclone->inbranch) +@@ -11773,7 +11773,7 @@ + gsi_insert_after (&gsi, g, GSI_CONTINUE_LINKING); + e = split_block (incr_bb, gsi_stmt (gsi)); + basic_block latch_bb = e->dest; +- basic_block new_exit_bb = e->dest; ++ basic_block new_exit_bb; + new_exit_bb = split_block (latch_bb, NULL)->dest; + loop->latch = latch_bb; + +--- a/src/gcc/objc/ChangeLog.linaro ++++ b/src/gcc/objc/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/gcc/ChangeLog.linaro ++++ b/src/gcc/ChangeLog.linaro +@@ -0,0 +1,4321 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ * LINARO-VERSION: Update. ++ ++2015-04-15 Christophe Lyon ++ ++ Backport from trunk r220348. ++ 2015-02-02 Tejas Belagod ++ Andrew Pinski ++ Jakub Jelinek ++ ++ PR target/64231 ++ * config/aarch64/aarch64.c (aarch64_classify_symbol): Fix large ++ integer typing for small model. Use IN_RANGE. ++ ++2015-04-14 Michael Collison ++ ++ Backport from trunk r220399, r220413. ++ ++ 2015-02-04 Matthew Wahab ++ ++ * config/aarch64/aarch64-cores.def: Add cortex-a72 and ++ cortex-a72.cortex-a53. ++ * config/aarch64/aarch64-tune.md: Regenerate. ++ * doc/invoke.texi (AArch64 Options/-mtune): Add "cortex-a72". ++ ++ 2015-02-04 Matthew Wahab ++ ++ * config/arm/arm-cores.def: Add cortex-a72 and ++ cortex-a72.cortex-a53. ++ * config/arm/bpabi.h (BE8_LINK_SPEC): Likewise. ++ * config/arm/t-aprofile (MULTILIB_MATCHES): Likewise. ++ * config/arm/arm-tune.md: Regenerate. ++ * config/arm/arm-tables.opt: Add entries for "cortex-a72" and ++ "cortex-a72.cortex-a53". ++ * doc/invoke.texi (ARM Options/-mtune): Likewise. ++ ++2015-04-13 Michael Collison ++ ++ Backport from trunk r219724, 219746, r220103. ++ ++ 2014-01-25 James Greenhalgh ++ ++ * config/arm/arm-cores.def (cortex-a57): Use the new Cortex-A57 ++ pipeline model. ++ config/arm/arm.md: Include the new Cortex-A57 model. ++ (generic_sched): Don't use generic_sched when tuning for ++ Cortex-A57. ++ ++ 2015-01-16 James Greenhalgh ++ ++ * config/arm/cortex-a57.md: Remove duplicate of file accidentally ++ introduced in revision 219724. ++ ++ 2015-01-16 James Greenhalgh ++ ++ * config/arm/cortex-a57.md: New. ++ * config/aarch64/aarch64.md: Include it. ++ * config/aarch64/aarch64-cores.def (cortex-a57): Tune for it. ++ * config/aarch64/aarch64-tune.md: Regenerate. ++ ++2015-04-10 Michael Collison ++ ++ Backport from trunk r218145, r218146, r219472. ++ ++ 2015-01-12 Kyrylo Tkachov ++ ++ * config/arm/arm.c (arm_cortex_a12_tune): Update entries to match ++ Cortex-A17 tuning parameters. ++ * config/arm/arm-cores.def (cortex-a12): Schedule for cortex-a17. ++ ++ 2014-11-28 Kyrylo Tkachov ++ ++ * config/arm/arm.md (generic_sched): Specify cortexa17 in 'no' list. ++ Include cortex-a17.md. ++ * config/arm/arm.c (arm_issue_rate): Specify 2 for cortexa17. ++ * config/arm/arm-cores.def (cortex-a17): New entry. ++ * config/arm/arm-tables.opt: Regenerate. ++ * config/arm/arm-tune.md: Regenerate. ++ * config/arm/bpabi.h (BE8_LINK_SPEC): Specify mcpu=cortex-a17. ++ * config/arm/cortex-a17.md: New file. ++ * config/arm/cortex-a17-neon.md: New file. ++ * config/arm/driver-arm.c (arm_cpu_table): Add entry for cortex-a17. ++ * config/arm/t-aprofile: Add cortex-a17 entries to MULTILIB_MATCHES. ++ ++ 2014-11-28 Kyrylo Tkachov ++ ++ * config/arm/arm-cores.def (cortex-a17.cortex-a7): New entry. ++ * config/arm/arm-tables.opt: Regenerate. ++ * config/arm/arm-tune.md: Regenerate. ++ * config/arm/bpabi.h (BE8_LINK_SPEC): Add mcpu=cortex-a17.cortex-a7. ++ * config/arm/t-aprofile: Add cortex-a17.cortex-a7 entry to ++ MULTILIB_MATCHES. ++ ++2015-04-09 Yvan Roux ++ ++ Fix partial backport done at r221911. ++ * gcc/config/aarch64/aarch64.c: Fix cost tables for APM XGene-1 ++ ++2015-04-09 Kugan Vivekanandarajah ++ ++ Backport from trunk r219745. ++ 2015-01-16 Kyrylo Tkachov ++ Ramana Radhakrishnan ++ ++ PR target/64263 ++ * config/aarch64/aarch64.md (*movsi_aarch64): Don't split if the ++ destination is not a GP reg. ++ (*movdi_aarch64): Likewise. ++ ++2015-04-09 Kugan Vivekanandarajah ++ ++ Backport from trunk r219578. ++ 2015-01-14 Joey Ye ++ ++ * config/arm/arm.c (arm_compute_save_reg_mask): ++ Do not save lr in case of tail call. ++ * config/arm/thumb2.md (*thumb2_pop_single): New pattern. ++ ++2015-04-09 Kugan Vivekanandarajah ++ ++ Backport from trunk r219544. ++ 2015-01-13 Renlin Li ++ ++ * config/arm/arm.h (CLZ_DEFINED_VALUE_AT_ZERO): Return 2. ++ (CTZ_DEFINED_VALUE_AT_ZERO): Ditto. ++ ++2015-04-08 Charles Baylis ++ ++ Backport from trunk r215567, r216672. ++ 2014-10-24 Charles Baylis ++ ++ * config/aarch64/arm_neon.h (__LD2_LANE_FUNC): Rewrite using builtins, ++ update uses to use new macro arguments. ++ (__LD3_LANE_FUNC): Likewise. ++ (__LD4_LANE_FUNC): Likewise. ++ ++ 2014-10-24 Charles Baylis ++ ++ * config/aarch64/aarch64-builtins.c ++ (aarch64_types_loadstruct_lane_qualifiers): Define. ++ * config/aarch64/aarch64-simd-builtins.def (ld2_lane, ld3_lane, ++ ld4_lane): New builtins. ++ * config/aarch64/aarch64-simd.md (aarch64_vec_load_lanesoi_lane): ++ New pattern. ++ (aarch64_vec_load_lanesci_lane): Likewise. ++ (aarch64_vec_load_lanesxi_lane): Likewise. ++ (aarch64_ld2_lane): New expand. ++ (aarch64_ld3_lane): Likewise. ++ (aarch64_ld4_lane): Likewise. ++ * config/aarch64/aarch64.md (define_c_enum "unspec"): Add ++ UNSPEC_LD2_LANE, UNSPEC_LD3_LANE, UNSPEC_LD4_LANE. ++ ++2015-04-07 Michael Collison ++ ++ Backport from trunk r219656, r219657, r219659, r219661, r219679. ++ 2015-01-15 Philipp Tomsich ++ ++ * config/aarch64/aarch64-cores.def (xgene1): Update/add the ++ xgene1 (APM XGene-1) core definition. ++ * gcc/config/aarch64/aarch64.c: Add cost tables for APM XGene-1 ++ * config/arm/aarch-cost-tables.h: Add cost tables for APM XGene-1 ++ * doc/invoke.texi: Document -mcpu=xgene1. ++ ++ 2015-01-15 Philipp Tomsich ++ ++ * config/aarch64/aarch64.md: Include xgene1.md. ++ * config/aarch64/xgene1.md: New file. ++ ++ 2015-01-15 Philipp Tomsich ++ ++ * config/arm/arm.md (generic_sched): Specify xgene1 in 'no' list. ++ Include xgene1.md. ++ * config/arm/arm.c (arm_issue_rate): Specify 4 for xgene1. ++ * config/arm/arm-cores.def (xgene1): New entry. ++ * config/arm/arm-tables.opt: Regenerate. ++ * config/arm/arm-tune.md: Regenerate. ++ * config/arm/bpabi.h (BE8_LINK_SPEC): Specify mcpu=xgene1. ++ ++ 2015-01-15 Richard Earnshaw ++ ++ * arm.c (arm_xgene_tune): Add default initializer for instruction ++ fusion. ++ ++2015-04-07 Yvan Roux ++ ++ Backport from trunk r217062, r217646, r218658. ++ 2014-12-12 Zhenqiang Chen ++ ++ PR rtl-optimization/63917 ++ * ifcvt.c (cc_in_cond): New function. ++ (end_ifcvt_sequence): Make sure new generated insns do not clobber CC. ++ (noce_process_if_block, check_cond_move_block): Check CC references. ++ ++ 2014-11-17 Zhenqiang Chen ++ ++ * ifcvt.c (HAVE_cbranchcc4): Define. ++ (noce_emit_cmove, noce_get_alt_condition, noce_get_condition): ++ Use HAVE_cbranchcc4. ++ ++ 2014-11-04 Zhenqiang Chen ++ ++ Revert: ++ 2014-11-03 Zhenqiang Chen ++ * ifcvt.c (noce_emit_cmove, noce_get_alt_condition, noce_get_condition): ++ Allow CC mode if HAVE_cbranchcc4. ++ ++2015-04-02 Maxim Kuvyrkov ++ ++ Fix testcase backported from trunk ++ ++ * gcc/testsuite/gcc.dg/pr64935-1.c: Ignore warnings that can't be ++ disabled with not-yet-existing -Wno-shift-count-overflow. ++ ++2015-04-02 Yvan Roux ++ ++ Backport from trunk r218958, r218960, r218961. ++ 2014-12-19 Alan Lawrence ++ ++ * config/aarch64/aarch64.c (_one_cmpl3): ++ Reparameterize to... ++ (_one_cmpl3): with extra SIMD-register variant. ++ (xor_one_cmpl3): New define_insn_and_split. ++ ++ * config/aarch64/iterators.md (NLOGICAL): New define_code_iterator. ++ ++ 2014-12-19 Alan Lawrence ++ ++ * config/aarch64/aarch64.md (3, one_cmpl2): ++ Add SIMD-register variant. ++ * config/aarch64/iterators.md (Vbtype): Add value for SI. ++ ++ 2014-12-19 Alan Lawrence ++ ++ * config/aarch64/aarch64.md (subdi3, adddi3_aarch64): Don't penalize ++ SIMD reg variant. ++ ++2015-04-02 Yvan Roux ++ ++ Backport from trunk r218897. ++ 2014-12-19 Kyrylo Tkachov ++ ++ * doc/invoke.texi (ARM options): Remove mention of Advanced RISC ++ Machines. ++ ++2015-04-02 Yvan Roux ++ ++ Backport from trunk r218895. ++ 2014-12-19 Xingxing Pan ++ ++ * config/arm/cortex-a9-neon.md (cortex_a9_neon_vmov): Change ++ reservation to cortex_a9_neon_dp. ++ ++2015-04-02 Yvan Roux ++ ++ Backport from trunk r218530. ++ 2014-12-09 Alan Lawrence ++ ++ * config/aarch64/aarch64.md (absdi2): Remove scratch operand by ++ earlyclobbering result operand. ++ ++ * config/aarch64/aarch64-builtins.c (aarch64_types_unop_qualifiers): ++ Remove final qualifier_internal. ++ (aarch64_fold_builtin): Stop folding abs builtins, except on floats. ++ ++2015-04-02 Yvan Roux ++ ++ Backport from trunk r218526. ++ 2014-12-09 Wilco Dijkstra ++ ++ * gcc/config/aarch64/aarch64-protos.h (tune-params): Add reasociation ++ tuning parameters. ++ * gcc/config/aarch64/aarch64.c (TARGET_SCHED_REASSOCIATION_WIDTH): ++ Define. ++ (aarch64_reassociation_width): New function. ++ (generic_tunings): Add reassociation tuning parameters. ++ (cortexa53_tunings): Likewise. ++ (cortexa57_tunings): Likewise. ++ (thunderx_tunings): Likewise. ++ ++2015-04-02 Yvan Roux ++ ++ Backport from trunk r218866. ++ 2014-12-18 Wilco Dijkstra ++ ++ * gcc/config/aarch64/aarch64.c (TARGET_MIN_DIVISIONS_FOR_RECIP_MUL): ++ Define. ++ (aarch64_min_divisions_for_recip_mul): New function. ++ ++2015-04-02 Yvan Roux ++ ++ Backport from trunk r218867, r218868. ++ 2014-12-18 Alan Lawrence ++ ++ * config/aarch64/aarch64-simd.md (aarch64_lshr_simddi): Handle shift ++ by 64 by moving const0_rtx. ++ (aarch64_ushr_simddi): Delete. ++ ++ * config/aarch64/aarch64.md (enum unspec): Delete UNSPEC_USHR64. ++ ++ 2014-12-18 Alan Lawrence ++ ++ * config/aarch64/aarch64.md (enum "unspec"): Remove UNSPEC_SSHR64. ++ ++ * config/aarch64/aarch64-simd.md (aarch64_ashr_simddi): Change shift ++ amount to 63 if was 64. ++ (aarch64_sshr_simddi): Remove. ++ ++2015-04-02 Yvan Roux ++ ++ Backport from trunk r218855. ++ 2014-12-18 Bin Cheng ++ ++ PR tree-optimization/62178 ++ * tree-ssa-loop-ivopts.c (cheaper_cost_with_cand): New function. ++ (iv_ca_replace): New function. ++ (try_improve_iv_set): New parameter try_replace_p. ++ Break local optimal fixed-point by calling iv_ca_replace. ++ (find_optimal_iv_set_1): Pass new argument to try_improve_iv_set. ++ ++2015-04-02 Yvan Roux ++ ++ Backport from trunk r218829. ++ 2014-12-17 James Greenhalgh ++ ++ * config/aarch64/aarch64.md (generic_sched): Delete it. ++ ++2015-03-27 Michael Collison ++ ++ Backport from trunk r218432, r218635, r219470. ++ ++ 2015-01-12 Kyrylo Tkachov ++ ++ * config/arm/arm-protos.h (tune_params): Add fuseable_ops field. ++ * config/arm/arm.c (arm_macro_fusion_p): New function. ++ (arm_macro_fusion_pair_p): Likewise. ++ (TARGET_SCHED_MACRO_FUSION_P): Define. ++ (TARGET_SCHED_MACRO_FUSION_PAIR_P): Likewise. ++ (ARM_FUSE_NOTHING): Likewise. ++ (ARM_FUSE_MOVW_MOVT): Likewise. ++ (arm_slowmul_tune, arm_fastmul_tune, arm_strongarm_tune, ++ arm_xscale_tune, arm_9e_tune, arm_v6t2_tune, arm_cortex_tune, ++ arm_cortex_a8_tune, arm_cortex_a7_tune, arm_cortex_a15_tune, ++ arm_cortex_a53_tune, arm_cortex_a57_tune, arm_cortex_a9_tune, ++ arm_cortex_a12_tune, arm_v7m_tune, arm_v6m_tune, arm_fa726te_tune ++ arm_cortex_a5_tune): Specify fuseable_ops value. ++ ++ 2014-12-11 Renlin Li ++ ++ * config/aarch64/aarch64-cores.def: Change all AARCH64_FL_FPSIMD to ++ AARCH64_FL_FOR_ARCH8. ++ * config/aarch64/aarch64.c (all_cores): Use FLAGS from ++ aarch64-cores.def file only. ++ ++ 2014-12-05 Renlin Li ++ ++ * config/aarch64/aarch64-opts.h (AARCH64_CORE): Rename IDENT to SCHED. ++ * config/aarch64/aarch64.h (AARCH64_CORE): Likewise. ++ * config/aarch64/aarch64.c (AARCH64_CORE): Rename X to IDENT, ++ IDENT to SCHED. ++ ++2015-03-24 Maxim Kuvyrkov ++ ++ Backport from trunk r210736, r210737, r210744, r210746, r210747, ++ r210845, r213708, r213709, r216620, r216621, r216622, r216623, ++ r216624, r219787, r219789, r219893, r220316, r220808. ++ ++ 2015-02-19 Maxim Kuvyrkov ++ ++ * haifa-sched.c (enum rfs_decision, rfs_str): Remove RFS_DEBUG. ++ (rank_for_schedule_debug): Update. ++ (ready_sort): Make static. Move sorting logic to ... ++ (ready_sort_debug, ready_sort_real): New static functions. ++ (schedule_block): Sort both debug insns and real insns in preparation ++ for ready list trimming. Improve debug output. ++ * sched-int.h (ready_sort): Remove global declaration. ++ ++ 2015-02-01 Maxim Kuvyrkov ++ ++ * haifa-sched.c (INSN_RFS_DEBUG_ORIG_ORDER): New access macro. ++ (rank_for_schedule_debug): Split from ... ++ (rank_for_schedule): ... this. ++ (ready_sort): Sort DEBUG_INSNs separately from normal INSNs. ++ * sched-int.h (struct _haifa_insn_data): New field rfs_debug_orig_order. ++ ++ 2015-01-20 Maxim Kuvyrkov ++ ++ * config/arm/arm-protos.h (enum arm_sched_autopref): New constants. ++ (struct tune_params): Use the enum. ++ * arm.c (arm_*_tune): Update. ++ (arm_option_override): Update. ++ ++ 2015-01-17 Maxim Kuvyrkov ++ ++ * config/arm/arm-protos.h (struct tune_params): New field ++ sched_autopref_queue_depth. ++ * config/arm/arm.c (sched-int.h): Include header. ++ (arm_first_cycle_multipass_dfa_lookahead_guard,) ++ (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD): Define hook. ++ (arm_slowmul_tune, arm_fastmul_tune, arm_strongarm_tune,) ++ (arm_xscale_tune, arm_9e_tune, arm_v6t2_tune, arm_cortex_tune,) ++ (arm_cortex_a8_tune, arm_cortex_a7_tune, arm_cortex_a15_tune,) ++ (arm_cortex_a53_tune, arm_cortex_a57_tune, arm_xgene1_tune,) ++ (arm_cortex_a5_tune, arm_cortex_a9_tune, arm_cortex_a12_tune,) ++ (arm_v7m_tune, arm_cortex_m7_tune, arm_v6m_tune, arm_fa726te_tune): ++ Specify sched_autopref_queue_depth value. Enabled for A15 and A57. ++ * config/arm/t-arm (arm.o): Update. ++ * haifa-sched.c (update_insn_after_change): Update. ++ (rank_for_schedule): Use auto-prefetcher model, if requested. ++ (autopref_multipass_init): New static function. ++ (autopref_rank_for_schedule): New rank_for_schedule heuristic. ++ (autopref_multipass_dfa_lookahead_guard_started_dump_p): New static ++ variable for debug dumps. ++ (autopref_multipass_dfa_lookahead_guard_1): New static helper function. ++ (autopref_multipass_dfa_lookahead_guard): New global function that ++ implements TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD hook. ++ (init_h_i_d): Update. ++ * params.def (PARAM_SCHED_AUTOPREF_QUEUE_DEPTH): New tuning knob. ++ * sched-int.h (enum autopref_multipass_data_status): New const enum. ++ (autopref_multipass_data_): Structure for auto-prefetcher data. ++ (autopref_multipass_data_def, autopref_multipass_data_t): New typedefs. ++ (struct _haifa_insn_data:autopref_multipass_data): New field. ++ (INSN_AUTOPREF_MULTIPASS_DATA): New access macro. ++ (autopref_multipass_dfa_lookahead_guard): Declare. ++ ++ 2015-01-17 Maxim Kuvyrkov ++ ++ * config/aarch64/aarch64.c ++ (aarch64_sched_first_cycle_multipass_dfa_lookahead): Implement hook. ++ (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Define. ++ * config/arm/arm.c ++ (arm_first_cycle_multipass_dfa_lookahead): Implement hook. ++ (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Define. ++ ++ 2014-10-24 Maxim Kuvyrkov ++ ++ * rtlanal.c (get_base_term): Handle SCRATCH. ++ ++ 2014-10-24 Maxim Kuvyrkov ++ ++ * haifa-sched.c (sched_init): Disable max_issue when scheduling for ++ register pressure. ++ ++ 2014-10-24 Maxim Kuvyrkov ++ ++ * haifa-sched.c (cached_first_cycle_multipass_dfa_lookahead,) ++ (cached_issue_rate): Remove. Use dfa_lookahead and issue_rate instead. ++ (max_issue, choose_ready, sched_init): Update. ++ ++ 2014-10-24 Maxim Kuvyrkov ++ ++ * sched-int.h (struct _haifa_insn_data:last_rfs_win): New field. ++ * haifa-sched.c (INSN_LAST_RFS_WIN): New access macro. ++ (rfs_result): Set INSN_LAST_RFS_WIN. Update signature. ++ (rank_for_schedule): Update calls to rfs_result to pass new parameters. ++ (print_rank_for_schedule_stats): Print out elements of ready list that ++ ended up on their respective places due to each of the sorting ++ heuristics. ++ (ready_sort): Update. ++ (debug_ready_list_1): Improve printout for SCHED_PRESSURE_MODEL. ++ (schedule_block): Update. ++ ++ 2014-10-24 Maxim Kuvyrkov ++ ++ * haifa-sched.c (sched_class_regs_num, call_used_regs_num): New static ++ arrays. Use sched_class_regs_num instead of ira_class_hard_regs_num. ++ (print_curr_reg_pressure, setup_insn_reg_pressure_info,) ++ (model_update_pressure, model_spill_cost): Use sched_class_regs_num. ++ (model_start_schedule): Update. ++ (sched_pressure_start_bb): New static function. Calculate ++ sched_class_regs_num. ++ (schedule_block): Use it. ++ (alloc_global_sched_pressure_data): Calculate call_used_regs_num. ++ ++ 2014-08-07 Maxim Kuvyrkov ++ ++ * haifa-sched.c (SCHED_SORT): Delete. Macro used exactly once. ++ (enum rfs_decition:RFS_*): New constants wrapped in an enum. ++ (rfs_str): String corresponding to RFS_* constants. ++ (rank_for_schedule_stats_t): New typedef. ++ (rank_for_schedule_stats): New static variable. ++ (rfs_result): New static function. ++ (rank_for_schedule): Track statistics for deciding heuristics. ++ (rank_for_schedule_stats_diff, print_rank_for_schedule_stats): New ++ static functions. ++ (ready_sort): Use them for debug printouts. ++ (schedule_block): Init statistics state. Print statistics on ++ rank_for_schedule decisions. ++ ++ 2014-08-07 Maxim Kuvyrkov ++ ++ * haifa-sched.c (rank_for_schedule): Fix INSN_TICK-based heuristics. ++ ++ 2014-05-23 Maxim Kuvyrkov ++ ++ Fix bootstrap error on ia64 ++ * config/ia64/ia64.c (ia64_first_cycle_multipass_dfa_lookahead_guard): ++ Return default value. ++ ++ 2014-05-22 Maxim Kuvyrkov ++ ++ Cleanup and improve multipass_dfa_lookahead_guard ++ * config/i386/i386.c (core2i7_first_cycle_multipass_filter_ready_try,) ++ (core2i7_first_cycle_multipass_begin,) ++ (core2i7_first_cycle_multipass_issue,) ++ (core2i7_first_cycle_multipass_backtrack): Update signature. ++ * config/ia64/ia64.c ++ (ia64_first_cycle_multipass_dfa_lookahead_guard_spec): Remove. ++ (ia64_first_cycle_multipass_dfa_lookahead_guard): Update signature. ++ (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC): Remove ++ hook definition. ++ (ia64_first_cycle_multipass_dfa_lookahead_guard): Merge logic from ++ ia64_first_cycle_multipass_dfa_lookahead_guard_spec. Update return ++ values. ++ * config/rs6000/rs6000.c (rs6000_use_sched_lookahead_guard): Update ++ return values. ++ * doc/tm.texi: Regenerate. ++ * doc/tm.texi.in ++ (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC): Remove. ++ * haifa-sched.c (ready_try): Make signed to allow negative values. ++ (rebug_ready_list_1): Update. ++ (choose_ready): Simplify. ++ (sched_extend_ready_list): Update. ++ ++ 2014-05-22 Maxim Kuvyrkov ++ ++ Remove IA64 speculation tweaking flags ++ * config/ia64/ia64.c (ia64_set_sched_flags): Delete handling of ++ speculation tuning flags. ++ (msched-prefer-non-data-spec-insns,) ++ (msched-prefer-non-control-spec-insns): Obsolete options. ++ * haifa-sched.c (choose_ready): Remove handling of ++ PREFER_NON_CONTROL_SPEC and PREFER_NON_DATA_SPEC. ++ * sched-int.h (enum SPEC_SCHED_FLAGS): Remove PREFER_NON_CONTROL_SPEC ++ and PREFER_NON_DATA_SPEC. ++ * sel-sched.c (process_spec_exprs): Remove handling of ++ PREFER_NON_CONTROL_SPEC and PREFER_NON_DATA_SPEC. ++ ++ 2014-05-22 Maxim Kuvyrkov ++ ++ Improve scheduling debug output ++ * haifa-sched.c (debug_ready_list): Remove unnecessary prototype. ++ (advance_one_cycle): Update. ++ (schedule_insn, queue_to_ready): Add debug printouts. ++ (debug_ready_list_1): New static function. ++ (debug_ready_list): Update. ++ (max_issue): Add debug printouts. ++ (dump_insn_stream): New static function. ++ (schedule_block): Use it. Also better indent printouts. ++ ++ 2014-05-22 Maxim Kuvyrkov ++ ++ Fix sched_insn debug counter ++ * haifa-sched.c (schedule_insn): Update. ++ (struct haifa_saved_data): Add nonscheduled_insns_begin. ++ (save_backtrack_point, restore_backtrack_point): Update. ++ (first_nonscheduled_insn): New static function. ++ (queue_to_ready, choose_ready): Use it. ++ (schedule_block): Init nonscheduled_insns_begin. ++ (sched_emit_insn): Update. ++ ++2015-03-18 Michael Collison ++ ++ Backport from trunk r218007, r218010, r218012, r218013, r218014, ++ r218525. ++ ++ 2014-12-09 Andrew Pinski apinski@cavium.com ++ Kyrylo Tkachov kyrylo.tkachov@arm.com ++ ++ * config/aarch64/aarch64.c (AARCH64_FUSE_CMP_BRANCH): New define. ++ (thunderx_tunings): Add AARCH64_FUSE_CMP_BRANCH to fuseable_ops. ++ (aarch_macro_fusion_pair_p): Handle AARCH64_FUSE_CMP_BRANCH. ++ ++ 2014-11-24 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64.c (AARCH64_FUSE_ADRP_LDR): Define. ++ (cortexa53_tunings): Specify AARCH64_FUSE_ADRP_LDR in fuseable_ops. ++ (aarch_macro_fusion_pair_p): Handle AARCH64_FUSE_ADRP_LDR. ++ ++ 2014-11-24 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64.c (AARCH64_FUSE_MOVK_MOVK): Define. ++ (cortexa53_tunings): Specify AARCH64_FUSE_MOVK_MOVK in fuseable_ops. ++ (cortexa57_tunings): Likewise. ++ (aarch_macro_fusion_pair_p): Handle AARCH64_FUSE_MOVK_MOVK. ++ ++ 2014-11-24 Kyrylo Tkachov ++ ++ * sched-deps.c (sched_macro_fuse_insns): Do not check modified_in_p ++ in the not conditional jump case. ++ * doc/tm.texi (TARGET_SCHED_MACRO_FUSION_PAIR_P): Update description. ++ * target.def (TARGET_SCHED_MACRO_FUSION_PAIR_P): Update description. ++ ++ 2014-11-24 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64.c: Include tm-constrs.h ++ (AARCH64_FUSE_ADRP_ADD): Define. ++ (cortexa57_tunings): Add AARCH64_FUSE_ADRP_ADD to fuseable_ops. ++ (cortexa53_tunings): Likewise. ++ (aarch_macro_fusion_pair_p): Handle AARCH64_FUSE_ADRP_ADD. ++ ++ 2014-11-24 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64-protos.h (struct tune_params): Add ++ fuseable_ops field. ++ * config/aarch64/aarch64.c (generic_tunings): Specify fuseable_ops. ++ (cortexa53_tunings): Likewise. ++ (cortexa57_tunings): Likewise. ++ (thunderx_tunings): Likewise. ++ (aarch64_macro_fusion_p): New function. ++ (aarch_macro_fusion_pair_p): Likewise. ++ (TARGET_SCHED_MACRO_FUSION_P): Define. ++ (TARGET_SCHED_MACRO_FUSION_PAIR_P): Likewise. ++ (AARCH64_FUSE_MOV_MOVK): Likewise. ++ (AARCH64_FUSE_NOTHING): Likewise. ++ ++2015-03-12 Yvan Roux ++ ++ * LINARO-VERSION: Bump version. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ * LINARO-VERSION: Update. ++ ++2015-03-10 Michael Collison ++ ++ Backport from trunk r218503. ++ 2014-12-08 Sandra Loosemore ++ ++ * simplify-rtx.c (simplify_relational_operation_1): Handle ++ simplification identities for BICS patterns. ++ ++2015-03-10 Michael Collison ++ ++ Backport from trunk r220751. ++ 2015-02-17 James Greenhalgh ++ ++ * haifa-sched.c (recompute_todo_spec): Treat SCHED_GROUP_P ++ as forcing a HARD_DEP between instructions, thereby ++ disallowing rewriting to break dependencies. ++ ++2015-03-10 Michael Collison ++ ++ Backport from trunk r217725. ++ 2014-11-18 Kyrylo Tkachov ++ ++ * config/arm/cortex-a15-neon.md (cortex_a15_vfp_to_from_gp): ++ Split into... ++ (cortex_a15_gp_to_vfp): ...This. ++ (cortex_a15_fp_to_gp): ...And this. ++ Define and comment bypass from vfp operations to fp->gp moves. ++ ++2015-03-10 Michael Collison ++ ++ Backport from trunk r217780. ++ 2014-11-19 Wilco Dijkstra ++ ++ PR target/61915 ++ * config/aarch64/aarch64.c (generic_regmove_cost): Increase FP move ++ cost. ++ ++2015-03-10 Michael Collison ++ ++ Backport from trunk r217938. ++ 2014-11-21 Jiong Wang ++ ++ * config/aarch64/iterators.md (VS): New mode iterator. ++ (vsi2qi): New mode attribute. ++ (VSI2QI): Likewise. ++ * config/aarch64/aarch64-simd-builtins.def: New entry for ctz. ++ * config/aarch64/aarch64-simd.md (ctz2): New pattern for ctz. ++ * config/aarch64/aarch64-builtins.c ++ (aarch64_builtin_vectorized_function): Support BUILT_IN_CTZ. ++ ++2015-03-10 Michael Collison ++ ++ Backport from trunk r217852. ++ 2014-11-20 Tejas Belagod ++ ++ * config/aarch64/aarch64-protos.h (aarch64_classify_symbol): ++ Fixup prototype. ++ * config/aarch64/aarch64.c (aarch64_expand_mov_immediate, ++ aarch64_cannot_force_const_mem, aarch64_classify_address, ++ aarch64_classify_symbolic_expression): Fixup call to ++ aarch64_classify_symbol. ++ (aarch64_classify_symbol): Add range-checking for ++ symbol + offset addressing for tiny and small models. ++ ++2015-03-06 Christophe Lyon ++ ++ Backport from trunk r217707. ++ 2014-11-18 Christophe Lyon ++ ++ * config/arm/neon-testgen.ml (emit_prologue): Handle new ++ compile_test_optim argument. ++ (emit_automatics): Rename to emit_variables. Support variable ++ indentation of its output. ++ (compile_test_optim): New function. ++ (test_intrinsic): Call compile_test_optim. ++ * config/arm/neon.ml (features): Add Compiler_optim. ++ (ops): Add Compiler_optim feature to Vbic and Vorn. ++ (type_in_crypto_only): Replace 'or' by '||'. ++ (reinterp): Likewise. ++ (reinterpq): Likewise. ++ ++2015-03-05 Yvan Roux ++ ++ Backport from trunk r212011, r214942, r214957, r215012, r215016, r218115, ++ r218733, r218746, r220491. ++ 2015-02-06 Sebastian Pop ++ Brian Rzycki ++ ++ PR tree-optimization/64878 ++ * tree-ssa-threadedge.c: Include tree-ssa-loop.h. ++ (fsm_find_control_statement_thread_paths): Add parameter seen_loop_phi. ++ Stop recursion at loop phi nodes after having visited a loop phi node. ++ ++ 2014-12-15 Richard Biener ++ ++ PR middle-end/64246 ++ * cfgloop.c (mark_loop_for_removal): Make safe against multiple ++ invocations on the same loop. ++ ++ 2014-12-15 Richard Biener ++ ++ PR tree-optimization/64284 ++ * tree-ssa-threadupdate.c (duplicate_seme_region): Mark ++ the loop for removal if we copied the loop header. ++ ++ 2014-11-27 Richard Biener ++ ++ PR tree-optimization/64083 ++ * tree-ssa-threadupdate.c (thread_through_all_blocks): Do not ++ forcibly mark loop for removal the wrong way. ++ ++ 2014-09-08 Richard Biener ++ ++ PR ipa/63196 ++ * tree-inline.c (copy_loops): The source loop header should ++ always be non-NULL. ++ (tree_function_versioning): If loops need fixup after removing ++ unreachable blocks fix them. ++ * omp-low.c (simd_clone_adjust): Do not add incr block to ++ loop under construction. ++ ++ 2014-09-08 Richard Biener ++ ++ PR bootstrap/63204 ++ * cfgloop.c (mark_loop_for_removal): Track former header ++ unconditionally. ++ * cfgloop.h (struct loop): Add former_header member unconditionally. ++ * loop-init.c (fix_loop_structure): Enable bogus loop removal ++ diagnostic unconditionally. ++ ++ 2014-09-05 Richard Biener ++ ++ * cfgloop.c (mark_loop_for_removal): Record former header ++ when ENABLE_CHECKING. ++ * cfgloop.h (strut loop): Add former_header member when ++ ENABLE_CHECKING. ++ * loop-init.c (fix_loop_structure): Sanity check loops ++ marked for removal if they re-appeared. ++ ++ 2014-09-05 Richard Biener ++ ++ * cfgloop.c (mark_loop_for_removal): New function. ++ * cfgloop.h (mark_loop_for_removal): Declare. ++ * cfghooks.c (delete_basic_block): Use mark_loop_for_removal. ++ (merge_blocks): Likewise. ++ (duplicate_block): Likewise. ++ * except.c (sjlj_emit_dispatch_table): Likewise. ++ * tree-eh.c (cleanup_empty_eh_merge_phis): Likewise. ++ * tree-ssa-threadupdate.c (ssa_redirect_edges): Likewise. ++ (thread_through_loop_header): Likewise. ++ ++ 2014-06-26 Richard Biener ++ ++ PR tree-optimization/61607 ++ * tree-ssa-threadupdate.c (ssa_redirect_edges): Cancel the ++ loop if we redirected its latch edge. ++ (thread_block_1): Do not cancel loops prematurely. ++ ++2015-03-05 Yvan Roux ++ ++ Backport from trunk r220860. ++ 2015-02-20 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64.md (*aarch64_lshr_sisd_or_int_3): ++ Mark operand 0 as earlyclobber in 2nd alternative. ++ (1st define_split below *aarch64_lshr_sisd_or_int_3): ++ Write negated shift amount into QI lowpart operand 0 and use it ++ in the shift step. ++ (2nd define_split below *aarch64_lshr_sisd_or_int_3): Likewise. ++ ++2015-03-04 Prathamesh Kulkarni ++ ++ Backport from trunk r215722. ++ 2014-09-30 James Greenhalgh ++ ++ * config/aarch64/aarch64-simd-builtins.def (sqdmull_laneq): Expand ++ iterator. ++ * config/aarch64/aarch64-simd.md ++ (aarch64_sqdmull_laneq): Expand iterator. ++ * config/aarch64/arm_neon.h (vqdmullh_laneq_s16): New. ++ (vqdmulls_lane_s32): Fix return type. ++ (vqdmulls_laneq_s32): New. ++ ++2015-03-04 Prathamesh Kulkarni ++ ++ Backport from trunk r215612. ++ 2014-09-25 James Greenhalgh ++ ++ * config/aarch64/aarch64-protos.h (aarch64_simd_const_bounds): Delete. ++ * config/aarch64/aarch64-simd.md (aarch64_qshl): Use ++ new predicates. ++ (aarch64_shll2_n): Likewise. ++ (aarch64_shr_n): Likewise. ++ (aarch64_sra_n: Likewise. ++ (aarch64_si_n): Likewise. ++ (aarch64_qshl_n): Likewise. ++ * config/aarch64/aarch64.c (aarch64_simd_const_bounds): Delete. ++ * config/aarch64/iterators.md (ve_mode): New. ++ (offsetlr): Remap to infix text for use in new predicates. ++ * config/aarch64/predicates.md (aarch64_simd_shift_imm_qi): New. ++ (aarch64_simd_shift_imm_hi): Likewise. ++ (aarch64_simd_shift_imm_si): Likewise. ++ (aarch64_simd_shift_imm_di): Likewise. ++ (aarch64_simd_shift_imm_offset_qi): Likewise. ++ (aarch64_simd_shift_imm_offset_hi): Likewise. ++ (aarch64_simd_shift_imm_offset_si): Likewise. ++ (aarch64_simd_shift_imm_offset_di): Likewise. ++ (aarch64_simd_shift_imm_bitsize_qi): Likewise. ++ (aarch64_simd_shift_imm_bitsize_hi): Likewise. ++ (aarch64_simd_shift_imm_bitsize_si): Likewise. ++ (aarch64_simd_shift_imm_bitsize_di): Likewise. ++ ++2015-02-15 Michael Collison ++ ++ * LINARO-VERSION: Bump version. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ * LINARO-VERSION: Update. ++ ++2015-02-10 Michael Collison ++ ++ Backport from trunk r217175, r217185, r217186. ++ 2014-11-06 Hale Wang ++ ++ * config/arm/arm-cores.def: Add support for ++ -mcpu=cortex-m0.small-multiply,cortex-m0plus.small-multiply, ++ cortex-m1.small-multiply. ++ * config/arm/arm-tables.opt: Regenerate. ++ * config/arm/arm-tune.md: Regenerate. ++ * config/arm/arm.c: Update the rtx-costs for MUL. ++ * config/arm/bpabi.h: Handle ++ -mcpu=cortex-m0.small-multiply,cortex-m0plus.small-multiply, ++ cortex-m1.small-multiply. ++ * doc/invoke.texi: Document ++ -mcpu=cortex-m0.small-multiply,cortex-m0plus.small-multiply, ++ cortex-m1.small-multiply. ++ ++2015-02-10 Michael Collison ++ ++ Backport from trunk r217091. ++ 2014-11-04 Jiong Wang ++ 2014-11-04 Wilco Dijkstra ++ ++ PR target/63293 ++ * config/aarch64/aarch64.c (aarch64_expand_epiloue): Add barriers before ++ stack adjustment. ++ ++2015-02-10 Michael Collison ++ ++ Backport from trunk r217118. ++ 2014-11-05 Alex Velenko ++ ++ * simplify-rtx.c (simplify_binary_operation_1): Div check added. ++ * rtl.h (SUBREG_P): New macro added. ++ ++2015-02-10 Michael Collison ++ ++ Backport from trunk r217215. ++ 2014-11-07 Jiong Wang ++ 2014-11-07 Richard Biener ++ ++ PR tree-optimization/63676 ++ * gimple-fold.c (fold_gimple_assign): Do not fold node when ++ TREE_CLOBBER_P be true. ++ ++2015-02-10 Michael Collison ++ ++ Backport from trunk r219583. ++ 2015-01-14 Kyrylo Tkachov ++ ++ PR target/64460 ++ * config/arm/arm.md (*_multsi): Set 'shift' to 2. ++ (*_shiftsi): Set 'shift' attr to 3. ++ ++2015-02-10 Michael Collison ++ ++ Backport from trunk r217430. ++ 2014-11-12 Ramana Radhakrishnan ++ ++ * config/arm/arm.c (*_shiftsi): Fix typo. ++ ++2015-02-10 Michael Collison ++ ++ Backport from trunk r217431. ++ 2014-11-12 Jiong Wang ++ ++ * config/aarch64/aarch64.h (CALL_USED_REGISTERS): Mark LR as ++ caller-save. ++ (EPILOGUE_USES): Guard the check by epilogue_completed. ++ * config/aarch64/aarch64.c (aarch64_layout_frame): Explictly check for ++ LR. ++ (aarch64_can_eliminate): Check LR_REGNUM liveness. ++ ++2015-02-10 Michael Collison ++ ++ Backport from trunk r219718. ++ * expmed.c (store_bit_field_using_insv): Improve warning message. ++ Use %wu instead of HOST_WIDE_INT_PRINT_UNSIGNED. ++ ++ 2015-01-15 Jiong Wang ++ ++2015-02-10 Michael Collison ++ ++ Backport from trunk r219717. ++ 2015-01-15 Jiong Wang ++ ++ PR rtl-optimization/64011 ++ * expmed.c (store_bit_field_using_insv): Warn and truncate bitsize when ++ there is partial overflow. ++ ++2015-02-10 Michael Collison ++ ++ Backport from trunk r217331. ++ 2014-11-11 Bin Cheng ++ ++ * sched-deps.c (sched_analyze_1): Check pending list if it is not ++ less than MAX_PENDING_LIST_LENGTH. ++ (sched_analyze_2, sched_analyze_insn, deps_analyze_insn): Ditto. ++ ++2015-02-09 Michael Collison ++ ++ Backport from trunk r216779. ++ 2014-10-28 Alan Lawrence ++ ++ * expr.c (expand_expr_real_2): Remove code handling VEC_LSHIFT_EXPR. ++ * fold-const.c (const_binop): Likewise. ++ * cfgexpand.c (expand_debug_expr): Likewise. ++ * tree-inline.c (estimate_operator_cost): Likewise. ++ * tree-vect-generic.c (expand_vector_operations_1): Likewise. ++ * optabs.c (optab_for_tree_code): Likewise. ++ (expand_vec_shift_expr): Likewise, update comment. ++ * tree.def: Delete VEC_LSHIFT_EXPR, remove comment. ++ * optabs.h (expand_vec_shift_expr): Remove comment re. VEC_LSHIFT_EXPR. ++ * optabs.def: Remove vec_shl_optab. ++ * doc/md.texi: Remove references to vec_shr_m. ++ ++2015-02-09 Michael Collison ++ ++ Backport from trunk r216742. ++ 2014-10-27 Alan Lawrence ++ ++ * config/aarch64/aarch64.c (TARGET_GIMPLE_FOLD_BUILTIN): Define again. ++ * config/aarch64/aarch64-builtins.c (aarch64_gimple_fold_builtin): ++ Restore, enable for bigendian, update to use __builtin..._scal... ++ ++2015-02-09 Michael Collison ++ ++ Backport from trunk r216741. ++ 2014-10-27 Alan Lawrence ++ ++ * config/aarch64/aarch64-simd-builtins.def (reduc_smax_, reduc_smin_, ++ reduc_umax_, reduc_umin_, reduc_smax_nan_, reduc_smin_nan_): Remove. ++ (reduc_smax_scal_, reduc_smin_scal_, reduc_umax_scal_, ++ reduc_umin_scal_, reduc_smax_nan_scal_, reduc_smin_nan_scal_): New. ++ ++ * config/aarch64/aarch64-simd.md ++ (reduc__): Rename VDQV_S variant to... ++ (reduc__internal): ...this. ++ (reduc__): New (VDQ_BHSI). ++ (reduc__scal_): New (*2). ++ ++ (reduc__v2si): Combine with below, renaming... ++ (reduc__): Combine V2F with above, renaming... ++ (reduc__internal_): ...to this (VDQF). ++ ++ * config/aarch64/arm_neon.h (vmaxv_f32, vmaxv_s8, vmaxv_s16, ++ vmaxv_s32, vmaxv_u8, vmaxv_u16, vmaxv_u32, vmaxvq_f32, vmaxvq_f64, ++ vmaxvq_s8, vmaxvq_s16, vmaxvq_s32, vmaxvq_u8, vmaxvq_u16, vmaxvq_u32, ++ vmaxnmv_f32, vmaxnmvq_f32, vmaxnmvq_f64, vminv_f32, vminv_s8, ++ vminv_s16, vminv_s32, vminv_u8, vminv_u16, vminv_u32, vminvq_f32, ++ vminvq_f64, vminvq_s8, vminvq_s16, vminvq_s32, vminvq_u8, vminvq_u16, ++ vminvq_u32, vminnmv_f32, vminnmvq_f32, vminnmvq_f64): Update to use ++ __builtin_aarch64_reduc_..._scal; remove vget_lane wrapper. ++ ++2015-02-09 Michael Collison ++ ++ Backport from trunk r216738. ++ 2014-10-27 Alan Lawrence ++ ++ * config/aarch64/aarch64-simd-builtins.def ++ (reduc_splus_/VDQF, reduc_uplus_/VDQF, reduc_splus_v4sf): ++ Remove. ++ (reduc_plus_scal_, reduc_plus_scal_v4sf): New. ++ ++ * config/aarch64/aarch64-simd.md (reduc_plus_mode): Remove. ++ (reduc_splus_, reduc_uplus_, reduc_plus_scal_): New. ++ ++ (reduc_plus_mode): Change SUADDV -> UNSPEC_ADDV, rename to... ++ (aarch64_reduc_plus_internal): ...this. ++ ++ (reduc_plus_v2si): Change SUADDV -> UNSPEC_ADDV, rename to... ++ (aarch64_reduc_plus_internalv2si): ...this. ++ ++ (reduc_splus_/V2F): Rename to... ++ (aarch64_reduc_plus_internal): ...this. ++ ++ * config/aarch64/iterators.md ++ (UNSPEC_SADDV, UNSPEC_UADDV, SUADDV): Remove. ++ (UNSPEC_ADDV): New. ++ (sur): Remove elements for UNSPEC_SADDV and UNSPEC_UADDV. ++ ++ * config/aarch64/arm_neon.h (vaddv_s8, vaddv_s16, vaddv_s32, vaddv_u8, ++ vaddv_u16, vaddv_u32, vaddvq_s8, vaddvq_s16, vaddvq_s32, vaddvq_s64, ++ vaddvq_u8, vaddvq_u16, vaddvq_u32, vaddvq_u64, vaddv_f32, vaddvq_f32, ++ vaddvq_f64): Change __builtin_aarch64_reduc_[us]plus_... to ++ __builtin_aarch64_reduc_plus_scal, remove vget_lane wrapper. ++ ++2015-02-09 Michael Collison ++ ++ Backport from trunk r216737. ++ 2014-10-27 Alan Lawrence ++ ++ PR tree-optimization/61114 ++ * doc/md.texi (Standard Names): Add reduc_(plus,[us](min|max))|scal ++ optabs, and note in reduc_[us](plus|min|max) to prefer the former. ++ ++ * expr.c (expand_expr_real_2): Use reduc_..._scal if available, fall ++ back to old reduc_... BIT_FIELD_REF only if not. ++ ++ * optabs.c (optab_for_tree_code): for REDUC_(MAX,MIN,PLUS)_EXPR, ++ return the reduce-to-scalar (reduc_..._scal) optab. ++ (scalar_reduc_to_vector): New. ++ ++ * optabs.def (reduc_smax_scal_optab, reduc_smin_scal_optab, ++ reduc_plus_scal_optab, reduc_umax_scal_optab, reduc_umin_scal_optab): ++ New. ++ ++ * optabs.h (scalar_reduc_to_vector): Declare. ++ ++ * tree-vect-loop.c (vectorizable_reduction): Look for optabs reducing ++ to either scalar or vector. ++ ++2015-02-09 Michael Collison ++ ++ Backport from trunk r216736. ++ 2014-10-27 Alan Lawrence ++ ++ PR tree-optimization/61114 ++ * expr.c (expand_expr_real_2): For REDUC_{MIN,MAX,PLUS}_EXPR, add ++ extract_bit_field around optab result. ++ ++ * fold-const.c (fold_unary_loc): For REDUC_{MIN,MAX,PLUS}_EXPR, produce ++ scalar not vector. ++ ++ * tree-cfg.c (verify_gimple_assign_unary): Check result vs operand type ++ for REDUC_{MIN,MAX,PLUS}_EXPR. ++ ++ * tree-vect-loop.c (vect_analyze_loop): Update comment. ++ (vect_create_epilog_for_reduction): For direct vector reduction, use ++ result of tree code directly without extract_bit_field. ++ ++ * tree.def (REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR): Update ++ comment. ++ ++2015-02-09 Michael Collison ++ ++ Backport from trunk r216734. ++ 2014-10-27 Alan Lawrence ++ ++ * config/aarch64/aarch64.c (TARGET_GIMPLE_FOLD_BUILTIN): Comment out. ++ * config/aarch64/aarch64-builtins.c (aarch64_gimple_fold_builtin): ++ Remove using preprocessor directis. ++ ++2015-02-09 Yvan Roux ++ ++ Backport from trunk r217173, r217174, r217687. ++ 2014-11-17 Terry Guo ++ ++ * config/arm/arm.c (arm_issue_rate): Return 2 for cortex-m7. ++ * config/arm/arm.md (generic_sched): Exclude cortex-m7. ++ (generic_vfp): Likewise. ++ * config/arm/cortex-m7.md: Pipeline description for cortex-m7. ++ ++ 2014-10-06 Hale Wang ++ ++ * config/arm/arm.c: Add cortex-m7 tune. ++ * config/arm/arm-cores.def: Use cortex-m7 tune. ++ ++2015-01-15 Yvan Roux ++ ++ * LINARO-VERSION: Bump version. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ * LINARO-VERSION: Update. ++ ++2015-01-14 Yvan Roux ++ ++ Fix Linaro PR #902 ++ ++ Partial Backport from trunk r211798. ++ 2014-06-18 Radovan Obradovic ++ Tom de Vries ++ ++ * config/arm/arm.c (arm_emit_call_insn): Add IP and CC clobbers to ++ CALL_INSN_FUNCTION_USAGE. ++ ++ Backport from trunk r209800. ++ 2014-04-25 Tom de Vries ++ ++ * expr.c (clobber_reg_mode): New function. ++ * expr.h (clobber_reg): New function. ++ ++2015-01-14 Yvan Roux ++ ++ Backport from trunk r211783. ++ 2014-06-18 Charles Baylis ++ ++ * config/arm/arm.c (neon_vector_mem_operand): Allow register ++ POST_MODIFY for neon loads and stores. ++ (arm_print_operand): Output post-index register for neon loads and ++ stores. ++ ++2015-01-14 Yvan Roux ++ ++ Backport from trunk r218451. ++ 2014-12-06 James Greenhalgh ++ Sebastian Pop ++ Brian Rzycki ++ ++ PR tree-optimization/54742 ++ * params.def (max-fsm-thread-path-insns, max-fsm-thread-length, ++ max-fsm-thread-paths): New. ++ ++ * doc/invoke.texi (max-fsm-thread-path-insns, max-fsm-thread-length, ++ max-fsm-thread-paths): Documented. ++ ++ * tree-cfg.c (split_edge_bb_loc): Export. ++ * tree-cfg.h (split_edge_bb_loc): Declared extern. ++ ++ * tree-ssa-threadedge.c (simplify_control_stmt_condition): Restore the ++ original value of cond when simplification fails. ++ (fsm_find_thread_path): New. ++ (fsm_find_control_statement_thread_paths): New. ++ (thread_through_normal_block): Call find_control_statement_thread_paths. ++ ++ * tree-ssa-threadupdate.c (dump_jump_thread_path): Pretty print ++ EDGE_FSM_THREAD. ++ (verify_seme): New. ++ (duplicate_seme_region): New. ++ (thread_through_all_blocks): Generate code for EDGE_FSM_THREAD edges ++ calling duplicate_seme_region. ++ ++ * tree-ssa-threadupdate.h (jump_thread_edge_type): Add EDGE_FSM_THREAD. ++ ++2015-01-13 Michael Collison ++ ++ Backport from trunk r217394. ++ 2014-11-11 Andrew Pinski ++ ++ Bug target/61997 ++ * config.gcc (aarch64*-*-*): Set target_gtfiles to include ++ aarch64-builtins.c. ++ * config/aarch64/aarch64-builtins.c: Include gt-aarch64-builtins.h ++ at the end of the file. ++ ++2015-01-13 Michael Collison ++ ++ Backport from trunk r216267, r216547, r216548, r217072, r217192, r217405, ++ r217406, r217768. ++ 2014-11-19 Renlin Li ++ ++ * config/aarch64/aarch64.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_FP_FAST, ++ __ARM_FEATURE_FMA, __ARM_FP, __ARM_FEATURE_NUMERIC_MAXMIN, __ARM_NEON_FP. ++ ++ 2014-11-12 Tejas Belagod ++ ++ * Makefile.in (TEXI_GCC_FILES): Remove arm-acle-intrinsics.texi, ++ arm-neon-intrinsics.texi, aarch64-acle-intrinsics.texi. ++ * doc/aarch64-acle-intrinsics.texi: Remove. ++ * doc/arm-acle-intrinsics.texi: Remove. ++ * doc/arm-neon-intrinsics.texi: Remove. ++ * doc/extend.texi: Consolidate sections AArch64 intrinsics, ++ ARM NEON Intrinsics, ARM ACLE Intrinsics into one ARM C Language ++ Extension section. Add references to public ACLE specification. ++ ++ 2014-11-06 Renlin Li ++ ++ * config/aarch64/aarch64.c (aarch64_architecture_version): New. ++ (processor): New architecture_version field. ++ (aarch64_override_options): Initialize aarch64_architecture_version. ++ * config/aarch64/aarch64.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_ARCH, ++ __ARM_ARCH_PROFILE, aarch64_arch_name macro. ++ ++ 2014-11-04 Ramana Radhakrishnan ++ ++ * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Fix typo in definition ++ of __ARM_FEATURE_IDIV. ++ ++ 2014-10-22 Jiong Wang ++ ++ * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Add missing '\'. ++ ++ 2014-10-22 Renlin Li ++ ++ * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define ++ __ARM_FEATURE_IDIV__. ++ ++ 2014-10-15 Renlin Li ++ ++ * config/aarch64/aarch64.h (TARGET_CPU_CPP_BUILTINS): Define ++ __ARM_BIG_ENDIAN, __ARM_SIZEOF_MINIMAL_ENUM. Add __ARM_64BIT_STATE, ++ __ARM_ARCH_ISA_A64, __ARM_FEATURE_CLZ, __ARM_FEATURE_IDIV, ++ __ARM_FEATURE_UNALIGNED, __ARM_PCS_AAPCS64, __ARM_SIZEOF_WCHAR_T. ++ ++2015-01-13 Michael Collison ++ ++ Backport from trunk r211789, r211790, r211791, r211792, r211793, r211794, ++ r211795, r211796, r211797. ++ 2014-06-18 Charles Baylis ++ ++ * config/arm/bpabi.c (__gnu_uldivmod_helper): Remove. ++ ++ 2014-06-18 Charles Baylis ++ ++ * config/arm/bpabi-v6m.S (__aeabi_uldivmod): Perform division using ++ __udivmoddi4. ++ ++ 2014-06-18 Charles Baylis ++ ++ * config/arm/bpabi.S (__aeabi_ldivmod, __aeabi_uldivmod, ++ push_for_divide, pop_for_divide): Use .cfi_* directives for DWARF ++ annotations. Fix DWARF information. ++ ++ 2014-06-18 Charles Baylis ++ ++ * config/arm/bpabi.S (__aeabi_ldivmod): Perform division using ++ __udivmoddi4, and fixups for negative operands. ++ ++ 2014-06-18 Charles Baylis ++ ++ * config/arm/bpabi.S (__aeabi_ldivmod): Optimise stack manipulation. ++ ++ 2014-06-18 Charles Baylis ++ ++ * config/arm/bpabi.S (__aeabi_uldivmod): Perform division using call ++ to __udivmoddi4. ++ ++ 2014-06-18 Charles Baylis ++ ++ * config/arm/bpabi.S (__aeabi_uldivmod): Optimise stack pointer ++ manipulation. ++ ++ 2014-06-18 Charles Baylis ++ ++ * config/arm/bpabi.S (__aeabi_uldivmod, __aeabi_ldivmod): Add comment ++ describing register usage on function entry and exit. ++ ++ 2014-06-18 Charles Baylis ++ ++ * config/arm/bpabi.S (__aeabi_uldivmod): Fix whitespace. ++ (__aeabi_ldivmod): Fix whitespace. ++ ++2015-01-13 Yvan Roux ++ ++ Backport from trunk r217593. ++ 2014-11-14 Andrew Pinski ++ ++ * config/aarch64/aarch64-cores.def (thunderx): Change the scheduler ++ over to thunderx. ++ * config/aarch64/aarch64.md: Include thunderx.md. ++ (generic_sched): Set to no for thunderx. ++ * config/aarch64/thunderx.md: New file. ++ ++2015-01-12 Yvan Roux ++ ++ Backport from trunk r217717. ++ 2014-11-18 Felix Yang ++ ++ * config/aarch64/aarch64.c (doloop_end): New pattern. ++ * config/aarch64/aarch64.md (TARGET_CAN_USE_DOLOOP_P): Implement. ++ ++2015-01-12 Yvan Roux ++ ++ Backport from trunk r217661. ++ 2014-11-17 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64-cores.def (cortex-a53): Remove ++ AARCH64_FL_CRYPTO from feature flags. ++ (cortex-a57): Likewise. ++ (cortex-a57.cortex-a53): Likewise. ++ ++2015-01-11 Yvan Roux ++ ++ Backport from trunk r218319. ++ 2014-12-03 Andrew Stubbs ++ ++ Revert: ++ ++ 2014-09-17 Andrew Stubbs ++ ++ * config/arm/arm.c (arm_option_override): Reject -mfpu=neon ++ when architecture is older than ARMv7. ++ ++2015-01-11 Yvan Roux ++ ++ Backport from trunk r217691. ++ 2014-11-18 Jiong Wang ++ ++ * lra-eliminations.c (update_reg_eliminate): Relax gcc_assert for fixed ++ registers. ++ ++2015-01-11 Yvan Roux ++ ++ Backport from trunk r215503. ++ 2014-09-23 Wilco Dijkstra ++ ++ * common/config/aarch64/aarch64-common.c: ++ (default_options aarch_option_optimization_table): ++ Default to -fsched-pressure. ++ ++2015-01-11 Yvan Roux ++ ++ Backport from trunk r211132. ++ 2014-06-02 Tom de Vries ++ ++ * config/aarch64/aarch64.c (aarch64_float_const_representable_p): Handle ++ case that x has VOIDmode. ++ ++2015-01-11 Yvan Roux ++ ++ Backport from trunk r209620. ++ 2014-04-22 Vidya Praveen ++ ++ * aarch64.md (float2): Remove. ++ (floatuns2): Remove. ++ (2): New pattern for equal width float ++ and floatuns conversions. ++ (2): New pattern for inequal width float ++ and floatuns conversions. ++ * iterators.md (fcvt_target, FCVT_TARGET): Support SF and DF modes. ++ (w1,w2): New mode attributes for inequal width conversions. ++ ++2015-01-11 Yvan Roux ++ ++ Backport from trunk r217362, r217546. ++ 2014-11-14 Ramana Radhakrishnan ++ ++ PR target/63724 ++ * config/aarch64/aarch64.c (aarch64_expand_mov_immediate): Split out ++ numerical immediate handling to... ++ (aarch64_internal_mov_immediate): ...this. New. ++ (aarch64_rtx_costs): Use aarch64_internal_mov_immediate. ++ (aarch64_mov_operand_p): Relax predicate. ++ * config/aarch64/aarch64.md (mov:GPI): Do not expand CONST_INTs. ++ (*movsi_aarch64): Turn into define_insn_and_split and new alternative ++ for 'n'. ++ (*movdi_aarch64): Likewise. ++ ++ 2014-11-11 James Greenhalgh ++ ++ * config/aarch64/aarch64-simd.md ++ (aarch64_simd_bsl_internal): Remove float cases, canonicalize. ++ (aarch64_simd_bsl): Add gen_lowpart expressions where we ++ are punning between float vectors and integer vectors. ++ ++2014-12-11 Yvan Roux ++ ++ * LINARO-VERSION: Bump version. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ * LINARO-VERSION: Update. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r217079, r217080. ++ 2014-11-04 Alan Lawrence ++ ++ config/arm/neon.md (reduc_smin_ *2): Rename to... ++ (reduc_smin_scal_ *2): ...this; extract scalar result. ++ (reduc_smax_ *2): Rename to... ++ (reduc_smax_scal_ *2): ...this; extract scalar result. ++ (reduc_umin_ *2): Rename to... ++ (reduc_umin_scal_ *2): ...this; extract scalar result. ++ (reduc_umax_ *2): Rename to... ++ (reduc_umax_scal_ *2): ...this; extract scalar result. ++ ++ 2014-11-04 Alan Lawrence ++ ++ config/arm/neon.md (reduc_plus_*): Rename to... ++ (reduc_plus_scal_*): ...this; reduce to temp and extract scalar result. ++ ++2014-12-04 Yvan Roux ++ ++ Fix Backport from trunk r216524 (committed at r218379). ++ Add missing file: config/aarch64/aarch64-cost-tables.h ++ ++ * config/aarch64/aarch64-cost-tables.h: New file. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r217076. ++ 2014-11-04 Michael Collison ++ ++ * config/aarch64/iterators.md (lconst_atomic): New mode attribute ++ to support constraints for CONST_INT in atomic operations. ++ * config/aarch64/atomics.md ++ (atomic_): Use lconst_atomic constraint. ++ (atomic_nand): Likewise. ++ (atomic_fetch_): Likewise. ++ (atomic_fetch_nand): Likewise. ++ (atomic__fetch): Likewise. ++ (atomic_nand_fetch): Likewise. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r217026. ++ 2014-11-03 Zhenqiang Chen ++ ++ * ifcvt.c (noce_emit_cmove, noce_get_alt_condition, noce_get_condition): ++ Allow CC mode if HAVE_cbranchcc4. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r217014. ++ 2014-11-02 Michael Collison ++ ++ * config/arm/arm.h (CLZ_DEFINED_VALUE_AT_ZERO) : Update ++ to support vector modes. ++ (CTZ_DEFINED_VALUE_AT_ZERO): Ditto. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r216996, r216998, r216999, r217001, r217002, r217003, ++ r217004, r217742. ++ 2014-11-18 James Greenhalgh ++ ++ PR target/63937 ++ * target.def (use_by_pieces_infrastructure_p): Take unsigned ++ HOST_WIDE_INT as the size parameter. ++ * targhooks.c (default_use_by_pieces_infrastructure_p): Likewise. ++ * targhooks.h (default_use_by_pieces_infrastructure_p): Likewise. ++ * config/arc/arc.c (arc_use_by_pieces_infrastructure_p)): Likewise. ++ * config/mips/mips.c (mips_use_by_pieces_infrastructure_p)): Likewise. ++ * config/s390/s390.c (s390_use_by_pieces_infrastructure_p)): Likewise. ++ * config/sh/sh.c (sh_use_by_pieces_infrastructure_p)): Likewise. ++ * config/aarch64/aarch64.c ++ (aarch64_use_by_pieces_infrastructure_p)): Likewise. ++ * doc/tm.texi: Regenerate. ++ ++ 2014-11-01 James Greenhalgh ++ ++ * doc/tm.texi.in (MOVE_BY_PIECES_P): Remove. ++ (CLEAR_BY_PIECES_P): Likewise. ++ (SET_BY_PIECES_P): Likewise. ++ (STORE_BY_PIECES_P): Likewise. ++ * doc/tm.texi: Regenerate. ++ * system.h: Poison MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, ++ SET_BY_PIECES_P, STORE_BY_PIECES_P. ++ * expr.c (MOVE_BY_PIECES_P): Remove. ++ (CLEAR_BY_PIECES_P): Likewise. ++ (SET_BY_PIECES_P): Likewise. ++ (STORE_BY_PIECES_P): Likewise. ++ (can_move_by_pieces): Rewrite in terms of ++ targetm.use_by_pieces_infrastructure_p. ++ (emit_block_move_hints): Likewise. ++ (can_store_by_pieces): Likewise. ++ (store_by_pieces): Likewise. ++ (clear_storage_hints): Likewise. ++ (emit_push_insn): Likewise. ++ (expand_constructor): Likewise. ++ ++ 2014-11-01 James Greenhalgh ++ ++ * config/aarch64/aarch64.c ++ (aarch64_use_by_pieces_infrastructre_p): New. ++ (TARGET_USE_BY_PIECES_INFRASTRUCTURE): Likewise. ++ * config/aarch64/aarch64.h (STORE_BY_PIECES_P): Delete. ++ ++ 2014-11-01 James Greenhalgh ++ ++ * config/mips/mips.h (MOVE_BY_PIECES_P): Remove. ++ (STORE_BY_PIECES_P): Likewise. ++ * config/mips/mips.c (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): New. ++ (mips_move_by_pieces_p): Rename to... ++ (mips_use_by_pieces_infrastructure_p): ...this, use new hook ++ parameters, use the default hook implementation as a ++ fall-back. ++ ++ 2014-11-01 James Greenhalgh ++ ++ * config/sh/sh.c (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): New. ++ (sh_use_by_pieces_infrastructure_p): Likewise. ++ * config/sh/sh.h (MOVE_BY_PIECES_P): Remove. ++ (STORE_BY_PIECES_P): Likewise. ++ (SET_BY_PIECES_P): Likewise. ++ ++ 2014-11-01 James Greenhalgh ++ ++ * config/arc/arc.c (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): New. ++ (arc_use_by_pieces_infrastructure_p): Likewise. ++ * confir/arc/arc.h (MOVE_BY_PIECES_P): Delete. ++ (CAN_MOVE_BY_PIECES): Likewise. ++ ++ 2014-11-01 James Greenhalgh ++ ++ * config/s390/s390.c (s390_use_by_pieces_infrastructure_p): New. ++ (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): Likewise. ++ * config/s390/s390.h (MOVE_BY_PIECES_P): Remove. ++ (CLEAR_BY_PIECES): Likewise. ++ (SET_BY_PIECES): Likewise. ++ (STORE_BY_PIECES): Likewise. ++ ++ 2014-11-01 James Greenhalgh ++ ++ * target.def (use_by_pieces_infrastructure_p): New. ++ * doc/tm.texi.in (MOVE_BY_PIECES_P): Describe that this macro ++ is deprecated. ++ (STORE_BY_PIECES_P): Likewise. ++ (CLEAR_BY_PIECES_P): Likewise. ++ (SET_BY_PIECES_P): Likewise. ++ (TARGET_MOVE_BY_PIECES_PROFITABLE_P): Add hook. ++ * doc/tm.texi: Regenerate. ++ * expr.c (MOVE_BY_PIECES_P): Rewrite in terms of ++ TARGET_USE_BY_PIECES_INFRASTRUCTURE_P. ++ (STORE_BY_PIECES_P): Likewise. ++ (CLEAR_BY_PIECES_P): Likewise. ++ (SET_BY_PIECES_P): Likewise. ++ (STORE_MAX_PIECES): Move to... ++ * defaults.h (STORE_MAX_PIECES): ...here. ++ * targhooks.c (get_move_ratio): New. ++ (default_use_by_pieces_infrastructure_p): Likewise. ++ * targhooks.h (default_use_by_pieces_infrastructure_p): New. ++ * target.h (by_pieces_operation): New. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r216765. ++ 2014-10-27 Jiong Wang ++ ++ PR target/63442 ++ * optabs.c (prepare_cmp_insn): Use "ret_mode" instead of "word_mode". ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r216630. ++ 2014-10-24 Felix Yang ++ Jiji Jiang ++ ++ PR target/63173 ++ * config/aarch64/arm_neon.h (__LD2R_FUNC): Remove macro. ++ (__LD3R_FUNC): Ditto. ++ (__LD4R_FUNC): Ditto. ++ (vld2_dup_s8, vld2_dup_s16, vld2_dup_s32, vld2_dup_f32, vld2_dup_f64, ++ vld2_dup_u8, vld2_dup_u16, vld2_dup_u32, vld2_dup_p8, vld2_dup_p16 ++ vld2_dup_s64, vld2_dup_u64, vld2q_dup_s8, vld2q_dup_p8, ++ vld2q_dup_s16, vld2q_dup_p16, vld2q_dup_s32, vld2q_dup_s64, ++ vld2q_dup_u8, vld2q_dup_u16, vld2q_dup_u32, vld2q_dup_u64 ++ vld2q_dup_f32, vld2q_dup_f64): Rewrite using builtin functions. ++ (vld3_dup_s64, vld3_dup_u64, vld3_dup_f64, vld3_dup_s8 ++ vld3_dup_p8, vld3_dup_s16, vld3_dup_p16, vld3_dup_s32 ++ vld3_dup_u8, vld3_dup_u16, vld3_dup_u32, vld3_dup_f32 ++ vld3q_dup_s8, vld3q_dup_p8, vld3q_dup_s16, vld3q_dup_p16 ++ vld3q_dup_s32, vld3q_dup_s64, vld3q_dup_u8, vld3q_dup_u16 ++ vld3q_dup_u32, vld3q_dup_u64, vld3q_dup_f32, vld3q_dup_f64): Likewise. ++ (vld4_dup_s64, vld4_dup_u64, vld4_dup_f64, vld4_dup_s8 ++ vld4_dup_p8, vld4_dup_s16, vld4_dup_p16, vld4_dup_s32 ++ vld4_dup_u8, vld4_dup_u16, vld4_dup_u32, vld4_dup_f32 ++ vld4q_dup_s8, vld4q_dup_p8, vld4q_dup_s16, vld4q_dup_p16 ++ vld4q_dup_s32, vld4q_dup_s64, vld4q_dup_u8, vld4q_dup_u16 ++ vld4q_dup_u32, vld4q_dup_u64, vld4q_dup_f32, vld4q_dup_f64): Likewise. ++ * config/aarch64/aarch64.md (define_c_enum "unspec"): Add ++ UNSPEC_LD2_DUP, UNSPEC_LD3_DUP, UNSPEC_LD4_DUP. ++ * config/aarch64/aarch64-simd-builtins.def (ld2r, ld3r, ld4r): New ++ builtins. ++ * config/aarch64/aarch64-simd.md (aarch64_simd_ld2r): New pattern. ++ (aarch64_simd_ld3r): Likewise. ++ (aarch64_simd_ld4r): Likewise. ++ (aarch64_ld2r): New expand. ++ (aarch64_ld3r): Likewise. ++ (aarch64_ld4r): Likewise. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r217971. ++ 2014-11-22 Uros Bizjak ++ ++ * params.def (PARAM_MAX_COMPLETELY_PEELED_INSNS): Increase to 200. ++ * config/i386/i386.c (ix86_option_override_internal): Do not increase ++ PARAM_MAX_COMPLETELY_PEELED_INSNS. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r216524. ++ 2014-10-21 Andrew Pinski ++ ++ * doc/invoke.texi (AARCH64/mtune): Document thunderx as an ++ available option also. ++ * config/aarch64/aarch64-cost-tables.h: New file. ++ * config/aarch64/aarch64-cores.def (thunderx): New core. ++ * config/aarch64/aarch64-tune.md: Regenerate. ++ * config/aarch64/aarch64.c: Include aarch64-cost-tables.h instead ++ of config/arm/aarch-cost-tables.h. ++ (thunderx_regmove_cost): New variable. ++ (thunderx_tunings): New variable. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r216336. ++ 2014-10-16 Richard Earnshaw ++ ++ * config/aarch64/aarch64.c (aarch64_legitimize_address): New function. ++ (TARGET_LEGITIMIZE_ADDRESS): Redefine. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r216253. ++ 2014-10-15 Renlin Li ++ ++ * config/aarch64/aarch64.h (ARM_DEFAULT_PCS, arm_pcs_variant): Delete. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r215711. ++ 2014-09-30 Terry Guo ++ ++ * config/arm/arm-cores.def (cortex-m7): New core name. ++ * config/arm/arm-fpus.def (fpv5-sp-d16): New fpu name. ++ (fpv5-d16): Ditto. ++ * config/arm/arm-tables.opt: Regenerated. ++ * config/arm/arm-tune.md: Regenerated. ++ * config/arm/arm.h (TARGET_VFP5): New macro. ++ * config/arm/bpabi.h (BE8_LINK_SPEC): Include cortex-m7. ++ * config/arm/vfp.md (2, ++ smax3, smin3): Enabled for FPU FPv5. ++ * doc/invoke.texi: Document new cpu and fpu names. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r215707, r215842. ++ 2014-10-03 David Sherwood ++ ++ * ira-int.h (ira_allocno): Mark hard_regno as signed. ++ ++ 2014-09-30 David Sherwood ++ ++ * ira-int.h (ira_allocno): Add "wmode" field. ++ * ira-build.c (create_insn_allocnos): Add new "parent" function ++ parameter. ++ * ira-conflicts.c (ira_build_conflicts): Add conflicts for registers ++ that cannot be accessed in wmode. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r215540. ++ 2014-09-24 Zhenqiang Chen ++ ++ PR rtl-optimization/63210 ++ * ira-color.c (assign_hard_reg): Ignore conflict cost if the ++ HARD_REGNO is not available for CONFLICT_A. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r215046. ++ 2014-09-09 Kyrylo Tkachov ++ ++ PR target/61749 ++ * config/aarch64/aarch64-builtins.c (aarch64_types_quadop_qualifiers): ++ Use qualifier_immediate for last operand. Rename to... ++ (aarch64_types_ternop_lane_qualifiers): ... This. ++ (TYPES_QUADOP): Rename to... ++ (TYPES_TERNOP_LANE): ... This. ++ (aarch64_simd_expand_args): Return const0_rtx when encountering user ++ error. Change return of 0 to return of NULL_RTX. ++ (aarch64_crc32_expand_builtin): Likewise. ++ (aarch64_expand_builtin): Return NULL_RTX instead of 0. ++ ICE when expanding unknown builtin. ++ * config/aarch64/aarch64-simd-builtins.def (sqdmlal_lane): Use ++ TERNOP_LANE qualifiers. ++ (sqdmlsl_lane): Likewise. ++ (sqdmlal_laneq): Likewise. ++ (sqdmlsl_laneq): Likewise. ++ (sqdmlal2_lane): Likewise. ++ (sqdmlsl2_lane): Likewise. ++ (sqdmlal2_laneq): Likewise. ++ (sqdmlsl2_laneq): Likewise. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r215013. ++ 2014-09-08 Joseph Myers ++ ++ * defaults.h (LARGEST_EXPONENT_IS_NORMAL, ROUND_TOWARDS_ZERO): ++ Remove. ++ * doc/tm.texi.in (ROUND_TOWARDS_ZERO, LARGEST_EXPONENT_IS_NORMAL): ++ Remove. ++ * doc/tm.texi: Regenerate. ++ * system.h (LARGEST_EXPONENT_IS_NORMAL, ROUND_TOWARDS_ZERO): ++ Poison. ++ * config/arm/arm.h (LARGEST_EXPONENT_IS_NORMAL): Remove. ++ * config/cris/cris.h (__make_dp): Remove. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r214952. ++ 2014-09-05 Alan Lawrence ++ ++ * config/aarch64/arm_neon.h (__GET_HIGH): New macro. ++ (vget_high_f32, vget_high_f64, vget_high_p8, vget_high_p16, ++ vget_high_s8, vget_high_s16, vget_high_s32, vget_high_s64, ++ vget_high_u8, vget_high_u16, vget_high_u32, vget_high_u64): ++ Remove temporary __asm__ and reimplement. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r214948, r214949. ++ 2014-09-05 Alan Lawrence ++ ++ * config/aarch64/aarch64-builtins.c (aarch64_fold_builtin): Remove code ++ handling cmge, cmgt, cmeq, cmtst. ++ ++ * config/aarch64/aarch64-simd-builtins.def (cmeq, cmge, cmgt, cmle, ++ cmlt, cmgeu, cmgtu, cmtst): Remove. ++ ++ * config/aarch64/arm_neon.h (vceq_*, vceqq_*, vceqz_*, vceqzq_*, ++ vcge_*, vcgeq_*, vcgez_*, vcgezq_*, vcgt_*, vcgtq_*, vcgtz_*, ++ vcgtzq_*, vcle_*, vcleq_*, vclez_*, vclezq_*, vclt_*, vcltq_*, ++ vcltz_*, vcltzq_*, vtst_*, vtstq_*): Use gcc vector extensions. ++ ++ 2014-09-05 Alan Lawrence ++ ++ * config/aarch64/aarch64-builtins.c (aarch64_types_cmtst_qualifiers, ++ TYPES_TST): Define. ++ (aarch64_fold_builtin): Update pattern for cmtst. ++ ++ * config/aarch64/aarch64-protos.h (aarch64_const_vec_all_same_int_p): ++ Declare. ++ ++ * config/aarch64/aarch64-simd-builtins.def (cmtst): Update qualifiers. ++ ++ * config/aarch64/aarch64-simd.md (aarch64_vcond_internal): ++ Switch operands, separate out more cases, refactor. ++ ++ (aarch64_cmtst): Rewrite pattern to match (plus ... -1). ++ ++ * config/aarch64.c (aarch64_const_vec_all_same_int_p): Take single ++ argument; rename old version to... ++ (aarch64_const_vec_all_same_in_range_p): ...this. ++ (aarch64_print_operand, aarch64_simd_shift_imm_p): Follow renaming. ++ ++ * config/aarch64/predicates.md (aarch64_simd_imm_minus_one): Define. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r214008. ++ 2014-08-15 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64.c (aarch64_expand_mov_immediate): Move ++ one_match > zero_match case to just before simple_sequence. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r213382. ++ 2014-07-31 James Greenhalgh ++ ++ * config/aarch64/arm_neon.h (vpadd_<8,16,32,64>): Move to ++ correct alphabetical position. ++ (vpaddd_f64): Rewrite using builtins. ++ (vpaddd_s64): Move to correct alphabetical position. ++ (vpaddd_u64): New. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r210735, r215206, r215207, r215208. ++ 2014-09-12 Wilco Dijkstra ++ ++ * gcc/config/aarch64/aarch64.c (cortexa57_regmove_cost): New cost table ++ for A57. ++ (cortexa53_regmove_cost): New cost table for A53. Increase GP2FP/FP2GP ++ cost to spilling from integer to FP registers. ++ ++ 2014-09-12 Wilco Dijkstra ++ ++ * config/aarch64/aarch64.c (aarch64_register_move_cost): Fix Q register ++ move handling. ++ (generic_regmove_cost): Undo raised FP2FP move cost as Q register moves ++ are now handled correctly. ++ ++ 2014-09-12 Wilco Dijkstra ++ ++ * config/aarch64/aarch64.c (aarch64_register_move_cost): Add cost ++ handling of CALLER_SAVE_REGS and POINTER_REGS. ++ ++ 2014-05-22 Kugan Vivekanandarajah ++ ++ * config/aarch64/aarch64.c (aarch64_regno_regclass) : Change CORE_REGS ++ to GENERAL_REGS. ++ (aarch64_secondary_reload) : LikeWise. ++ (aarch64_class_max_nregs) : Remove CORE_REGS. ++ * config/aarch64/aarch64.h (enum reg_class) : Remove CORE_REGS. ++ (REG_CLASS_NAMES) : Likewise. ++ (REG_CLASS_CONTENTS) : LikeWise. ++ (INDEX_REG_CLASS) : Change CORE_REGS to GENERAL_REGS. ++ ++2014-11-14 Yvan Roux ++ ++ * LINARO-VERSION: Bump version. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ * LINARO-VERSION: Update. ++ ++2014-11-14 Yvan Roux ++ ++ Add Linaro release macros (Linaro only patch.) ++ ++ * Makefile.in (LINAROVER, LINAROVER_C, LINAROVER_S): Define. ++ (CFLAGS-cppbuiltin.o): Add LINAROVER macro definition. ++ (cppbuiltin.o): Depend on $(LINAROVER). ++ * cppbuiltin.c (parse_linarover): New. ++ (define_GNUC__): Define __LINARO_RELEASE__ and __LINARO_SPIN__ macros. ++ ++2014-11-13 Yvan Roux ++ ++ Backport from trunk r216229, r216230. ++ 2014-10-14 Andrew Pinski ++ ++ * explow.c (convert_memory_address_addr_space): Rename to ... ++ (convert_memory_address_addr_space_1): This. Add in_const argument. ++ Inside a CONST RTL, permute the conversion and addition of constant ++ for zero and sign extended pointers. ++ (convert_memory_address_addr_space): New function. ++ ++ 2014-10-14 Andrew Pinski ++ ++ Revert: ++ 2011-08-19 H.J. Lu ++ ++ PR middle-end/49721 ++ * explow.c (convert_memory_address_addr_space): Also permute the ++ conversion and addition of constant for zero-extend. ++ ++2014-10-24 Yvan Roux ++ ++ * LINARO-VERSION: Bump version. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ * LINARO-VERSION: Update. ++ ++2014-10-17 Yvan Roux ++ ++ * LINARO-VERSION: Bump version. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ * LINARO-VERSION: Update. ++ ++2014-10-10 Yvan Roux ++ ++ Revert: ++ 2014-10-08 Yvan Roux ++ ++ Backport from trunk r215206, r215207, r215208. ++ 2014-09-12 Wilco Dijkstra ++ ++ * gcc/config/aarch64/aarch64.c (cortexa57_regmove_cost): New cost table ++ for A57. ++ (cortexa53_regmove_cost): New cost table for A53. Increase GP2FP/FP2GP ++ cost to spilling from integer to FP registers. ++ ++ 2014-09-12 Wilco Dijkstra ++ ++ * config/aarch64/aarch64.c (aarch64_register_move_cost): Fix Q register ++ move handling. ++ (generic_regmove_cost): Undo raised FP2FP move cost as Q register moves ++ are now handled correctly. ++ ++ 2014-09-12 Wilco Dijkstra ++ ++ * config/aarch64/aarch64.c (aarch64_register_move_cost): Add cost ++ handling of CALLER_SAVE_REGS and POINTER_REGS. ++ ++2014-10-08 Yvan Roux ++ ++ Backport from trunk r214825, r214826. ++ 2014-09-02 Kyrylo Tkachov ++ ++ PR target/62275 ++ * config/arm/neon.md ++ (neon_vcvt ++ ): New pattern. ++ * config/arm/iterators.md (NEON_VCVT): New int iterator. ++ * config/arm/arm_neon_builtins.def (vcvtav2sf, vcvtav4sf, vcvtauv2sf, ++ vcvtauv4sf, vcvtpv2sf, vcvtpv4sf, vcvtpuv2sf, vcvtpuv4sf, vcvtmv2sf, ++ vcvtmv4sf, vcvtmuv2sf, vcvtmuv4sf): New builtin definitions. ++ * config/arm/arm.c (arm_builtin_vectorized_function): Handle ++ BUILT_IN_LROUNDF, BUILT_IN_LFLOORF, BUILT_IN_LCEILF. ++ ++ 2014-09-02 Kyrylo Tkachov ++ ++ PR target/62275 ++ * config/arm/iterators.md (FIXUORS): New code iterator. ++ (VCVT): New int iterator. ++ (su_optab): New code attribute. ++ (su): Likewise. ++ * config/arm/vfp.md (lsi2): New pattern. ++ ++2014-10-08 Yvan Roux ++ ++ Backport from trunk r215471. ++ 2014-09-22 James Greenhalgh ++ ++ * config/aarch64/geniterators.sh: New. ++ * config/aarch64/iterators.md (VDQF_DF): New. ++ * config/aarch64/t-aarch64: Generate aarch64-builtin-iterators.h. ++ * config/aarch64/aarch64-builtins.c (BUILTIN_*) Remove. ++ ++2014-10-08 Yvan Roux ++ ++ Backport from trunk r215206, r215207, r215208. ++ 2014-09-12 Wilco Dijkstra ++ ++ * gcc/config/aarch64/aarch64.c (cortexa57_regmove_cost): New cost table ++ for A57. ++ (cortexa53_regmove_cost): New cost table for A53. Increase GP2FP/FP2GP ++ cost to spilling from integer to FP registers. ++ ++ 2014-09-12 Wilco Dijkstra ++ ++ * config/aarch64/aarch64.c (aarch64_register_move_cost): Fix Q register ++ move handling. ++ (generic_regmove_cost): Undo raised FP2FP move cost as Q register moves ++ are now handled correctly. ++ ++ 2014-09-12 Wilco Dijkstra ++ ++ * config/aarch64/aarch64.c (aarch64_register_move_cost): Add cost ++ handling of CALLER_SAVE_REGS and POINTER_REGS. ++ ++2014-10-07 Yvan Roux ++ ++ Backport from trunk r214824. ++ 2014-09-02 Kyrylo Tkachov ++ ++ * config/aarch64/predicates.md (aarch64_comparison_operation): ++ New special predicate. ++ * config/aarch64/aarch64.md (*csinc2_insn): Use ++ aarch64_comparison_operation instead of matching an operator. ++ Update operand numbers. ++ (csinc3_insn): Likewise. ++ (*csinv3_insn): Likewise. ++ (*csneg3_insn): Likewise. ++ (ffs2): Update gen_csinc3_insn callsite. ++ * config/aarch64/aarch64.c (aarch64_get_condition_code): ++ Return -1 instead of aborting on invalid condition codes. ++ (aarch64_print_operand): Update aarch64_get_condition_code callsites ++ to assert that the returned condition code is valid. ++ * config/aarch64/aarch64-protos.h (aarch64_get_condition_code): Export. ++ ++2014-10-07 Venkataramanan Kumar ++ ++ Backport from trunk r209643, r211881. ++ 2014-06-22 Richard Henderson ++ ++ PR target/61565 ++ * compare-elim.c (struct comparison): Add eh_note. ++ (find_comparison_dom_walker::before_dom_children): Don't eliminate ++ a redundant comparison in a different EH region. Purge EH edges if ++ necessary. ++ ++ 2014-04-22 Ramana Radhakrishnan ++ ++ * config/aarch64/aarch64.c (TARGET_FLAGS_REGNUM): Define. ++ ++2014-10-06 Charles Baylis ++ ++ Backport from trunk r214945. ++ 2014-09-05 Alan Lawrence ++ ++ * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Replace ++ varargs with pointer parameter. ++ (aarch64_simd_expand_builtin): pass pointer into previous. ++ ++2014-10-06 Kugan Vivekanandarajah ++ ++ Backport from trunk r214944. ++ 2014-09-05 Kyrylo Tkachov ++ ++ * config/arm/cortex-a53.md (cortex_a53_alu_shift): Add alu_ext, ++ alus_ext. ++ ++2014-10-06 Venkataramanan Kumar ++ ++ Backport from trunk r214943. ++ 2014-09-05 Alan Lawrence ++ ++ * config/aarch64/aarch64-simd.md (aarch64_rbit): New pattern. ++ * config/aarch64/aarch64-simd-builtins.def (rbit): New builtin. ++ * config/aarch64/arm_neon.h (vrbit_s8, vrbit_u8, vrbitq_s8, vrbitq_u8): ++ Replace temporary asm with call to builtin. ++ (vrbit_p8, vrbitq_p8): New functions. ++ ++2014-10-06 Michael Collison ++ ++ Backport from trunk r214886. ++ 2014-09-03 Richard Henderson ++ ++ * config/aarch64/aarch64.c (aarch64_popwb_single_reg): Remove. ++ (aarch64_popwb_pair_reg): Remove. ++ (aarch64_set_frame_expr): Remove. ++ (aarch64_restore_callee_saves): Add CFI_OPS argument; fill it with ++ the restore ops performed by the insns generated. ++ (aarch64_expand_epilogue): Attach CFI_OPS to the stack deallocation ++ insn. Perform the calls_eh_return addition later; do not attempt to ++ preserve the CFA in that case. Don't use aarch64_set_frame_expr. ++ (aarch64_expand_prologue): Use REG_CFA_ADJUST_CFA directly, or no ++ special markup at all. Load cfun->machine->frame.hard_fp_offset ++ into a local variable. ++ (aarch64_frame_pointer_required): Don't check calls_alloca. ++ ++2014-10-06 Yvan Roux ++ ++ Backport from trunk r215385. ++ 2014-09-19 James Greenhalgh ++ ++ * config/aarch64/aarch64.md (stack_protect_test_): Mark ++ scratch register as written. ++ ++2014-10-06 Yvan Roux ++ ++ Backport from trunk r215346. ++ 2014-09-18 Kyrylo Tkachov ++ ++ * config/arm/neon.md (*movmisalign_neon_load): Change type ++ to neon_load1_1reg. ++ ++2014-10-06 Yvan Roux ++ ++ Backport from trunk r215321. ++ 2014-09-17 Andrew Stubbs ++ ++ * config/arm/arm.c (arm_option_override): Reject -mfpu=neon ++ when architecture is older than ARMv7. ++ ++2014-10-06 Yvan Roux ++ ++ Backport from trunk r215260. ++ 2014-09-14 David Sherwood ++ ++ * gcc.target/aarch64/vdup_lane_2.c (force_simd): Emit simd mov. ++ ++2014-10-06 Yvan Roux ++ ++ Backport from trunk r215205. ++ 2014-09-12 Wilco Dijkstra ++ ++ * gcc/ree.c (combine_reaching_defs): Ensure inserted copy don't change ++ the number of hard registers. ++ ++2014-10-06 Yvan Roux ++ ++ Backport from trunk r215136. ++ 2014-09-10 Xinliang David Li ++ ++ PR target/63209 ++ * config/arm/arm.md (movcond_addsi): Handle case where source ++ and target operands are the same. ++ ++2014-10-06 Yvan Roux ++ ++ Backport from trunk r215086. ++ 2014-09-09 Marcus Shawcroft ++ Ramana Radhakrishnan ++ ++ * config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Add crtfastmath.o. ++ * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATH_ENDFILE_SPEC): ++ Define. ++ (ENDFILE_SPEC): Define and use GNU_USER_TARGET_MATH_ENDFILE_SPEC. ++ ++2014-10-06 Yvan Roux ++ ++ Backport from trunk r215067. ++ 2014-09-09 Jiong Wang ++ ++ * config/arm/arm.c (NEON_COPYSIGNF): New enum. ++ (arm_init_neon_builtins): Support NEON_COPYSIGNF. ++ (arm_builtin_vectorized_function): Likewise. ++ * config/arm/arm_neon_builtins.def: New macro for copysignf. ++ * config/arm/neon.md (neon_copysignf): New pattern for vector ++ copysignf. ++ ++2014-10-03 Yvan Roux ++ ++ Backport from trunk r215050, r215051, r215052, r215053, r215054, ++ r215055, r215056. ++ 2014-09-09 Kyrylo Tkachov ++ ++ * config/arm/arm.md (vfp_pop_multiple_with_writeback): Use vldm ++ mnemonic instead of fldmfdd. ++ * config/arm/arm.c (vfp_output_fstmd): Rename to... ++ (vfp_output_vstmd): ... This. Convert output to UAL syntax. ++ Output vpush when address register is SP. ++ * config/arm/arm-protos.h (vfp_output_fstmd): Rename to... ++ (vfp_output_vstmd): ... This. ++ * config/arm/vfp.md (push_multi_vfp): Update call to ++ vfp_output_vstmd. ++ ++ 2014-09-09 Kyrylo Tkachov ++ ++ * config/arm/vfp.md (*movcc_vfp): Use UAL syntax. ++ ++ 2014-09-09 Kyrylo Tkachov ++ ++ * config/arm/vfp.md (*sqrtsf2_vfp): Use UAL assembly syntax. ++ (*sqrtdf2_vfp): Likewise. ++ (*cmpsf_vfp): Likewise. ++ (*cmpsf_trap_vfp): Likewise. ++ (*cmpdf_vfp): Likewise. ++ (*cmpdf_trap_vfp): Likewise. ++ ++ 2014-09-09 Kyrylo Tkachov ++ ++ * config/arm/vfp.md (*extendsfdf2_vfp): Use UAL assembly syntax. ++ (*truncdfsf2_vfp): Likewise. ++ (*truncsisf2_vfp): Likewise. ++ (*truncsidf2_vfp): Likewise. ++ (fixuns_truncsfsi2): Likewise. ++ (fixuns_truncdfsi2): Likewise. ++ (*floatsisf2_vfp): Likewise. ++ (*floatsidf2_vfp): Likewise. ++ (floatunssisf2): Likewise. ++ (floatunssidf2): Likewise. ++ ++ 2014-09-09 Kyrylo Tkachov ++ ++ * config/arm/vfp.md (*mulsf3_vfp): Use UAL assembly syntax. ++ (*muldf3_vfp): Likewise. ++ (*mulsf3negsf_vfp): Likewise. ++ (*muldf3negdf_vfp): Likewise. ++ (*mulsf3addsf_vfp): Likewise. ++ (*muldf3adddf_vfp): Likewise. ++ (*mulsf3subsf_vfp): Likewise. ++ (*muldf3subdf_vfp): Likewise. ++ (*mulsf3negsfaddsf_vfp): Likewise. ++ (*fmuldf3negdfadddf_vfp): Likewise. ++ (*mulsf3negsfsubsf_vfp): Likewise. ++ (*muldf3negdfsubdf_vfp): Likewise. ++ ++ 2014-09-09 Kyrylo Tkachov ++ ++ * config/arm/vfp.md (*abssf2_vfp): Use UAL assembly syntax. ++ (*absdf2_vfp): Likewise. ++ (*negsf2_vfp): Likewise. ++ (*negdf2_vfp): Likewise. ++ (*addsf3_vfp): Likewise. ++ (*adddf3_vfp): Likewise. ++ (*subsf3_vfp): Likewise. ++ (*subdf3_vfp): Likewise. ++ (*divsf3_vfp): Likewise. ++ (*divdf3_vfp): Likewise. ++ ++ 2014-09-09 Kyrylo Tkachov ++ ++ * config/arm/arm.c (output_move_vfp): Use UAL syntax for load/store ++ multiple. ++ (arm_print_operand): Don't convert real values to decimal ++ representation in default case. ++ (fp_immediate_constant): Delete. ++ * config/arm/arm-protos.h (fp_immediate_constant): Likewise. ++ * config/arm/vfp.md (*arm_movsi_vfp): Convert to VFP moves to UAL ++ syntax. ++ (*thumb2_movsi_vfp): Likewise. ++ (*movdi_vfp): Likewise. ++ (*movdi_vfp_cortexa8): Likewise. ++ (*movhf_vfp_neon): Likewise. ++ (*movhf_vfp): Likewise. ++ (*movsf_vfp): Likewise. ++ (*thumb2_movsf_vfp): Likewise. ++ (*movdf_vfp): Likewise. ++ (*thumb2_movdf_vfp): Likewise. ++ (*movsfcc_vfp): Likewise. ++ (*thumb2_movsfcc_vfp): Likewise. ++ (*movdfcc_vfp): Likewise. ++ (*thumb2_movdfcc_vfp): Likewise. ++ ++2014-10-03 Yvan Roux ++ ++ Backport from trunk r214959. ++ 2014-09-05 Kyrylo Tkachov ++ ++ * config/arm/cortex-a53.md (cortex_a53_fpalu): Add f_rints, f_rintd, ++ f_minmaxs, f_minmaxd types. ++ ++2014-10-03 Yvan Roux ++ ++ Backport from trunk r214947. ++ 2014-09-05 Alan Lawrence ++ ++ * config/aarch64/aarch64-builtins.c (enum aarch64_type_qualifiers): ++ Remove qualifier_const_pointer, update comment. ++ ++2014-10-03 Yvan Roux ++ ++ Backport from trunk r214940. ++ 2014-09-05 James Greenhalgh ++ ++ * config/aarch64/aarch64.md (sibcall_value_insn): Give operand 1 ++ DImode. ++ ++2014-10-03 Yvan Roux ++ ++ Backport from trunk r213090. ++ 2014-07-26 Andrew Pinski ++ ++ * config/aarch64/aarch64.md (*extr_insv_lower_reg): Remove + ++ from the read only register. ++ ++2014-09-11 Yvan Roux ++ ++ * LINARO-VERSION: Bump version. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ * LINARO-VERSION: Update. ++ ++2014-09-09 Venkataramanan Kumar ++ ++ Backport from trunk r215004. ++ 2014-09-07 Venkataramanan Kumar ++ ++ PR target/63190 ++ * config/aarch64/aarch64.md (stack_protect_test_) Add register ++ constraint for operand0 and remove write only modifier from operand3. ++ ++2014-09-09 Michael Collison ++ ++ Backport from trunk r212178 ++ 2014-06-30 Joseph Myers ++ ++ * var-tracking.c (add_stores): Return instead of asserting if old ++ and new values for conditional store are the same. ++ ++2014-09-03 Yvan Roux ++ ++ Revert: ++ 2014-09-03 Yvan Roux ++ ++ Backport from trunk r213712. ++ 2014-08-07 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64.md (absdi2): Set simd attribute. ++ (aarch64_reload_mov): Predicate on TARGET_FLOAT. ++ (aarch64_movdi_high): Likewise. ++ (aarch64_movhigh_di): Likewise. ++ (aarch64_movdi_low): Likewise. ++ (aarch64_movlow_di): Likewise. ++ (aarch64_movtilow_tilow): Likewise. ++ Add comment explaining usage of fp,simd attributes and of ++ TARGET_FLOAT and TARGET_SIMD. ++ ++2014-09-03 Yvan Roux ++ ++ Backport from trunk r213712. ++ 2014-08-07 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64.md (absdi2): Set simd attribute. ++ (aarch64_reload_mov): Predicate on TARGET_FLOAT. ++ (aarch64_movdi_high): Likewise. ++ (aarch64_movhigh_di): Likewise. ++ (aarch64_movdi_low): Likewise. ++ (aarch64_movlow_di): Likewise. ++ (aarch64_movtilow_tilow): Likewise. ++ Add comment explaining usage of fp,simd attributes and of ++ TARGET_FLOAT and TARGET_SIMD. ++ ++2014-09-03 Yvan Roux ++ ++ Backport from trunk r214526. ++ 2014-08-26 Joseph Myers ++ ++ PR target/60606 ++ PR target/61330 ++ * varasm.c (make_decl_rtl): Clear DECL_ASSEMBLER_NAME and ++ DECL_HARD_REGISTER and return for invalid register specifications. ++ * cfgexpand.c (expand_one_var): If expand_one_hard_reg_var clears ++ DECL_HARD_REGISTER, call expand_one_error_var. ++ * config/arm/arm.c (arm_hard_regno_mode_ok): Do not allow ++ CC_REGNUM with non-MODE_CC modes. ++ (arm_regno_class): Return NO_REGS for PC_REGNUM. ++ ++2014-09-03 Yvan Roux ++ ++ Backport from trunk r214503. ++ 2014-08-26 Evandro Menezes ++ ++ * config/arm/aarch64/aarch64.c (generic_addrcost_table): Delete ++ qi cost; add di cost. ++ (cortexa57_addrcost_table): Likewise. ++ ++2014-09-03 Yvan Roux ++ ++ Backport from trunk r213659. ++ 2014-08-06 Alan Lawrence ++ ++ * config/aarch64/aarch64.c (aarch64_evpc_dup): Enable for bigendian. ++ (aarch64_expand_vec_perm_const): Check for dup before zip. ++ ++2014-09-02 Yvan Roux ++ ++ Backport from trunk r213651. ++ 2014-08-06 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64.c (aarch64_classify_address): Use REG_P and ++ CONST_INT_P instead of GET_CODE and compare. ++ (aarch64_select_cc_mode): Likewise. ++ (aarch64_print_operand): Likewise. ++ (aarch64_rtx_costs): Likewise. ++ (aarch64_simd_valid_immediate): Likewise. ++ (aarch64_simd_check_vect_par_cnst_half): Likewise. ++ (aarch64_simd_emit_pair_result_insn): Likewise. ++ ++2014-08-29 Yvan Roux ++ ++ Backport from trunk r212978. ++ 2014-07-24 Andreas Schwab ++ ++ * lib/target-supports.exp (check_effective_target_arm_nothumb): ++ Also check for __arm__. ++ ++2014-08-29 Christophe Lyon ++ ++ Fix backport from trunk 211440: ++ * config.gcc (aarch64*-*-*): Restore need_64bit_hwint=yes. ++ ++ This is necessary to build aarch64* compilers on i686 host. ++ ++2014-08-26 Yvan Roux ++ ++ Backport from trunk r213627. ++ 2014-08-05 James Greenhalgh ++ ++ * config/aarch64/aarch64-builtins.c ++ (aarch64_simd_builtin_type_mode): Delete. ++ (v8qi_UP): Remap to V8QImode. ++ (v4hi_UP): Remap to V4HImode. ++ (v2si_UP): Remap to V2SImode. ++ (v2sf_UP): Remap to V2SFmode. ++ (v1df_UP): Remap to V1DFmode. ++ (di_UP): Remap to DImode. ++ (df_UP): Remap to DFmode. ++ (v16qi_UP):V16QImode. ++ (v8hi_UP): Remap to V8HImode. ++ (v4si_UP): Remap to V4SImode. ++ (v4sf_UP): Remap to V4SFmode. ++ (v2di_UP): Remap to V2DImode. ++ (v2df_UP): Remap to V2DFmode. ++ (ti_UP): Remap to TImode. ++ (ei_UP): Remap to EImode. ++ (oi_UP): Remap to OImode. ++ (ci_UP): Map to CImode. ++ (xi_UP): Remap to XImode. ++ (si_UP): Remap to SImode. ++ (sf_UP): Remap to SFmode. ++ (hi_UP): Remap to HImode. ++ (qi_UP): Remap to QImode. ++ (aarch64_simd_builtin_datum): Make mode a machine_mode. ++ (VAR1): Build builtin name. ++ (aarch64_init_simd_builtins): Remove dead code. ++ ++2014-08-26 Yvan Roux ++ ++ Backport from trunk r213713. ++ 2014-08-07 Kyrylo Tkachov ++ ++ * config/arm/arm.md (*cmov): Set type attribute to fcsel. ++ * config/arm/types.md (f_sels, f_seld): Delete. ++ ++2014-08-26 Yvan Roux ++ ++ Backport from trunk r213711. ++ 2014-08-07 Ian Bolton ++ Kyrylo Tkachov ++ ++ * config/aarch64/aarch64.c (aarch64_expand_mov_immediate): ++ Use MOVN when one of the half-words is 0xffff. ++ ++2014-08-26 Yvan Roux ++ ++ Backport from trunk r213632. ++ 2014-08-05 Kyrylo Tkachov ++ ++ * config/arm/cortex-a15.md (cortex_a15_alu_shift): Add crc type ++ to reservation. ++ * config/arm/cortex-a53.md (cortex_a53_alu_shift): Likewise. ++ ++2014-08-26 Yvan Roux ++ ++ Backport from trunk r213630. ++ 2014-08-05 Kyrylo Tkachov ++ ++ * config/arm/arm.md (clzsi2): Set predicable_short_it attr to no. ++ (rbitsi2): Likewise. ++ (*arm_rev): Set predicable and predicable_short_it attributes. ++ ++2014-08-26 Yvan Roux ++ ++ Backport from trunk r213557. ++ 2014-08-04 Kyrylo Tkachov ++ James Greenhalgh ++ ++ * doc/md.texi (clrsb): Document. ++ (clz): Change reference to x into operand 1. ++ (ctz): Likewise. ++ (popcount): Likewise. ++ ++2014-08-26 Yvan Roux ++ ++ Backport from trunk r213551, r213556. ++ 2014-08-04 Ramana Radhakrishnan ++ Kyrylo Tkachov ++ ++ * sched-deps.c (try_group_insn): Generalise macro fusion hook usage ++ to any two insns. Update comment. Rename to sched_macro_fuse_insns. ++ (sched_analyze_insn): Update use of try_group_insn to ++ sched_macro_fuse_insns. ++ * config/i386/i386.c (ix86_macro_fusion_pair_p): Reject 2nd ++ arguments that are not conditional jumps. ++ ++2014-08-26 Yvan Roux ++ ++ Backport from trunk r213490. ++ 2014-08-01 Alan Lawrence ++ ++ * config/aarch64/aarch64-simd-builtins.def (dup_lane, get_lane): Delete. ++ ++2014-08-26 Yvan Roux ++ ++ Backport from trunk r213488. ++ 2014-08-01 Jiong Wang ++ ++ * config/aarch64/aarch64.c (aarch64_classify_address): Accept all offset ++ for frame access when strict_p is false. ++ ++2014-08-26 Yvan Roux ++ ++ Backport from trunk r213485, r213486, r213487. ++ 2014-08-01 Renlin Li ++ Jiong Wang ++ ++ * config/aarch64/aarch64.c (offset_7bit_signed_scaled_p): Rename to ++ aarch64_offset_7bit_signed_scaled_p, remove static and use it. ++ * config/aarch64/aarch64-protos.h (aarch64_offset_7bit_signed_scaled_p): ++ Declaration. ++ * config/aarch64/predicates.md (aarch64_mem_pair_offset): Define new ++ predicate. ++ * config/aarch64/aarch64.md (loadwb_pair, storewb_pair): Use ++ aarch64_mem_pair_offset. ++ ++ 2014-08-01 Jiong Wang ++ ++ * config/aarch64/aarch64.md (loadwb_pair_): Fix ++ offset. ++ (loadwb_pair_): Likewise. ++ * config/aarch64/aarch64.c (aarch64_gen_loadwb_pair): Likewise. ++ ++2014-08-26 Yvan Roux ++ ++ Backport from trunk r213379. ++ 2014-07-31 James Greenhalgh ++ ++ * config/aarch64/aarch64-builtins.c ++ (aarch64_gimple_fold_builtin): Don't fold reduction operations for ++ BYTES_BIG_ENDIAN. ++ ++2014-08-26 Yvan Roux ++ ++ Backport from trunk r213378. ++ 2014-07-31 James Greenhalgh ++ ++ * config/aarch64/aarch64.c (aarch64_simd_vect_par_cnst_half): Vary ++ the generated mask based on BYTES_BIG_ENDIAN. ++ (aarch64_simd_check_vect_par_cnst_half): New. ++ * config/aarch64/aarch64-protos.h ++ (aarch64_simd_check_vect_par_cnst_half): New. ++ * config/aarch64/predicates.md (vect_par_cnst_hi_half): Refactor ++ the check out to aarch64_simd_check_vect_par_cnst_half. ++ (vect_par_cnst_lo_half): Likewise. ++ * config/aarch64/aarch64-simd.md ++ (aarch64_simd_move_hi_quad_): Always use vec_par_cnst_lo_half. ++ (move_hi_quad_): Always generate a low mask. ++ ++2014-08-22 Yvan Roux ++ ++ Backport from trunk r212927, r213304. ++ 2014-07-30 Jiong Wang ++ ++ * config/arm/arm.c (arm_get_frame_offsets): Adjust condition for ++ Thumb2. ++ ++ 2014-07-23 Jiong Wang ++ ++ * config/arm/arm.c (arm_get_frame_offsets): If both r3 and other ++ callee-saved registers are available for padding purpose ++ and r3 is not mandatory, then prefer use those callee-saved ++ instead of r3. ++ ++2014-08-22 Yvan Roux ++ ++ Backport from trunk r211717, r213692. ++ 2014-08-07 Kugan Vivekanandarajah ++ ++ * config/arm/arm.c (bdesc_2arg): Fix typo. ++ (arm_atomic_assign_expand_fenv): Remove The default implementation. ++ ++ 2014-06-17 Kugan Vivekanandarajah ++ ++ * config/arm/arm.c (arm_atomic_assign_expand_fenv): call ++ default_atomic_assign_expand_fenv for !TARGET_HARD_FLOAT. ++ (arm_init_builtins) : Initialize builtins __builtins_arm_set_fpscr and ++ __builtins_arm_get_fpscr only when TARGET_HARD_FLOAT. ++ * config/arm/vfp.md (set_fpscr): Make pattern conditional on ++ TARGET_HARD_FLOAT. ++ (get_fpscr) : Likewise. ++ ++2014-08-22 Yvan Roux ++ ++ Backport from trunk r212989, r213628. ++ 2014-08-05 Kyrylo Tkachov ++ ++ * convert.c (convert_to_integer): Guard transformation to lrint by ++ -fno-math-errno. ++ ++ 2014-07-24 Kyrylo Tkachov ++ ++ PR middle-end/61876 ++ * convert.c (convert_to_integer): Do not convert BUILT_IN_ROUND and cast ++ when flag_errno_math is on. ++ ++2014-08-15 Yvan Roux ++ ++ * LINARO-VERSION: Bump version. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ * LINARO-VERSION: Update. ++ ++2014-08-11 Yvan Roux ++ ++ Backport from trunk r212912, r212913. ++ 2014-07-22 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64.c (aarch64_rtx_costs): Handle CLRSB, CLZ. ++ (case UNSPEC): Handle UNSPEC_RBIT. ++ ++ 2014-07-22 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64.md: Delete UNSPEC_CLS. ++ (clrsb2): Use clrsb RTL code instead of UNSPEC_CLS. ++ ++2014-08-11 Yvan Roux ++ ++ Backport from trunk r213555. ++ 2014-08-04 Kyrylo Tkachov ++ ++ PR target/61713 ++ * gcc/optabs.c (expand_atomic_test_and_set): Do not try to emit ++ move to subtarget in serial version if result is ignored. ++ ++2014-08-11 Yvan Roux ++ ++ Backport from trunk r213376. ++ 2014-07-31 Charles Baylis ++ ++ PR target/61948 ++ * config/arm/neon.md (ashldi3_neon): Don't emit arm_ashldi3_1bit unless ++ constraints are satisfied. ++ (di3_neon): Likewise. ++ ++2014-08-11 Yvan Roux ++ ++ Backport from trunk r211270, r211271, r211273, r211275, r212943, ++ r212945, r212946, r212947, r212949, r212950, r212951, r212952, r212954, ++ r212955, r212956, r212957, r212958, r212976, r212996, r212997, r212999, ++ r213000. ++ 2014-07-24 Jiong Wang ++ ++ * config/aarch64/aarch64.c (aarch64_popwb_single_reg): New function. ++ (aarch64_expand_epilogue): Optimize epilogue when !frame_pointer_needed. ++ ++ 2014-07-24 Jiong Wang ++ ++ * config/aarch64/aarch64.c (aarch64_pushwb_single_reg): New function. ++ (aarch64_expand_prologue): Optimize prologue when !frame_pointer_needed. ++ ++ 2014-07-24 Jiong Wang ++ ++ * config/aarch64/aarch64.c (aarch64_restore_callee_saves) ++ (aarch64_save_callee_saves): New parameter "skip_wb". ++ (aarch64_expand_prologue, aarch64_expand_epilogue): Update call site. ++ ++ 2014-07-24 Jiong Wang ++ ++ * config/aarch64/aarch64.h (frame): New fields "wb_candidate1" and ++ "wb_candidate2". ++ * config/aarch64/aarch64.c (aarch64_layout_frame): Initialize above. ++ ++ 2014-07-24 Jiong Wang ++ ++ * config/aarch64/aarch64.c (aarch64_expand_epilogue): Don't ++ subtract outgoing area size when restoring stack_pointer_rtx. ++ ++ 2014-07-23 Jiong Wang ++ ++ * config/aarch64/aarch64.c (aarch64_popwb_pair_reg) ++ (aarch64_gen_loadwb_pair): New helper function. ++ (aarch64_expand_epilogue): Simplify code using new helper functions. ++ * config/aarch64/aarch64.md (loadwb_pair_): Define. ++ ++ 2014-07-23 Jiong Wang ++ ++ * config/aarch64/aarch64.c (aarch64_pushwb_pair_reg) ++ (aarch64_gen_storewb_pair): New helper function. ++ (aarch64_expand_prologue): Simplify code using new helper functions. ++ * config/aarch64/aarch64.md (storewb_pair_): Define. ++ ++ 2014-07-23 Jiong Wang ++ ++ * config/aarch64/aarch64.md: (aarch64_save_or_restore_callee_saves): ++ Rename to aarch64_save_callee_saves, remove restore code. ++ (aarch64_restore_callee_saves): New function. ++ ++ 2014-07-23 Jiong Wang ++ ++ * config/aarch64/aarch64.c (aarch64_save_or_restore_fprs): Deleted. ++ (aarch64_save_callee_saves): New function to handle reg save ++ for both core and vectore regs. ++ ++ 2014-07-23 Jiong Wang ++ ++ * config/aarch64/aarch64.c (aarch64_gen_load_pair) ++ (aarch64_gen_store_pair): New helper function. ++ (aarch64_save_or_restore_callee_save_registers) ++ (aarch64_save_or_restore_fprs): Use new helper functions. ++ ++ 2014-07-23 Jiong Wang ++ ++ * config/aarch64/aarch64.c (aarch64_next_callee_save): New function. ++ (aarch64_save_or_restore_callee_save_registers) ++ (aarch64_save_or_restore_fprs): Use aarch64_next_callee_save. ++ ++ 2014-07-23 Jiong Wang ++ ++ * config/aarch64/aarch64.c ++ (aarch64_save_or_restore_callee_save_registers) ++ (aarch64_save_or_restore_fprs): Hoist calculation of register rtx. ++ ++ 2014-07-23 Jiong Wang ++ ++ * config/aarch64/aarch64.c ++ (aarch64_save_or_restore_callee_save_registers) ++ (aarch64_save_or_restore_fprs): Remove 'increment'. ++ ++ 2014-07-23 Jiong Wang ++ ++ * config/aarch64/aarch64.c ++ (aarch64_save_or_restore_callee_save_registers) ++ (aarch64_save_or_restore_fprs): Use register offset in ++ cfun->machine->frame.reg_offset. ++ ++ 2014-07-23 Jiong Wang ++ ++ * config/aarch64/aarch64.c ++ (aarch64_save_or_restore_callee_save_registers) ++ (aarch64_save_or_restore_fprs): Remove base_rtx. ++ ++ 2014-07-23 Jiong Wang ++ ++ * config/aarch64/aarch64.c ++ (aarch64_save_or_restore_callee_save_registers): Rename 'offset' ++ to 'start_offset'. Remove local variable 'start_offset'. ++ ++ 2014-07-23 Jiong Wang ++ ++ * config/aarch64/aarch64.c (aarch64_save_or_restore_fprs): Change ++ type to HOST_WIDE_INT. ++ ++ 2014-07-23 Jiong Wang ++ ++ * config/aarch64/aarch64.c (aarch64_expand_prologue) ++ (aarch64_save_or_restore_fprs) ++ (aarch64_save_or_restore_callee_save_registers): GNU-Stylize code. ++ ++ 2014-06-05 Marcus Shawcroft ++ ++ * config/aarch64/aarch64.h (aarch64_frame): Add hard_fp_offset and ++ frame_size. ++ * config/aarch64/aarch64.c (aarch64_layout_frame): Initialize ++ aarch64_frame hard_fp_offset and frame_size. ++ (aarch64_expand_prologue): Use aarch64_frame hard_fp_offset and ++ frame_size; remove original_frame_size. ++ (aarch64_expand_epilogue, aarch64_final_eh_return_addr): Likewise. ++ (aarch64_initial_elimination_offset): Remove frame_size and ++ offset. Use aarch64_frame frame_size. ++ ++ 2014-06-05 Marcus Shawcroft ++ Jiong Wang ++ ++ * config/aarch64/aarch64.c (aarch64_layout_frame): Correct ++ initialization of R30 offset. Update offset. Iterate core ++ regisers upto X30. Remove X29, X30 specific code. ++ ++ 2014-06-05 Marcus Shawcroft ++ Jiong Wang ++ ++ * config/aarch64/aarch64.c (SLOT_NOT_REQUIRED, SLOT_REQUIRED): Define. ++ (aarch64_layout_frame): Use SLOT_NOT_REQUIRED and SLOT_REQUIRED. ++ (aarch64_register_saved_on_entry): Adjust test. ++ ++ 2014-06-05 Marcus Shawcroft ++ ++ * config/aarch64/aarch64.h (machine_function): Move ++ saved_varargs_size from here... ++ (aarch64_frameGTY): ... to here. ++ ++ * config/aarch64/aarch64.c (aarch64_expand_prologue) ++ (aarch64_expand_epilogue, aarch64_final_eh_return_addr) ++ (aarch64_initial_elimination_offset) ++ (aarch64_setup_incoming_varargs): Adjust location of ++ saved_varargs_size. ++ ++2014-08-11 Yvan Roux ++ ++ Backport from trunk r212753. ++ 2014-07-17 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64.c (aarch64_frint_unspec_p): New function. ++ (aarch64_rtx_costs): Handle FIX, UNSIGNED_FIX, UNSPEC. ++ ++2014-08-11 Yvan Roux ++ ++ Backport from trunk r212752. ++ 2014-07-17 Kyrylo Tkachov ++ ++ * config/aarch64/arm_neon.h (vmlal_high_lane_s16): Fix type. ++ (vmlal_high_lane_s32): Likewise. ++ (vmlal_high_lane_u16): Likewise. ++ (vmlal_high_lane_u32): Likewise. ++ (vmlsl_high_lane_s16): Likewise. ++ (vmlsl_high_lane_s32): Likewise. ++ (vmlsl_high_lane_u16): Likewise. ++ (vmlsl_high_lane_u32): Likewise. ++ ++2014-08-11 Yvan Roux ++ ++ Backport from trunk r212512. ++ 2014-07-14 Kyrylo Tkachov ++ ++ * config/arm/cortex-a15.md (cortex_a15_alu): Handle clz, rbit. ++ * config/arm/cortex-a5.md (cortex_a5_alu): Likewise. ++ * config/arm/cortex-a53.md (cortex_a53_alu): Likewise. ++ * config/arm/cortex-a7.md (cortex_a7_alu_reg): Likewise. ++ * config/arm/cortex-a9.md (cortex_a9_dp): Likewise. ++ * config/arm/cortex-m4.md (cortex_m4_alu): Likewise. ++ * config/arm/cortex-r4.md (cortex_r4_alu): Likewise. ++ ++2014-08-11 Yvan Roux ++ ++ Backport from trunk r212358. ++ 2014-07-08 Kyrylo Tkachov ++ ++ * config/arm/arm.c (cortexa5_extra_costs): New table. ++ (arm_cortex_a5_tune): Use cortexa5_extra_costs. ++ ++2014-08-11 Yvan Roux ++ ++ Backport from trunk r212296. ++ 2014-07-04 Tom de Vries ++ ++ * config/aarch64/aarch64-simd.md ++ (define_insn "vec_unpack_trunc_"): Fix constraint. ++ ++2014-08-10 Yvan Roux ++ ++ Backport from trunk r212142, r212225. ++ 2014-07-02 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64.c (aarch64_expand_vec_perm): Delete unused ++ variable i. ++ ++ 2014-06-30 Alan Lawrence ++ ++ * config/aarch64/aarch64-simd.md (vec_perm): Enable for bigendian. ++ * config/aarch64/aarch64.c (aarch64_expand_vec_perm): Remove assert ++ against bigendian and adjust indices. ++ ++2014-08-10 Yvan Roux ++ ++ Backport from trunk r211779. ++ 2014-06-18 Kyrylo Tkachov ++ ++ * config/arm/arm_neon.h (vadd_f32): Change #ifdef to __FAST_MATH. ++ ++2014-07-30 Yvan Roux ++ ++ Backport from trunk r211503. ++ 2014-06-12 Alan Lawrence ++ ++ * config/aarch64/arm_neon.h (vmlaq_n_f64, vmlsq_n_f64, vrsrtsq_f64, ++ vcge_p8, vcgeq_p8, vcgez_p8, vcgez_u8, vcgez_u16, vcgez_u32, vcgez_u64, ++ vcgezq_p8, vcgezq_u8, vcgezq_u16, vcgezq_u32, vcgezq_u64, vcgezd_u64, ++ vcgt_p8, vcgtq_p8, vcgtz_p8, vcgtz_u8, vcgtz_u16, vcgtz_u32, vcgtz_u64, ++ vcgtzq_p8, vcgtzq_u8, vcgtzq_u16, vcgtzq_u32, vcgtzq_u64, vcgtzd_u64, ++ vcle_p8, vcleq_p8, vclez_p8, vclez_u64, vclezq_p8, vclezd_u64, vclt_p8, ++ vcltq_p8, vcltz_p8, vcltzq_p8, vcltzd_u64): Remove functions as they are ++ not in the spec. ++ ++2014-07-30 Yvan Roux ++ ++ Backport from trunk r211140. ++ 2014-06-02 Marcus Shawcroft ++ ++ * config/aarch64/aarch64.md (set_fpcr): Drop ISB after FPCR write. ++ ++2014-07-29 Yvan Roux ++ ++ * LINARO-VERSION: Bump version. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ * LINARO-VERSION: Update. ++ ++2014-07-20 Yvan Roux ++ ++ Revert: ++ 2014-07-16 Yvan Roux ++ ++ Backport from trunk r211129. ++ 2014-06-02 Ramana Radhakrishnan ++ ++ PR target/61154 ++ * config/arm/arm.h (TARGET_SUPPORTS_WIDE_INT): Define. ++ * config/arm/arm.md (mov64 splitter): Replace const_double_operand ++ with immediate_operand. ++ ++2014-07-19 Yvan Roux ++ ++ * LINARO-VERSION: Bump version. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ * LINARO-VERSION: Update. ++ ++2014-07-17 Yvan Roux ++ ++ Backport from trunk r211887, r211899. ++ 2014-06-23 James Greenhalgh ++ ++ * config/aarch64/aarch64.md (addsi3_aarch64): Set "simd" attr to ++ "yes" where needed. ++ ++ 2014-06-23 James Greenhalgh ++ ++ * config/aarch64/aarch64.md (*addsi3_aarch64): Add alternative in ++ vector registers. ++ ++2014-07-17 Yvan Roux ++ ++ Backport from trunk r211440. ++ 2014-06-11 Kyrylo Tkachov ++ ++ * config.gcc (aarch64*-*-*): Add arm_acle.h to extra headers. ++ * Makefile.in (TEXI_GCC_FILES): Add aarch64-acle-intrinsics.texi to ++ dependencies. ++ * config/aarch64/aarch64-builtins.c (AARCH64_CRC32_BUILTINS): Define. ++ (aarch64_crc_builtin_datum): New struct. ++ (aarch64_crc_builtin_data): New. ++ (aarch64_init_crc32_builtins): New function. ++ (aarch64_init_builtins): Initialise CRC32 builtins when appropriate. ++ (aarch64_crc32_expand_builtin): New. ++ (aarch64_expand_builtin): Add CRC32 builtin expansion case. ++ * config/aarch64/aarch64.h (TARGET_CPU_CPP_BUILTINS): Define ++ __ARM_FEATURE_CRC32 when appropriate. ++ (TARGET_CRC32): Define. ++ * config/aarch64/aarch64.md (UNSPEC_CRC32B, UNSPEC_CRC32H, ++ UNSPEC_CRC32W, UNSPEC_CRC32X, UNSPEC_CRC32CB, UNSPEC_CRC32CH, ++ UNSPEC_CRC32CW, UNSPEC_CRC32CX): New unspec values. ++ (aarch64_): New pattern. ++ * config/aarch64/arm_acle.h: New file. ++ * config/aarch64/iterators.md (CRC): New int iterator. ++ (crc_variant, crc_mode): New int attributes. ++ * doc/aarch64-acle-intrinsics.texi: New file. ++ * doc/extend.texi (aarch64): Document aarch64 ACLE intrinsics. ++ Include aarch64-acle-intrinsics.texi. ++ ++2014-07-17 Yvan Roux ++ ++ Backport from trunk r211174. ++ 2014-06-03 Alan Lawrence ++ ++ * config/aarch64/aarch64-simd.md (aarch64_rev): ++ New pattern. ++ * config/aarch64/aarch64.c (aarch64_evpc_rev): New function. ++ (aarch64_expand_vec_perm_const_1): Add call to aarch64_evpc_rev. ++ * config/aarch64/iterators.md (REVERSE): New iterator. ++ (UNSPEC_REV64, UNSPEC_REV32, UNSPEC_REV16): New enum elements. ++ (rev_op): New int_attribute. ++ * config/aarch64/arm_neon.h (vrev16_p8, vrev16_s8, vrev16_u8, ++ vrev16q_p8, vrev16q_s8, vrev16q_u8, vrev32_p8, vrev32_p16, vrev32_s8, ++ vrev32_s16, vrev32_u8, vrev32_u16, vrev32q_p8, vrev32q_p16, vrev32q_s8, ++ vrev32q_s16, vrev32q_u8, vrev32q_u16, vrev64_f32, vrev64_p8, ++ vrev64_p16, vrev64_s8, vrev64_s16, vrev64_s32, vrev64_u8, vrev64_u16, ++ vrev64_u32, vrev64q_f32, vrev64q_p8, vrev64q_p16, vrev64q_s8, ++ vrev64q_s16, vrev64q_s32, vrev64q_u8, vrev64q_u16, vrev64q_u32): ++ Replace temporary __asm__ with __builtin_shuffle. ++ ++2014-07-17 Yvan Roux ++ ++ Backport from trunk r210216, r210218, r210219. ++ 2014-05-08 Ramana Radhakrishnan ++ ++ * config/arm/arm_neon.h: Update comment. ++ * config/arm/neon-docgen.ml: Delete. ++ * config/arm/neon-gen.ml: Delete. ++ * doc/arm-neon-intrinsics.texi: Update comment. ++ ++ 2014-05-08 Ramana Radhakrishnan ++ ++ * config/arm/arm_neon_builtins.def (vadd, vsub): Only define the v2sf ++ and v4sf versions. ++ (vand, vorr, veor, vorn, vbic): Remove. ++ * config/arm/neon.md (neon_vadd, neon_vsub, neon_vadd_unspec): Adjust ++ iterator. ++ (neon_vsub_unspec): Likewise. ++ (neon_vorr, neon_vand, neon_vbic, neon_veor, neon_vorn): Remove. ++ ++ 2014-05-08 Ramana Radhakrishnan ++ ++ * config/arm/arm_neon.h (vadd_s8): GNU C implementation ++ (vadd_s16): Likewise. ++ (vadd_s32): Likewise. ++ (vadd_f32): Likewise. ++ (vadd_u8): Likewise. ++ (vadd_u16): Likewise. ++ (vadd_u32): Likewise. ++ (vadd_s64): Likewise. ++ (vadd_u64): Likewise. ++ (vaddq_s8): Likewise. ++ (vaddq_s16): Likewise. ++ (vaddq_s32): Likewise. ++ (vaddq_s64): Likewise. ++ (vaddq_f32): Likewise. ++ (vaddq_u8): Likewise. ++ (vaddq_u16): Likewise. ++ (vaddq_u32): Likewise. ++ (vaddq_u64): Likewise. ++ (vmul_s8): Likewise. ++ (vmul_s16): Likewise. ++ (vmul_s32): Likewise. ++ (vmul_f32): Likewise. ++ (vmul_u8): Likewise. ++ (vmul_u16): Likewise. ++ (vmul_u32): Likewise. ++ (vmul_p8): Likewise. ++ (vmulq_s8): Likewise. ++ (vmulq_s16): Likewise. ++ (vmulq_s32): Likewise. ++ (vmulq_f32): Likewise. ++ (vmulq_u8): Likewise. ++ (vmulq_u16): Likewise. ++ (vmulq_u32): Likewise. ++ (vsub_s8): Likewise. ++ (vsub_s16): Likewise. ++ (vsub_s32): Likewise. ++ (vsub_f32): Likewise. ++ (vsub_u8): Likewise. ++ (vsub_u16): Likewise. ++ (vsub_u32): Likewise. ++ (vsub_s64): Likewise. ++ (vsub_u64): Likewise. ++ (vsubq_s8): Likewise. ++ (vsubq_s16): Likewise. ++ (vsubq_s32): Likewise. ++ (vsubq_s64): Likewise. ++ (vsubq_f32): Likewise. ++ (vsubq_u8): Likewise. ++ (vsubq_u16): Likewise. ++ (vsubq_u32): Likewise. ++ (vsubq_u64): Likewise. ++ (vand_s8): Likewise. ++ (vand_s16): Likewise. ++ (vand_s32): Likewise. ++ (vand_u8): Likewise. ++ (vand_u16): Likewise. ++ (vand_u32): Likewise. ++ (vand_s64): Likewise. ++ (vand_u64): Likewise. ++ (vandq_s8): Likewise. ++ (vandq_s16): Likewise. ++ (vandq_s32): Likewise. ++ (vandq_s64): Likewise. ++ (vandq_u8): Likewise. ++ (vandq_u16): Likewise. ++ (vandq_u32): Likewise. ++ (vandq_u64): Likewise. ++ (vorr_s8): Likewise. ++ (vorr_s16): Likewise. ++ (vorr_s32): Likewise. ++ (vorr_u8): Likewise. ++ (vorr_u16): Likewise. ++ (vorr_u32): Likewise. ++ (vorr_s64): Likewise. ++ (vorr_u64): Likewise. ++ (vorrq_s8): Likewise. ++ (vorrq_s16): Likewise. ++ (vorrq_s32): Likewise. ++ (vorrq_s64): Likewise. ++ (vorrq_u8): Likewise. ++ (vorrq_u16): Likewise. ++ (vorrq_u32): Likewise. ++ (vorrq_u64): Likewise. ++ (veor_s8): Likewise. ++ (veor_s16): Likewise. ++ (veor_s32): Likewise. ++ (veor_u8): Likewise. ++ (veor_u16): Likewise. ++ (veor_u32): Likewise. ++ (veor_s64): Likewise. ++ (veor_u64): Likewise. ++ (veorq_s8): Likewise. ++ (veorq_s16): Likewise. ++ (veorq_s32): Likewise. ++ (veorq_s64): Likewise. ++ (veorq_u8): Likewise. ++ (veorq_u16): Likewise. ++ (veorq_u32): Likewise. ++ (veorq_u64): Likewise. ++ (vbic_s8): Likewise. ++ (vbic_s16): Likewise. ++ (vbic_s32): Likewise. ++ (vbic_u8): Likewise. ++ (vbic_u16): Likewise. ++ (vbic_u32): Likewise. ++ (vbic_s64): Likewise. ++ (vbic_u64): Likewise. ++ (vbicq_s8): Likewise. ++ (vbicq_s16): Likewise. ++ (vbicq_s32): Likewise. ++ (vbicq_s64): Likewise. ++ (vbicq_u8): Likewise. ++ (vbicq_u16): Likewise. ++ (vbicq_u32): Likewise. ++ (vbicq_u64): Likewise. ++ (vorn_s8): Likewise. ++ (vorn_s16): Likewise. ++ (vorn_s32): Likewise. ++ (vorn_u8): Likewise. ++ (vorn_u16): Likewise. ++ (vorn_u32): Likewise. ++ (vorn_s64): Likewise. ++ (vorn_u64): Likewise. ++ (vornq_s8): Likewise. ++ (vornq_s16): Likewise. ++ (vornq_s32): Likewise. ++ (vornq_s64): Likewise. ++ (vornq_u8): Likewise. ++ (vornq_u16): Likewise. ++ (vornq_u32): Likewise. ++ (vornq_u64): Likewise. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r210151. ++ 2014-05-07 Alan Lawrence ++ ++ * config/aarch64/arm_neon.h (vtrn1_f32, vtrn1_p8, vtrn1_p16, vtrn1_s8, ++ vtrn1_s16, vtrn1_s32, vtrn1_u8, vtrn1_u16, vtrn1_u32, vtrn1q_f32, ++ vtrn1q_f64, vtrn1q_p8, vtrn1q_p16, vtrn1q_s8, vtrn1q_s16, vtrn1q_s32, ++ vtrn1q_s64, vtrn1q_u8, vtrn1q_u16, vtrn1q_u32, vtrn1q_u64, vtrn2_f32, ++ vtrn2_p8, vtrn2_p16, vtrn2_s8, vtrn2_s16, vtrn2_s32, vtrn2_u8, ++ vtrn2_u16, vtrn2_u32, vtrn2q_f32, vtrn2q_f64, vtrn2q_p8, vtrn2q_p16, ++ vtrn2q_s8, vtrn2q_s16, vtrn2q_s32, vtrn2q_s64, vtrn2q_u8, vtrn2q_u16, ++ vtrn2q_u32, vtrn2q_u64): Replace temporary asm with __builtin_shuffle. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r209794. ++ 2014-04-25 Marek Polacek ++ ++ PR c/60114 ++ * c-parser.c (c_parser_initelt): Pass input_location to ++ process_init_element. ++ (c_parser_initval): Pass loc to process_init_element. ++ * c-tree.h (process_init_element): Adjust declaration. ++ * c-typeck.c (push_init_level): Pass input_location to ++ process_init_element. ++ (pop_init_level): Likewise. ++ (set_designator): Likewise. ++ (output_init_element): Add location_t parameter. Pass loc to ++ digest_init. ++ (output_pending_init_elements): Pass input_location to ++ output_init_element. ++ (process_init_element): Add location_t parameter. Pass loc to ++ output_init_element. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r211771. ++ 2014-06-18 Kyrylo Tkachov ++ ++ * genattrtab.c (n_bypassed): New variable. ++ (process_bypasses): Initialise n_bypassed. ++ Count number of bypassed reservations. ++ (make_automaton_attrs): Allocate space for bypassed reservations ++ rather than number of bypasses. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r210861. ++ 2014-05-23 Jiong Wang ++ ++ * config/aarch64/predicates.md (aarch64_call_insn_operand): New ++ predicate. ++ * config/aarch64/constraints.md ("Ucs", "Usf"): New constraints. ++ * config/aarch64/aarch64.md (*sibcall_insn, *sibcall_value_insn): ++ Adjust for tailcalling through registers. ++ * config/aarch64/aarch64.h (enum reg_class): New caller save ++ register class. ++ (REG_CLASS_NAMES): Likewise. ++ (REG_CLASS_CONTENTS): Likewise. ++ * config/aarch64/aarch64.c (aarch64_function_ok_for_sibcall): ++ Allow tailcalling without decls. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r211314. ++ 2014-06-06 James Greenhalgh ++ ++ * config/aarch64/aarch64-protos.h (aarch64_expand_movmem): New. ++ * config/aarch64/aarch64.c (aarch64_move_pointer): New. ++ (aarch64_progress_pointer): Likewise. ++ (aarch64_copy_one_part_and_move_pointers): Likewise. ++ (aarch64_expand_movmen): Likewise. ++ * config/aarch64/aarch64.h (MOVE_RATIO): Set low. ++ * config/aarch64/aarch64.md (movmem): New. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r211185, 211186. ++ 2014-06-03 Alan Lawrence ++ ++ * gcc/config/aarch64/aarch64-builtins.c ++ (aarch64_types_binop_uus_qualifiers, ++ aarch64_types_shift_to_unsigned_qualifiers, ++ aarch64_types_unsigned_shiftacc_qualifiers): Define. ++ * gcc/config/aarch64/aarch64-simd-builtins.def (uqshl, uqrshl, uqadd, ++ uqsub, usqadd, usra_n, ursra_n, uqshrn_n, uqrshrn_n, usri_n, usli_n, ++ sqshlu_n, uqshl_n): Update qualifiers. ++ * gcc/config/aarch64/arm_neon.h (vqadd_u8, vqadd_u16, vqadd_u32, ++ vqadd_u64, vqaddq_u8, vqaddq_u16, vqaddq_u32, vqaddq_u64, vqsub_u8, ++ vqsub_u16, vqsub_u32, vqsub_u64, vqsubq_u8, vqsubq_u16, vqsubq_u32, ++ vqsubq_u64, vqaddb_u8, vqaddh_u16, vqadds_u32, vqaddd_u64, vqrshl_u8, ++ vqrshl_u16, vqrshl_u32, vqrshl_u64, vqrshlq_u8, vqrshlq_u16, ++ vqrshlq_u32, vqrshlq_u64, vqrshlb_u8, vqrshlh_u16, vqrshls_u32, ++ vqrshld_u64, vqrshrn_n_u16, vqrshrn_n_u32, vqrshrn_n_u64, ++ vqrshrnh_n_u16, vqrshrns_n_u32, vqrshrnd_n_u64, vqshl_u8, vqshl_u16, ++ vqshl_u32, vqshl_u64, vqshlq_u8, vqshlq_u16, vqshlq_u32, vqshlq_u64, ++ vqshlb_u8, vqshlh_u16, vqshls_u32, vqshld_u64, vqshl_n_u8, vqshl_n_u16, ++ vqshl_n_u32, vqshl_n_u64, vqshlq_n_u8, vqshlq_n_u16, vqshlq_n_u32, ++ vqshlq_n_u64, vqshlb_n_u8, vqshlh_n_u16, vqshls_n_u32, vqshld_n_u64, ++ vqshlu_n_s8, vqshlu_n_s16, vqshlu_n_s32, vqshlu_n_s64, vqshluq_n_s8, ++ vqshluq_n_s16, vqshluq_n_s32, vqshluq_n_s64, vqshlub_n_s8, ++ vqshluh_n_s16, vqshlus_n_s32, vqshlud_n_s64, vqshrn_n_u16, ++ vqshrn_n_u32, vqshrn_n_u64, vqshrnh_n_u16, vqshrns_n_u32, ++ vqshrnd_n_u64, vqsubb_u8, vqsubh_u16, vqsubs_u32, vqsubd_u64, ++ vrsra_n_u8, vrsra_n_u16, vrsra_n_u32, vrsra_n_u64, vrsraq_n_u8, ++ vrsraq_n_u16, vrsraq_n_u32, vrsraq_n_u64, vrsrad_n_u64, vsli_n_u8, ++ vsli_n_u16, vsli_n_u32,vsli_n_u64, vsliq_n_u8, vsliq_n_u16, ++ vsliq_n_u32, vsliq_n_u64, vslid_n_u64, vsqadd_u8, vsqadd_u16, ++ vsqadd_u32, vsqadd_u64, vsqaddq_u8, vsqaddq_u16, vsqaddq_u32, ++ vsqaddq_u64, vsqaddb_u8, vsqaddh_u16, vsqadds_u32, vsqaddd_u64, ++ vsra_n_u8, vsra_n_u16, vsra_n_u32, vsra_n_u64, vsraq_n_u8, ++ vsraq_n_u16, vsraq_n_u32, vsraq_n_u64, vsrad_n_u64, vsri_n_u8, ++ vsri_n_u16, vsri_n_u32, vsri_n_u64, vsriq_n_u8, vsriq_n_u16, ++ vsriq_n_u32, vsriq_n_u64, vsrid_n_u64): Remove casts. ++ ++ 2014-06-03 Alan Lawrence ++ ++ * gcc/config/aarch64/aarch64-builtins.c ++ (aarch64_types_binop_ssu_qualifiers): New static data. ++ (TYPES_BINOP_SSU): Define. ++ * gcc/config/aarch64/aarch64-simd-builtins.def (suqadd, ushl, urshl, ++ urshr_n, ushll_n): Use appropriate unsigned qualifiers. 47 ++ * gcc/config/aarch64/arm_neon.h (vrshl_u8, vrshl_u16, vrshl_u32, ++ vrshl_u64, vrshlq_u8, vrshlq_u16, vrshlq_u32, vrshlq_u64, vrshld_u64, ++ vrshr_n_u8, vrshr_n_u16, vrshr_n_u32, vrshr_n_u64, vrshrq_n_u8, 50 ++ vrshrq_n_u16, vrshrq_n_u32, vrshrq_n_u64, vrshrd_n_u64, vshll_n_u8, ++ vshll_n_u16, vshll_n_u32, vuqadd_s8, vuqadd_s16, vuqadd_s32, 52 ++ vuqadd_s64, vuqaddq_s8, vuqaddq_s16, vuqaddq_s32, vuqaddq_s64, 53 ++ vuqaddb_s8, vuqaddh_s16, vuqadds_s32, vuqaddd_s64): Add signedness ++ suffix to builtin function name, remove cast. 55 ++ (vshl_s8, vshl_s16, vshl_s32, vshl_s64, vshl_u8, vshl_u16, vshl_u32, ++ vshl_u64, vshlq_s8, vshlq_s16, vshlq_s32, vshlq_s64, vshlq_u8, 57 ++ vshlq_u16, vshlq_u32, vshlq_u64, vshld_s64, vshld_u64): Remove cast. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r211408, 211416. ++ 2014-06-10 Marcus Shawcroft ++ ++ * config/aarch64/aarch64.c (aarch64_save_or_restore_fprs): Fix ++ REG_CFA_RESTORE mode. ++ ++ 2014-06-10 Jiong Wang ++ ++ * config/aarch64/aarch64.c (aarch64_save_or_restore_fprs) ++ (aarch64_save_or_restore_callee_save_registers): Fix layout. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r211418. ++ 2014-06-10 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64-simd.md (move_lo_quad_): ++ Change second alternative type to f_mcr. ++ * config/aarch64/aarch64.md (*movsi_aarch64): Change 11th ++ and 12th alternatives' types to f_mcr and f_mrc. ++ (*movdi_aarch64): Same for 12th and 13th alternatives. ++ (*movsf_aarch64): Change 9th alternatives' type to mov_reg. ++ (aarch64_movtilow_tilow): Change type to fmov. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r211371. ++ 2014-06-09 Ramana Radhakrishnan ++ ++ * config/arm/arm-modes.def: Remove XFmode. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r211268. ++ 2014-06-05 Marcus Shawcroft ++ ++ * config/aarch64/aarch64.c (aarch64_expand_prologue): Update stack ++ layout comment. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r211129. ++ 2014-06-02 Ramana Radhakrishnan ++ ++ PR target/61154 ++ * config/arm/arm.h (TARGET_SUPPORTS_WIDE_INT): Define. ++ * config/arm/arm.md (mov64 splitter): Replace const_double_operand ++ with immediate_operand. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r211073. ++ 2014-05-30 Kyrylo Tkachov ++ ++ * config/arm/thumb2.md (*thumb2_movhi_insn): Set type of movw ++ to mov_imm. ++ * config/arm/vfp.md (*thumb2_movsi_vfp): Likewise. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r211050. ++ 2014-05-29 Richard Earnshaw ++ Richard Sandiford ++ ++ * arm/iterators.md (shiftable_ops): New code iterator. ++ (t2_binop0, arith_shift_insn): New code attributes. ++ * arm/predicates.md (shift_nomul_operator): New predicate. ++ * arm/arm.md (insn_enabled): Delete. ++ (enabled): Remove insn_enabled test. ++ (*arith_shiftsi): Delete. Replace with ... ++ (*_multsi): ... new pattern. ++ (*_shiftsi): ... new pattern. ++ * config/arm/arm.c (arm_print_operand): Handle operand format 'b'. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r210996. ++ 2014-05-27 Andrew Pinski ++ ++ * config/aarch64/aarch64.md (stack_protect_set_): ++ Use for the register in assembly template. ++ (stack_protect_test): Use the mode of operands[0] for the ++ result. ++ (stack_protect_test_): Use for the register ++ in assembly template. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r210967. ++ 2014-05-27 Kyrylo Tkachov ++ ++ * config/arm/neon.md (neon_bswap): New pattern. ++ * config/arm/arm.c (neon_itype): Add NEON_BSWAP. ++ (arm_init_neon_builtins): Handle NEON_BSWAP. ++ Define required type nodes. ++ (arm_expand_neon_builtin): Handle NEON_BSWAP. ++ (arm_builtin_vectorized_function): Handle BUILTIN_BSWAP builtins. ++ * config/arm/arm_neon_builtins.def (bswap): Define builtins. ++ * config/arm/iterators.md (VDQHSD): New mode iterator. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r210471. ++ 2014-05-15 Kyrylo Tkachov ++ ++ * config/arm/arm.c (arm_option_override): Use the SCHED_PRESSURE_MODEL ++ enum name for PARAM_SCHED_PRESSURE_ALGORITHM. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r210369. ++ 2014-05-13 Kyrylo Tkachov ++ ++ * config/arm/arm.c (neon_itype): Remove NEON_RESULTPAIR. ++ (arm_init_neon_builtins): Remove handling of NEON_RESULTPAIR. ++ Remove associated type declarations and initialisations. ++ (arm_expand_neon_builtin): Likewise. ++ (neon_emit_pair_result_insn): Delete. ++ * config/arm/arm_neon_builtins (vtrn, vzip, vuzp): Delete. ++ * config/arm/neon.md (neon_vtrn): Delete. ++ (neon_vzip): Likewise. ++ (neon_vuzp): Likewise. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r211058, 211177. ++ 2014-05-29 Alan Lawrence ++ ++ * config/aarch64/aarch64-builtins.c (aarch64_types_binopv_qualifiers, ++ TYPES_BINOPV): New static data. ++ * config/aarch64/aarch64-simd-builtins.def (im_lane_bound): New builtin. ++ * config/aarch64/aarch64-simd.md (aarch64_ext, aarch64_im_lane_boundsi): ++ New patterns. ++ * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const_1): Match ++ patterns for EXT. ++ (aarch64_evpc_ext): New function. ++ ++ * config/aarch64/iterators.md (UNSPEC_EXT): New enum element. ++ ++ * config/aarch64/arm_neon.h (vext_f32, vext_f64, vext_p8, vext_p16, ++ vext_s8, vext_s16, vext_s32, vext_s64, vext_u8, vext_u16, vext_u32, ++ vext_u64, vextq_f32, vextq_f64, vextq_p8, vextq_p16, vextq_s8, ++ vextq_s16, vextq_s32, vextq_s64, vextq_u8, vextq_u16, vextq_u32, ++ vextq_u64): Replace __asm with __builtin_shuffle and im_lane_boundsi. ++ ++ 2014-06-03 Alan Lawrence ++ ++ * config/aarch64/aarch64.c (aarch64_evpc_ext): allow and handle ++ location == 0. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r209797. ++ 2014-04-25 Kyrylo Tkachov ++ ++ * config/arm/aarch-common.c (aarch_rev16_shright_mask_imm_p): ++ Use HOST_WIDE_INT_C for mask literal. ++ (aarch_rev16_shleft_mask_imm_p): Likewise. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r211148. ++ 2014-06-02 Andrew Pinski ++ ++ * config/aarch64/aarch64-linux.h (GLIBC_DYNAMIC_LINKER): ++ /lib/ld-linux32-aarch64.so.1 is used for ILP32. ++ (LINUX_TARGET_LINK_SPEC): Update linker script for ILP32. ++ file whose name depends on -mabi= and -mbig-endian. ++ * config/aarch64/t-aarch64-linux (MULTILIB_OSDIRNAMES): Handle LP64 ++ better and handle ilp32 too. ++ (MULTILIB_OPTIONS): Delete. ++ (MULTILIB_DIRNAMES): Delete. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r210828, r211103. ++ 2014-05-31 Kugan Vivekanandarajah ++ ++ * config/arm/arm.c (TARGET_ATOMIC_ASSIGN_EXPAND_FENV): New define. ++ (arm_builtins) : Add ARM_BUILTIN_GET_FPSCR and ARM_BUILTIN_SET_FPSCR. ++ (bdesc_2arg) : Add description for builtins __builtins_arm_set_fpscr ++ and __builtins_arm_get_fpscr. ++ (arm_init_builtins) : Initialize builtins __builtins_arm_set_fpscr and ++ __builtins_arm_get_fpscr. ++ (arm_expand_builtin) : Expand builtins __builtins_arm_set_fpscr and ++ __builtins_arm_ldfpscr. ++ (arm_atomic_assign_expand_fenv): New function. ++ * config/arm/vfp.md (set_fpscr): New pattern. ++ (get_fpscr) : Likewise. ++ * config/arm/unspecs.md (unspecv): Add VUNSPEC_GET_FPSCR and ++ VUNSPEC_SET_FPSCR. ++ * doc/extend.texi (AARCH64 Built-in Functions) : Document ++ __builtins_arm_set_fpscr, __builtins_arm_get_fpscr. ++ ++ 2014-05-23 Kugan Vivekanandarajah ++ ++ * config/aarch64/aarch64.c (TARGET_ATOMIC_ASSIGN_EXPAND_FENV): New ++ define. ++ * config/aarch64/aarch64-protos.h (aarch64_atomic_assign_expand_fenv): ++ New function declaration. ++ * config/aarch64/aarch64-builtins.c (aarch64_builtins) : Add ++ AARCH64_BUILTIN_GET_FPCR, AARCH64_BUILTIN_SET_FPCR. ++ AARCH64_BUILTIN_GET_FPSR and AARCH64_BUILTIN_SET_FPSR. ++ (aarch64_init_builtins) : Initialize builtins ++ __builtins_aarch64_set_fpcr, __builtins_aarch64_get_fpcr. ++ __builtins_aarch64_set_fpsr and __builtins_aarch64_get_fpsr. ++ (aarch64_expand_builtin) : Expand builtins __builtins_aarch64_set_fpcr ++ __builtins_aarch64_get_fpcr, __builtins_aarch64_get_fpsr, ++ and __builtins_aarch64_set_fpsr. ++ (aarch64_atomic_assign_expand_fenv): New function. ++ * config/aarch64/aarch64.md (set_fpcr): New pattern. ++ (get_fpcr) : Likewise. ++ (set_fpsr) : Likewise. ++ (get_fpsr) : Likewise. ++ (unspecv): Add UNSPECV_GET_FPCR and UNSPECV_SET_FPCR, UNSPECV_GET_FPSR ++ and UNSPECV_SET_FPSR. ++ * doc/extend.texi (AARCH64 Built-in Functions) : Document ++ __builtins_aarch64_set_fpcr, __builtins_aarch64_get_fpcr. ++ __builtins_aarch64_set_fpsr and __builtins_aarch64_get_fpsr. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r210355. ++ 2014-05-13 Ian Bolton ++ ++ * config/aarch64/aarch64-protos.h ++ (aarch64_hard_regno_caller_save_mode): New prototype. ++ * config/aarch64/aarch64.c (aarch64_hard_regno_caller_save_mode): ++ New function. ++ * config/aarch64/aarch64.h (HARD_REGNO_CALLER_SAVE_MODE): New macro. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r209943. ++ 2014-04-30 Alan Lawrence ++ ++ * config/aarch64/arm_neon.h (vuzp1_f32, vuzp1_p8, vuzp1_p16, vuzp1_s8, ++ vuzp1_s16, vuzp1_s32, vuzp1_u8, vuzp1_u16, vuzp1_u32, vuzp1q_f32, ++ vuzp1q_f64, vuzp1q_p8, vuzp1q_p16, vuzp1q_s8, vuzp1q_s16, vuzp1q_s32, ++ vuzp1q_s64, vuzp1q_u8, vuzp1q_u16, vuzp1q_u32, vuzp1q_u64, vuzp2_f32, ++ vuzp2_p8, vuzp2_p16, vuzp2_s8, vuzp2_s16, vuzp2_s32, vuzp2_u8, ++ vuzp2_u16, vuzp2_u32, vuzp2q_f32, vuzp2q_f64, vuzp2q_p8, vuzp2q_p16, ++ vuzp2q_s8, vuzp2q_s16, vuzp2q_s32, vuzp2q_s64, vuzp2q_u8, vuzp2q_u16, ++ vuzp2q_u32, vuzp2q_u64): Replace temporary asm with __builtin_shuffle. ++ ++2014-06-26 Yvan Roux ++ ++ * LINARO-VERSION: Bump version. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ * LINARO-VERSION: Update. ++ ++2014-06-24 Yvan Roux ++ ++ Revert: ++ 2014-05-23 Yvan Roux ++ ++ Backport from trunk r209643. ++ 2014-04-22 Ramana Radhakrishnan ++ ++ * config/aarch64/aarch64.c (TARGET_FLAGS_REGNUM): Define. ++ ++2014-06-13 Yvan Roux ++ ++ Backport from trunk r210493, 210494, 210495, 210496, 210497, 210498, ++ 210499, 210500, 210501, 210502, 210503, 210504, 210505, 210506, 210507, ++ 210508, 210509, 210510, 210512, 211205, 211206. ++ 2014-05-16 James Greenhalgh ++ ++ * config/aarch64/aarch64-protos.h (scale_addr_mode_cost): New. ++ (cpu_addrcost_table): Use it. ++ * config/aarch64/aarch64.c (generic_addrcost_table): Initialize it. ++ (aarch64_address_cost): Rewrite using aarch64_classify_address, ++ move it. ++ ++ 2014-05-16 James Greenhalgh ++ ++ * config/aarch64/aarch64.c (cortexa57_addrcost_table): New. ++ (cortexa57_vector_cost): Likewise. ++ (cortexa57_tunings): Use them. ++ ++ 2014-05-16 James Greenhalgh ++ ++ * config/aarch64/aarch64.c (aarch64_rtx_costs_wrapper): New. ++ (TARGET_RTX_COSTS): Call it. ++ ++ 2014-05-16 James Greenhalgh ++ Philipp Tomsich ++ ++ * config/aarch64/aarch64.c (aarch64_build_constant): Conditionally ++ emit instructions, return number of instructions which would ++ be emitted. ++ (aarch64_add_constant): Update call to aarch64_build_constant. ++ (aarch64_output_mi_thunk): Likewise. ++ (aarch64_rtx_costs): Estimate cost of a CONST_INT, cost ++ a CONST_DOUBLE. ++ ++ 2014-05-16 James Greenhalgh ++ Philipp Tomsich ++ ++ * config/aarch64/aarch64.c (aarch64_strip_shift_or_extend): Rename ++ to... ++ (aarch64_strip_extend): ...this, don't strip shifts, check RTX is ++ well formed. ++ (aarch64_rtx_mult_cost): New. ++ (aarch64_rtx_costs): Use it, refactor as appropriate. ++ ++ 2014-05-16 James Greenhalgh ++ ++ * config/aarch64/aarch64.c (aarch64_rtx_costs): Set default costs. ++ ++ 2014-05-16 James Greenhalgh ++ Philip Tomsich ++ ++ * config/aarch64/aarch64.c (aarch64_rtx_costs): Improve costing ++ for SET RTX. ++ ++ 2014-05-16 James Greenhalgh ++ Philipp Tomsich ++ ++ * config/aarch64/aarch64.c (aarch64_rtx_costs): Use address ++ costs when costing loads and stores to memory. ++ ++ 2014-05-16 James Greenhalgh ++ Philipp Tomsich ++ ++ * config/aarch64/aarch64.c (aarch64_rtx_costs): Improve cost for ++ logical operations. ++ ++ 2014-05-16 James Greenhalgh ++ Philipp Tomsich ++ ++ * config/aarch64/aarch64.c (aarch64_rtx_costs): Cost ++ ZERO_EXTEND and SIGN_EXTEND better. ++ ++ 2014-05-16 James Greenhalgh ++ Philipp Tomsich ++ ++ * config/aarch64/aarch64.c (aarch64_rtx_costs): Improve costs for ++ rotates and shifts. ++ ++ 2014-03-16 James Greenhalgh ++ Philipp Tomsich ++ ++ * config/aarch64/aarch64.c (aarch64_rtx_arith_op_extract_p): New. ++ (aarch64_rtx_costs): Improve costs for SIGN/ZERO_EXTRACT. ++ ++ 2014-05-16 James Greenhalgh ++ Philipp Tomsich ++ ++ * config/aarch64/aarch64.c (aarch64_rtx_costs): Improve costs for ++ DIV/MOD. ++ ++ 2014-05-16 James Greenhalgh ++ Philipp Tomsich ++ ++ * config/aarch64/aarch64.c (aarch64_rtx_costs): Cost comparison ++ operators. ++ ++ 2014-05-16 James Greenhalgh ++ Philipp Tomsich ++ ++ * config/aarch64/aarch64.c (aarch64_rtx_costs): Cost FMA, ++ FLOAT_EXTEND, FLOAT_TRUNCATE, ABS, SMAX, and SMIN. ++ ++ 2014-05-16 James Greenhalgh ++ Philipp Tomsich ++ ++ * config/aarch64/aarch64.c (aarch64_rtx_costs): Cost TRUNCATE. ++ ++ 2014-05-16 James Greenhalgh ++ ++ * config/aarch64/aarch64.c (aarch64_rtx_costs): Cost SYMBOL_REF, ++ HIGH, LO_SUM. ++ ++ 2014-05-16 James Greenhalgh ++ ++ * config/aarch64/aarch64.c (aarch64_rtx_costs): Handle the case ++ where we were unable to cost an RTX. ++ ++ 2014-05-16 James Greenhalgh ++ ++ * config/aarch64/aarch64.c (aarch64_rtx_mult_cost): Fix FNMUL case. ++ ++ 2014-06-03 Andrew Pinski ++ ++ * config/aarch64/aarch64.c (aarch64_if_then_else_costs): New function. ++ (aarch64_rtx_costs): Use aarch64_if_then_else_costs. ++ ++ 2014-06-03 Andrew Pinski ++ ++ * config/aarch64/aarch64.c (aarch64_if_then_else_costs): Allow non ++ comparisons for OP0. ++ ++2014-06-13 Yvan Roux ++ ++ * LINARO-VERSION: Bump version. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ * LINARO-VERSION: Update. ++ ++2014-06-04 Yvan Roux ++ ++ Backport from trunk r211211. ++ 2014-06-04 Bin Cheng ++ ++ * config/aarch64/aarch64.c (aarch64_classify_address) ++ (aarch64_legitimize_reload_address): Support full addressing modes ++ for vector modes. ++ * config/aarch64/aarch64.md (mov, movmisalign) ++ (*aarch64_simd_mov, *aarch64_simd_mov): Relax predicates. ++ ++2014-05-25 Yvan Roux ++ ++ Backport from trunk r209906. ++ 2014-04-29 Alan Lawrence ++ ++ * config/aarch64/arm_neon.h (vzip1_f32, vzip1_p8, vzip1_p16, vzip1_s8, ++ vzip1_s16, vzip1_s32, vzip1_u8, vzip1_u16, vzip1_u32, vzip1q_f32, ++ vzip1q_f64, vzip1q_p8, vzip1q_p16, vzip1q_s8, vzip1q_s16, vzip1q_s32, ++ vzip1q_s64, vzip1q_u8, vzip1q_u16, vzip1q_u32, vzip1q_u64, vzip2_f32, ++ vzip2_p8, vzip2_p16, vzip2_s8, vzip2_s16, vzip2_s32, vzip2_u8, ++ vzip2_u16, vzip2_u32, vzip2q_f32, vzip2q_f64, vzip2q_p8, vzip2q_p16, ++ vzip2q_s8, vzip2q_s16, vzip2q_s32, vzip2q_s64, vzip2q_u8, vzip2q_u16, ++ vzip2q_u32, vzip2q_u64): Replace inline __asm__ with __builtin_shuffle. ++ ++2014-05-25 Yvan Roux ++ ++ Backport from trunk r209897. ++ 2014-04-29 James Greenhalgh ++ ++ * calls.c (initialize_argument_information): Always treat ++ PUSH_ARGS_REVERSED as 1, simplify code accordingly. ++ (expand_call): Likewise. ++ (emit_library_call_calue_1): Likewise. ++ * expr.c (PUSH_ARGS_REVERSED): Do not define. ++ (emit_push_insn): Always treat PUSH_ARGS_REVERSED as 1, simplify ++ code accordingly. ++ ++2014-05-25 Yvan Roux ++ ++ Backport from trunk r209880. ++ 2014-04-28 James Greenhalgh ++ ++ * config/aarch64/aarch64-builtins.c ++ (aarch64_types_storestruct_lane_qualifiers): New. ++ (TYPES_STORESTRUCT_LANE): Likewise. ++ * config/aarch64/aarch64-simd-builtins.def (st2_lane): New. ++ (st3_lane): Likewise. ++ (st4_lane): Likewise. ++ * config/aarch64/aarch64-simd.md (vec_store_lanesoi_lane): New. ++ (vec_store_lanesci_lane): Likewise. ++ (vec_store_lanesxi_lane): Likewise. ++ (aarch64_st2_lane): Likewise. ++ (aarch64_st3_lane): Likewise. ++ (aarch64_st4_lane): Likewise. ++ * config/aarch64/aarch64.md (unspec): Add UNSPEC_ST{2,3,4}_LANE. ++ * config/aarch64/arm_neon.h ++ (__ST2_LANE_FUNC): Rewrite using builtins, update use points to ++ use new macro arguments. ++ (__ST3_LANE_FUNC): Likewise. ++ (__ST4_LANE_FUNC): Likewise. ++ * config/aarch64/iterators.md (V_TWO_ELEM): New. ++ (V_THREE_ELEM): Likewise. ++ (V_FOUR_ELEM): Likewise. ++ ++2014-05-25 Yvan Roux ++ ++ Backport from trunk r209878. ++ 2014-04-28 James Greenhalgh ++ ++ * config/aarch64/aarch64-protos.h (aarch64_modes_tieable_p): New. ++ * config/aarch64/aarch64.c ++ (aarch64_cannot_change_mode_class): Weaken conditions. ++ (aarch64_modes_tieable_p): New. ++ * config/aarch64/aarch64.h (MODES_TIEABLE_P): Use it. ++ ++2014-05-25 Yvan Roux ++ ++ Backport from trunk r209808. ++ 2014-04-25 Jiong Wang ++ ++ * config/arm/predicates.md (call_insn_operand): Add long_call check. ++ * config/arm/arm.md (sibcall, sibcall_value): Force the address to ++ reg for long_call. ++ * config/arm/arm.c (arm_function_ok_for_sibcall): Remove long_call ++ restriction. ++ ++2014-05-25 Yvan Roux ++ ++ Backport from trunk r209806. ++ 2014-04-25 Kyrylo Tkachov ++ ++ * config/arm/arm.c (arm_cortex_a8_tune): Initialise ++ T16-related fields. ++ ++2014-05-25 Yvan Roux ++ ++ Backport from trunk r209742, 209749. ++ 2014-04-24 Alan Lawrence ++ ++ * config/aarch64/aarch64.c (aarch64_evpc_tbl): Enable for bigendian. ++ ++ 2014-04-24 Tejas Belagod ++ ++ * config/aarch64/aarch64.c (aarch64_evpc_tbl): Reverse order of elements ++ for big-endian. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209736. ++ 2014-04-24 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64-builtins.c ++ (aarch64_builtin_vectorized_function): Handle BUILT_IN_BSWAP16, ++ BUILT_IN_BSWAP32, BUILT_IN_BSWAP64. ++ * config/aarch64/aarch64-simd.md (bswap): New pattern. ++ * config/aarch64/aarch64-simd-builtins.def: Define vector bswap ++ builtins. ++ * config/aarch64/iterator.md (VDQHSD): New mode iterator. ++ (Vrevsuff): New mode attribute. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209712. ++ 2014-04-23 Venkataramanan Kumar ++ ++ * config/aarch64/aarch64.md (stack_protect_set, stack_protect_test) ++ (stack_protect_set_, stack_protect_test_): Add ++ machine descriptions for Stack Smashing Protector. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209711. ++ 2014-04-23 Richard Earnshaw ++ ++ * aarch64.md (_rol3): New pattern. ++ (_rolsi3_uxtw): Likewise. ++ * aarch64.c (aarch64_strip_shift): Handle ROTATE and ROTATERT. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209710. ++ 2014-04-23 James Greenhalgh ++ ++ * config/arm/arm.c (arm_cortex_a57_tune): Initialize all fields. ++ (arm_cortex_a12_tune): Likewise. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209706. ++ 2014-04-23 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64.c (aarch64_rtx_costs): Handle BSWAP. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209701, 209702, 209703, 209704, 209705. ++ 2014-04-23 Kyrylo Tkachov ++ ++ * config/arm/arm.md (arm_rev16si2): New pattern. ++ (arm_rev16si2_alt): Likewise. ++ * config/arm/arm.c (arm_new_rtx_costs): Handle rev16 case. ++ ++ 2014-04-23 Kyrylo Tkachov ++ * config/aarch64/aarch64.md (rev162): New pattern. ++ (rev162_alt): Likewise. ++ * config/aarch64/aarch64.c (aarch64_rtx_costs): Handle rev16 case. ++ * config/arm/aarch-common.c (aarch_rev16_shright_mask_imm_p): New. ++ (aarch_rev16_shleft_mask_imm_p): Likewise. ++ (aarch_rev16_p_1): Likewise. ++ (aarch_rev16_p): Likewise. ++ * config/arm/aarch-common-protos.h (aarch_rev16_p): Declare extern. ++ (aarch_rev16_shright_mask_imm_p): Likewise. ++ (aarch_rev16_shleft_mask_imm_p): Likewise. ++ ++ 2014-04-23 Kyrylo Tkachov ++ ++ * config/arm/aarch-common-protos.h (alu_cost_table): Add rev field. ++ * config/arm/aarch-cost-tables.h (generic_extra_costs): Specify ++ rev cost. ++ (cortex_a53_extra_costs): Likewise. ++ (cortex_a57_extra_costs): Likewise. ++ * config/arm/arm.c (cortexa9_extra_costs): Likewise. ++ (cortexa7_extra_costs): Likewise. ++ (cortexa8_extra_costs): Likewise. ++ (cortexa12_extra_costs): Likewise. ++ (cortexa15_extra_costs): Likewise. ++ (v7m_extra_costs): Likewise. ++ (arm_new_rtx_costs): Handle BSWAP. ++ ++ 2013-04-23 Kyrylo Tkachov ++ ++ * config/arm/arm.c (cortexa8_extra_costs): New table. ++ (arm_cortex_a8_tune): New tuning struct. ++ * config/arm/arm-cores.def (cortex-a8): Use cortex_a8 tuning struct. ++ ++ 2014-04-23 Kyrylo Tkachov ++ ++ * config/arm/arm.c (arm_new_rtx_costs): Handle FMA. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209659. ++ 2014-04-22 Richard Henderson ++ ++ * config/aarch64/aarch64 (addti3, subti3): New expanders. ++ (add3_compare0): Remove leading * from name. ++ (add3_carryin): Likewise. ++ (sub3_compare0): Likewise. ++ (sub3_carryin): Likewise. ++ (mulditi3): New expander. ++ (multi3): New expander. ++ (madd): Remove leading * from name. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209645. ++ 2014-04-22 Andrew Pinski ++ ++ * config/aarch64/aarch64.c (aarch64_load_symref_appropriately): ++ Handle TLS for ILP32. ++ * config/aarch64/aarch64.md (tlsie_small): Rename to ... ++ (tlsie_small_): this and handle PTR. ++ (tlsie_small_sidi): New pattern. ++ (tlsle_small): Change to an expand to handle ILP32. ++ (tlsle_small_): New pattern. ++ (tlsdesc_small): Rename to ... ++ (tlsdesc_small_): this and handle PTR. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209643. ++ 2014-04-22 Ramana Radhakrishnan ++ ++ * config/aarch64/aarch64.c (TARGET_FLAGS_REGNUM): Define. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209641, 209642. ++ 2014-04-22 Alex Velenko ++ ++ * config/aarch64/aarch64-builtins.c (TYPES_REINTERP): Removed. ++ (aarch64_types_signed_unsigned_qualifiers): Qualifier added. ++ (aarch64_types_signed_poly_qualifiers): Likewise. ++ (aarch64_types_unsigned_signed_qualifiers): Likewise. ++ (aarch64_types_poly_signed_qualifiers): Likewise. ++ (TYPES_REINTERP_SS): Type macro added. ++ (TYPES_REINTERP_SU): Likewise. ++ (TYPES_REINTERP_SP): Likewise. ++ (TYPES_REINTERP_US): Likewise. ++ (TYPES_REINTERP_PS): Likewise. ++ (aarch64_fold_builtin): New expression folding added. ++ * config/aarch64/aarch64-simd-builtins.def (REINTERP): ++ Declarations removed. ++ (REINTERP_SS): Declarations added. ++ (REINTERP_US): Likewise. ++ (REINTERP_PS): Likewise. ++ (REINTERP_SU): Likewise. ++ (REINTERP_SP): Likewise. ++ * config/aarch64/arm_neon.h (vreinterpret_p8_f64): Implemented. ++ (vreinterpretq_p8_f64): Likewise. ++ (vreinterpret_p16_f64): Likewise. ++ (vreinterpretq_p16_f64): Likewise. ++ (vreinterpret_f32_f64): Likewise. ++ (vreinterpretq_f32_f64): Likewise. ++ (vreinterpret_f64_f32): Likewise. ++ (vreinterpret_f64_p8): Likewise. ++ (vreinterpret_f64_p16): Likewise. ++ (vreinterpret_f64_s8): Likewise. ++ (vreinterpret_f64_s16): Likewise. ++ (vreinterpret_f64_s32): Likewise. ++ (vreinterpret_f64_s64): Likewise. ++ (vreinterpret_f64_u8): Likewise. ++ (vreinterpret_f64_u16): Likewise. ++ (vreinterpret_f64_u32): Likewise. ++ (vreinterpret_f64_u64): Likewise. ++ (vreinterpretq_f64_f32): Likewise. ++ (vreinterpretq_f64_p8): Likewise. ++ (vreinterpretq_f64_p16): Likewise. ++ (vreinterpretq_f64_s8): Likewise. ++ (vreinterpretq_f64_s16): Likewise. ++ (vreinterpretq_f64_s32): Likewise. ++ (vreinterpretq_f64_s64): Likewise. ++ (vreinterpretq_f64_u8): Likewise. ++ (vreinterpretq_f64_u16): Likewise. ++ (vreinterpretq_f64_u32): Likewise. ++ (vreinterpretq_f64_u64): Likewise. ++ (vreinterpret_s64_f64): Likewise. ++ (vreinterpretq_s64_f64): Likewise. ++ (vreinterpret_u64_f64): Likewise. ++ (vreinterpretq_u64_f64): Likewise. ++ (vreinterpret_s8_f64): Likewise. ++ (vreinterpretq_s8_f64): Likewise. ++ (vreinterpret_s16_f64): Likewise. ++ (vreinterpretq_s16_f64): Likewise. ++ (vreinterpret_s32_f64): Likewise. ++ (vreinterpretq_s32_f64): Likewise. ++ (vreinterpret_u8_f64): Likewise. ++ (vreinterpretq_u8_f64): Likewise. ++ (vreinterpret_u16_f64): Likewise. ++ (vreinterpretq_u16_f64): Likewise. ++ (vreinterpret_u32_f64): Likewise. ++ (vreinterpretq_u32_f64): Likewise. ++ ++ 2014-04-22 Alex Velenko ++ ++ * config/aarch64/aarch64/aarch64-builtins.c (TYPES_REINTERP): Removed. ++ * config/aarch64/aarch64/aarch64-simd-builtins.def (REINTERP): Removed. ++ (vreinterpret_p8_s8): Likewise. ++ * config/aarch64/aarch64/arm_neon.h (vreinterpret_p8_s8): Uses cast. ++ (vreinterpret_p8_s16): Likewise. ++ (vreinterpret_p8_s32): Likewise. ++ (vreinterpret_p8_s64): Likewise. ++ (vreinterpret_p8_f32): Likewise. ++ (vreinterpret_p8_u8): Likewise. ++ (vreinterpret_p8_u16): Likewise. ++ (vreinterpret_p8_u32): Likewise. ++ (vreinterpret_p8_u64): Likewise. ++ (vreinterpret_p8_p16): Likewise. ++ (vreinterpretq_p8_s8): Likewise. ++ (vreinterpretq_p8_s16): Likewise. ++ (vreinterpretq_p8_s32): Likewise. ++ (vreinterpretq_p8_s64): Likewise. ++ (vreinterpretq_p8_f32): Likewise. ++ (vreinterpretq_p8_u8): Likewise. ++ (vreinterpretq_p8_u16): Likewise. ++ (vreinterpretq_p8_u32): Likewise. ++ (vreinterpretq_p8_u64): Likewise. ++ (vreinterpretq_p8_p16): Likewise. ++ (vreinterpret_p16_s8): Likewise. ++ (vreinterpret_p16_s16): Likewise. ++ (vreinterpret_p16_s32): Likewise. ++ (vreinterpret_p16_s64): Likewise. ++ (vreinterpret_p16_f32): Likewise. ++ (vreinterpret_p16_u8): Likewise. ++ (vreinterpret_p16_u16): Likewise. ++ (vreinterpret_p16_u32): Likewise. ++ (vreinterpret_p16_u64): Likewise. ++ (vreinterpret_p16_p8): Likewise. ++ (vreinterpretq_p16_s8): Likewise. ++ (vreinterpretq_p16_s16): Likewise. ++ (vreinterpretq_p16_s32): Likewise. ++ (vreinterpretq_p16_s64): Likewise. ++ (vreinterpretq_p16_f32): Likewise. ++ (vreinterpretq_p16_u8): Likewise. ++ (vreinterpretq_p16_u16): Likewise. ++ (vreinterpretq_p16_u32): Likewise. ++ (vreinterpretq_p16_u64): Likewise. ++ (vreinterpretq_p16_p8): Likewise. ++ (vreinterpret_f32_s8): Likewise. ++ (vreinterpret_f32_s16): Likewise. ++ (vreinterpret_f32_s32): Likewise. ++ (vreinterpret_f32_s64): Likewise. ++ (vreinterpret_f32_u8): Likewise. ++ (vreinterpret_f32_u16): Likewise. ++ (vreinterpret_f32_u32): Likewise. ++ (vreinterpret_f32_u64): Likewise. ++ (vreinterpret_f32_p8): Likewise. ++ (vreinterpret_f32_p16): Likewise. ++ (vreinterpretq_f32_s8): Likewise. ++ (vreinterpretq_f32_s16): Likewise. ++ (vreinterpretq_f32_s32): Likewise. ++ (vreinterpretq_f32_s64): Likewise. ++ (vreinterpretq_f32_u8): Likewise. ++ (vreinterpretq_f32_u16): Likewise. ++ (vreinterpretq_f32_u32): Likewise. ++ (vreinterpretq_f32_u64): Likewise. ++ (vreinterpretq_f32_p8): Likewise. ++ (vreinterpretq_f32_p16): Likewise. ++ (vreinterpret_s64_s8): Likewise. ++ (vreinterpret_s64_s16): Likewise. ++ (vreinterpret_s64_s32): Likewise. ++ (vreinterpret_s64_f32): Likewise. ++ (vreinterpret_s64_u8): Likewise. ++ (vreinterpret_s64_u16): Likewise. ++ (vreinterpret_s64_u32): Likewise. ++ (vreinterpret_s64_u64): Likewise. ++ (vreinterpret_s64_p8): Likewise. ++ (vreinterpret_s64_p16): Likewise. ++ (vreinterpretq_s64_s8): Likewise. ++ (vreinterpretq_s64_s16): Likewise. ++ (vreinterpretq_s64_s32): Likewise. ++ (vreinterpretq_s64_f32): Likewise. ++ (vreinterpretq_s64_u8): Likewise. ++ (vreinterpretq_s64_u16): Likewise. ++ (vreinterpretq_s64_u32): Likewise. ++ (vreinterpretq_s64_u64): Likewise. ++ (vreinterpretq_s64_p8): Likewise. ++ (vreinterpretq_s64_p16): Likewise. ++ (vreinterpret_u64_s8): Likewise. ++ (vreinterpret_u64_s16): Likewise. ++ (vreinterpret_u64_s32): Likewise. ++ (vreinterpret_u64_s64): Likewise. ++ (vreinterpret_u64_f32): Likewise. ++ (vreinterpret_u64_u8): Likewise. ++ (vreinterpret_u64_u16): Likewise. ++ (vreinterpret_u64_u32): Likewise. ++ (vreinterpret_u64_p8): Likewise. ++ (vreinterpret_u64_p16): Likewise. ++ (vreinterpretq_u64_s8): Likewise. ++ (vreinterpretq_u64_s16): Likewise. ++ (vreinterpretq_u64_s32): Likewise. ++ (vreinterpretq_u64_s64): Likewise. ++ (vreinterpretq_u64_f32): Likewise. ++ (vreinterpretq_u64_u8): Likewise. ++ (vreinterpretq_u64_u16): Likewise. ++ (vreinterpretq_u64_u32): Likewise. ++ (vreinterpretq_u64_p8): Likewise. ++ (vreinterpretq_u64_p16): Likewise. ++ (vreinterpret_s8_s16): Likewise. ++ (vreinterpret_s8_s32): Likewise. ++ (vreinterpret_s8_s64): Likewise. ++ (vreinterpret_s8_f32): Likewise. ++ (vreinterpret_s8_u8): Likewise. ++ (vreinterpret_s8_u16): Likewise. ++ (vreinterpret_s8_u32): Likewise. ++ (vreinterpret_s8_u64): Likewise. ++ (vreinterpret_s8_p8): Likewise. ++ (vreinterpret_s8_p16): Likewise. ++ (vreinterpretq_s8_s16): Likewise. ++ (vreinterpretq_s8_s32): Likewise. ++ (vreinterpretq_s8_s64): Likewise. ++ (vreinterpretq_s8_f32): Likewise. ++ (vreinterpretq_s8_u8): Likewise. ++ (vreinterpretq_s8_u16): Likewise. ++ (vreinterpretq_s8_u32): Likewise. ++ (vreinterpretq_s8_u64): Likewise. ++ (vreinterpretq_s8_p8): Likewise. ++ (vreinterpretq_s8_p16): Likewise. ++ (vreinterpret_s16_s8): Likewise. ++ (vreinterpret_s16_s32): Likewise. ++ (vreinterpret_s16_s64): Likewise. ++ (vreinterpret_s16_f32): Likewise. ++ (vreinterpret_s16_u8): Likewise. ++ (vreinterpret_s16_u16): Likewise. ++ (vreinterpret_s16_u32): Likewise. ++ (vreinterpret_s16_u64): Likewise. ++ (vreinterpret_s16_p8): Likewise. ++ (vreinterpret_s16_p16): Likewise. ++ (vreinterpretq_s16_s8): Likewise. ++ (vreinterpretq_s16_s32): Likewise. ++ (vreinterpretq_s16_s64): Likewise. ++ (vreinterpretq_s16_f32): Likewise. ++ (vreinterpretq_s16_u8): Likewise. ++ (vreinterpretq_s16_u16): Likewise. ++ (vreinterpretq_s16_u32): Likewise. ++ (vreinterpretq_s16_u64): Likewise. ++ (vreinterpretq_s16_p8): Likewise. ++ (vreinterpretq_s16_p16): Likewise. ++ (vreinterpret_s32_s8): Likewise. ++ (vreinterpret_s32_s16): Likewise. ++ (vreinterpret_s32_s64): Likewise. ++ (vreinterpret_s32_f32): Likewise. ++ (vreinterpret_s32_u8): Likewise. ++ (vreinterpret_s32_u16): Likewise. ++ (vreinterpret_s32_u32): Likewise. ++ (vreinterpret_s32_u64): Likewise. ++ (vreinterpret_s32_p8): Likewise. ++ (vreinterpret_s32_p16): Likewise. ++ (vreinterpretq_s32_s8): Likewise. ++ (vreinterpretq_s32_s16): Likewise. ++ (vreinterpretq_s32_s64): Likewise. ++ (vreinterpretq_s32_f32): Likewise. ++ (vreinterpretq_s32_u8): Likewise. ++ (vreinterpretq_s32_u16): Likewise. ++ (vreinterpretq_s32_u32): Likewise. ++ (vreinterpretq_s32_u64): Likewise. ++ (vreinterpretq_s32_p8): Likewise. ++ (vreinterpretq_s32_p16): Likewise. ++ (vreinterpret_u8_s8): Likewise. ++ (vreinterpret_u8_s16): Likewise. ++ (vreinterpret_u8_s32): Likewise. ++ (vreinterpret_u8_s64): Likewise. ++ (vreinterpret_u8_f32): Likewise. ++ (vreinterpret_u8_u16): Likewise. ++ (vreinterpret_u8_u32): Likewise. ++ (vreinterpret_u8_u64): Likewise. ++ (vreinterpret_u8_p8): Likewise. ++ (vreinterpret_u8_p16): Likewise. ++ (vreinterpretq_u8_s8): Likewise. ++ (vreinterpretq_u8_s16): Likewise. ++ (vreinterpretq_u8_s32): Likewise. ++ (vreinterpretq_u8_s64): Likewise. ++ (vreinterpretq_u8_f32): Likewise. ++ (vreinterpretq_u8_u16): Likewise. ++ (vreinterpretq_u8_u32): Likewise. ++ (vreinterpretq_u8_u64): Likewise. ++ (vreinterpretq_u8_p8): Likewise. ++ (vreinterpretq_u8_p16): Likewise. ++ (vreinterpret_u16_s8): Likewise. ++ (vreinterpret_u16_s16): Likewise. ++ (vreinterpret_u16_s32): Likewise. ++ (vreinterpret_u16_s64): Likewise. ++ (vreinterpret_u16_f32): Likewise. ++ (vreinterpret_u16_u8): Likewise. ++ (vreinterpret_u16_u32): Likewise. ++ (vreinterpret_u16_u64): Likewise. ++ (vreinterpret_u16_p8): Likewise. ++ (vreinterpret_u16_p16): Likewise. ++ (vreinterpretq_u16_s8): Likewise. ++ (vreinterpretq_u16_s16): Likewise. ++ (vreinterpretq_u16_s32): Likewise. ++ (vreinterpretq_u16_s64): Likewise. ++ (vreinterpretq_u16_f32): Likewise. ++ (vreinterpretq_u16_u8): Likewise. ++ (vreinterpretq_u16_u32): Likewise. ++ (vreinterpretq_u16_u64): Likewise. ++ (vreinterpretq_u16_p8): Likewise. ++ (vreinterpretq_u16_p16): Likewise. ++ (vreinterpret_u32_s8): Likewise. ++ (vreinterpret_u32_s16): Likewise. ++ (vreinterpret_u32_s32): Likewise. ++ (vreinterpret_u32_s64): Likewise. ++ (vreinterpret_u32_f32): Likewise. ++ (vreinterpret_u32_u8): Likewise. ++ (vreinterpret_u32_u16): Likewise. ++ (vreinterpret_u32_u64): Likewise. ++ (vreinterpret_u32_p8): Likewise. ++ (vreinterpret_u32_p16): Likewise. ++ (vreinterpretq_u32_s8): Likewise. ++ (vreinterpretq_u32_s16): Likewise. ++ (vreinterpretq_u32_s32): Likewise. ++ (vreinterpretq_u32_s64): Likewise. ++ (vreinterpretq_u32_f32): Likewise. ++ (vreinterpretq_u32_u8): Likewise. ++ (vreinterpretq_u32_u16): Likewise. ++ (vreinterpretq_u32_u64): Likewise. ++ (vreinterpretq_u32_p8): Likewise. ++ (vreinterpretq_u32_p16): Likewise. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209640. ++ 2014-04-22 Alex Velenko ++ ++ * gcc/config/aarch64/aarch64-simd.md (aarch64_s): ++ Pattern extended. ++ * config/aarch64/aarch64-simd-builtins.def (sqneg): Iterator ++ extended. ++ (sqabs): Likewise. ++ * config/aarch64/arm_neon.h (vqneg_s64): New intrinsic. ++ (vqnegd_s64): Likewise. ++ (vqabs_s64): Likewise. ++ (vqabsd_s64): Likewise. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209627, 209636. ++ 2014-04-22 Renlin ++ Jiong Wang ++ ++ * config/aarch64/aarch64.h (aarch64_frame): Delete "fp_lr_offset". ++ * config/aarch64/aarch64.c (aarch64_layout_frame) ++ (aarch64_initial_elimination_offset): Likewise. ++ ++ 2014-04-22 Marcus Shawcroft ++ ++ * config/aarch64/aarch64.c (aarch64_initial_elimination_offset): ++ Fix indentation. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209618. ++ 2014-04-22 Renlin Li ++ ++ * config/aarch64/aarch64.c (aarch64_print_operand_address): Adjust ++ the output asm format. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209617. ++ 2014-04-22 James Greenhalgh ++ ++ * config/aarch64/aarch64-simd.md ++ (aarch64_cmdi): Always split. ++ (*aarch64_cmdi): New. ++ (aarch64_cmtstdi): Always split. ++ (*aarch64_cmtstdi): New. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209615. ++ 2014-04-22 Ramana Radhakrishnan ++ ++ * config/arm/arm.c (arm_hard_regno_mode_ok): Loosen ++ restrictions on core registers for DImode values in Thumb2. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209613, r209614. ++ 2014-04-22 Ian Bolton ++ ++ * config/arm/arm.md (*anddi_notdi_zesidi): New pattern. ++ * config/arm/thumb2.md (*iordi_notdi_zesidi): New pattern. ++ ++ 2014-04-22 Ian Bolton ++ ++ * config/arm/thumb2.md (*iordi_notdi_di): New pattern. ++ (*iordi_notzesidi_di): Likewise. ++ (*iordi_notsesidi_di): Likewise. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209561. ++ 2014-04-22 Ian Bolton ++ ++ * config/arm/arm-protos.h (tune_params): New struct members. ++ * config/arm/arm.c: Initialise tune_params per processor. ++ (thumb2_reorg): Suppress conversion from t32 to t16 when optimizing ++ for speed, based on new tune_params. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209559. ++ 2014-04-22 Alex Velenko ++ ++ * config/aarch64/aarch64-builtins.c (BUILTIN_VDQF_DF): Macro ++ added. ++ * config/aarch64/aarch64-simd-builtins.def (frintn): Use added ++ macro. ++ * config/aarch64/aarch64-simd.md (): Comment ++ corrected. ++ * config/aarch64/aarch64.md (): Likewise. ++ * config/aarch64/arm_neon.h (vrnd_f64): Added. ++ (vrnda_f64): Likewise. ++ (vrndi_f64): Likewise. ++ (vrndm_f64): Likewise. ++ (vrndn_f64): Likewise. ++ (vrndp_f64): Likewise. ++ (vrndx_f64): Likewise. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209419. ++ 2014-04-15 Kyrylo Tkachov ++ ++ PR rtl-optimization/60663 ++ * config/arm/arm.c (arm_new_rtx_costs): Improve ASM_OPERANDS case, ++ avoid 0 cost. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209457. ++ 2014-04-16 Andrew Pinski ++ ++ * config/host-linux.c (TRY_EMPTY_VM_SPACE): Change aarch64 ilp32 ++ definition. ++ ++2014-05-19 Yvan Roux ++ ++ * LINARO-VERSION: Bump version. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ * LINARO-VERSION: Update. ++ ++2014-05-13 Yvan Roux ++ ++ Backport from trunk r209889. ++ 2014-04-29 Zhenqiang Chen ++ ++ * config/aarch64/aarch64.md (movcc): New for GPF. ++ ++2014-05-13 Yvan Roux ++ ++ Backport from trunk r209556. ++ 2014-04-22 Zhenqiang Chen ++ ++ * config/arm/arm.c (arm_print_operand, thumb_exit): Make sure ++ GET_MODE_SIZE argument is enum machine_mode. ++ ++2014-04-28 Yvan Roux ++ ++ * LINARO-VERSION: Bump version. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. ++ * LINARO-VERSION: New file. ++ * configure.ac: Add Linaro version string. +--- a/src/gcc/testsuite/gcc.target/arm/pr44788.c ++++ b/src/gcc/testsuite/gcc.target/arm/pr44788.c +@@ -2,6 +2,8 @@ + /* { dg-require-effective-target arm_thumb2_ok } */ + /* { dg-options "-Os -fno-strict-aliasing -fPIC -mthumb -march=armv7-a -mfpu=vfp3 -mfloat-abi=softfp" } */ + ++extern void foo (float *); ++ + void joint_decode(float* mlt_buffer1, int t) { + int i; + float decode_buffer[1060]; +--- a/src/gcc/testsuite/gcc.target/arm/vect-rounding-floorf.c ++++ b/src/gcc/testsuite/gcc.target/arm/vect-rounding-floorf.c +@@ -5,8 +5,11 @@ + + #define N 32 + ++float __attribute__((aligned(16))) input[N]; ++float __attribute__((aligned(16))) output[N]; ++ + void +-foo (float *output, float *input) ++foo () + { + int i = 0; + /* Vectorizable. */ +--- a/src/gcc/testsuite/gcc.target/arm/vect-lceilf_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/vect-lceilf_1.c +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_v8_neon_ok } */ ++/* { dg-options "-O2 -ffast-math -ftree-vectorize -fdump-tree-vect-all" } */ ++/* { dg-add-options arm_v8_neon } */ ++ ++#define N 32 ++ ++float __attribute__((aligned(16))) input[N]; ++int __attribute__((aligned(16))) output[N]; ++ ++void ++foo () ++{ ++ int i = 0; ++ /* Vectorizable. */ ++ for (i = 0; i < N; i++) ++ output[i] = __builtin_lceilf (input[i]); ++} ++ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ ++/* { dg-final { cleanup-tree-dump "vect" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/neon/vornQs64.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vornQs64.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++int64x2_t out_int64x2_t; ++int64x2_t arg0_int64x2_t; ++int64x2_t arg1_int64x2_t; + void test_vornQs64 (void) + { +- int64x2_t out_int64x2_t; +- int64x2_t arg0_int64x2_t; +- int64x2_t arg1_int64x2_t; + + out_int64x2_t = vornq_s64 (arg0_int64x2_t, arg1_int64x2_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vbicu64.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbicu64.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++uint64x1_t out_uint64x1_t; ++uint64x1_t arg0_uint64x1_t; ++uint64x1_t arg1_uint64x1_t; + void test_vbicu64 (void) + { +- uint64x1_t out_uint64x1_t; +- uint64x1_t arg0_uint64x1_t; +- uint64x1_t arg1_uint64x1_t; + + out_uint64x1_t = vbic_u64 (arg0_uint64x1_t, arg1_uint64x1_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vorns64.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vorns64.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++int64x1_t out_int64x1_t; ++int64x1_t arg0_int64x1_t; ++int64x1_t arg1_int64x1_t; + void test_vorns64 (void) + { +- int64x1_t out_int64x1_t; +- int64x1_t arg0_int64x1_t; +- int64x1_t arg1_int64x1_t; + + out_int64x1_t = vorn_s64 (arg0_int64x1_t, arg1_int64x1_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vbics8.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbics8.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++int8x8_t out_int8x8_t; ++int8x8_t arg0_int8x8_t; ++int8x8_t arg1_int8x8_t; + void test_vbics8 (void) + { +- int8x8_t out_int8x8_t; +- int8x8_t arg0_int8x8_t; +- int8x8_t arg1_int8x8_t; + + out_int8x8_t = vbic_s8 (arg0_int8x8_t, arg1_int8x8_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vornQu64.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vornQu64.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++uint64x2_t out_uint64x2_t; ++uint64x2_t arg0_uint64x2_t; ++uint64x2_t arg1_uint64x2_t; + void test_vornQu64 (void) + { +- uint64x2_t out_uint64x2_t; +- uint64x2_t arg0_uint64x2_t; +- uint64x2_t arg1_uint64x2_t; + + out_uint64x2_t = vornq_u64 (arg0_uint64x2_t, arg1_uint64x2_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vornu64.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vornu64.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++uint64x1_t out_uint64x1_t; ++uint64x1_t arg0_uint64x1_t; ++uint64x1_t arg1_uint64x1_t; + void test_vornu64 (void) + { +- uint64x1_t out_uint64x1_t; +- uint64x1_t arg0_uint64x1_t; +- uint64x1_t arg1_uint64x1_t; + + out_uint64x1_t = vorn_u64 (arg0_uint64x1_t, arg1_uint64x1_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vbics32.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbics32.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++int32x2_t out_int32x2_t; ++int32x2_t arg0_int32x2_t; ++int32x2_t arg1_int32x2_t; + void test_vbics32 (void) + { +- int32x2_t out_int32x2_t; +- int32x2_t arg0_int32x2_t; +- int32x2_t arg1_int32x2_t; + + out_int32x2_t = vbic_s32 (arg0_int32x2_t, arg1_int32x2_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vbicu8.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbicu8.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++uint8x8_t out_uint8x8_t; ++uint8x8_t arg0_uint8x8_t; ++uint8x8_t arg1_uint8x8_t; + void test_vbicu8 (void) + { +- uint8x8_t out_uint8x8_t; +- uint8x8_t arg0_uint8x8_t; +- uint8x8_t arg1_uint8x8_t; + + out_uint8x8_t = vbic_u8 (arg0_uint8x8_t, arg1_uint8x8_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vbics16.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbics16.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++int16x4_t out_int16x4_t; ++int16x4_t arg0_int16x4_t; ++int16x4_t arg1_int16x4_t; + void test_vbics16 (void) + { +- int16x4_t out_int16x4_t; +- int16x4_t arg0_int16x4_t; +- int16x4_t arg1_int16x4_t; + + out_int16x4_t = vbic_s16 (arg0_int16x4_t, arg1_int16x4_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vorns8.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vorns8.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++int8x8_t out_int8x8_t; ++int8x8_t arg0_int8x8_t; ++int8x8_t arg1_int8x8_t; + void test_vorns8 (void) + { +- int8x8_t out_int8x8_t; +- int8x8_t arg0_int8x8_t; +- int8x8_t arg1_int8x8_t; + + out_int8x8_t = vorn_s8 (arg0_int8x8_t, arg1_int8x8_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vbicQs8.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbicQs8.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++int8x16_t out_int8x16_t; ++int8x16_t arg0_int8x16_t; ++int8x16_t arg1_int8x16_t; + void test_vbicQs8 (void) + { +- int8x16_t out_int8x16_t; +- int8x16_t arg0_int8x16_t; +- int8x16_t arg1_int8x16_t; + + out_int8x16_t = vbicq_s8 (arg0_int8x16_t, arg1_int8x16_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vornQs32.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vornQs32.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++int32x4_t out_int32x4_t; ++int32x4_t arg0_int32x4_t; ++int32x4_t arg1_int32x4_t; + void test_vornQs32 (void) + { +- int32x4_t out_int32x4_t; +- int32x4_t arg0_int32x4_t; +- int32x4_t arg1_int32x4_t; + + out_int32x4_t = vornq_s32 (arg0_int32x4_t, arg1_int32x4_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vornQs16.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vornQs16.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++int16x8_t out_int16x8_t; ++int16x8_t arg0_int16x8_t; ++int16x8_t arg1_int16x8_t; + void test_vornQs16 (void) + { +- int16x8_t out_int16x8_t; +- int16x8_t arg0_int16x8_t; +- int16x8_t arg1_int16x8_t; + + out_int16x8_t = vornq_s16 (arg0_int16x8_t, arg1_int16x8_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vbicu32.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbicu32.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++uint32x2_t out_uint32x2_t; ++uint32x2_t arg0_uint32x2_t; ++uint32x2_t arg1_uint32x2_t; + void test_vbicu32 (void) + { +- uint32x2_t out_uint32x2_t; +- uint32x2_t arg0_uint32x2_t; +- uint32x2_t arg1_uint32x2_t; + + out_uint32x2_t = vbic_u32 (arg0_uint32x2_t, arg1_uint32x2_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vbicQs64.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbicQs64.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++int64x2_t out_int64x2_t; ++int64x2_t arg0_int64x2_t; ++int64x2_t arg1_int64x2_t; + void test_vbicQs64 (void) + { +- int64x2_t out_int64x2_t; +- int64x2_t arg0_int64x2_t; +- int64x2_t arg1_int64x2_t; + + out_int64x2_t = vbicq_s64 (arg0_int64x2_t, arg1_int64x2_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vornu8.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vornu8.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++uint8x8_t out_uint8x8_t; ++uint8x8_t arg0_uint8x8_t; ++uint8x8_t arg1_uint8x8_t; + void test_vornu8 (void) + { +- uint8x8_t out_uint8x8_t; +- uint8x8_t arg0_uint8x8_t; +- uint8x8_t arg1_uint8x8_t; + + out_uint8x8_t = vorn_u8 (arg0_uint8x8_t, arg1_uint8x8_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vorns32.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vorns32.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++int32x2_t out_int32x2_t; ++int32x2_t arg0_int32x2_t; ++int32x2_t arg1_int32x2_t; + void test_vorns32 (void) + { +- int32x2_t out_int32x2_t; +- int32x2_t arg0_int32x2_t; +- int32x2_t arg1_int32x2_t; + + out_int32x2_t = vorn_s32 (arg0_int32x2_t, arg1_int32x2_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vbicu16.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbicu16.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++uint16x4_t out_uint16x4_t; ++uint16x4_t arg0_uint16x4_t; ++uint16x4_t arg1_uint16x4_t; + void test_vbicu16 (void) + { +- uint16x4_t out_uint16x4_t; +- uint16x4_t arg0_uint16x4_t; +- uint16x4_t arg1_uint16x4_t; + + out_uint16x4_t = vbic_u16 (arg0_uint16x4_t, arg1_uint16x4_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vorns16.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vorns16.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++int16x4_t out_int16x4_t; ++int16x4_t arg0_int16x4_t; ++int16x4_t arg1_int16x4_t; + void test_vorns16 (void) + { +- int16x4_t out_int16x4_t; +- int16x4_t arg0_int16x4_t; +- int16x4_t arg1_int16x4_t; + + out_int16x4_t = vorn_s16 (arg0_int16x4_t, arg1_int16x4_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vbicQu8.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbicQu8.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++uint8x16_t out_uint8x16_t; ++uint8x16_t arg0_uint8x16_t; ++uint8x16_t arg1_uint8x16_t; + void test_vbicQu8 (void) + { +- uint8x16_t out_uint8x16_t; +- uint8x16_t arg0_uint8x16_t; +- uint8x16_t arg1_uint8x16_t; + + out_uint8x16_t = vbicq_u8 (arg0_uint8x16_t, arg1_uint8x16_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vornQu32.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vornQu32.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++uint32x4_t out_uint32x4_t; ++uint32x4_t arg0_uint32x4_t; ++uint32x4_t arg1_uint32x4_t; + void test_vornQu32 (void) + { +- uint32x4_t out_uint32x4_t; +- uint32x4_t arg0_uint32x4_t; +- uint32x4_t arg1_uint32x4_t; + + out_uint32x4_t = vornq_u32 (arg0_uint32x4_t, arg1_uint32x4_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vornQs8.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vornQs8.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++int8x16_t out_int8x16_t; ++int8x16_t arg0_int8x16_t; ++int8x16_t arg1_int8x16_t; + void test_vornQs8 (void) + { +- int8x16_t out_int8x16_t; +- int8x16_t arg0_int8x16_t; +- int8x16_t arg1_int8x16_t; + + out_int8x16_t = vornq_s8 (arg0_int8x16_t, arg1_int8x16_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vornQu16.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vornQu16.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++uint16x8_t out_uint16x8_t; ++uint16x8_t arg0_uint16x8_t; ++uint16x8_t arg1_uint16x8_t; + void test_vornQu16 (void) + { +- uint16x8_t out_uint16x8_t; +- uint16x8_t arg0_uint16x8_t; +- uint16x8_t arg1_uint16x8_t; + + out_uint16x8_t = vornq_u16 (arg0_uint16x8_t, arg1_uint16x8_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vbicQu64.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbicQu64.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++uint64x2_t out_uint64x2_t; ++uint64x2_t arg0_uint64x2_t; ++uint64x2_t arg1_uint64x2_t; + void test_vbicQu64 (void) + { +- uint64x2_t out_uint64x2_t; +- uint64x2_t arg0_uint64x2_t; +- uint64x2_t arg1_uint64x2_t; + + out_uint64x2_t = vbicq_u64 (arg0_uint64x2_t, arg1_uint64x2_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vornu32.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vornu32.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++uint32x2_t out_uint32x2_t; ++uint32x2_t arg0_uint32x2_t; ++uint32x2_t arg1_uint32x2_t; + void test_vornu32 (void) + { +- uint32x2_t out_uint32x2_t; +- uint32x2_t arg0_uint32x2_t; +- uint32x2_t arg1_uint32x2_t; + + out_uint32x2_t = vorn_u32 (arg0_uint32x2_t, arg1_uint32x2_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vornu16.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vornu16.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++uint16x4_t out_uint16x4_t; ++uint16x4_t arg0_uint16x4_t; ++uint16x4_t arg1_uint16x4_t; + void test_vornu16 (void) + { +- uint16x4_t out_uint16x4_t; +- uint16x4_t arg0_uint16x4_t; +- uint16x4_t arg1_uint16x4_t; + + out_uint16x4_t = vorn_u16 (arg0_uint16x4_t, arg1_uint16x4_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vornQu8.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vornQu8.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++uint8x16_t out_uint8x16_t; ++uint8x16_t arg0_uint8x16_t; ++uint8x16_t arg1_uint8x16_t; + void test_vornQu8 (void) + { +- uint8x16_t out_uint8x16_t; +- uint8x16_t arg0_uint8x16_t; +- uint8x16_t arg1_uint8x16_t; + + out_uint8x16_t = vornq_u8 (arg0_uint8x16_t, arg1_uint8x16_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vbicQs32.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbicQs32.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++int32x4_t out_int32x4_t; ++int32x4_t arg0_int32x4_t; ++int32x4_t arg1_int32x4_t; + void test_vbicQs32 (void) + { +- int32x4_t out_int32x4_t; +- int32x4_t arg0_int32x4_t; +- int32x4_t arg1_int32x4_t; + + out_int32x4_t = vbicq_s32 (arg0_int32x4_t, arg1_int32x4_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vbicQs16.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbicQs16.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++int16x8_t out_int16x8_t; ++int16x8_t arg0_int16x8_t; ++int16x8_t arg1_int16x8_t; + void test_vbicQs16 (void) + { +- int16x8_t out_int16x8_t; +- int16x8_t arg0_int16x8_t; +- int16x8_t arg1_int16x8_t; + + out_int16x8_t = vbicq_s16 (arg0_int16x8_t, arg1_int16x8_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vbicQu32.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbicQu32.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++uint32x4_t out_uint32x4_t; ++uint32x4_t arg0_uint32x4_t; ++uint32x4_t arg1_uint32x4_t; + void test_vbicQu32 (void) + { +- uint32x4_t out_uint32x4_t; +- uint32x4_t arg0_uint32x4_t; +- uint32x4_t arg1_uint32x4_t; + + out_uint32x4_t = vbicq_u32 (arg0_uint32x4_t, arg1_uint32x4_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vbicQu16.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbicQu16.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++uint16x8_t out_uint16x8_t; ++uint16x8_t arg0_uint16x8_t; ++uint16x8_t arg1_uint16x8_t; + void test_vbicQu16 (void) + { +- uint16x8_t out_uint16x8_t; +- uint16x8_t arg0_uint16x8_t; +- uint16x8_t arg1_uint16x8_t; + + out_uint16x8_t = vbicq_u16 (arg0_uint16x8_t, arg1_uint16x8_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/neon/vbics64.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbics64.c +@@ -3,16 +3,16 @@ + + /* { dg-do assemble } */ + /* { dg-require-effective-target arm_neon_ok } */ +-/* { dg-options "-save-temps -O0" } */ ++/* { dg-options "-save-temps -O2" } */ + /* { dg-add-options arm_neon } */ + + #include "arm_neon.h" + ++int64x1_t out_int64x1_t; ++int64x1_t arg0_int64x1_t; ++int64x1_t arg1_int64x1_t; + void test_vbics64 (void) + { +- int64x1_t out_int64x1_t; +- int64x1_t arg0_int64x1_t; +- int64x1_t arg1_int64x1_t; + + out_int64x1_t = vbic_s64 (arg0_int64x1_t, arg1_int64x1_t); + } +--- a/src/gcc/testsuite/gcc.target/arm/vfp-ldmdbs.c ++++ b/src/gcc/testsuite/gcc.target/arm/vfp-ldmdbs.c +@@ -3,7 +3,7 @@ + /* { dg-skip-if "need fp instructions" { *-*-* } { "-mfloat-abi=soft" } { "" } } */ + /* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */ + +-extern void baz (float); ++extern void bar (float); + + void + foo (float *p, float a, int n) +@@ -13,4 +13,4 @@ + while (n--); + } + +-/* { dg-final { scan-assembler "fldmdbs" } } */ ++/* { dg-final { scan-assembler "vldmdb.32" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/small-multiply-m0plus-3.c ++++ b/src/gcc/testsuite/gcc.target/arm/small-multiply-m0plus-3.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_thumb1_ok } */ ++/* { dg-skip-if "Test is specific to cortex-m0plus.small-multiply" { arm*-*-* } { "-mcpu=*" } { "-mcpu=cortex-m0plus.small-multiply" } } */ ++/* { dg-options "-mcpu=cortex-m0plus.small-multiply -mthumb -Os" } */ ++ ++int ++test (int a) ++{ ++ return a * 0x13; ++} ++ ++/* { dg-final { scan-assembler-not "\[\\t \]+mul" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/pr60606-4.c ++++ b/src/gcc/testsuite/gcc.target/arm/pr60606-4.c +@@ -0,0 +1,9 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O" } */ ++ ++int ++f (void) ++{ ++ register unsigned int r[50] asm ("r1"); /* { dg-error "suitable for a register" } */ ++ return r[1]; ++} +--- a/src/gcc/testsuite/gcc.target/arm/iordi3-opt.c ++++ b/src/gcc/testsuite/gcc.target/arm/iordi3-opt.c +@@ -1,4 +1,4 @@ +-/* { dg-do compile } */ ++/* { dg-do compile { target { arm_arm_ok || arm_thumb2_ok} } } */ + /* { dg-options "-O1" } */ + + unsigned long long or64 (unsigned long long input) +--- a/src/gcc/testsuite/gcc.target/arm/small-multiply-m0-1.c ++++ b/src/gcc/testsuite/gcc.target/arm/small-multiply-m0-1.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_thumb1_ok } */ ++/* { dg-skip-if "Test is specific to cortex-m0.small-multiply" { arm*-*-* } { "-mcpu=*" } { "-mcpu=cortex-m0.small-multiply" } } */ ++/* { dg-options "-mcpu=cortex-m0.small-multiply -mthumb -O2" } */ ++ ++int ++test (int a) ++{ ++ return a * 0x123456; ++} ++ ++/* { dg-final { scan-assembler-not "\[\\t \]+mul" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/pr58784.c ++++ b/src/gcc/testsuite/gcc.target/arm/pr58784.c +@@ -11,6 +11,9 @@ + char stepsRemoved; + ptp_tlv_t tlv[1]; + } ptp_message_announce_t; ++ ++extern void f (ptp_message_announce_t *); ++ + int ptplib_send_announce(int sequenceId, int i) + { + ptp_message_announce_t tx_packet; +--- a/src/gcc/testsuite/gcc.target/arm/iordi_notdi-1.c ++++ b/src/gcc/testsuite/gcc.target/arm/iordi_notdi-1.c +@@ -0,0 +1,65 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fno-inline --save-temps" } */ ++ ++extern void abort (void); ++ ++typedef long long s64int; ++typedef int s32int; ++typedef unsigned long long u64int; ++typedef unsigned int u32int; ++ ++s64int ++iordi_di_notdi (s64int a, s64int b) ++{ ++ return (a | ~b); ++} ++ ++s64int ++iordi_di_notzesidi (s64int a, u32int b) ++{ ++ return (a | ~(u64int) b); ++} ++ ++s64int ++iordi_notdi_zesidi (s64int a, u32int b) ++{ ++ return (~a | (u64int) b); ++} ++ ++s64int ++iordi_di_notsesidi (s64int a, s32int b) ++{ ++ return (a | ~(s64int) b); ++} ++ ++int main () ++{ ++ s64int a64 = 0xdeadbeef00000000ll; ++ s64int b64 = 0x000000004f4f0112ll; ++ s64int c64 = 0xdeadbeef000f0000ll; ++ ++ u32int c32 = 0x01124f4f; ++ s32int d32 = 0xabbaface; ++ ++ s64int z = iordi_di_notdi (a64, b64); ++ if (z != 0xffffffffb0b0feedll) ++ abort (); ++ ++ z = iordi_di_notzesidi (a64, c32); ++ if (z != 0xfffffffffeedb0b0ll) ++ abort (); ++ ++ z = iordi_notdi_zesidi (c64, c32); ++ if (z != 0x21524110fff2ffffll) ++ abort (); ++ ++ z = iordi_di_notsesidi (a64, d32); ++ if (z != 0xdeadbeef54450531ll) ++ abort (); ++ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times "orn\t" 6 { target arm_thumb2 } } } */ ++ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/vfp-ldmias.c ++++ b/src/gcc/testsuite/gcc.target/arm/vfp-ldmias.c +@@ -3,7 +3,7 @@ + /* { dg-skip-if "need fp instructions" { *-*-* } { "-mfloat-abi=soft" } { "" } } */ + /* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */ + +-extern void baz (float); ++extern void bar (float); + + void + foo (float *p, float a, int n) +@@ -13,4 +13,4 @@ + while (n--); + } + +-/* { dg-final { scan-assembler "fldmias" } } */ ++/* { dg-final { scan-assembler "vldmia.32" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/cold-lc.c ++++ b/src/gcc/testsuite/gcc.target/arm/cold-lc.c +@@ -7,6 +7,7 @@ + struct task_struct *task; + }; + extern struct thread_info *current_thread_info (void); ++extern int show_stack (struct task_struct *, unsigned long *); + + void dump_stack (void) + { +--- a/src/gcc/testsuite/gcc.target/arm/vfp-ldmdbd.c ++++ b/src/gcc/testsuite/gcc.target/arm/vfp-ldmdbd.c +@@ -13,4 +13,4 @@ + while (n--); + } + +-/* { dg-final { scan-assembler "fldmdbd" } } */ ++/* { dg-final { scan-assembler "vldmdb.64" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/vfp-stmdbs.c ++++ b/src/gcc/testsuite/gcc.target/arm/vfp-stmdbs.c +@@ -12,4 +12,4 @@ + while (n--); + } + +-/* { dg-final { scan-assembler "fstmdbs" } } */ ++/* { dg-final { scan-assembler "vstmdb.32" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/lp1243022.c ++++ b/src/gcc/testsuite/gcc.target/arm/lp1243022.c +@@ -47,6 +47,7 @@ + union xhci_trb * trb); + struct xhci_segment *trb_in_td (struct xhci_segment *start_seg, + dma_addr_t suspect_dma); ++int + xhci_test_trb_in_td (struct xhci_hcd *xhci, struct xhci_segment *input_seg, + union xhci_trb *start_trb, union xhci_trb *end_trb, + dma_addr_t input_dma, struct xhci_segment *result_seg, +@@ -64,6 +65,7 @@ + "Expected seg %p, got seg %p\n", result_seg, seg); + } + } ++int + xhci_check_trb_in_td_math (struct xhci_hcd *xhci, gfp_t mem_flags) + { + struct +--- a/src/gcc/testsuite/gcc.target/arm/vfp-ldmiad.c ++++ b/src/gcc/testsuite/gcc.target/arm/vfp-ldmiad.c +@@ -13,4 +13,4 @@ + while (n--); + } + +-/* { dg-final { scan-assembler "fldmiad" } } */ ++/* { dg-final { scan-assembler "vldmia.64" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/vfp-stmias.c ++++ b/src/gcc/testsuite/gcc.target/arm/vfp-stmias.c +@@ -12,4 +12,4 @@ + while (n--); + } + +-/* { dg-final { scan-assembler "fstmias" } } */ ++/* { dg-final { scan-assembler "vstmia.32" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/small-multiply-m0-2.c ++++ b/src/gcc/testsuite/gcc.target/arm/small-multiply-m0-2.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_thumb1_ok } */ ++/* { dg-skip-if "Test is specific to cortex-m0.small-multiply" { arm*-*-* } { "-mcpu=*" } { "-mcpu=cortex-m0.small-multiply" } } */ ++/* { dg-options "-mcpu=cortex-m0.small-multiply -mthumb -Os" } */ ++ ++int ++test (int a) ++{ ++ return a * 0x123456; ++} ++ ++/* { dg-final { scan-assembler "\[\\t \]+mul" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/vfp-stmdbd.c ++++ b/src/gcc/testsuite/gcc.target/arm/vfp-stmdbd.c +@@ -12,4 +12,4 @@ + while (n--); + } + +-/* { dg-final { scan-assembler "fstmdbd" } } */ ++/* { dg-final { scan-assembler "vstmdb.64" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/lceil-vcvt_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/lceil-vcvt_1.c +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_v8_vfp_ok } */ ++/* { dg-options "-O2 -march=armv8-a" } */ ++/* { dg-add-options arm_v8_vfp } */ ++ ++int ++foofloat (float x) ++{ ++ return __builtin_lceilf (x); ++} ++ ++/* { dg-final { scan-assembler-times "vcvtp.s32.f32\ts\[0-9\]+, s\[0-9\]+" 1 } } */ ++ ++ ++int ++foodouble (double x) ++{ ++ return __builtin_lceil (x); ++} ++ ++/* { dg-final { scan-assembler-times "vcvtp.s32.f64\ts\[0-9\]+, d\[0-9\]+" 1 } } */ +--- a/src/gcc/testsuite/gcc.target/arm/vfp-stmiad.c ++++ b/src/gcc/testsuite/gcc.target/arm/vfp-stmiad.c +@@ -12,4 +12,4 @@ + while (n--); + } + +-/* { dg-final { scan-assembler "fstmiad" } } */ ++/* { dg-final { scan-assembler "vstmia.64" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vzips16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzips16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vzips16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vzips16.x" ++ ++/* { dg-final { scan-assembler-times "vzip\.16\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrns16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrns16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vtrns16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vtrns16.x" ++ ++/* { dg-final { scan-assembler-times "vtrn\.16\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vexts64_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vexts64_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vexts64' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/ext_s64.x" ++ ++/* Don't scan assembler for vext - it can be optimized into a move from r0. */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipu16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipu16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vzipu16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vzipu16.x" ++ ++/* { dg-final { scan-assembler-times "vzip\.16\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipqs8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipqs8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vzipQs8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vzipqs8.x" ++ ++/* { dg-final { scan-assembler-times "vzip\.8\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vextQu8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextQu8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vextQu8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/extq_u8.x" ++ ++/* { dg-final { scan-assembler-times "vext\.8\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 15 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnu16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnu16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vtrnu16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vtrnu16.x" ++ ++/* { dg-final { scan-assembler-times "vtrn\.16\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnqs8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnqs8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vtrnQs8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vtrnqs8.x" ++ ++/* { dg-final { scan-assembler-times "vtrn\.8\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnqf32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnqf32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vtrnQf32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vtrnqf32.x" ++ ++/* { dg-final { scan-assembler-times "vtrn\.32\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vextu64_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextu64_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vextu64' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/ext_u64.x" ++ ++/* Don't scan assembler for vext - it can be optimized into a move from r0. */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64qp8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64qp8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev64q_p8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev64qp8.x" ++ ++/* { dg-final { scan-assembler "vrev64\.8\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpqp8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpqp8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vuzpQp8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vuzpqp8.x" ++ ++/* { dg-final { scan-assembler-times "vuzp\.8\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev32p8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev32p8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev32p8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev32p8.x" ++ ++/* { dg-final { scan-assembler "vrev32\.8\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vextu8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextu8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vextu8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/ext_u8.x" ++ ++/* { dg-final { scan-assembler-times "vext\.8\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 7 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vextQs64_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextQs64_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vextQs64' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/extq_s64.x" ++ ++/* { dg-final { scan-assembler-times "vext\.64\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64qp16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64qp16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev64q_p16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev64qp16.x" ++ ++/* { dg-final { scan-assembler "vrev64\.16\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnqs16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnqs16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vtrnQs16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vtrnqs16.x" ++ ++/* { dg-final { scan-assembler-times "vtrn\.16\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrns8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrns8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vtrns8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vtrns8.x" ++ ++/* { dg-final { scan-assembler-times "vtrn\.8\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64qs32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64qs32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev64q_s32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev64qs32.x" ++ ++/* { dg-final { scan-assembler "vrev64\.32\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vextQu64_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextQu64_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vextQu64' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/extq_u64.x" ++ ++/* { dg-final { scan-assembler-times "vext\.64\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnqu16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnqu16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vtrnQu16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vtrnqu16.x" ++ ++/* { dg-final { scan-assembler-times "vtrn\.16\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64s8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64s8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev64s8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev64s8.x" ++ ++/* { dg-final { scan-assembler "vrev64\.8\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64qu32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64qu32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev64q_u32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev64qu32.x" ++ ++/* { dg-final { scan-assembler "vrev64\.32\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpqp16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpqp16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vuzpQp16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vuzpqp16.x" ++ ++/* { dg-final { scan-assembler-times "vuzp\.16\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vextp16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextp16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vextp16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/ext_p16.x" ++ ++/* { dg-final { scan-assembler-times "vext\.16\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 3 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpqs32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpqs32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vuzpQs32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vuzpqs32.x" ++ ++/* { dg-final { scan-assembler-times "vuzp\.32\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vexts32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vexts32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vexts32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/ext_s32.x" ++ ++/* { dg-final { scan-assembler-times "vext\.32\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpqu32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpqu32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vuzpQu32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vuzpqu32.x" ++ ++/* { dg-final { scan-assembler-times "vuzp\.32\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzps8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzps8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vuzps8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vuzps8.x" ++ ++/* { dg-final { scan-assembler-times "vuzp\.8\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vextu32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextu32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vextu32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/ext_u32.x" ++ ++/* { dg-final { scan-assembler-times "vext\.32\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev32s16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev32s16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev32s16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev32s16.x" ++ ++/* { dg-final { scan-assembler "vrev32\.16\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipqp8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipqp8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vzipQp8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vzipqp8.x" ++ ++/* { dg-final { scan-assembler-times "vzip\.8\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnqp8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnqp8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vtrnQp8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vtrnqp8.x" ++ ++/* { dg-final { scan-assembler-times "vtrn\.8\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev32qs8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev32qs8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev32q_s8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev32qs8.x" ++ ++/* { dg-final { scan-assembler "vrev32\.8\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev32u16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev32u16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev32u16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev32u16.x" ++ ++/* { dg-final { scan-assembler "vrev32\.16\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64p16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64p16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev64p16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev64p16.x" ++ ++/* { dg-final { scan-assembler "vrev64\.16\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64s32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64s32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev64s32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev64s32.x" ++ ++/* { dg-final { scan-assembler "vrev64\.32\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev16qs8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev16qs8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev16q_s8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev16qs8.x" ++ ++/* { dg-final { scan-assembler "vrev16\.8\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/simd.exp ++++ b/src/gcc/testsuite/gcc.target/arm/simd/simd.exp +@@ -0,0 +1,35 @@ ++# Copyright (C) 1997-2014 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# GCC testsuite that uses the `dg.exp' driver. ++ ++# Exit immediately if this isn't an ARM target. ++if ![istarget arm*-*-*] then { ++ return ++} ++ ++# Load support procs. ++load_lib gcc-dg.exp ++ ++# Initialize `dg'. ++dg-init ++ ++# Main loop. ++dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cCS\]]] \ ++ "" "" ++ ++# All done. ++dg-finish +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64u32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64u32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev64u32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev64u32.x" ++ ++/* { dg-final { scan-assembler "vrev64\.32\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64qu8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64qu8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev64q_u8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev64qu8.x" ++ ++/* { dg-final { scan-assembler "vrev64\.8\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpp16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpp16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vuzpp16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vuzpp16.x" ++ ++/* { dg-final { scan-assembler-times "vuzp\.16\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzps32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzps32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vuzps32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vuzps32.x" ++ ++/* { dg-final { scan-assembler-times "vuzp\.32\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpu32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpu32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vuzpu32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vuzpu32.x" ++ ++/* { dg-final { scan-assembler-times "vuzp\.32\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vextQp16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextQp16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vextQp16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/extq_p16.x" ++ ++/* { dg-final { scan-assembler-times "vext\.16\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 7 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vextQs32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextQs32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vextQs32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/extq_s32.x" ++ ++/* { dg-final { scan-assembler-times "vext\.32\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 3 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev32qp16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev32qp16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev32q_p16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev32qp16.x" ++ ++/* { dg-final { scan-assembler "vrev32\.16\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipqp16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipqp16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vzipQp16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vzipqp16.x" ++ ++/* { dg-final { scan-assembler-times "vzip\.16\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipqs32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipqs32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vzipQs32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vzipqs32.x" ++ ++/* { dg-final { scan-assembler-times "vzip\.32\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vextQu32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextQu32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vextQu32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/extq_u32.x" ++ ++/* { dg-final { scan-assembler-times "vext\.32\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 3 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnp8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnp8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vtrnp8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vtrnp8.x" ++ ++/* { dg-final { scan-assembler-times "vtrn\.8\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpqu8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpqu8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vuzpQu8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vuzpqu8.x" ++ ++/* { dg-final { scan-assembler-times "vuzp\.8\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vzips8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzips8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vzips8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vzips8.x" ++ ++/* { dg-final { scan-assembler-times "vzip\.8\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipqu32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipqu32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vzipQu32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vzipqu32.x" ++ ++/* { dg-final { scan-assembler-times "vzip\.32\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev16s8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev16s8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev16s8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev16s8.x" ++ ++/* { dg-final { scan-assembler "vrev16\.8\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev32u8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev32u8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev32u8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev32u8.x" ++ ++/* { dg-final { scan-assembler "vrev32\.8\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64p8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64p8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev64p8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev64p8.x" ++ ++/* { dg-final { scan-assembler "vrev64\.8\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpp8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpp8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vuzpp8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vuzpp8.x" ++ ++/* { dg-final { scan-assembler-times "vuzp\.8\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipp16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipp16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vzipp16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vzipp16.x" ++ ++/* { dg-final { scan-assembler-times "vzip\.16\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vzips32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzips32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vzips32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vzips32.x" ++ ++/* { dg-final { scan-assembler-times "vuzp\.32\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vextp64_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextp64_1.c +@@ -0,0 +1,26 @@ ++/* Test the `vextp64' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_crypto_ok } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++/* { dg-add-options arm_crypto } */ ++ ++#include "arm_neon.h" ++ ++extern void abort (void); ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ poly64x1_t in1 = {0}; ++ poly64x1_t in2 = {1}; ++ poly64x1_t actual = vext_p64 (in1, in2, 0); ++ if (actual != in1) ++ abort (); ++ ++ return 0; ++} ++ ++/* Don't scan assembler for vext - it can be optimized into a move from r0. ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev32qp8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev32qp8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev32q_p8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev32qp8.x" ++ ++/* { dg-final { scan-assembler "vrev32\.8\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnp16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnp16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vtrnp16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vtrnp16.x" ++ ++/* { dg-final { scan-assembler-times "vtrn\.16\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrns32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrns32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vtrns32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vtrns32.x" ++ ++/* { dg-final { scan-assembler-times "vuzp\.32\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vextQs8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextQs8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vextQs8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/extq_s8.x" ++ ++/* { dg-final { scan-assembler-times "vext\.8\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 15 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev16qp8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev16qp8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev16q_p8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev16qp8.x" ++ ++/* { dg-final { scan-assembler "vrev16\.8\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipu32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipu32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vzipu32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vzipu32.x" ++ ++/* { dg-final { scan-assembler-times "vuzp\.32\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnu32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnu32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vtrnu32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vtrnu32.x" ++ ++/* { dg-final { scan-assembler-times "vuzp\.32\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipqu8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipqu8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vzipQu8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vzipqu8.x" ++ ++/* { dg-final { scan-assembler-times "vzip\.8\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnqu8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnqu8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vtrnQu8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vtrnqu8.x" ++ ++/* { dg-final { scan-assembler-times "vtrn\.8\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64qf32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64qf32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev64q_f32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev64qf32.x" ++ ++/* { dg-final { scan-assembler "vrev64\.32\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpqf32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpqf32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vuzpQf32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vuzpqf32.x" ++ ++/* { dg-final { scan-assembler-times "vuzp\.32\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipp8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipp8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vzipp8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vzipp8.x" ++ ++/* { dg-final { scan-assembler-times "vzip\.8\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vextf32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextf32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vextf32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/ext_f32.x" ++ ++/* { dg-final { scan-assembler-times "vext\.32\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vextQp64_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextQp64_1.c +@@ -0,0 +1,33 @@ ++/* Test the `vextQp64' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_crypto_ok } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++/* { dg-add-options arm_crypto } */ ++ ++#include "arm_neon.h" ++ ++extern void abort (void); ++ ++poly64x2_t ++test_vextq_p64_1 (poly64x2_t a, poly64x2_t b) ++{ ++ return vextq_p64(a, b, 1); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i, off; ++ poly64x2_t in1 = {0, 1}; ++ poly64x2_t in2 = {2, 3}; ++ poly64x2_t actual = test_vextq_p64_1 (in1, in2); ++ for (i = 0; i < 2; i++) ++ if (actual[i] != i + 1) ++ abort (); ++ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times "vext\.64\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vexts8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vexts8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vexts8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/ext_s8.x" ++ ++/* { dg-final { scan-assembler-times "vext\.8\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 7 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev16p8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev16p8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev16p8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev16p8.x" ++ ++/* { dg-final { scan-assembler "vrev16\.8\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnqp16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnqp16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vtrnQp16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vtrnqp16.x" ++ ++/* { dg-final { scan-assembler-times "vtrn\.16\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnqs32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnqs32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vtrnQs32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vtrnqs32.x" ++ ++/* { dg-final { scan-assembler-times "vtrn\.32\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnqu32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnqu32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vtrnQu32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vtrnqu32.x" ++ ++/* { dg-final { scan-assembler-times "vtrn\.32\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnu8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnu8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vtrnu8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vtrnu8.x" ++ ++/* { dg-final { scan-assembler-times "vtrn\.8\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64qs16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64qs16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev64q_s16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev64qs16.x" ++ ++/* { dg-final { scan-assembler "vrev64\.16\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64f32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64f32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev64f32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev64f32.x" ++ ++/* { dg-final { scan-assembler "vrev64\.32\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64u8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64u8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev64u8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev64u8.x" ++ ++/* { dg-final { scan-assembler "vrev64\.8\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64qu16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64qu16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev64q_u16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev64qu16.x" ++ ++/* { dg-final { scan-assembler "vrev64\.16\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev32p16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev32p16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev32p16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev32p16.x" ++ ++/* { dg-final { scan-assembler "vrev32\.16\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vextQp8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextQp8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vextQp8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/extq_p8.x" ++ ++/* { dg-final { scan-assembler-times "vext\.8\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 15 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpf32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpf32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vuzpf32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vuzpf32.x" ++ ++/* { dg-final { scan-assembler-times "vuzp\.32\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpqs16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpqs16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vuzpQs16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vuzpqs16.x" ++ ++/* { dg-final { scan-assembler-times "vuzp\.16\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vexts16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vexts16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vexts16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/ext_s16.x" ++ ++/* { dg-final { scan-assembler-times "vext\.16\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 3 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpqu16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpqu16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vuzpQu16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vuzpqu16.x" ++ ++/* { dg-final { scan-assembler-times "vuzp\.16\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpu8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpu8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vuzpu8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vuzpu8.x" ++ ++/* { dg-final { scan-assembler-times "vuzp\.8\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vextQf32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextQf32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vextQf32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/extq_f32.x" ++ ++/* { dg-final { scan-assembler-times "vext\.32\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 3 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vextu16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextu16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vextu16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/ext_u16.x" ++ ++/* { dg-final { scan-assembler-times "vext\.16\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 3 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipqf32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipqf32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vzipQf32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vzipqf32.x" ++ ++/* { dg-final { scan-assembler-times "vzip\.32\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev32qu8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev32qu8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev32q_u8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev32qu8.x" ++ ++/* { dg-final { scan-assembler "vrev32\.8\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64s16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64s16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev64s16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev64s16.x" ++ ++/* { dg-final { scan-assembler "vrev64\.16\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev16qu8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev16qu8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev16q_u8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev16qu8.x" ++ ++/* { dg-final { scan-assembler "vrev16\.8\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64u16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64u16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev64u16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev64u16.x" ++ ++/* { dg-final { scan-assembler "vrev64\.16\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64qs8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64qs8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev64q_s8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev64qs8.x" ++ ++/* { dg-final { scan-assembler "vrev64\.8\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vextp8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextp8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vextp8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/ext_p8.x" ++ ++/* { dg-final { scan-assembler-times "vext\.8\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 7 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzps16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzps16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vuzps16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vuzps16.x" ++ ++/* { dg-final { scan-assembler-times "vuzp\.16\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpqs8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpqs8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vuzpQs8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vuzpqs8.x" ++ ++/* { dg-final { scan-assembler-times "vuzp\.8\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpu16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpu16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vuzpu16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vuzpu16.x" ++ ++/* { dg-final { scan-assembler-times "vuzp\.16\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vextQs16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextQs16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vextQs16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/extq_s16.x" ++ ++/* { dg-final { scan-assembler-times "vext\.16\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 7 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev32s8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev32s8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev32s8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev32s8.x" ++ ++/* { dg-final { scan-assembler "vrev32\.8\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev32qs16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev32qs16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev32q_s16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev32qs16.x" ++ ++/* { dg-final { scan-assembler "vrev32\.16\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vextQu16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextQu16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vextQu16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/extq_u16.x" ++ ++/* { dg-final { scan-assembler-times "vext\.16\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 7 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipf32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipf32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vzipf32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vzipf32.x" ++ ++/* { dg-final { scan-assembler-times "vuzp\.32\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipqs16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipqs16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vzipQs16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vzipqs16.x" ++ ++/* { dg-final { scan-assembler-times "vzip\.16\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnf32_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnf32_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vtrnf32' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vtrnf32.x" ++ ++/* { dg-final { scan-assembler-times "vuzp\.32\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev32qu16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev32qu16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev32q_u16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev32qu16.x" ++ ++/* { dg-final { scan-assembler "vrev32\.16\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipqu16_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipqu16_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vzipQu16' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vzipqu16.x" ++ ++/* { dg-final { scan-assembler-times "vzip\.16\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipu8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipu8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vzipu8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -O1 -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vzipu8.x" ++ ++/* { dg-final { scan-assembler-times "vzip\.8\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev16u8_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev16u8_1.c +@@ -0,0 +1,12 @@ ++/* Test the `vrev16u8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include "../../aarch64/simd/vrev16u8.x" ++ ++/* { dg-final { scan-assembler "vrev16\.8\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/vect-lfloorf_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/vect-lfloorf_1.c +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_v8_neon_ok } */ ++/* { dg-options "-O2 -ffast-math -ftree-vectorize -fdump-tree-vect-all" } */ ++/* { dg-add-options arm_v8_neon } */ ++ ++#define N 32 ++ ++float __attribute__((aligned(16))) input[N]; ++int __attribute__((aligned(16))) output[N]; ++ ++void ++foo () ++{ ++ int i = 0; ++ /* Vectorizable. */ ++ for (i = 0; i < N; i++) ++ output[i] = __builtin_lfloorf (input[i]); ++} ++ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ ++/* { dg-final { cleanup-tree-dump "vect" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/README.advsimd-intrinsics ++++ b/src/gcc/testsuite/gcc.target/arm/README.advsimd-intrinsics +@@ -0,0 +1 @@ ++Advanced SIMD intrinsics tests are located in gcc.target/aarch64. +--- a/src/gcc/testsuite/gcc.target/arm/pr51835.c ++++ b/src/gcc/testsuite/gcc.target/arm/pr51835.c +@@ -13,5 +13,5 @@ + return (unsigned int)d; + } + +-/* { dg-final { scan-assembler-times "fmrrd\[\\t \]+r0,\[\\t \]*r1,\[\\t \]*d0" 2 { target { arm_little_endian } } } } */ +-/* { dg-final { scan-assembler-times "fmrrd\[\\t \]+r1,\[\\t \]*r0,\[\\t \]*d0" 2 { target { ! arm_little_endian } } } } */ ++/* { dg-final { scan-assembler-times "vmov\[\\t \]+r0,\[\\t \]*r1,\[\\t \]*d0" 2 { target { arm_little_endian } } } } */ ++/* { dg-final { scan-assembler-times "vmov\[\\t \]+r1,\[\\t \]*r0,\[\\t \]*d0" 2 { target { ! arm_little_endian } } } } */ +--- a/src/gcc/testsuite/gcc.target/arm/20031108-1.c ++++ b/src/gcc/testsuite/gcc.target/arm/20031108-1.c +@@ -20,6 +20,9 @@ + + Rec_Pointer Ptr_Glob; + ++extern int Proc_7 (int, int, int *); ++ ++void + Proc_1 (Ptr_Val_Par) + Rec_Pointer Ptr_Val_Par; + { +--- a/src/gcc/testsuite/gcc.target/arm/small-multiply-m1-1.c ++++ b/src/gcc/testsuite/gcc.target/arm/small-multiply-m1-1.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_thumb1_ok } */ ++/* { dg-skip-if "Test is specific to cortex-m1.small-multiply" { arm*-*-* } { "-mcpu=*" } { "-mcpu=cortex-m1.small-multiply" } } */ ++/* { dg-options "-mcpu=cortex-m1.small-multiply -mthumb -O2" } */ ++ ++int ++test (int a) ++{ ++ return a * 0x123456; ++} ++ ++/* { dg-final { scan-assembler-not "\[\\t \]+mul" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/small-multiply-m0-3.c ++++ b/src/gcc/testsuite/gcc.target/arm/small-multiply-m0-3.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_thumb1_ok } */ ++/* { dg-skip-if "Test is specific to cortex-m0.small-multiply" { arm*-*-* } { "-mcpu=*" } { "-mcpu=cortex-m0.small-multiply" } } */ ++/* { dg-options "-mcpu=cortex-m0.small-multiply -mthumb -Os" } */ ++ ++int ++test (int a) ++{ ++ return a * 0x13; ++} ++ ++/* { dg-final { scan-assembler-not "\[\\t \]+mul" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/neon-modes-2.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon-modes-2.c +@@ -11,6 +11,8 @@ + + #define MANY(A) A (0), A (1), A (2), A (3), A (4), A (5) + ++extern void foo (int *, int *); ++ + void + bar (uint32_t *ptr, int y) + { +--- a/src/gcc/testsuite/gcc.target/arm/vect-rounding-roundf.c ++++ b/src/gcc/testsuite/gcc.target/arm/vect-rounding-roundf.c +@@ -5,8 +5,11 @@ + + #define N 32 + ++float __attribute__((aligned(16))) input[N]; ++float __attribute__((aligned(16))) output[N]; ++ + void +-foo (float *output, float *input) ++foo () + { + int i = 0; + /* Vectorizable. */ +--- a/src/gcc/testsuite/gcc.target/arm/pr43920-2.c ++++ b/src/gcc/testsuite/gcc.target/arm/pr43920-2.c +@@ -4,6 +4,8 @@ + + #include + ++extern int lseek(int, long, int); ++ + int getFileStartAndLength (int fd, int *start_, size_t *length_) + { + int start, end; +--- a/src/gcc/testsuite/gcc.target/arm/xordi3-opt.c ++++ b/src/gcc/testsuite/gcc.target/arm/xordi3-opt.c +@@ -1,4 +1,4 @@ +-/* { dg-do compile } */ ++/* { dg-do compile { target { arm_arm_ok || arm_thumb2_ok} } } */ + /* { dg-options "-O1" } */ + + unsigned long long xor64 (unsigned long long input) +--- a/src/gcc/testsuite/gcc.target/arm/vect-lroundf_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/vect-lroundf_1.c +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_v8_neon_ok } */ ++/* { dg-options "-O2 -ffast-math -ftree-vectorize -fdump-tree-vect-all" } */ ++/* { dg-add-options arm_v8_neon } */ ++ ++#define N 32 ++ ++float __attribute__((aligned(16))) input[N]; ++int __attribute__((aligned(16))) output[N]; ++ ++void ++foo () ++{ ++ int i = 0; ++ /* Vectorizable. */ ++ for (i = 0; i < N; i++) ++ output[i] = __builtin_lroundf (input[i]); ++} ++ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ ++/* { dg-final { cleanup-tree-dump "vect" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/small-multiply-m1-2.c ++++ b/src/gcc/testsuite/gcc.target/arm/small-multiply-m1-2.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_thumb1_ok } */ ++/* { dg-skip-if "Test is specific to cortex-m1.small-multiply" { arm*-*-* } { "-mcpu=*" } { "-mcpu=cortex-m1.small-multiply" } } */ ++/* { dg-options "-mcpu=cortex-m1.small-multiply -mthumb -Os" } */ ++ ++int ++test (int a) ++{ ++ return a * 0x123456; ++} ++ ++/* { dg-final { scan-assembler "\[\\t \]+mul" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/tail-long-call.c ++++ b/src/gcc/testsuite/gcc.target/arm/tail-long-call.c +@@ -0,0 +1,12 @@ ++/* { dg-skip-if "need at least armv5te" { *-*-* } { "-march=armv[234]*" "-mthumb" } { "" } } */ ++/* { dg-options "-O2 -march=armv5te -marm" } */ ++/* { dg-final { scan-assembler "bx" } } */ ++/* { dg-final { scan-assembler-not "blx" } } */ ++ ++int lcal (int) __attribute__ ((long_call)); ++ ++int ++dec (int a) ++{ ++ return lcal (a); ++} +--- a/src/gcc/testsuite/gcc.target/arm/vect-rounding-btruncf.c ++++ b/src/gcc/testsuite/gcc.target/arm/vect-rounding-btruncf.c +@@ -5,8 +5,11 @@ + + #define N 32 + ++float __attribute__((aligned(16))) input[N]; ++float __attribute__((aligned(16))) output[N]; ++ + void +-foo (float *output, float *input) ++foo () + { + int i = 0; + /* Vectorizable. */ +--- a/src/gcc/testsuite/gcc.target/arm/pr61948.c ++++ b/src/gcc/testsuite/gcc.target/arm/pr61948.c +@@ -0,0 +1,16 @@ ++/* PR target/61948 */ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-require-effective-target arm_thumb2_ok } */ ++/* { dg-options "-O2 -mthumb" } */ ++/* { dg-add-options arm_neon } */ ++ ++long long f (long long *c) ++{ ++ long long t = c[0]; ++ asm ("nop" : : : "r0", "r3", "r4", "r5", ++ "r6", "r7", "r8", "r9", ++ "r10", "r11", "r12", "memory"); ++ return t >> 1; ++} ++ +--- a/src/gcc/testsuite/gcc.target/arm/pr51968.c ++++ b/src/gcc/testsuite/gcc.target/arm/pr51968.c +@@ -1,6 +1,6 @@ + /* PR target/51968 */ + /* { dg-do compile } */ +-/* { dg-options "-O2 -march=armv7-a -mfloat-abi=softfp -mfpu=neon" } */ ++/* { dg-options "-O2 -Wno-implicit-function-declaration -march=armv7-a -mfloat-abi=softfp -mfpu=neon" } */ + /* { dg-require-effective-target arm_neon_ok } */ + + typedef __builtin_neon_qi int8x8_t __attribute__ ((__vector_size__ (8))); +--- a/src/gcc/testsuite/gcc.target/arm/lround-vcvt_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/lround-vcvt_1.c +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_v8_vfp_ok } */ ++/* { dg-options "-O2 -march=armv8-a -ffast-math" } */ ++/* { dg-add-options arm_v8_vfp } */ ++ ++int ++foofloat (float x) ++{ ++ return __builtin_lroundf (x); ++} ++ ++/* { dg-final { scan-assembler-times "vcvta.s32.f32\ts\[0-9\]+, s\[0-9\]+" 1 } } */ ++ ++ ++int ++foodouble (double x) ++{ ++ return __builtin_lround (x); ++} ++ ++/* { dg-final { scan-assembler-times "vcvta.s32.f64\ts\[0-9\]+, d\[0-9\]+" 1 } } */ +--- a/src/gcc/testsuite/gcc.target/arm/pr64460_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/pr64460_1.c +@@ -0,0 +1,69 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mtune=xscale" } */ ++ ++typedef unsigned int size_t; ++typedef short unsigned int __uint16_t; ++typedef long unsigned int __uint32_t; ++typedef unsigned int __uintptr_t; ++typedef __uint16_t uint16_t ; ++typedef __uint32_t uint32_t ; ++typedef __uintptr_t uintptr_t; ++typedef uint32_t Objects_Id; ++typedef uint16_t Objects_Maximum; ++typedef struct { } Objects_Control; ++ ++static __inline__ void *_Addresses_Align_up (void *address, size_t alignment) ++{ ++ uintptr_t mask = alignment - (uintptr_t)1; ++ return (void*)(((uintptr_t)address + mask) & ~mask); ++} ++ ++typedef struct { ++ Objects_Id minimum_id; ++ Objects_Maximum maximum; ++ _Bool ++ auto_extend; ++ Objects_Maximum allocation_size; ++ void **object_blocks; ++} Objects_Information; ++ ++extern uint32_t _Objects_Get_index (Objects_Id); ++extern void** _Workspace_Allocate (size_t); ++ ++void _Objects_Extend_information (Objects_Information *information) ++{ ++ uint32_t block_count; ++ uint32_t minimum_index; ++ uint32_t maximum; ++ size_t block_size; ++ _Bool ++ do_extend = ++ minimum_index = _Objects_Get_index( information->minimum_id ); ++ if ( information->object_blocks == ++ ((void *)0) ++ ) ++ block_count = 0; ++ else { ++ block_count = information->maximum / information->allocation_size; ++ } ++ if ( do_extend ) { ++ void **object_blocks; ++ uintptr_t object_blocks_size; ++ uintptr_t inactive_per_block_size; ++ object_blocks_size = (uintptr_t)_Addresses_Align_up( ++ (void*)(block_count * sizeof(void*)), ++ 8 ++ ); ++ inactive_per_block_size = ++ (uintptr_t)_Addresses_Align_up( ++ (void*)(block_count * sizeof(uint32_t)), ++ 8 ++ ); ++ block_size = object_blocks_size + inactive_per_block_size + ++ ((maximum + minimum_index) * sizeof(Objects_Control *)); ++ if ( information->auto_extend ) { ++ object_blocks = _Workspace_Allocate( block_size ); ++ } else { ++ } ++ } ++} +--- a/src/gcc/testsuite/gcc.target/arm/small-multiply-m1-3.c ++++ b/src/gcc/testsuite/gcc.target/arm/small-multiply-m1-3.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_thumb1_ok } */ ++/* { dg-skip-if "Test is specific to cortex-m1.small-multiply" { arm*-*-* } { "-mcpu=*" } { "-mcpu=cortex-m1.small-multiply" } } */ ++/* { dg-options "-mcpu=cortex-m1.small-multiply -mthumb -Os" } */ ++ ++int ++test (int a) ++{ ++ return a * 0x13; ++} ++ ++/* { dg-final { scan-assembler-not "\[\\t \]+mul" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/aapcs/abitest.h ++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/abitest.h +@@ -49,6 +49,7 @@ + + + extern void abort (void); ++extern int memcmp (const void *s1, const void *s2, __SIZE_TYPE__ n); + + __attribute__((naked)) void dumpregs () __asm("myfunc"); + __attribute__((naked)) void dumpregs () +--- a/src/gcc/testsuite/gcc.target/arm/pr60650.c ++++ b/src/gcc/testsuite/gcc.target/arm/pr60650.c +@@ -20,6 +20,10 @@ + int a, c, d; + long long e; + ++extern int foo1 (struct btrfs_root *, int, int, int); ++extern int foo2 (struct btrfs_root *, int, int); ++ ++int + truncate_one_csum (struct btrfs_root *p1, long long p2, long long p3) + { + int f, g, i = p1->fs_info->sb->s_blocksize_bits; +--- a/src/gcc/testsuite/gcc.target/arm/vfp-1.c ++++ b/src/gcc/testsuite/gcc.target/arm/vfp-1.c +@@ -11,40 +11,40 @@ + + void test_sf() { + /* abssf2_vfp */ +- /* { dg-final { scan-assembler "fabss" } } */ ++ /* { dg-final { scan-assembler "vabs.f32" } } */ + f1 = fabsf (f1); + /* negsf2_vfp */ +- /* { dg-final { scan-assembler "fnegs" } } */ ++ /* { dg-final { scan-assembler "vneg.f32" } } */ + f1 = -f1; + /* addsf3_vfp */ +- /* { dg-final { scan-assembler "fadds" } } */ ++ /* { dg-final { scan-assembler "vadd.f32" } } */ + f1 = f2 + f3; + /* subsf3_vfp */ +- /* { dg-final { scan-assembler "fsubs" } } */ ++ /* { dg-final { scan-assembler "vsub.f32" } } */ + f1 = f2 - f3; + /* divsf3_vfp */ +- /* { dg-final { scan-assembler "fdivs" } } */ ++ /* { dg-final { scan-assembler "vdiv.f32" } } */ + f1 = f2 / f3; + /* mulsf3_vfp */ +- /* { dg-final { scan-assembler "fmuls" } } */ ++ /* { dg-final { scan-assembler "vmul.f32" } } */ + f1 = f2 * f3; + /* mulsf3negsf_vfp */ +- /* { dg-final { scan-assembler "fnmuls" } } */ ++ /* { dg-final { scan-assembler "vnmul.f32" } } */ + f1 = -f2 * f3; + /* mulsf3addsf_vfp */ +- /* { dg-final { scan-assembler "fmacs" } } */ ++ /* { dg-final { scan-assembler "vmla.f32" } } */ + f1 = f2 * f3 + f1; + /* mulsf3subsf_vfp */ +- /* { dg-final { scan-assembler "fmscs" } } */ ++ /* { dg-final { scan-assembler "vnmls.f32" } } */ + f1 = f2 * f3 - f1; + /* mulsf3negsfaddsf_vfp */ +- /* { dg-final { scan-assembler "fnmacs" } } */ ++ /* { dg-final { scan-assembler "vmls.f32" } } */ + f1 = f2 - f3 * f1; + /* mulsf3negsfsubsf_vfp */ +- /* { dg-final { scan-assembler "fnmscs" } } */ ++ /* { dg-final { scan-assembler "vnmla.f32" } } */ + f1 = -f2 * f3 - f1; + /* sqrtsf2_vfp */ +- /* { dg-final { scan-assembler "fsqrts" } } */ ++ /* { dg-final { scan-assembler "vsqrt.f32" } } */ + f1 = sqrtf (f1); + } + +@@ -52,40 +52,40 @@ + + void test_df() { + /* absdf2_vfp */ +- /* { dg-final { scan-assembler "fabsd" } } */ ++ /* { dg-final { scan-assembler "vabs.f64" } } */ + d1 = fabs (d1); + /* negdf2_vfp */ +- /* { dg-final { scan-assembler "fnegd" } } */ ++ /* { dg-final { scan-assembler "vneg.f64" } } */ + d1 = -d1; + /* adddf3_vfp */ +- /* { dg-final { scan-assembler "faddd" } } */ ++ /* { dg-final { scan-assembler "vadd.f64" } } */ + d1 = d2 + d3; + /* subdf3_vfp */ +- /* { dg-final { scan-assembler "fsubd" } } */ ++ /* { dg-final { scan-assembler "vsub.f64" } } */ + d1 = d2 - d3; + /* divdf3_vfp */ +- /* { dg-final { scan-assembler "fdivd" } } */ ++ /* { dg-final { scan-assembler "vdiv.f64" } } */ + d1 = d2 / d3; + /* muldf3_vfp */ +- /* { dg-final { scan-assembler "fmuld" } } */ ++ /* { dg-final { scan-assembler "vmul.f64" } } */ + d1 = d2 * d3; + /* muldf3negdf_vfp */ +- /* { dg-final { scan-assembler "fnmuld" } } */ ++ /* { dg-final { scan-assembler "vnmul.f64" } } */ + d1 = -d2 * d3; + /* muldf3adddf_vfp */ +- /* { dg-final { scan-assembler "fmacd" } } */ ++ /* { dg-final { scan-assembler "vmla.f64" } } */ + d1 = d2 * d3 + d1; + /* muldf3subdf_vfp */ +- /* { dg-final { scan-assembler "fmscd" } } */ ++ /* { dg-final { scan-assembler "vnmls.f64" } } */ + d1 = d2 * d3 - d1; + /* muldf3negdfadddf_vfp */ +- /* { dg-final { scan-assembler "fnmacd" } } */ ++ /* { dg-final { scan-assembler "vmls.f64" } } */ + d1 = d2 - d3 * d1; + /* muldf3negdfsubdf_vfp */ +- /* { dg-final { scan-assembler "fnmscd" } } */ ++ /* { dg-final { scan-assembler "vnmla.f64" } } */ + d1 = -d2 * d3 - d1; + /* sqrtdf2_vfp */ +- /* { dg-final { scan-assembler "fsqrtd" } } */ ++ /* { dg-final { scan-assembler "vsqrt.f64" } } */ + d1 = sqrt (d1); + } + +@@ -94,46 +94,46 @@ + + void test_convert () { + /* extendsfdf2_vfp */ +- /* { dg-final { scan-assembler "fcvtds" } } */ ++ /* { dg-final { scan-assembler "vcvt.f64.f32" } } */ + d1 = f1; + /* truncdfsf2_vfp */ +- /* { dg-final { scan-assembler "fcvtsd" } } */ ++ /* { dg-final { scan-assembler "vcvt.f32.f64" } } */ + f1 = d1; + /* truncsisf2_vfp */ +- /* { dg-final { scan-assembler "ftosizs" } } */ ++ /* { dg-final { scan-assembler "vcvt.s32.f32" } } */ + i1 = f1; + /* truncsidf2_vfp */ +- /* { dg-final { scan-assembler "ftosizd" } } */ ++ /* { dg-final { scan-assembler "vcvt.s32.f64" } } */ + i1 = d1; + /* fixuns_truncsfsi2 */ +- /* { dg-final { scan-assembler "ftouizs" } } */ ++ /* { dg-final { scan-assembler "vcvt.u32.f32" } } */ + u1 = f1; + /* fixuns_truncdfsi2 */ +- /* { dg-final { scan-assembler "ftouizd" } } */ ++ /* { dg-final { scan-assembler "vcvt.u32.f64" } } */ + u1 = d1; + /* floatsisf2_vfp */ +- /* { dg-final { scan-assembler "fsitos" } } */ ++ /* { dg-final { scan-assembler "vcvt.f32.s32" } } */ + f1 = i1; + /* floatsidf2_vfp */ +- /* { dg-final { scan-assembler "fsitod" } } */ ++ /* { dg-final { scan-assembler "vcvt.f64.s32" } } */ + d1 = i1; + /* floatunssisf2 */ +- /* { dg-final { scan-assembler "fuitos" } } */ ++ /* { dg-final { scan-assembler "vcvt.f32.u32" } } */ + f1 = u1; + /* floatunssidf2 */ +- /* { dg-final { scan-assembler "fuitod" } } */ ++ /* { dg-final { scan-assembler "vcvt.f64.u32" } } */ + d1 = u1; + } + + void test_ldst (float f[], double d[]) { +- /* { dg-final { scan-assembler "flds.+ \\\[r0, #1020\\\]" } } */ +- /* { dg-final { scan-assembler "flds.+ \\\[r\[0-9\], #-1020\\\]" { target { arm32 && { ! arm_thumb2_ok } } } } } */ ++ /* { dg-final { scan-assembler "vldr.32.+ \\\[r0, #1020\\\]" } } */ ++ /* { dg-final { scan-assembler "vldr.32.+ \\\[r\[0-9\], #-1020\\\]" { target { arm32 && { ! arm_thumb2_ok } } } } } */ + /* { dg-final { scan-assembler "add.+ r0, #1024" } } */ +- /* { dg-final { scan-assembler "fsts.+ \\\[r\[0-9\]\\\]\n" } } */ ++ /* { dg-final { scan-assembler "vstr.32.+ \\\[r\[0-9\]\\\]\n" } } */ + f[256] = f[255] + f[-255]; + +- /* { dg-final { scan-assembler "fldd.+ \\\[r1, #1016\\\]" } } */ +- /* { dg-final { scan-assembler "fldd.+ \\\[r\[1-9\], #-1016\\\]" { target { arm32 && { ! arm_thumb2_ok } } } } } */ +- /* { dg-final { scan-assembler "fstd.+ \\\[r1, #256\\\]" } } */ ++ /* { dg-final { scan-assembler "vldr.64.+ \\\[r1, #1016\\\]" } } */ ++ /* { dg-final { scan-assembler "vldr.64.+ \\\[r\[1-9\], #-1016\\\]" { target { arm32 && { ! arm_thumb2_ok } } } } } */ ++ /* { dg-final { scan-assembler "vstr.64.+ \\\[r1, #256\\\]" } } */ + d[32] = d[127] + d[-127]; + } +--- a/src/gcc/testsuite/gcc.target/arm/vect-copysignf.c ++++ b/src/gcc/testsuite/gcc.target/arm/vect-copysignf.c +@@ -0,0 +1,36 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_hw } */ ++/* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-details" } */ ++/* { dg-add-options "arm_neon" } */ ++ ++extern void abort (); ++ ++#define N 16 ++float a[N] = {-0.1f, -3.2f, -6.3f, -9.4f, ++ -12.5f, -15.6f, -18.7f, -21.8f, ++ 24.9f, 27.1f, 30.2f, 33.3f, ++ 36.4f, 39.5f, 42.6f, 45.7f}; ++float b[N] = {-1.2f, 3.4f, -5.6f, 7.8f, ++ -9.0f, 1.0f, -2.0f, 3.0f, ++ -4.0f, -5.0f, 6.0f, 7.0f, ++ -8.0f, -9.0f, 10.0f, 11.0f}; ++float r[N]; ++ ++int ++main (void) ++{ ++ int i; ++ ++ for (i = 0; i < N; i++) ++ r[i] = __builtin_copysignf (a[i], b[i]); ++ ++ /* check results: */ ++ for (i = 0; i < N; i++) ++ if (r[i] != __builtin_copysignf (a[i], b[i])) ++ abort (); ++ ++ return 0; ++} ++ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ ++/* { dg-final { cleanup-tree-dump "vect" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/rev16.c ++++ b/src/gcc/testsuite/gcc.target/arm/rev16.c +@@ -0,0 +1,35 @@ ++/* { dg-options "-O2" } */ ++/* { dg-do run } */ ++ ++extern void abort (void); ++ ++typedef unsigned int __u32; ++ ++__u32 ++__rev16_32_alt (__u32 x) ++{ ++ return (((__u32)(x) & (__u32)0xff00ff00UL) >> 8) ++ | (((__u32)(x) & (__u32)0x00ff00ffUL) << 8); ++} ++ ++__u32 ++__rev16_32 (__u32 x) ++{ ++ return (((__u32)(x) & (__u32)0x00ff00ffUL) << 8) ++ | (((__u32)(x) & (__u32)0xff00ff00UL) >> 8); ++} ++ ++int ++main (void) ++{ ++ volatile __u32 in32 = 0x12345678; ++ volatile __u32 expected32 = 0x34127856; ++ ++ if (__rev16_32 (in32) != expected32) ++ abort (); ++ ++ if (__rev16_32_alt (in32) != expected32) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/arm/anddi_notdi-1.c ++++ b/src/gcc/testsuite/gcc.target/arm/anddi_notdi-1.c +@@ -0,0 +1,65 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fno-inline --save-temps" } */ ++ ++extern void abort (void); ++ ++typedef long long s64int; ++typedef int s32int; ++typedef unsigned long long u64int; ++typedef unsigned int u32int; ++ ++s64int ++anddi_di_notdi (s64int a, s64int b) ++{ ++ return (a & ~b); ++} ++ ++s64int ++anddi_di_notzesidi (s64int a, u32int b) ++{ ++ return (a & ~(u64int) b); ++} ++ ++s64int ++anddi_notdi_zesidi (s64int a, u32int b) ++{ ++ return (~a & (u64int) b); ++} ++ ++s64int ++anddi_di_notsesidi (s64int a, s32int b) ++{ ++ return (a & ~(s64int) b); ++} ++ ++int main () ++{ ++ s64int a64 = 0xdeadbeef0000ffffll; ++ s64int b64 = 0x000000005f470112ll; ++ s64int c64 = 0xdeadbeef300f0000ll; ++ ++ u32int c32 = 0x01124f4f; ++ s32int d32 = 0xabbaface; ++ ++ s64int z = anddi_di_notdi (c64, b64); ++ if (z != 0xdeadbeef20080000ll) ++ abort (); ++ ++ z = anddi_di_notzesidi (a64, c32); ++ if (z != 0xdeadbeef0000b0b0ll) ++ abort (); ++ ++ z = anddi_notdi_zesidi (c64, c32); ++ if (z != 0x0000000001104f4fll) ++ abort (); ++ ++ z = anddi_di_notsesidi (a64, d32); ++ if (z != 0x0000000000000531ll) ++ abort (); ++ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times "bic\t" 6 } } */ ++ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/small-multiply-m0plus-1.c ++++ b/src/gcc/testsuite/gcc.target/arm/small-multiply-m0plus-1.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_thumb1_ok } */ ++/* { dg-skip-if "Test is specific to cortex-m0plus.small-multiply" { arm*-*-* } { "-mcpu=*" } { "-mcpu=cortex-m0plus.small-multiply" } } */ ++/* { dg-options "-mcpu=cortex-m0plus.small-multiply -mthumb -O2" } */ ++ ++int ++test (int a) ++{ ++ return a * 0x123456; ++} ++ ++/* { dg-final { scan-assembler-not "\[\\t \]+mul" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/pr63210.c ++++ b/src/gcc/testsuite/gcc.target/arm/pr63210.c +@@ -0,0 +1,12 @@ ++/* { dg-do assemble } */ ++/* { dg-options "-mthumb -Os " } */ ++/* { dg-require-effective-target arm_thumb1_ok } */ ++ ++int foo1 (int c); ++int foo2 (int c); ++ ++int test (int c) ++{ ++ return (foo1 (c) || foo2 (c)); ++} ++/* { dg-final { object-size text <= 28 } } */ +--- a/src/gcc/testsuite/gcc.target/arm/pr60606-2.c ++++ b/src/gcc/testsuite/gcc.target/arm/pr60606-2.c +@@ -0,0 +1,10 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O" } */ ++ ++int ++f (void) ++{ ++ register unsigned pc asm ("pc"); /* { dg-error "not general enough" } */ ++ ++ return pc > 0x12345678; ++} +--- a/src/gcc/testsuite/gcc.target/arm/vect-rounding-ceilf.c ++++ b/src/gcc/testsuite/gcc.target/arm/vect-rounding-ceilf.c +@@ -5,8 +5,11 @@ + + #define N 32 + ++float __attribute__((aligned(16))) input[N]; ++float __attribute__((aligned(16))) output[N]; ++ + void +-foo (float *output, float *input) ++foo () + { + int i = 0; + /* Vectorizable. */ +--- a/src/gcc/testsuite/gcc.target/arm/pr60650-2.c ++++ b/src/gcc/testsuite/gcc.target/arm/pr60650-2.c +@@ -4,17 +4,19 @@ + int a, h, j; + long long d, e, i; + int f; ++int + fn1 (void *p1, int p2) + { + switch (p2) + case 8: + { +- register b = *(long long *) p1, c asm ("r2"); ++ register int b = *(long long *) p1, c asm ("r2"); + asm ("%0": "=r" (a), "=r" (c):"r" (b), "r" (0)); + *(long long *) p1 = c; + } + } + ++int + fn2 () + { + int k; +@@ -27,8 +29,8 @@ + case 0: + ( + { +- register l asm ("r4"); +- register m asm ("r0"); ++ register int l asm ("r4"); ++ register int m asm ("r0"); + asm (" .err .endif\n\t": "=r" (h), "=r" (j):"r" (m), + "r" + (l));; +--- a/src/gcc/testsuite/gcc.target/arm/pr55642.c ++++ b/src/gcc/testsuite/gcc.target/arm/pr55642.c +@@ -2,6 +2,8 @@ + /* { dg-do compile } */ + /* { dg-require-effective-target arm_thumb2_ok } */ + ++extern int abs (int); ++ + int + foo (int v) + { +--- a/src/gcc/testsuite/gcc.target/arm/lfloor-vcvt_1.c ++++ b/src/gcc/testsuite/gcc.target/arm/lfloor-vcvt_1.c +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_v8_vfp_ok } */ ++/* { dg-options "-O2 -march=armv8-a" } */ ++/* { dg-add-options arm_v8_vfp } */ ++ ++int ++foofloat (float x) ++{ ++ return __builtin_lfloorf (x); ++} ++ ++/* { dg-final { scan-assembler-times "vcvtm.s32.f32\ts\[0-9\]+, s\[0-9\]+" 1 } } */ ++ ++ ++int ++foodouble (double x) ++{ ++ return __builtin_lfloor (x); ++} ++ ++/* { dg-final { scan-assembler-times "vcvtm.s32.f64\ts\[0-9\]+, d\[0-9\]+" 1 } } */ +--- a/src/gcc/testsuite/gcc.target/arm/small-multiply-m0plus-2.c ++++ b/src/gcc/testsuite/gcc.target/arm/small-multiply-m0plus-2.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_thumb1_ok } */ ++/* { dg-skip-if "Test is specific to cortex-m0plus.small-multiply" { arm*-*-* } { "-mcpu=*" } { "-mcpu=cortex-m0plus.small-multiply" } } */ ++/* { dg-options "-mcpu=cortex-m0plus.small-multiply -mthumb -Os" } */ ++ ++int ++test (int a) ++{ ++ return a * 0x123456; ++} ++ ++/* { dg-final { scan-assembler "\[\\t \]+mul" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/pr60606-3.c ++++ b/src/gcc/testsuite/gcc.target/arm/pr60606-3.c +@@ -0,0 +1,9 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O" } */ ++ ++int ++f (void) ++{ ++ register unsigned int r asm ("cc"); /* { dg-error "not general enough|suitable for data type" } */ ++ return r; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_1.c +@@ -0,0 +1,19 @@ ++/* Verify: ++ * -fomit-frame-pointer. ++ * withoug outgoing. ++ * total frame size <= 256. ++ * number of callee-save reg == 1. ++ * optimized code should use "str !" for stack adjustment. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fomit-frame-pointer --save-temps" } */ ++ ++#include "test_frame_common.h" ++ ++t_frame_pattern (test1, 200, ) ++t_frame_run (test1) ++ ++/* { dg-final { scan-assembler-times "str\tx30, \\\[sp, -\[0-9\]+\\\]!" 2 } } */ ++/* { dg-final { scan-assembler-times "ldr\tx30, \\\[sp\\\], \[0-9\]+" 3 } } */ ++ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_9.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_9.c +@@ -0,0 +1,17 @@ ++/* Verify: ++ * -fomit-frame-pointer. ++ * with outgoing. ++ * total frame size > 512. ++ area except outgoing <= 512 ++ * number of callee-saved reg = 1. ++ * Split stack adjustment into two subtractions. ++ the first subtractions couldn't be optimized ++ into "str !" as it's > 256. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fomit-frame-pointer" } */ ++ ++#include "test_frame_common.h" ++ ++t_frame_pattern_outgoing (test9, 480, , 24, a[8], a[9], a[10]) ++t_frame_run (test9) +--- a/src/gcc/testsuite/gcc.target/aarch64/vldN_lane_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vldN_lane_1.c +@@ -0,0 +1,97 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -fno-inline" } */ ++ ++#include ++ ++extern void abort (void); ++ ++#define VARIANTS(VARIANT, STRUCT) \ ++VARIANT (uint8, , 8, _u8, 6, STRUCT) \ ++VARIANT (uint16, , 4, _u16, 3, STRUCT) \ ++VARIANT (uint32, , 2, _u32, 1, STRUCT) \ ++VARIANT (uint64, , 1, _u64, 0, STRUCT) \ ++VARIANT (int8, , 8, _s8, 5, STRUCT) \ ++VARIANT (int16, , 4, _s16, 2, STRUCT) \ ++VARIANT (int32, , 2, _s32, 0, STRUCT) \ ++VARIANT (int64, , 1, _s64, 0, STRUCT) \ ++VARIANT (poly8, , 8, _p8, 7, STRUCT) \ ++VARIANT (poly16, , 4, _p16, 1, STRUCT) \ ++VARIANT (float32, , 2, _f32, 1, STRUCT) \ ++VARIANT (float64, , 1, _f64, 0, STRUCT) \ ++VARIANT (uint8, q, 16, _u8, 14, STRUCT) \ ++VARIANT (uint16, q, 8, _u16, 4, STRUCT) \ ++VARIANT (uint32, q, 4, _u32, 3, STRUCT) \ ++VARIANT (uint64, q, 2, _u64, 0, STRUCT) \ ++VARIANT (int8, q, 16, _s8, 13, STRUCT) \ ++VARIANT (int16, q, 8, _s16, 6, STRUCT) \ ++VARIANT (int32, q, 4, _s32, 2, STRUCT) \ ++VARIANT (int64, q, 2, _s64, 1, STRUCT) \ ++VARIANT (poly8, q, 16, _p8, 12, STRUCT) \ ++VARIANT (poly16, q, 8, _p16, 5, STRUCT) \ ++VARIANT (float32, q, 4, _f32, 1, STRUCT)\ ++VARIANT (float64, q, 2, _f64, 0, STRUCT) ++ ++#define TESTMETH(BASE, Q, ELTS, SUFFIX, LANE, STRUCT) \ ++int \ ++test_vld##STRUCT##Q##_lane##SUFFIX (const BASE##_t *data, \ ++ const BASE##_t *overwrite) \ ++{ \ ++ BASE##x##ELTS##x##STRUCT##_t vectors; \ ++ BASE##_t temp[ELTS]; \ ++ int i,j; \ ++ for (i = 0; i < STRUCT; i++, data += ELTS) \ ++ vectors.val[i] = vld1##Q##SUFFIX (data); \ ++ vectors = vld##STRUCT##Q##_lane##SUFFIX (overwrite, vectors, LANE); \ ++ while (--i >= 0) \ ++ { \ ++ vst1##Q##SUFFIX (temp, vectors.val[i]); \ ++ data -= ELTS; /* Point at value loaded before vldN_lane. */ \ ++ for (j = 0; j < ELTS; j++) \ ++ if (temp[j] != (j == LANE ? overwrite[i] : data[j])) \ ++ return 1; \ ++ } \ ++ return 0; \ ++} ++ ++ ++/* Tests of vld2_dup and vld2q_dup. */ ++VARIANTS (TESTMETH, 2) ++/* Tests of vld3_dup and vld3q_dup. */ ++VARIANTS (TESTMETH, 3) ++/* Tests of vld4_dup and vld4q_dup. */ ++VARIANTS (TESTMETH, 4) ++ ++#define CHECK(BASE, Q, ELTS, SUFFIX, LANE, STRUCT) \ ++ if (test_vld##STRUCT##Q##_lane##SUFFIX ((const BASE##_t *)orig_data, \ ++ BASE##_data) != 0) \ ++ abort (); ++ ++int ++main (int argc, char **argv) ++{ ++ /* Original data for all vector formats. */ ++ uint64_t orig_data[8] = {0x1234567890abcdefULL, 0x13579bdf02468aceULL, ++ 0x012389ab4567cdefULL, 0xfeeddadacafe0431ULL, ++ 0x1032547698badcfeULL, 0xbadbadbadbad0badULL, ++ 0x0102030405060708ULL, 0x0f0e0d0c0b0a0908ULL}; ++ ++ /* Data with which vldN_lane will overwrite some of previous. */ ++ uint8_t uint8_data[4] = { 7, 11, 13, 17 }; ++ uint16_t uint16_data[4] = { 257, 263, 269, 271 }; ++ uint32_t uint32_data[4] = { 65537, 65539, 65543, 65551 }; ++ uint64_t uint64_data[4] = { 0xdeadbeefcafebabeULL, 0x0123456789abcdefULL, ++ 0xfedcba9876543210LL, 0xdeadbabecafebeefLL }; ++ int8_t int8_data[4] = { -1, 3, -5, 7 }; ++ int16_t int16_data[4] = { 257, -259, 261, -263 }; ++ int32_t int32_data[4] = { 123456789, -987654321, -135792468, 975318642 }; ++ int64_t *int64_data = (int64_t *)uint64_data; ++ poly8_t poly8_data[4] = { 0, 7, 13, 18, }; ++ poly16_t poly16_data[4] = { 11111, 2222, 333, 44 }; ++ float32_t float32_data[4] = { 3.14159, 2.718, 1.414, 100.0 }; ++ float64_t float64_data[4] = { 1.010010001, 12345.6789, -9876.54321, 1.618 }; ++ ++ VARIANTS (CHECK, 2); ++ VARIANTS (CHECK, 3); ++ VARIANTS (CHECK, 4); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/vldN_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vldN_1.c +@@ -0,0 +1,79 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3" } */ ++ ++#include ++ ++extern void abort (void); ++ ++#define TESTMETH(BASE, ELTS, STRUCT, SUFFIX) \ ++int __attribute__ ((noinline)) \ ++test_vld##STRUCT##SUFFIX () \ ++{ \ ++ BASE##_t data[ELTS * STRUCT]; \ ++ BASE##_t temp[ELTS]; \ ++ BASE##x##ELTS##x##STRUCT##_t vectors; \ ++ int i,j; \ ++ for (i = 0; i < STRUCT * ELTS; i++) \ ++ data [i] = (BASE##_t) 2*i + 1; \ ++ asm volatile ("" : : : "memory"); \ ++ vectors = vld##STRUCT##SUFFIX (data); \ ++ for (i = 0; i < STRUCT; i++) \ ++ { \ ++ vst1##SUFFIX (temp, vectors.val[i]); \ ++ asm volatile ("" : : : "memory"); \ ++ for (j = 0; j < ELTS; j++) \ ++ if (temp[j] != data[i + STRUCT*j]) \ ++ return 1; \ ++ } \ ++ return 0; \ ++} ++ ++#define VARIANTS(VARIANT, STRUCT) \ ++VARIANT (uint8, 8, STRUCT, _u8) \ ++VARIANT (uint16, 4, STRUCT, _u16) \ ++VARIANT (uint32, 2, STRUCT, _u32) \ ++VARIANT (uint64, 1, STRUCT, _u64) \ ++VARIANT (int8, 8, STRUCT, _s8) \ ++VARIANT (int16, 4, STRUCT, _s16) \ ++VARIANT (int32, 2, STRUCT, _s32) \ ++VARIANT (int64, 1, STRUCT, _s64) \ ++VARIANT (poly8, 8, STRUCT, _p8) \ ++VARIANT (poly16, 4, STRUCT, _p16) \ ++VARIANT (float32, 2, STRUCT, _f32) \ ++VARIANT (float64, 1, STRUCT, _f64) \ ++VARIANT (uint8, 16, STRUCT, q_u8) \ ++VARIANT (uint16, 8, STRUCT, q_u16) \ ++VARIANT (uint32, 4, STRUCT, q_u32) \ ++VARIANT (uint64, 2, STRUCT, q_u64) \ ++VARIANT (int8, 16, STRUCT, q_s8) \ ++VARIANT (int16, 8, STRUCT, q_s16) \ ++VARIANT (int32, 4, STRUCT, q_s32) \ ++VARIANT (int64, 2, STRUCT, q_s64) \ ++VARIANT (poly8, 16, STRUCT, q_p8) \ ++VARIANT (poly16, 8, STRUCT, q_p16) \ ++VARIANT (float32, 4, STRUCT, q_f32) \ ++VARIANT (float64, 2, STRUCT, q_f64) ++ ++/* Tests of vld2 and vld2q. */ ++VARIANTS (TESTMETH, 2) ++ ++/* Tests of vld3 and vld3q. */ ++VARIANTS (TESTMETH, 3) ++ ++/* Tests of vld4 and vld4q. */ ++VARIANTS (TESTMETH, 4) ++ ++#define CHECK(BASE, ELTS, STRUCT, SUFFIX) \ ++ if (test_vld##STRUCT##SUFFIX () != 0) \ ++ abort (); ++ ++int ++main (int argc, char **argv) ++{ ++ VARIANTS (CHECK, 2) ++ VARIANTS (CHECK, 3) ++ VARIANTS (CHECK, 4) ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/vqabs_s64_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vqabs_s64_1.c +@@ -0,0 +1,54 @@ ++/* Test vqabs_s64 intrinsics work correctly. */ ++/* { dg-do run } */ ++/* { dg-options "--save-temps" } */ ++ ++#include ++ ++extern void abort (void); ++ ++int __attribute__ ((noinline)) ++test_vqabs_s64 (int64x1_t passed, int64_t expected) ++{ ++ return vget_lane_s64 (vqabs_s64 (passed), 0) != expected; ++} ++ ++int __attribute__ ((noinline)) ++test_vqabsd_s64 (int64_t passed, int64_t expected) ++{ ++ return vqabsd_s64 (passed) != expected; ++} ++ ++/* { dg-final { scan-assembler-times "sqabs\\td\[0-9\]+, d\[0-9\]+" 2 } } */ ++ ++int ++main (int argc, char **argv) ++{ ++ /* Basic test. */ ++ if (test_vqabs_s64 (vcreate_s64 (-1), 1)) ++ abort (); ++ if (test_vqabsd_s64 (-1, 1)) ++ abort (); ++ ++ /* Getting absolute value of min int64_t. ++ Note, exact result cannot be represented in int64_t, ++ so max int64_t is expected. */ ++ if (test_vqabs_s64 (vcreate_s64 (0x8000000000000000), 0x7fffffffffffffff)) ++ abort (); ++ if (test_vqabsd_s64 (0x8000000000000000, 0x7fffffffffffffff)) ++ abort (); ++ ++ /* Another input that gets max int64_t. */ ++ if (test_vqabs_s64 (vcreate_s64 (0x8000000000000001), 0x7fffffffffffffff)) ++ abort (); ++ if (test_vqabsd_s64 (0x8000000000000001, 0x7fffffffffffffff)) ++ abort (); ++ ++ /* Checking that large positive numbers stay the same. */ ++ if (test_vqabs_s64 (vcreate_s64 (0x7fffffffffffffff), 0x7fffffffffffffff)) ++ abort (); ++ if (test_vqabsd_s64 (0x7fffffffffffffff, 0x7fffffffffffffff)) ++ abort (); ++ ++ return 0; ++} ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/eon_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/eon_1.c +@@ -0,0 +1,39 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++/* { dg-final { scan-assembler-not "\tf?mov\t" } } */ ++ ++typedef long long int64_t; ++typedef int64_t int64x1_t __attribute__ ((__vector_size__ (8))); ++ ++/* { dg-final { scan-assembler-times "\\teon\\tx\[0-9\]+, x\[0-9\]+, x\[0-9\]+" 1 } } */ ++ ++int64_t ++test_eon (int64_t a, int64_t b) ++{ ++ return a ^ ~b; ++} ++ ++/* { dg-final { scan-assembler-times "\\tmvn\\tx\[0-9\]+, x\[0-9\]+" 1 } } */ ++int64_t ++test_not (int64_t a) ++{ ++ return ~a; ++} ++ ++/* There is no eon for SIMD regs; we prefer eor+mvn to mov+mov+eon+mov. */ ++ ++/* { dg-final { scan-assembler-times "\\teor\\tv\[0-9\]+\.8b, v\[0-9\]+\.8b, v\[0-9\]+\.8b" 1 } } */ ++/* { dg-final { scan-assembler-times "\\tmvn\\tv\[0-9\]+\.8b, v\[0-9\]+\.8b" 2 } } */ ++int64x1_t ++test_vec_eon (int64x1_t a, int64x1_t b) ++{ ++ return a ^ ~b; ++} ++ ++int64x1_t ++test_vec_not (int64x1_t a) ++{ ++ return ~a; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/acle/acle.exp ++++ b/src/gcc/testsuite/gcc.target/aarch64/acle/acle.exp +@@ -0,0 +1,35 @@ ++# Copyright (C) 2014 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# GCC testsuite that uses the `dg.exp' driver. ++ ++# Exit immediately if this isn't an AArch64 target. ++if ![istarget aarch64*-*-*] then { ++ return ++} ++ ++# Load support procs. ++load_lib gcc-dg.exp ++ ++# Initialize `dg'. ++dg-init ++ ++# Main loop. ++dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cCS\]]] \ ++ "" "" ++ ++# All done. ++dg-finish +--- a/src/gcc/testsuite/gcc.target/aarch64/acle/crc32b.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/acle/crc32b.c +@@ -0,0 +1,15 @@ ++/* Test the crc32b ACLE intrinsic. */ ++ ++/* { dg-do assemble } */ ++/* { dg-options "-save-temps -O2 -march=armv8-a+crc" } */ ++ ++#include "arm_acle.h" ++ ++uint32_t ++test_crc32b (uint32_t arg0, uint8_t arg1) ++{ ++ return __crc32b (arg0, arg1); ++} ++ ++/* { dg-final { scan-assembler "crc32b\tw..?, w..?, w..?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/acle/crc32d.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/acle/crc32d.c +@@ -0,0 +1,15 @@ ++/* Test the crc32d ACLE intrinsic. */ ++ ++/* { dg-do assemble } */ ++/* { dg-options "-save-temps -O2 -march=armv8-a+crc" } */ ++ ++#include "arm_acle.h" ++ ++uint32_t ++test_crc32d (uint32_t arg0, uint64_t arg1) ++{ ++ return __crc32d (arg0, arg1); ++} ++ ++/* { dg-final { scan-assembler "crc32x\tw..?, w..?, x..?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/acle/crc32cb.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/acle/crc32cb.c +@@ -0,0 +1,15 @@ ++/* Test the crc32cb ACLE intrinsic. */ ++ ++/* { dg-do assemble } */ ++/* { dg-options "-save-temps -O2 -march=armv8-a+crc" } */ ++ ++#include "arm_acle.h" ++ ++uint32_t ++test_crc32cb (uint32_t arg0, uint8_t arg1) ++{ ++ return __crc32cb (arg0, arg1); ++} ++ ++/* { dg-final { scan-assembler "crc32cb\tw..?, w..?, w..?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/acle/crc32cd.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/acle/crc32cd.c +@@ -0,0 +1,15 @@ ++/* Test the crc32cd ACLE intrinsic. */ ++ ++/* { dg-do assemble } */ ++/* { dg-options "-save-temps -O2 -march=armv8-a+crc" } */ ++ ++#include "arm_acle.h" ++ ++uint32_t ++test_crc32cd (uint32_t arg0, uint64_t arg1) ++{ ++ return __crc32cd (arg0, arg1); ++} ++ ++/* { dg-final { scan-assembler "crc32cx\tw..?, w..?, x..?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/acle/crc32w.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/acle/crc32w.c +@@ -0,0 +1,15 @@ ++/* Test the crc32w ACLE intrinsic. */ ++ ++/* { dg-do assemble } */ ++/* { dg-options "-save-temps -O2 -march=armv8-a+crc" } */ ++ ++#include "arm_acle.h" ++ ++uint32_t ++test_crc32w (uint32_t arg0, uint32_t arg1) ++{ ++ return __crc32w (arg0, arg1); ++} ++ ++/* { dg-final { scan-assembler "crc32w\tw..?, w..?, w..?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/acle/crc32h.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/acle/crc32h.c +@@ -0,0 +1,15 @@ ++/* Test the crc32h ACLE intrinsic. */ ++ ++/* { dg-do assemble } */ ++/* { dg-options "-save-temps -O2 -march=armv8-a+crc" } */ ++ ++#include "arm_acle.h" ++ ++uint32_t ++test_crc32h (uint32_t arg0, uint16_t arg1) ++{ ++ return __crc32h (arg0, arg1); ++} ++ ++/* { dg-final { scan-assembler "crc32h\tw..?, w..?, w..?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/acle/crc32cw.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/acle/crc32cw.c +@@ -0,0 +1,15 @@ ++/* Test the crc32cw ACLE intrinsic. */ ++ ++/* { dg-do assemble } */ ++/* { dg-options "-save-temps -O2 -march=armv8-a+crc" } */ ++ ++#include "arm_acle.h" ++ ++uint32_t ++test_crc32cw (uint32_t arg0, uint32_t arg1) ++{ ++ return __crc32cw (arg0, arg1); ++} ++ ++/* { dg-final { scan-assembler "crc32cw\tw..?, w..?, w..?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/acle/crc32ch.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/acle/crc32ch.c +@@ -0,0 +1,15 @@ ++/* Test the crc32ch ACLE intrinsic. */ ++ ++/* { dg-do assemble } */ ++/* { dg-options "-save-temps -O2 -march=armv8-a+crc" } */ ++ ++#include "arm_acle.h" ++ ++uint32_t ++test_crc32ch (uint32_t arg0, uint16_t arg1) ++{ ++ return __crc32ch (arg0, arg1); ++} ++ ++/* { dg-final { scan-assembler "crc32ch\tw..?, w..?, w..?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_13.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_13.c +@@ -0,0 +1,18 @@ ++/* Verify: ++ * without outgoing. ++ * total frame size > 512. ++ * number of callee-save reg >= 2. ++ * split the stack adjustment into two substractions, ++ the second could be optimized into "stp !". */ ++ ++/* { dg-do run } */ ++/* { dg-options "-O2 --save-temps" } */ ++ ++#include "test_frame_common.h" ++ ++t_frame_pattern (test13, 700, ) ++t_frame_run (test13) ++ ++/* { dg-final { scan-assembler-times "sub\tsp, sp, #\[0-9\]+" 1 } } */ ++/* { dg-final { scan-assembler-times "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" 2 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/lr_free_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/lr_free_1.c +@@ -0,0 +1,38 @@ ++/* { dg-do run } */ ++/* { dg-options "-fno-inline -O2 -fomit-frame-pointer -ffixed-x2 -ffixed-x3 -ffixed-x4 -ffixed-x5 -ffixed-x6 -ffixed-x7 -ffixed-x8 -ffixed-x9 -ffixed-x10 -ffixed-x11 -ffixed-x12 -ffixed-x13 -ffixed-x14 -ffixed-x15 -ffixed-x16 -ffixed-x17 -ffixed-x18 -ffixed-x19 -ffixed-x20 -ffixed-x21 -ffixed-x22 -ffixed-x23 -ffixed-x24 -ffixed-x25 -ffixed-x26 -ffixed-x27 -ffixed-28 -ffixed-29 --save-temps -mgeneral-regs-only -fno-ipa-cp" } */ ++ ++extern void abort (); ++ ++int ++dec (int a, int b) ++{ ++ return a + b; ++} ++ ++int ++cal (int a, int b) ++{ ++ int sum1 = a * b; ++ int sum2 = a / b; ++ int sum = dec (sum1, sum2); ++ return a + b + sum + sum1 + sum2; ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int ret = cal (2, 1); ++ ++ if (ret != 11) ++ abort (); ++ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times "str\tx30, \\\[sp, -\[0-9\]+\\\]!" 2 } } */ ++/* { dg-final { scan-assembler "str\tw30, \\\[sp, \[0-9\]+\\\]" } } */ ++ ++/* { dg-final { scan-assembler "ldr\tw30, \\\[sp, \[0-9\]+\\\]" } } */ ++/* { dg-final { scan-assembler-times "ldr\tx30, \\\[sp\\\], \[0-9\]+" 2 } } */ ++ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/fuse_adrp_add_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/fuse_adrp_add_1.c +@@ -0,0 +1,45 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -mcpu=cortex-a57" } */ ++ ++enum reg_class { NO_REGS, AP_REG, XRF_REGS, GENERAL_REGS, AGRF_REGS, ++ XGRF_REGS, ALL_REGS, LIM_REG_CLASSES }; ++ ++enum rtx_code { REG, LAST_AND_UNUSED_RTX_CODE }; ++ ++typedef union rtunion_def ++{ ++ int rtint; ++} rtunion; ++ ++typedef struct rtx_def ++{ ++ unsigned int volatil : 1; ++ rtunion fld[1]; ++} *rtx; ++ ++extern char fixed_regs[64]; ++extern char global_regs[64]; ++ ++int ++rtx_cost (rtx x, int outer_code) ++{ ++ register enum rtx_code code; ++ switch (code) ++ { ++ case REG: ++ return ! ((((x)->volatil) && ((x)->fld[0].rtint) < 64) ++ || ((((x)->fld[0].rtint)) == 30 || (((x)->fld[0].rtint)) == 30 ++ || (((x)->fld[0].rtint)) == 31 || (((x)->fld[0].rtint)) == 0 ++ || ((((x)->fld[0].rtint)) >= (64) ++ && (((x)->fld[0].rtint)) <= (((64)) + 3)) ++ || ((((x)->fld[0].rtint)) < 64 && ((((x)->fld[0].rtint)) == 30 ++ || (((x)->fld[0].rtint)) == 30 || fixed_regs[((x)->fld[0].rtint)] ++ || global_regs[((x)->fld[0].rtint)]) ++ && ((((x)->fld[0].rtint)) ++ ? ((((x)->fld[0].rtint) < 32) ++ ? GENERAL_REGS : XRF_REGS) ++ : AP_REG) != NO_REGS))); ++ } ++} ++ ++/* { dg-final { scan-assembler "adrp\tx.*, fixed_regs\n\tadd\tx.*, x.*fixed_regs" } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_2.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_2.c +@@ -0,0 +1,20 @@ ++/* Verify: ++ * -fomit-frame-pointer. ++ * without outgoing. ++ * total frame size <= 256. ++ * number of callee-save regs >= 2. ++ * optimized code should use "stp !" for stack adjustment. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fomit-frame-pointer --save-temps" } */ ++ ++#include "test_frame_common.h" ++ ++t_frame_pattern (test2, 200, "x19") ++t_frame_run (test2) ++ ++ ++/* { dg-final { scan-assembler-times "stp\tx19, x30, \\\[sp, -\[0-9\]+\\\]!" 1 } } */ ++/* { dg-final { scan-assembler-times "ldp\tx19, x30, \\\[sp\\\], \[0-9\]+" 2 } } */ ++ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/legitimize_stack_var_before_reload_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/legitimize_stack_var_before_reload_1.c +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fdump-rtl-expand" } */ ++ ++extern void initialize_array (unsigned char *, int); ++ ++int ++test15 (void) ++{ ++ unsigned char a[480]; ++ ++ initialize_array (a, 480); ++ ++ if (a[0] == 0x10) ++ return 1; ++ ++ return 0; ++} ++ ++/* { dg-final { scan-rtl-dump "\\(mem\[^\\n\]*\\(plus\[^\\n\]*virtual-stack-vars" "expand" } } */ ++ ++/* { dg-final { cleanup-rtl-dump "expand" } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/vreinterpret_f64_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vreinterpret_f64_1.c +@@ -0,0 +1,596 @@ ++/* Test vreinterpret_f64_* and vreinterpret_*_f64 intrinsics work correctly. */ ++/* { dg-do run } */ ++/* { dg-options "-O3" } */ ++ ++#include ++ ++extern void abort (void); ++ ++#define ABS(a) __builtin_fabs (a) ++#define ISNAN(a) __builtin_isnan (a) ++ ++#define DOUBLE_EQUALS(a, b, epsilon) \ ++( \ ++ ((a) == (b)) \ ++ || (ISNAN (a) && ISNAN (b)) \ ++ || (ABS (a - b) < epsilon) \ ++) ++ ++/* Pi accurate up to 16 digits. ++ Further digits are a closest binary approximation. */ ++#define PI_F64 3.14159265358979311599796346854 ++/* Hex representation in Double (IEEE754 Double precision 64-bit) is: ++ 0x400921FB54442D18. */ ++ ++/* E accurate up to 16 digits. ++ Further digits are a closest binary approximation. */ ++#define E_F64 2.71828182845904509079559829843 ++/* Hex representation in Double (IEEE754 Double precision 64-bit) is: ++ 0x4005BF0A8B145769. */ ++ ++float32x2_t __attribute__ ((noinline)) ++wrap_vreinterpret_f32_f64 (float64x1_t __a) ++{ ++ return vreinterpret_f32_f64 (__a); ++} ++ ++int __attribute__ ((noinline)) ++test_vreinterpret_f32_f64 () ++{ ++ float64x1_t a; ++ float32x2_t b; ++ float64_t c[1] = { PI_F64 }; ++ /* Values { 0x54442D18, 0x400921FB } reinterpreted as f32. */ ++ float32_t d[2] = { 3.3702805504E12, 2.1426990032196044921875E0 }; ++ float32_t e[2]; ++ int i; ++ ++ a = vld1_f64 (c); ++ b = wrap_vreinterpret_f32_f64 (a); ++ vst1_f32 (e, b); ++ for (i = 0; i < 2; i++) ++ if (!DOUBLE_EQUALS (d[i], e[i], __FLT_EPSILON__)) ++ return 1; ++ return 0; ++}; ++ ++int8x8_t __attribute__ ((noinline)) ++wrap_vreinterpret_s8_f64 (float64x1_t __a) ++{ ++ return vreinterpret_s8_f64 (__a); ++} ++ ++int __attribute__ ((noinline)) ++test_vreinterpret_s8_f64 () ++{ ++ float64x1_t a; ++ int8x8_t b; ++ float64_t c[1] = { PI_F64 }; ++ int8_t d[8] = { 0x18, 0x2D, 0x44, 0x54, 0xFB, 0x21, 0x09, 0x40 }; ++ int8_t e[8]; ++ int i; ++ ++ a = vld1_f64 (c); ++ b = wrap_vreinterpret_s8_f64 (a); ++ vst1_s8 (e, b); ++ for (i = 0; i < 8; i++) ++ if (d[i] != e[i]) ++ return 1; ++ return 0; ++}; ++ ++int16x4_t __attribute__ ((noinline)) ++wrap_vreinterpret_s16_f64 (float64x1_t __a) ++{ ++ return vreinterpret_s16_f64 (__a); ++} ++ ++int __attribute__ ((noinline)) ++test_vreinterpret_s16_f64 () ++{ ++ float64x1_t a; ++ int16x4_t b; ++ float64_t c[1] = { PI_F64 }; ++ int16_t d[4] = { 0x2D18, 0x5444, 0x21FB, 0x4009 }; ++ int16_t e[4]; ++ int i; ++ ++ a = vld1_f64 (c); ++ b = wrap_vreinterpret_s16_f64 (a); ++ vst1_s16 (e, b); ++ for (i = 0; i < 4; i++) ++ if (d[i] != e[i]) ++ return 1; ++ return 0; ++}; ++ ++int32x2_t __attribute__ ((noinline)) ++wrap_vreinterpret_s32_f64 (float64x1_t __a) ++{ ++ return vreinterpret_s32_f64 (__a); ++} ++ ++int __attribute__ ((noinline)) ++test_vreinterpret_s32_f64 () ++{ ++ float64x1_t a; ++ int32x2_t b; ++ float64_t c[1] = { PI_F64 }; ++ int32_t d[2] = { 0x54442D18, 0x400921FB }; ++ int32_t e[2]; ++ int i; ++ ++ a = vld1_f64 (c); ++ b = wrap_vreinterpret_s32_f64 (a); ++ vst1_s32 (e, b); ++ for (i = 0; i < 2; i++) ++ if (d[i] != e[i]) ++ return 1; ++ return 0; ++}; ++ ++int64x1_t __attribute__ ((noinline)) ++wrap_vreinterpret_s64_f64 (float64x1_t __a) ++{ ++ return vreinterpret_s64_f64 (__a); ++} ++ ++int __attribute__ ((noinline)) ++test_vreinterpret_s64_f64 () ++{ ++ float64x1_t a; ++ int64x1_t b; ++ float64_t c[1] = { PI_F64 }; ++ int64_t d[1] = { 0x400921FB54442D18 }; ++ int64_t e[1]; ++ int i; ++ ++ a = vld1_f64 (c); ++ b = wrap_vreinterpret_s64_f64 (a); ++ vst1_s64 (e, b); ++ if (d[0] != e[0]) ++ return 1; ++ return 0; ++}; ++ ++float32x4_t __attribute__ ((noinline)) ++wrap_vreinterpretq_f32_f64 (float64x2_t __a) ++{ ++ return vreinterpretq_f32_f64 (__a); ++} ++ ++int __attribute__ ((noinline)) ++test_vreinterpretq_f32_f64 () ++{ ++ float64x2_t a; ++ float32x4_t b; ++ float64_t c[2] = { PI_F64, E_F64 }; ++ ++ /* Values corresponding to f32 reinterpret of ++ { 0x54442D18, 0x400921FB, 0x8B145769, 0x4005BF0A }. */ ++ float32_t d[4] = { 3.3702805504E12, ++ 2.1426990032196044921875E0, ++ -2.8569523269651966444143014594E-32, ++ 2.089785099029541015625E0 }; ++ float32_t e[4]; ++ int i; ++ ++ a = vld1q_f64 (c); ++ b = wrap_vreinterpretq_f32_f64 (a); ++ vst1q_f32 (e, b); ++ for (i = 0; i < 4; i++) ++ { ++ if (!DOUBLE_EQUALS (d[i], e[i], __FLT_EPSILON__)) ++ return 1; ++ } ++ return 0; ++}; ++ ++int8x16_t __attribute__ ((noinline)) ++wrap_vreinterpretq_s8_f64 (float64x2_t __a) ++{ ++ return vreinterpretq_s8_f64 (__a); ++} ++ ++int __attribute__ ((noinline)) ++test_vreinterpretq_s8_f64 () ++{ ++ float64x2_t a; ++ int8x16_t b; ++ float64_t c[2] = { PI_F64, E_F64 }; ++ int8_t d[16] = { 0x18, 0x2D, 0x44, 0x54, 0xFB, 0x21, 0x09, 0x40, ++ 0x69, 0x57, 0x14, 0x8B, 0x0A, 0xBF, 0x05, 0x40 }; ++ int8_t e[16]; ++ int i; ++ ++ a = vld1q_f64 (c); ++ b = wrap_vreinterpretq_s8_f64 (a); ++ vst1q_s8 (e, b); ++ for (i = 0; i < 16; i++) ++ if (d[i] != e[i]) ++ return 1; ++ return 0; ++}; ++ ++int16x8_t __attribute__ ((noinline)) ++wrap_vreinterpretq_s16_f64 (float64x2_t __a) ++{ ++ return vreinterpretq_s16_f64 (__a); ++} ++ ++int __attribute__ ((noinline)) ++test_vreinterpretq_s16_f64 () ++{ ++ float64x2_t a; ++ int16x8_t b; ++ float64_t c[2] = { PI_F64, E_F64 }; ++ int16_t d[8] = { 0x2D18, 0x5444, 0x21FB, 0x4009, ++ 0x5769, 0x8B14, 0xBF0A, 0x4005 }; ++ int16_t e[8]; ++ int i; ++ ++ a = vld1q_f64 (c); ++ b = wrap_vreinterpretq_s16_f64 (a); ++ vst1q_s16 (e, b); ++ for (i = 0; i < 8; i++) ++ if (d[i] != e[i]) ++ return 1; ++ return 0; ++}; ++ ++int32x4_t __attribute__ ((noinline)) ++wrap_vreinterpretq_s32_f64 (float64x2_t __a) ++{ ++ return vreinterpretq_s32_f64 (__a); ++} ++ ++int __attribute__ ((noinline)) ++test_vreinterpretq_s32_f64 () ++{ ++ float64x2_t a; ++ int32x4_t b; ++ float64_t c[2] = { PI_F64, E_F64 }; ++ int32_t d[4] = { 0x54442D18, 0x400921FB, 0x8B145769, 0x4005BF0A }; ++ int32_t e[4]; ++ int i; ++ ++ a = vld1q_f64 (c); ++ b = wrap_vreinterpretq_s32_f64 (a); ++ vst1q_s32 (e, b); ++ for (i = 0; i < 4; i++) ++ if (d[i] != e[i]) ++ return 1; ++ return 0; ++}; ++ ++int64x2_t __attribute__ ((noinline)) ++wrap_vreinterpretq_s64_f64 (float64x2_t __a) ++{ ++ return vreinterpretq_s64_f64 (__a); ++} ++ ++int __attribute__ ((noinline)) ++test_vreinterpretq_s64_f64 () ++{ ++ float64x2_t a; ++ int64x2_t b; ++ float64_t c[2] = { PI_F64, E_F64 }; ++ int64_t d[2] = { 0x400921FB54442D18, 0x4005BF0A8B145769 }; ++ int64_t e[2]; ++ int i; ++ ++ a = vld1q_f64 (c); ++ b = wrap_vreinterpretq_s64_f64 (a); ++ vst1q_s64 (e, b); ++ for (i = 0; i < 2; i++) ++ if (d[i] != e[i]) ++ return 1; ++ return 0; ++}; ++ ++float64x1_t __attribute__ ((noinline)) ++wrap_vreinterpret_f64_f32 (float32x2_t __a) ++{ ++ return vreinterpret_f64_f32 (__a); ++} ++ ++int __attribute__ ((noinline)) ++test_vreinterpret_f64_f32 () ++{ ++ float32x2_t a; ++ float64x1_t b; ++ /* Values { 0x54442D18, 0x400921FB } reinterpreted as f32. */ ++ float32_t c[2] = { 3.3702805504E12, 2.1426990032196044921875E0 }; ++ float64_t d[1] = { PI_F64 }; ++ float64_t e[1]; ++ int i; ++ ++ a = vld1_f32 (c); ++ b = wrap_vreinterpret_f64_f32 (a); ++ vst1_f64 (e, b); ++ if (!DOUBLE_EQUALS (d[0], e[0], __DBL_EPSILON__)) ++ return 1; ++ return 0; ++}; ++ ++float64x1_t __attribute__ ((noinline)) ++wrap_vreinterpret_f64_s8 (int8x8_t __a) ++{ ++ return vreinterpret_f64_s8 (__a); ++} ++ ++int __attribute__ ((noinline)) ++test_vreinterpret_f64_s8 () ++{ ++ int8x8_t a; ++ float64x1_t b; ++ int8_t c[8] = { 0x18, 0x2D, 0x44, 0x54, 0xFB, 0x21, 0x09, 0x40 }; ++ float64_t d[1] = { PI_F64 }; ++ float64_t e[1]; ++ int i; ++ ++ a = vld1_s8 (c); ++ b = wrap_vreinterpret_f64_s8 (a); ++ vst1_f64 (e, b); ++ if (!DOUBLE_EQUALS (d[0], e[0], __DBL_EPSILON__)) ++ return 1; ++ return 0; ++}; ++ ++float64x1_t __attribute__ ((noinline)) ++wrap_vreinterpret_f64_s16 (int16x4_t __a) ++{ ++ return vreinterpret_f64_s16 (__a); ++} ++ ++int __attribute__ ((noinline)) ++test_vreinterpret_f64_s16 () ++{ ++ int16x4_t a; ++ float64x1_t b; ++ int16_t c[4] = { 0x2D18, 0x5444, 0x21FB, 0x4009 }; ++ float64_t d[1] = { PI_F64 }; ++ float64_t e[1]; ++ int i; ++ ++ a = vld1_s16 (c); ++ b = wrap_vreinterpret_f64_s16 (a); ++ vst1_f64 (e, b); ++ if (!DOUBLE_EQUALS (d[0], e[0], __DBL_EPSILON__)) ++ return 1; ++ return 0; ++}; ++ ++float64x1_t __attribute__ ((noinline)) ++wrap_vreinterpret_f64_s32 (int32x2_t __a) ++{ ++ return vreinterpret_f64_s32 (__a); ++} ++ ++int __attribute__ ((noinline)) ++test_vreinterpret_f64_s32 () ++{ ++ int32x2_t a; ++ float64x1_t b; ++ int32_t c[2] = { 0x54442D18, 0x400921FB }; ++ float64_t d[1] = { PI_F64 }; ++ float64_t e[1]; ++ int i; ++ ++ a = vld1_s32 (c); ++ b = wrap_vreinterpret_f64_s32 (a); ++ vst1_f64 (e, b); ++ if (!DOUBLE_EQUALS (d[0], e[0], __DBL_EPSILON__)) ++ return 1; ++ return 0; ++}; ++ ++float64x1_t __attribute__ ((noinline)) ++wrap_vreinterpret_f64_s64 (int64x1_t __a) ++{ ++ return vreinterpret_f64_s64 (__a); ++} ++ ++int __attribute__ ((noinline)) ++test_vreinterpret_f64_s64 () ++{ ++ int64x1_t a; ++ float64x1_t b; ++ int64_t c[1] = { 0x400921FB54442D18 }; ++ float64_t d[1] = { PI_F64 }; ++ float64_t e[1]; ++ ++ a = vld1_s64 (c); ++ b = wrap_vreinterpret_f64_s64 (a); ++ vst1_f64 (e, b); ++ if (!DOUBLE_EQUALS (d[0], e[0], __DBL_EPSILON__)) ++ return 1; ++ return 0; ++}; ++ ++float64x2_t __attribute__ ((noinline)) ++wrap_vreinterpretq_f64_f32 (float32x4_t __a) ++{ ++ return vreinterpretq_f64_f32 (__a); ++} ++ ++int __attribute__ ((noinline)) ++test_vreinterpretq_f64_f32 () ++{ ++ float32x4_t a; ++ float64x2_t b; ++ /* Values corresponding to f32 reinterpret of ++ { 0x54442D18, 0x400921FB, 0x8B145769, 0x4005BF0A }. */ ++ float32_t c[4] = { 3.3702805504E12, ++ 2.1426990032196044921875E0, ++ -2.8569523269651966444143014594E-32, ++ 2.089785099029541015625E0 }; ++ ++ float64_t d[2] = { PI_F64, E_F64 }; ++ float64_t e[2]; ++ int i; ++ ++ a = vld1q_f32 (c); ++ b = wrap_vreinterpretq_f64_f32 (a); ++ vst1q_f64 (e, b); ++ for (i = 0; i < 2; i++) ++ if (!DOUBLE_EQUALS (d[i], e[i], __DBL_EPSILON__)) ++ return 1; ++ return 0; ++}; ++ ++float64x2_t __attribute__ ((noinline)) ++wrap_vreinterpretq_f64_s8 (int8x16_t __a) ++{ ++ return vreinterpretq_f64_s8 (__a); ++} ++ ++int __attribute__ ((noinline)) ++test_vreinterpretq_f64_s8 () ++{ ++ int8x16_t a; ++ float64x2_t b; ++ int8_t c[16] = { 0x18, 0x2D, 0x44, 0x54, 0xFB, 0x21, 0x09, 0x40, ++ 0x69, 0x57, 0x14, 0x8B, 0x0A, 0xBF, 0x05, 0x40 }; ++ float64_t d[2] = { PI_F64, E_F64 }; ++ float64_t e[2]; ++ int i; ++ ++ a = vld1q_s8 (c); ++ b = wrap_vreinterpretq_f64_s8 (a); ++ vst1q_f64 (e, b); ++ for (i = 0; i < 2; i++) ++ if (!DOUBLE_EQUALS (d[i], e[i], __DBL_EPSILON__)) ++ return 1; ++ return 0; ++}; ++ ++float64x2_t __attribute__ ((noinline)) ++wrap_vreinterpretq_f64_s16 (int16x8_t __a) ++{ ++ return vreinterpretq_f64_s16 (__a); ++} ++ ++int __attribute__ ((noinline)) ++test_vreinterpretq_f64_s16 () ++{ ++ int16x8_t a; ++ float64x2_t b; ++ int16_t c[8] = { 0x2D18, 0x5444, 0x21FB, 0x4009, ++ 0x5769, 0x8B14, 0xBF0A, 0x4005 }; ++ float64_t d[2] = { PI_F64, E_F64 }; ++ float64_t e[2]; ++ int i; ++ ++ a = vld1q_s16 (c); ++ b = wrap_vreinterpretq_f64_s16 (a); ++ vst1q_f64 (e, b); ++ for (i = 0; i < 2; i++) ++ if (!DOUBLE_EQUALS (d[i], e[i], __DBL_EPSILON__)) ++ return 1; ++ return 0; ++}; ++ ++float64x2_t __attribute__ ((noinline)) ++wrap_vreinterpretq_f64_s32 (int32x4_t __a) ++{ ++ return vreinterpretq_f64_s32 (__a); ++} ++ ++int __attribute__ ((noinline)) ++test_vreinterpretq_f64_s32 () ++{ ++ int32x4_t a; ++ float64x2_t b; ++ int32_t c[4] = { 0x54442D18, 0x400921FB, 0x8B145769, 0x4005BF0A }; ++ float64_t d[2] = { PI_F64, E_F64 }; ++ float64_t e[2]; ++ int i; ++ ++ a = vld1q_s32 (c); ++ b = wrap_vreinterpretq_f64_s32 (a); ++ vst1q_f64 (e, b); ++ for (i = 0; i < 2; i++) ++ if (!DOUBLE_EQUALS (d[i], e[i], __DBL_EPSILON__)) ++ return 1; ++ return 0; ++}; ++ ++float64x2_t __attribute__ ((noinline)) ++wrap_vreinterpretq_f64_s64 (int64x2_t __a) ++{ ++ return vreinterpretq_f64_s64 (__a); ++} ++ ++int __attribute__ ((noinline)) ++test_vreinterpretq_f64_s64 () ++{ ++ int64x2_t a; ++ float64x2_t b; ++ int64_t c[2] = { 0x400921FB54442D18, 0x4005BF0A8B145769 }; ++ float64_t d[2] = { PI_F64, E_F64 }; ++ float64_t e[2]; ++ int i; ++ ++ a = vld1q_s64 (c); ++ b = wrap_vreinterpretq_f64_s64 (a); ++ vst1q_f64 (e, b); ++ for (i = 0; i < 2; i++) ++ if (!DOUBLE_EQUALS (d[i], e[i], __DBL_EPSILON__)) ++ return 1; ++ return 0; ++}; ++ ++int ++main (int argc, char **argv) ++{ ++ if (test_vreinterpret_f32_f64 ()) ++ abort (); ++ ++ if (test_vreinterpret_s8_f64 ()) ++ abort (); ++ if (test_vreinterpret_s16_f64 ()) ++ abort (); ++ if (test_vreinterpret_s32_f64 ()) ++ abort (); ++ if (test_vreinterpret_s64_f64 ()) ++ abort (); ++ ++ if (test_vreinterpretq_f32_f64 ()) ++ abort (); ++ ++ if (test_vreinterpretq_s8_f64 ()) ++ abort (); ++ if (test_vreinterpretq_s16_f64 ()) ++ abort (); ++ if (test_vreinterpretq_s32_f64 ()) ++ abort (); ++ if (test_vreinterpretq_s64_f64 ()) ++ abort (); ++ ++ if (test_vreinterpret_f64_f32 ()) ++ abort (); ++ ++ if (test_vreinterpret_f64_s8 ()) ++ abort (); ++ if (test_vreinterpret_f64_s16 ()) ++ abort (); ++ if (test_vreinterpret_f64_s32 ()) ++ abort (); ++ if (test_vreinterpret_f64_s64 ()) ++ abort (); ++ ++ if (test_vreinterpretq_f64_f32 ()) ++ abort (); ++ ++ if (test_vreinterpretq_f64_s8 ()) ++ abort (); ++ if (test_vreinterpretq_f64_s16 ()) ++ abort (); ++ if (test_vreinterpretq_f64_s32 ()) ++ abort (); ++ if (test_vreinterpretq_f64_s64 ()) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_1.c +@@ -21,6 +21,6 @@ + leaf (); + } + +-/* { dg-final { scan-assembler-times "str\tx30, \\\[sp\\\]" 2 } } */ ++/* { dg-final { scan-assembler-times "str\tx30, \\\[sp, -\[0-9\]+\\\]!" 2 } } */ + + /* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/vect.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/vect.x +@@ -2,6 +2,7 @@ + typedef unsigned int *__restrict__ pRUINT; + typedef long long *__restrict__ pRINT64; + typedef unsigned long long *__restrict__ pRUINT64; ++extern int abs (int j); + + void test_orn (pRUINT a, pRUINT b, pRUINT c) + { +--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_14.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_14.c +@@ -0,0 +1,12 @@ ++/* Verify: ++ * with outgoing. ++ * total frame size > 512. ++ * number of callee-save reg >= 2. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-O2" } */ ++ ++#include "test_frame_common.h" ++ ++t_frame_pattern_outgoing (test14, 700, , 8, a[8]) ++t_frame_run (test14) +--- a/src/gcc/testsuite/gcc.target/aarch64/lr_free_2.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/lr_free_2.c +@@ -0,0 +1,29 @@ ++/* { dg-do run } */ ++/* { dg-options "-fno-inline -O2 -ffixed-x2 -ffixed-x3 -ffixed-x4 -ffixed-x5 -ffixed-x6 -ffixed-x7 -ffixed-x8 -ffixed-x9 -ffixed-x10 -ffixed-x11 -ffixed-x12 -ffixed-x13 -ffixed-x14 -ffixed-x15 -ffixed-x16 -ffixed-x17 -ffixed-x18 -ffixed-x19 -ffixed-x20 -ffixed-x21 -ffixed-x22 -ffixed-x23 -ffixed-x24 -ffixed-x25 -ffixed-x26 -ffixed-x27 -ffixed-x28 --save-temps -mgeneral-regs-only -fno-ipa-cp -fdump-rtl-ira" } */ ++ ++extern void abort (); ++ ++int ++cal (int a, int b) ++{ ++ /* { dg-final { scan-assembler-times "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" 2 } } */ ++ int sum = a + b; ++ int sum1 = a * b; ++ /* { dg-final { scan-assembler-times "ldp\tx29, x30, \\\[sp\\\], \[0-9\]+" 2 } } */ ++ /* { dg-final { scan-rtl-dump "assign reg 30" "ira" } } */ ++ return (a + b + sum + sum1); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int ret = cal (1, 2); ++ ++ if (ret != 8) ++ abort (); ++ ++ return 0; ++} ++ ++/* { dg-final { cleanup-saved-temps } } */ ++/* { dg-final { cleanup-rtl-dump "ira" } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_3.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_3.c +@@ -0,0 +1,14 @@ ++/* Verify: ++ * -fomit-frame-pointer. ++ * without outgoing. ++ * total frame size <= 512 but > 256. ++ * number of callee-save reg == 1. ++ * we can't use "str !" to optimize stack adjustment. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fomit-frame-pointer" } */ ++ ++#include "test_frame_common.h" ++ ++t_frame_pattern (test3, 400, ) ++t_frame_run (test3) +--- a/src/gcc/testsuite/gcc.target/aarch64/pic-constantpool1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/pic-constantpool1.c +@@ -2,10 +2,13 @@ + /* { dg-do compile } */ + + extern int __finite (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); ++extern int __finitef (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); ++extern int __signbit (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); ++extern int __signbitf (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); + int + __ecvt_r (value, ndigit, decpt, sign, buf, len) + double value; +- int ndigit, *decpt, *sign; ++ int ndigit, *decpt, *sign, len; + char *buf; + { + if ((sizeof (value) == sizeof (float) ? __finitef (value) : __finite (value)) && value != 0.0) +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vpaddd_s64.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vpaddd_s64.c +@@ -0,0 +1,27 @@ ++/* Test the vpaddd_s64 AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3" } */ ++ ++#include "arm_neon.h" ++ ++#define SIZE 6 ++ ++extern void abort (void); ++ ++int64_t in[SIZE] = { -4l, 4l, -2l, 2l, -1l, 1l }; ++ ++int ++main (void) ++{ ++ int i; ++ ++ for (i = 0; i < SIZE / 2; ++i) ++ if (vpaddd_s64 (vld1q_s64 (in + 2 * i)) != 0) ++ abort (); ++ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler "addp\[ \t\]+\[dD\]\[0-9\]+, v\[0-9\].2d+\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_s16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_s16.x +@@ -0,0 +1,114 @@ ++extern void abort (void); ++ ++int16x8_t ++test_vextq_s16_1 (int16x8_t a, int16x8_t b) ++{ ++ return vextq_s16 (a, b, 1); ++} ++ ++int16x8_t ++test_vextq_s16_2 (int16x8_t a, int16x8_t b) ++{ ++ return vextq_s16 (a, b, 2); ++} ++ ++int16x8_t ++test_vextq_s16_3 (int16x8_t a, int16x8_t b) ++{ ++ return vextq_s16 (a, b, 3); ++} ++ ++int16x8_t ++test_vextq_s16_4 (int16x8_t a, int16x8_t b) ++{ ++ return vextq_s16 (a, b, 4); ++} ++ ++int16x8_t ++test_vextq_s16_5 (int16x8_t a, int16x8_t b) ++{ ++ return vextq_s16 (a, b, 5); ++} ++ ++int16x8_t ++test_vextq_s16_6 (int16x8_t a, int16x8_t b) ++{ ++ return vextq_s16 (a, b, 6); ++} ++ ++int16x8_t ++test_vextq_s16_7 (int16x8_t a, int16x8_t b) ++{ ++ return vextq_s16 (a, b, 7); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i, off; ++ int16_t arr1[] = {0, 1, 2, 3, 4, 5, 6, 7}; ++ int16x8_t in1 = vld1q_s16 (arr1); ++ int16_t arr2[] = {8, 9, 10, 11, 12, 13, 14, 15}; ++ int16x8_t in2 = vld1q_s16 (arr2); ++ int16_t exp[8]; ++ int16x8_t expected; ++ int16x8_t actual = test_vextq_s16_1 (in1, in2); ++ ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 1; ++ expected = vld1q_s16 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_s16_2 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 2; ++ expected = vld1q_s16 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_s16_3 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 3; ++ expected = vld1q_s16 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_s16_4 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 4; ++ expected = vld1q_s16 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_s16_5 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 5; ++ expected = vld1q_s16 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_s16_6 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 6; ++ expected = vld1q_s16 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_s16_7 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 7; ++ expected = vld1q_s16 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vpaddd_u64.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vpaddd_u64.c +@@ -0,0 +1,27 @@ ++/* Test the vpaddd_u64 AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3" } */ ++ ++#include "arm_neon.h" ++ ++#define SIZE 6 ++ ++extern void abort (void); ++ ++uint64_t in[SIZE] = { 4ul, 4ul, 2ul, 2ul, 1ul, 1ul }; ++ ++int ++main (void) ++{ ++ int i; ++ ++ for (i = 0; i < SIZE / 2; ++i) ++ if (vpaddd_u64 (vld1q_u64 (in + 2 * i)) != 2 * in[2 * i]) ++ abort (); ++ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler "addp\[ \t\]+\[dD\]\[0-9\]+, v\[0-9\].2d+\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_u8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_u8.x +@@ -0,0 +1,114 @@ ++extern void abort (void); ++ ++uint8x8_t ++test_vext_u8_1 (uint8x8_t a, uint8x8_t b) ++{ ++ return vext_u8 (a, b, 1); ++} ++ ++uint8x8_t ++test_vext_u8_2 (uint8x8_t a, uint8x8_t b) ++{ ++ return vext_u8 (a, b, 2); ++} ++ ++uint8x8_t ++test_vext_u8_3 (uint8x8_t a, uint8x8_t b) ++{ ++ return vext_u8 (a, b, 3); ++} ++ ++uint8x8_t ++test_vext_u8_4 (uint8x8_t a, uint8x8_t b) ++{ ++ return vext_u8 (a, b, 4); ++} ++ ++uint8x8_t ++test_vext_u8_5 (uint8x8_t a, uint8x8_t b) ++{ ++ return vext_u8 (a, b, 5); ++} ++ ++uint8x8_t ++test_vext_u8_6 (uint8x8_t a, uint8x8_t b) ++{ ++ return vext_u8 (a, b, 6); ++} ++ ++uint8x8_t ++test_vext_u8_7 (uint8x8_t a, uint8x8_t b) ++{ ++ return vext_u8 (a, b, 7); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i, off; ++ uint8_t arr1[] = {0, 1, 2, 3, 4, 5, 6, 7}; ++ uint8x8_t in1 = vld1_u8 (arr1); ++ uint8_t arr2[] = {8, 9, 10, 11, 12, 13, 14, 15}; ++ uint8x8_t in2 = vld1_u8 (arr2); ++ uint8_t exp[8]; ++ uint8x8_t expected; ++ uint8x8_t actual = test_vext_u8_1 (in1, in2); ++ ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 1; ++ expected = vld1_u8 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vext_u8_2 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 2; ++ expected = vld1_u8 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vext_u8_3 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 3; ++ expected = vld1_u8 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vext_u8_4 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 4; ++ expected = vld1_u8 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vext_u8_5 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 5; ++ expected = vld1_u8 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vext_u8_6 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 6; ++ expected = vld1_u8 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vext_u8_7 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 7; ++ expected = vld1_u8 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_u16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_u16.x +@@ -0,0 +1,114 @@ ++extern void abort (void); ++ ++uint16x8_t ++test_vextq_u16_1 (uint16x8_t a, uint16x8_t b) ++{ ++ return vextq_u16 (a, b, 1); ++} ++ ++uint16x8_t ++test_vextq_u16_2 (uint16x8_t a, uint16x8_t b) ++{ ++ return vextq_u16 (a, b, 2); ++} ++ ++uint16x8_t ++test_vextq_u16_3 (uint16x8_t a, uint16x8_t b) ++{ ++ return vextq_u16 (a, b, 3); ++} ++ ++uint16x8_t ++test_vextq_u16_4 (uint16x8_t a, uint16x8_t b) ++{ ++ return vextq_u16 (a, b, 4); ++} ++ ++uint16x8_t ++test_vextq_u16_5 (uint16x8_t a, uint16x8_t b) ++{ ++ return vextq_u16 (a, b, 5); ++} ++ ++uint16x8_t ++test_vextq_u16_6 (uint16x8_t a, uint16x8_t b) ++{ ++ return vextq_u16 (a, b, 6); ++} ++ ++uint16x8_t ++test_vextq_u16_7 (uint16x8_t a, uint16x8_t b) ++{ ++ return vextq_u16 (a, b, 7); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i, off; ++ uint16_t arr1[] = {0, 1, 2, 3, 4, 5, 6, 7}; ++ uint16x8_t in1 = vld1q_u16 (arr1); ++ uint16_t arr2[] = {8, 9, 10, 11, 12, 13, 14, 15}; ++ uint16x8_t in2 = vld1q_u16 (arr2); ++ uint16_t exp[8]; ++ uint16x8_t expected; ++ uint16x8_t actual = test_vextq_u16_1 (in1, in2); ++ ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 1; ++ expected = vld1q_u16 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_u16_2 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 2; ++ expected = vld1q_u16 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_u16_3 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 3; ++ expected = vld1q_u16 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_u16_4 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 4; ++ expected = vld1q_u16 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_u16_5 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 5; ++ expected = vld1q_u16 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_u16_6 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 6; ++ expected = vld1q_u16 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_u16_7 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 7; ++ expected = vld1q_u16 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzips16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzips16_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vzip_s16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vzips16.x" ++ ++/* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqs16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqs16.x +@@ -0,0 +1,26 @@ ++extern void abort (void); ++ ++int16x8x2_t ++test_vuzpqs16 (int16x8_t _a, int16x8_t _b) ++{ ++ return vuzpq_s16 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int16_t first[] = {1, 2, 3, 4, 5, 6, 7, 8}; ++ int16_t second[] = {9, 10, 11, 12, 13, 14, 15, 16}; ++ int16x8x2_t result = test_vuzpqs16 (vld1q_s16 (first), vld1q_s16 (second)); ++ int16_t exp1[] = {1, 3, 5, 7, 9, 11, 13, 15}; ++ int16_t exp2[] = {2, 4, 6, 8, 10, 12, 14, 16}; ++ int16x8_t expect1 = vld1q_s16 (exp1); ++ int16x8_t expect2 = vld1q_s16 (exp2); ++ ++ for (i = 0; i < 8; i++) ++ if ((result.val[0][i] != expect1[i]) || (result.val[1][i] != expect2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqs8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqs8_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vzipq_s8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vzipqs8.x" ++ ++/* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qp8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qp8_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev64q_p8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev64qp8.x" ++ ++/* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.16b, ?v\[0-9\]+.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnu16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnu16_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vtrn_u16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vtrnu16.x" ++ ++/* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqu16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqu16.x +@@ -0,0 +1,26 @@ ++extern void abort (void); ++ ++uint16x8x2_t ++test_vuzpqu16 (uint16x8_t _a, uint16x8_t _b) ++{ ++ return vuzpq_u16 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint16_t first[] = {1, 2, 3, 4, 5, 6, 7, 8}; ++ uint16_t second[] = {9, 10, 11, 12, 13, 14, 15, 16}; ++ uint16x8x2_t result = test_vuzpqu16 (vld1q_u16 (first), vld1q_u16 (second)); ++ uint16_t exp1[] = {1, 3, 5, 7, 9, 11, 13, 15}; ++ uint16_t exp2[] = {2, 4, 6, 8, 10, 12, 14, 16}; ++ uint16x8_t expect1 = vld1q_u16 (exp1); ++ uint16x8_t expect2 = vld1q_u16 (exp2); ++ ++ for (i = 0; i < 8; i++) ++ if ((result.val[0][i] != expect1[i]) || (result.val[1][i] != expect2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpu8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpu8.x +@@ -0,0 +1,26 @@ ++extern void abort (void); ++ ++uint8x8x2_t ++test_vuzpu8 (uint8x8_t _a, uint8x8_t _b) ++{ ++ return vuzp_u8 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint8_t first[] = {1, 2, 3, 4, 5, 6, 7, 8}; ++ uint8_t second[] = {9, 10, 11, 12, 13, 14, 15, 16}; ++ uint8x8x2_t result = test_vuzpu8 (vld1_u8 (first), vld1_u8 (second)); ++ uint8_t exp1[] = {1, 3, 5, 7, 9, 11, 13, 15}; ++ uint8_t exp2[] = {2, 4, 6, 8, 10, 12, 14, 16}; ++ uint8x8_t expect1 = vld1_u8 (exp1); ++ uint8x8_t expect2 = vld1_u8 (exp2); ++ ++ for (i = 0; i < 8; i++) ++ if ((result.val[0][i] != expect1[i]) || (result.val[1][i] != expect2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_u16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_u16_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vextu16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++#include "ext_u16.x" ++ ++/* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?#\[0-9\]+\(?:.2\)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 3 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_u8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_u8_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vextQu8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++#include "extq_u8.x" ++ ++/* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?#?\[0-9\]+\(?:.2\)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 15 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qu8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qu8.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++uint8x16_t ++test_vrev64qu8 (uint8x16_t _arg) ++{ ++ return vrev64q_u8 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint8x16_t inorder = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; ++ uint8x16_t reversed = test_vrev64qu8 (inorder); ++ uint8x16_t expected = {8, 7, 6, 5, 4, 3, 2, 1, 16, 15, 14, 13, 12, 11, 10, 9}; ++ ++ for (i = 0; i < 16; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32p8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32p8_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev32_p8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev32p8.x" ++ ++/* { dg-final { scan-assembler-times "rev32\[ \t\]+v\[0-9\]+.8b, ?v\[0-9\]+.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzps32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzps32.x +@@ -0,0 +1,26 @@ ++extern void abort (void); ++ ++int32x2x2_t ++test_vuzps32 (int32x2_t _a, int32x2_t _b) ++{ ++ return vuzp_s32 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int32_t first[] = {1, 2}; ++ int32_t second[] = {3, 4}; ++ int32x2x2_t result = test_vuzps32 (vld1_s32 (first), vld1_s32 (second)); ++ int32_t exp1[] = {1, 3}; ++ int32_t exp2[] = {2, 4}; ++ int32x2_t expect1 = vld1_s32 (exp1); ++ int32x2_t expect2 = vld1_s32 (exp2); ++ ++ for (i = 0; i < 2; i++) ++ if ((result.val[0][i] != expect1[i]) || (result.val[1][i] != expect2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_s64.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_s64.x +@@ -0,0 +1,17 @@ ++extern void abort (void); ++ ++int ++main (int argc, char **argv) ++{ ++ int i, off; ++ int64_t arr1[] = {0}; ++ int64x1_t in1 = vld1_s64 (arr1); ++ int64_t arr2[] = {1}; ++ int64x1_t in2 = vld1_s64 (arr2); ++ int64x1_t actual = vext_s64 (in1, in2, 0); ++ if (actual != in1) ++ abort (); ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpu32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpu32.x +@@ -0,0 +1,26 @@ ++extern void abort (void); ++ ++uint32x2x2_t ++test_vuzpu32 (uint32x2_t _a, uint32x2_t _b) ++{ ++ return vuzp_u32 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint32_t first[] = {1, 2}; ++ uint32_t second[] = {3, 4}; ++ uint32x2x2_t result = test_vuzpu32 (vld1_u32 (first), vld1_u32 (second)); ++ uint32_t exp1[] = {1, 3}; ++ uint32_t exp2[] = {2, 4}; ++ uint32x2_t expect1 = vld1_u32 (exp1); ++ uint32x2_t expect2 = vld1_u32 (exp2); ++ ++ for (i = 0; i < 2; i++) ++ if ((result.val[0][i] != expect1[i]) || (result.val[1][i] != expect2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_u64.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_u64.x +@@ -0,0 +1,17 @@ ++extern void abort (void); ++ ++int ++main (int argc, char **argv) ++{ ++ int i, off; ++ uint64_t arr1[] = {0}; ++ uint64x1_t in1 = vld1_u64 (arr1); ++ uint64_t arr2[] = {1}; ++ uint64x1_t in2 = vld1_u64 (arr2); ++ uint64x1_t actual = vext_u64 (in1, in2, 0); ++ if (actual != in1) ++ abort (); ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrns8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrns8_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vtrn_s8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vtrns8.x" ++ ++/* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqs16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqs16_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vtrnq_s16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vtrnqs16.x" ++ ++/* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qs32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qs32_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev64q_s32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev64qs32.x" ++ ++/* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.4s, ?v\[0-9\]+.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64s8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64s8_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev64_s8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev64s8.x" ++ ++/* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.8b, ?v\[0-9\]+.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqs16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqs16.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++int16x8x2_t ++test_vzipqs16 (int16x8_t _a, int16x8_t _b) ++{ ++ return vzipq_s16 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int16_t first[] = {1, 2, 3, 4, 5, 6, 7, 8}; ++ int16_t second[] = {9, 10, 11, 12, 13, 14, 15, 16}; ++ int16x8x2_t result = test_vzipqs16 (vld1q_s16 (first), vld1q_s16 (second)); ++ int16x8_t res1 = result.val[0], res2 = result.val[1]; ++ int16_t exp1[] = {1, 9, 2, 10, 3, 11, 4, 12}; ++ int16_t exp2[] = {5, 13, 6, 14, 7, 15, 8, 16}; ++ int16x8_t expected1 = vld1q_s16 (exp1); ++ int16x8_t expected2 = vld1q_s16 (exp2); ++ ++ for (i = 0; i < 8; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipf32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipf32.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++float32x2x2_t ++test_vzipf32 (float32x2_t _a, float32x2_t _b) ++{ ++ return vzip_f32 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ float32_t first[] = {1, 2}; ++ float32_t second[] = {3, 4}; ++ float32x2x2_t result = test_vzipf32 (vld1_f32 (first), vld1_f32 (second)); ++ float32x2_t res1 = result.val[0], res2 = result.val[1]; ++ float32_t exp1[] = {1, 3}; ++ float32_t exp2[] = {2, 4}; ++ float32x2_t expected1 = vld1_f32 (exp1); ++ float32x2_t expected2 = vld1_f32 (exp2); ++ ++ for (i = 0; i < 2; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipu8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipu8.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++uint8x8x2_t ++test_vzipu8 (uint8x8_t _a, uint8x8_t _b) ++{ ++ return vzip_u8 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint8_t first[] = {1, 2, 3, 4, 5, 6, 7, 8}; ++ uint8_t second[] = {9, 10, 11, 12, 13, 14, 15, 16}; ++ uint8x8x2_t result = test_vzipu8 (vld1_u8 (first), vld1_u8 (second)); ++ uint8x8_t res1 = result.val[0], res2 = result.val[1]; ++ uint8_t exp1[] = {1, 9, 2, 10, 3, 11, 4, 12}; ++ uint8_t exp2[] = {5, 13, 6, 14, 7, 15, 8, 16}; ++ uint8x8_t expected1 = vld1_u8 (exp1); ++ uint8x8_t expected2 = vld1_u8 (exp2); ++ ++ for (i = 0; i < 8; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqu16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqu16.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++uint16x8x2_t ++test_vzipqu16 (uint16x8_t _a, uint16x8_t _b) ++{ ++ return vzipq_u16 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint16_t first[] = {1, 2, 3, 4, 5, 6, 7, 8}; ++ uint16_t second[] = {9, 10, 11, 12, 13, 14, 15, 16}; ++ uint16x8x2_t result = test_vzipqu16 (vld1q_u16 (first), vld1q_u16 (second)); ++ uint16x8_t res1 = result.val[0], res2 = result.val[1]; ++ uint16_t exp1[] = {1, 9, 2, 10, 3, 11, 4, 12}; ++ uint16_t exp2[] = {5, 13, 6, 14, 7, 15, 8, 16}; ++ uint16x8_t expected1 = vld1q_u16 (exp1); ++ uint16x8_t expected2 = vld1q_u16 (exp2); ++ ++ for (i = 0; i < 8; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_s16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_s16_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vextQs16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++#include "extq_s16.x" ++ ++/* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?#\[0-9\]+\(?:.2\)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 7 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqp16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqp16_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vuzpq_p16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vuzpqp16.x" ++ ++/* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_p8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_p8.x +@@ -0,0 +1,114 @@ ++extern void abort (void); ++ ++poly8x8_t ++test_vext_p8_1 (poly8x8_t a, poly8x8_t b) ++{ ++ return vext_p8 (a, b, 1); ++} ++ ++poly8x8_t ++test_vext_p8_2 (poly8x8_t a, poly8x8_t b) ++{ ++ return vext_p8 (a, b, 2); ++} ++ ++poly8x8_t ++test_vext_p8_3 (poly8x8_t a, poly8x8_t b) ++{ ++ return vext_p8 (a, b, 3); ++} ++ ++poly8x8_t ++test_vext_p8_4 (poly8x8_t a, poly8x8_t b) ++{ ++ return vext_p8 (a, b, 4); ++} ++ ++poly8x8_t ++test_vext_p8_5 (poly8x8_t a, poly8x8_t b) ++{ ++ return vext_p8 (a, b, 5); ++} ++ ++poly8x8_t ++test_vext_p8_6 (poly8x8_t a, poly8x8_t b) ++{ ++ return vext_p8 (a, b, 6); ++} ++ ++poly8x8_t ++test_vext_p8_7 (poly8x8_t a, poly8x8_t b) ++{ ++ return vext_p8 (a, b, 7); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i, off; ++ poly8_t arr1[] = {0, 1, 2, 3, 4, 5, 6, 7}; ++ poly8x8_t in1 = vld1_p8 (arr1); ++ poly8_t arr2[] = {8, 9, 10, 11, 12, 13, 14, 15}; ++ poly8x8_t in2 = vld1_p8 (arr2); ++ poly8_t exp[8]; ++ poly8x8_t expected; ++ poly8x8_t actual = test_vext_p8_1 (in1, in2); ++ ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 1; ++ expected = vld1_p8 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vext_p8_2 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 2; ++ expected = vld1_p8 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vext_p8_3 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 3; ++ expected = vld1_p8 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vext_p8_4 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 4; ++ expected = vld1_p8 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vext_p8_5 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 5; ++ expected = vld1_p8 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vext_p8_6 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 6; ++ expected = vld1_p8 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vext_p8_7 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 7; ++ expected = vld1_p8 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqu32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqu32_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vuzpq_u32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vuzpqu32.x" ++ ++/* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32s16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32s16_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev32_s16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev32s16.x" ++ ++/* { dg-final { scan-assembler-times "rev32\[ \t\]+v\[0-9\]+.4h, ?v\[0-9\]+.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpp8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpp8.x +@@ -0,0 +1,26 @@ ++extern void abort (void); ++ ++poly8x8x2_t ++test_vuzpp8 (poly8x8_t _a, poly8x8_t _b) ++{ ++ return vuzp_p8 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ poly8_t first[] = {1, 2, 3, 4, 5, 6, 7, 8}; ++ poly8_t second[] = {9, 10, 11, 12, 13, 14, 15, 16}; ++ poly8x8x2_t result = test_vuzpp8 (vld1_p8 (first), vld1_p8 (second)); ++ poly8_t exp1[] = {1, 3, 5, 7, 9, 11, 13, 15}; ++ poly8_t exp2[] = {2, 4, 6, 8, 10, 12, 14, 16}; ++ poly8x8_t expect1 = vld1_p8 (exp1); ++ poly8x8_t expect2 = vld1_p8 (exp2); ++ ++ for (i = 0; i < 8; i++) ++ if ((result.val[0][i] != expect1[i]) || (result.val[1][i] != expect2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqp8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqp8_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vzipq_p8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vzipqp8.x" ++ ++/* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qs8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qs8_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev32q_s8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev32qs8.x" ++ ++/* { dg-final { scan-assembler-times "rev32\[ \t\]+v\[0-9\]+.16b, ?v\[0-9\]+.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64s32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64s32_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev64_s32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev64s32.x" ++ ++/* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.2s, ?v\[0-9\]+.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/simd.exp ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/simd.exp +@@ -0,0 +1,45 @@ ++# Specific regression driver for AArch64 SIMD instructions. ++# Copyright (C) 2014 Free Software Foundation, Inc. ++# Contributed by ARM Ltd. ++# ++# This file is part of GCC. ++# ++# GCC is free software; you can redistribute it and/or modify it ++# under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3, or (at your option) ++# any later version. ++# ++# GCC is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . */ ++ ++# GCC testsuite that uses the `dg.exp' driver. ++ ++# Exit immediately if this isn't an AArch64 target. ++if {![istarget aarch64*-*-*] } then { ++ return ++} ++ ++# Load support procs. ++load_lib gcc-dg.exp ++ ++# If a testcase doesn't have special options, use these. ++global DEFAULT_CFLAGS ++if ![info exists DEFAULT_CFLAGS] then { ++ set DEFAULT_CFLAGS " -ansi -pedantic-errors" ++} ++ ++# Initialize `dg'. ++dg-init ++ ++# Main loop. ++dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cCS\]]] \ ++ "" $DEFAULT_CFLAGS ++ ++# All done. ++dg-finish +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrns16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrns16.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++int16x4x2_t ++test_vtrns16 (int16x4_t _a, int16x4_t _b) ++{ ++ return vtrn_s16 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int16_t first[] = {1, 2, 3, 4}; ++ int16_t second[] = {5, 6, 7, 8}; ++ int16x4x2_t result = test_vtrns16 (vld1_s16 (first), vld1_s16 (second)); ++ int16x4_t res1 = result.val[0], res2 = result.val[1]; ++ int16_t exp1[] = {1, 5, 3, 7}; ++ int16_t exp2[] = {2, 6, 4, 8}; ++ int16x4_t expected1 = vld1_s16 (exp1); ++ int16x4_t expected2 = vld1_s16 (exp2); ++ ++ for (i = 0; i < 4; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qu8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qu8_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev64q_u8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev64qu8.x" ++ ++/* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.16b, ?v\[0-9\]+.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qp8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qp8.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++poly8x16_t ++test_vrev64qp8 (poly8x16_t _arg) ++{ ++ return vrev64q_p8 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ poly8x16_t inorder = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; ++ poly8x16_t reversed = test_vrev64qp8 (inorder); ++ poly8x16_t expected = {8, 7, 6, 5, 4, 3, 2, 1, 16, 15, 14, 13, 12, 11, 10, 9}; ++ ++ for (i = 0; i < 16; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnu16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnu16.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++uint16x4x2_t ++test_vtrnu16 (uint16x4_t _a, uint16x4_t _b) ++{ ++ return vtrn_u16 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint16_t first[] = {1, 2, 3, 4}; ++ uint16_t second[] = {5, 6, 7, 8}; ++ uint16x4x2_t result = test_vtrnu16 (vld1_u16 (first), vld1_u16 (second)); ++ uint16x4_t res1 = result.val[0], res2 = result.val[1]; ++ uint16_t exp1[] = {1, 5, 3, 7}; ++ uint16_t exp2[] = {2, 6, 4, 8}; ++ uint16x4_t expected1 = vld1_u16 (exp1); ++ uint16x4_t expected2 = vld1_u16 (exp2); ++ ++ for (i = 0; i < 4; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_p16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_p16.x +@@ -0,0 +1,58 @@ ++extern void abort (void); ++ ++poly16x4_t ++test_vext_p16_1 (poly16x4_t a, poly16x4_t b) ++{ ++ return vext_p16 (a, b, 1); ++} ++ ++poly16x4_t ++test_vext_p16_2 (poly16x4_t a, poly16x4_t b) ++{ ++ return vext_p16 (a, b, 2); ++} ++ ++poly16x4_t ++test_vext_p16_3 (poly16x4_t a, poly16x4_t b) ++{ ++ return vext_p16 (a, b, 3); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i, off; ++ poly16_t arr1[] = {0, 1, 2, 3}; ++ poly16x4_t in1 = vld1_p16 (arr1); ++ poly16_t arr2[] = {4, 5, 6, 7}; ++ poly16x4_t in2 = vld1_p16 (arr2); ++ poly16_t exp[4]; ++ poly16x4_t expected; ++ poly16x4_t actual = test_vext_p16_1 (in1, in2); ++ ++ for (i = 0; i < 4; i++) ++ exp[i] = i + 1; ++ expected = vld1_p16 (exp); ++ for (i = 0; i < 4; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vext_p16_2 (in1, in2); ++ for (i = 0; i < 4; i++) ++ exp[i] = i + 2; ++ expected = vld1_p16 (exp); ++ for (i = 0; i < 4; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vext_p16_3 (in1, in2); ++ for (i = 0; i < 4; i++) ++ exp[i] = i + 3; ++ expected = vld1_p16 (exp); ++ for (i = 0; i < 4; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpp16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpp16_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vuzp_p16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vuzpp16.x" ++ ++/* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqu8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqu8.x +@@ -0,0 +1,29 @@ ++extern void abort (void); ++ ++uint8x16x2_t ++test_vzipqu8 (uint8x16_t _a, uint8x16_t _b) ++{ ++ return vzipq_u8 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint8_t first[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; ++ uint8_t second[] = ++ {17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}; ++ uint8x16x2_t result = test_vzipqu8 (vld1q_u8 (first), vld1q_u8 (second)); ++ uint8x16_t res1 = result.val[0], res2 = result.val[1]; ++ uint8_t exp1[] = {1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23, 8, 24}; ++ uint8_t exp2[] = ++ {9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31, 16, 32}; ++ uint8x16_t expected1 = vld1q_u8 (exp1); ++ uint8x16_t expected2 = vld1q_u8 (exp2); ++ ++ for (i = 0; i < 16; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_u64_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_u64_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vextu64' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++#include "ext_u64.x" ++ ++/* Do not scan-assembler. An EXT instruction could be emitted, but would merely ++ return its first argument, so it is legitimate to optimize it out. */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmulls_laneq_s32.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmulls_laneq_s32.c +@@ -0,0 +1,15 @@ ++/* Test the vqdmulls_laneq_s32 AArch64 SIMD intrinsic. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++ ++int64_t ++t_vqdmulls_laneq_s32 (int32_t a, int32x4_t b) ++{ ++ return vqdmulls_laneq_s32 (a, b, 0); ++} ++ ++/* { dg-final { scan-assembler-times "sqdmull\[ \t\]+\[dD\]\[0-9\]+, ?\[sS\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpu32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpu32_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vuzp_u32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vuzpu32.x" ++ ++/* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qp16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qp16_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev32q_p16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev32qp16.x" ++ ++/* { dg-final { scan-assembler-times "rev32\[ \t\]+v\[0-9\]+.8h, ?v\[0-9\]+.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqshlb_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqshlb_1.c +@@ -0,0 +1,21 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3" } */ ++ ++#include "arm_neon.h" ++ ++extern void abort (); ++ ++int ++main (int argc, char **argv) ++{ ++ int8_t arg1 = -1; ++ int8_t arg2 = 127; ++ int8_t exp = -128; ++ int8_t got = vqshlb_s8 (arg1, arg2); ++ ++ if (exp != got) ++ abort (); ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_f32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_f32.x +@@ -0,0 +1,58 @@ ++extern void abort (void); ++ ++float32x4_t ++test_vextq_f32_1 (float32x4_t a, float32x4_t b) ++{ ++ return vextq_f32 (a, b, 1); ++} ++ ++float32x4_t ++test_vextq_f32_2 (float32x4_t a, float32x4_t b) ++{ ++ return vextq_f32 (a, b, 2); ++} ++ ++float32x4_t ++test_vextq_f32_3 (float32x4_t a, float32x4_t b) ++{ ++ return vextq_f32 (a, b, 3); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i, off; ++ float32_t arr1[] = {0, 1, 2, 3}; ++ float32x4_t in1 = vld1q_f32 (arr1); ++ float32_t arr2[] = {4, 5, 6, 7}; ++ float32x4_t in2 = vld1q_f32 (arr2); ++ float32_t exp[4]; ++ float32x4_t expected; ++ float32x4_t actual = test_vextq_f32_1 (in1, in2); ++ ++ for (i = 0; i < 4; i++) ++ exp[i] = i + 1; ++ expected = vld1q_f32 (exp); ++ for (i = 0; i < 4; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_f32_2 (in1, in2); ++ for (i = 0; i < 4; i++) ++ exp[i] = i + 2; ++ expected = vld1q_f32 (exp); ++ for (i = 0; i < 4; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_f32_3 (in1, in2); ++ for (i = 0; i < 4; i++) ++ exp[i] = i + 3; ++ expected = vld1q_f32 (exp); ++ for (i = 0; i < 4; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqp16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqp16_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vzipq_p16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vzipqp16.x" ++ ++/* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnp8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnp8_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vtrn_p8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vtrnp8.x" ++ ++/* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_u8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_u8.x +@@ -0,0 +1,227 @@ ++extern void abort (void); ++ ++uint8x16_t ++test_vextq_u8_1 (uint8x16_t a, uint8x16_t b) ++{ ++ return vextq_u8 (a, b, 1); ++} ++ ++uint8x16_t ++test_vextq_u8_2 (uint8x16_t a, uint8x16_t b) ++{ ++ return vextq_u8 (a, b, 2); ++} ++ ++uint8x16_t ++test_vextq_u8_3 (uint8x16_t a, uint8x16_t b) ++{ ++ return vextq_u8 (a, b, 3); ++} ++ ++uint8x16_t ++test_vextq_u8_4 (uint8x16_t a, uint8x16_t b) ++{ ++ return vextq_u8 (a, b, 4); ++} ++ ++uint8x16_t ++test_vextq_u8_5 (uint8x16_t a, uint8x16_t b) ++{ ++ return vextq_u8 (a, b, 5); ++} ++ ++uint8x16_t ++test_vextq_u8_6 (uint8x16_t a, uint8x16_t b) ++{ ++ return vextq_u8 (a, b, 6); ++} ++ ++uint8x16_t ++test_vextq_u8_7 (uint8x16_t a, uint8x16_t b) ++{ ++ return vextq_u8 (a, b, 7); ++} ++ ++uint8x16_t ++test_vextq_u8_8 (uint8x16_t a, uint8x16_t b) ++{ ++ return vextq_u8 (a, b, 8); ++} ++ ++uint8x16_t ++test_vextq_u8_9 (uint8x16_t a, uint8x16_t b) ++{ ++ return vextq_u8 (a, b, 9); ++} ++ ++uint8x16_t ++test_vextq_u8_10 (uint8x16_t a, uint8x16_t b) ++{ ++ return vextq_u8 (a, b, 10); ++} ++ ++uint8x16_t ++test_vextq_u8_11 (uint8x16_t a, uint8x16_t b) ++{ ++ return vextq_u8 (a, b, 11); ++} ++ ++uint8x16_t ++test_vextq_u8_12 (uint8x16_t a, uint8x16_t b) ++{ ++ return vextq_u8 (a, b, 12); ++} ++ ++uint8x16_t ++test_vextq_u8_13 (uint8x16_t a, uint8x16_t b) ++{ ++ return vextq_u8 (a, b, 13); ++} ++ ++uint8x16_t ++test_vextq_u8_14 (uint8x16_t a, uint8x16_t b) ++{ ++ return vextq_u8 (a, b, 14); ++} ++ ++uint8x16_t ++test_vextq_u8_15 (uint8x16_t a, uint8x16_t b) ++{ ++ return vextq_u8 (a, b, 15); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint8_t arr1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; ++ uint8x16_t in1 = vld1q_u8 (arr1); ++ uint8_t arr2[] = ++ {16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}; ++ uint8x16_t in2 = vld1q_u8 (arr2); ++ uint8_t exp[16]; ++ uint8x16_t expected; ++ uint8x16_t actual = test_vextq_u8_1 (in1, in2); ++ ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 1; ++ expected = vld1q_u8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_u8_2 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 2; ++ expected = vld1q_u8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_u8_3 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 3; ++ expected = vld1q_u8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_u8_4 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 4; ++ expected = vld1q_u8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_u8_5 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 5; ++ expected = vld1q_u8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_u8_6 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 6; ++ expected = vld1q_u8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_u8_7 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 7; ++ expected = vld1q_u8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_u8_8 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 8; ++ expected = vld1q_u8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_u8_9 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 9; ++ expected = vld1q_u8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_u8_10 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 10; ++ expected = vld1q_u8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_u8_11 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 11; ++ expected = vld1q_u8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_u8_12 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 12; ++ expected = vld1q_u8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_u8_13 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 13; ++ expected = vld1q_u8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_u8_14 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 14; ++ expected = vld1q_u8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_u8_15 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 15; ++ expected = vld1q_u8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqu32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqu32_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vzipq_u32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vzipqu32.x" ++ ++/* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64p8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64p8_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev64_p8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev64p8.x" ++ ++/* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.8b, ?v\[0-9\]+.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32u8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32u8_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev32_u8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev32u8.x" ++ ++/* { dg-final { scan-assembler-times "rev32\[ \t\]+v\[0-9\]+.8b, ?v\[0-9\]+.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16s8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16s8_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev16_s8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev16s8.x" ++ ++/* { dg-final { scan-assembler-times "rev16\[ \t\]+v\[0-9\]+.8b, ?v\[0-9\]+.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqf32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqf32.x +@@ -0,0 +1,26 @@ ++extern void abort (void); ++ ++float32x4x2_t ++test_vuzpqf32 (float32x4_t _a, float32x4_t _b) ++{ ++ return vuzpq_f32 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ float32_t first[] = {1, 2, 3, 4}; ++ float32_t second[] = {5, 6, 7, 8}; ++ float32x4x2_t result = test_vuzpqf32 (vld1q_f32 (first), vld1q_f32 (second)); ++ float32_t exp1[] = {1, 3, 5, 7}; ++ float32_t exp2[] = {2, 4, 6, 8}; ++ float32x4_t expect1 = vld1q_f32 (exp1); ++ float32x4_t expect2 = vld1q_f32 (exp2); ++ ++ for (i = 0; i < 4; i++) ++ if ((result.val[0][i] != expect1[i]) || (result.val[1][i] != expect2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipp8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipp8.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++poly8x8x2_t ++test_vzipp8 (poly8x8_t _a, poly8x8_t _b) ++{ ++ return vzip_p8 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ poly8_t first[] = {1, 2, 3, 4, 5, 6, 7, 8}; ++ poly8_t second[] = {9, 10, 11, 12, 13, 14, 15, 16}; ++ poly8x8x2_t result = test_vzipp8 (vld1_p8 (first), vld1_p8 (second)); ++ poly8x8_t res1 = result.val[0], res2 = result.val[1]; ++ poly8_t exp1[] = {1, 9, 2, 10, 3, 11, 4, 12}; ++ poly8_t exp2[] = {5, 13, 6, 14, 7, 15, 8, 16}; ++ poly8x8_t expected1 = vld1_p8 (exp1); ++ poly8x8_t expected2 = vld1_p8 (exp2); ++ ++ for (i = 0; i < 8; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqs32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqs32.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++int32x4x2_t ++test_vtrnqs32 (int32x4_t _a, int32x4_t _b) ++{ ++ return vtrnq_s32 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int32_t first[] = {1, 2, 3, 4}; ++ int32_t second[] = {5, 6, 7, 8}; ++ int32x4x2_t result = test_vtrnqs32 (vld1q_s32 (first), vld1q_s32 (second)); ++ int32x4_t res1 = result.val[0], res2 = result.val[1]; ++ int32_t exp1[] = {1, 5, 3, 7}; ++ int32_t exp2[] = {2, 6, 4, 8}; ++ int32x4_t expected1 = vld1q_s32 (exp1); ++ int32x4_t expected2 = vld1q_s32 (exp2); ++ ++ for (i = 0; i < 4; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/int_comparisons_2.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/int_comparisons_2.c +@@ -0,0 +1,131 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fno-inline" } */ ++/* Stops the test_xxx methods being inlined into main, thus preventing constant ++ propagation. */ ++ ++#include "int_comparisons.x" ++ ++extern void abort (void); ++ ++#define CHECK2(R0, R1) if (res[0] != R0 || res[1] != R1) abort () ++ ++#define TEST2(BASETYPE, SUFFIX, RESTYPE, ST1_SUFFIX) { \ ++ BASETYPE##_t _a[2] = {2, 3}; \ ++ BASETYPE##x2_t a = vld1##SUFFIX (_a); \ ++ BASETYPE##_t _b[2] = {1, 3}; \ ++ BASETYPE##x2_t b = vld1##SUFFIX (_b); \ ++ RESTYPE res[2]; \ ++ vst1##ST1_SUFFIX (res, test_vclt##SUFFIX (a, b)); CHECK2 (0, 0); \ ++ vst1##ST1_SUFFIX (res, test_vclt##SUFFIX (b, a)); CHECK2 (-1, 0); \ ++ vst1##ST1_SUFFIX (res, test_vcle##SUFFIX (a, b)); CHECK2 (0, -1); \ ++ vst1##ST1_SUFFIX (res, test_vcle##SUFFIX (b, a)); CHECK2 (-1, -1); \ ++ vst1##ST1_SUFFIX (res, test_vceq##SUFFIX (a, b)); CHECK2 (0, -1); \ ++ vst1##ST1_SUFFIX (res, test_vcge##SUFFIX (a, b)); CHECK2 (-1, -1); \ ++ vst1##ST1_SUFFIX (res, test_vcge##SUFFIX (b, a)); CHECK2 (0, -1); \ ++ vst1##ST1_SUFFIX (res, test_vcgt##SUFFIX (a, b)); CHECK2 (-1, 0); \ ++ vst1##ST1_SUFFIX (res, test_vcgt##SUFFIX (b, a)); CHECK2 (0, 0); \ ++ vst1##ST1_SUFFIX (res, test_vtst##SUFFIX (a, b)); CHECK2 (0, -1); \ ++ vst1##ST1_SUFFIX (res, test_vtst##SUFFIX (a + 1, b)); CHECK2 (-1, 0); \ ++} ++ ++#define CHECK4(T, R0, R1, R2, R3) \ ++ if (res[0] != (T)R0 || res[1] != (T)R1 \ ++ || res[2] != (T)R2 || res[3] != (T)R3) abort () ++ ++#define TEST4(BASETYPE, SUFFIX, RESTYPE, ST1_SUFFIX) { \ ++ BASETYPE##_t _a[4] = {1, 2, 3, 4}; \ ++ BASETYPE##x4_t a = vld1##SUFFIX (_a); \ ++ BASETYPE##_t _b[4] = {4, 2, 1, 3}; \ ++ BASETYPE##x4_t b = vld1##SUFFIX (_b); \ ++ RESTYPE res[4]; \ ++ vst1##ST1_SUFFIX (res, test_vclt##SUFFIX (a, b)); \ ++ CHECK4 (RESTYPE, -1, 0, 0, 0); \ ++ vst1##ST1_SUFFIX (res, test_vcle##SUFFIX (a, b)); \ ++ CHECK4 (RESTYPE, -1, -1, 0, 0); \ ++ vst1##ST1_SUFFIX (res, test_vceq##SUFFIX (a, b)); \ ++ CHECK4 (RESTYPE, 0, -1, 0, 0); \ ++ vst1##ST1_SUFFIX (res, test_vcge##SUFFIX (a, b)); \ ++ CHECK4 (RESTYPE, 0, -1, -1, -1); \ ++ vst1##ST1_SUFFIX (res, test_vcgt##SUFFIX (a, b)); \ ++ CHECK4 (RESTYPE, 0, 0, -1, -1); \ ++ vst1##ST1_SUFFIX (res, test_vtst##SUFFIX (a, b)); \ ++ CHECK4 (RESTYPE, 0, -1, -1, 0); \ ++} ++ ++#define CHECK8(T, R0, R1, R2, R3, R4, R5, R6, R7) \ ++ if (res[0] != (T)R0 || res[1] != (T)R1 || res[2] != (T)R2 || res[3] != (T)R3 \ ++ || res[4] != (T)R4 || res[5] != (T)R5 || res[6] != (T)R6 \ ++ || res[7] != (T)R7) abort () ++ ++#define TEST8(BASETYPE, SUFFIX, RESTYPE, ST1_SUFFIX) { \ ++ BASETYPE##_t _a[8] = {1, 2, 3, 4, 5, 6, 7, 8}; \ ++ BASETYPE##x8_t a = vld1##SUFFIX (_a); \ ++ BASETYPE##_t _b[8] = {4, 2, 1, 3, 2, 6, 8, 9}; \ ++ BASETYPE##x8_t b = vld1##SUFFIX (_b); \ ++ RESTYPE res[8]; \ ++ vst1##ST1_SUFFIX (res, test_vclt##SUFFIX (a, b)); \ ++ CHECK8 (RESTYPE, -1, 0, 0, 0, 0, 0, -1, -1); \ ++ vst1##ST1_SUFFIX (res, test_vcle##SUFFIX (a, b)); \ ++ CHECK8 (RESTYPE, -1, -1, 0, 0, 0, -1, -1, -1); \ ++ vst1##ST1_SUFFIX (res, test_vceq##SUFFIX (a, b)); \ ++ CHECK8 (RESTYPE, 0, -1, 0, 0, 0, -1, 0, 0); \ ++ vst1##ST1_SUFFIX (res, test_vcge##SUFFIX (a, b)); \ ++ CHECK8 (RESTYPE, 0, -1, -1, -1, -1, -1, 0, 0); \ ++ vst1##ST1_SUFFIX (res, test_vcgt##SUFFIX (a, b)); \ ++ CHECK8 (RESTYPE, 0, 0, -1, -1, -1, 0, 0, 0); \ ++ vst1##ST1_SUFFIX (res, test_vtst##SUFFIX (a, b)); \ ++ CHECK8 (RESTYPE, 0, -1, -1, 0, 0, -1, 0, -1); \ ++} ++ ++/* 16-way tests use same 8 values twice. */ ++#define CHECK16(T, R0, R1, R2, R3, R4, R5, R6, R7) \ ++ if (res[0] != (T)R0 || res[1] != (T)R1 || res[2] != (T)R2 || res[3] != (T)R3 \ ++ || res[4] != (T)R4 || res[5] != (T)R5 || res[6] != (T)R6 \ ++ || res[7] != (T)R7 || res[8] != (T)R0 || res[9] != (T)R1 \ ++ || res[10] != (T)R2 || res[11] != (T)R3 || res[12] != (T)R4 \ ++ || res[13] != (T)R5 || res[14] != (T)R6 || res[15] != (T)R7) abort () ++ ++#define TEST16(BASETYPE, SUFFIX, RESTYPE, ST1_SUFFIX) { \ ++ BASETYPE##_t _a[16] = {1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8}; \ ++ BASETYPE##x16_t a = vld1##SUFFIX (_a); \ ++ BASETYPE##_t _b[16] = {4, 2, 1, 3, 2, 6, 8, 9, 4, 2, 1, 3, 2, 6, 8, 9}; \ ++ BASETYPE##x16_t b = vld1##SUFFIX (_b); \ ++ RESTYPE res[16]; \ ++ vst1##ST1_SUFFIX (res, test_vclt##SUFFIX (a, b)); \ ++ CHECK16 (RESTYPE, -1, 0, 0, 0, 0, 0, -1, -1); \ ++ vst1##ST1_SUFFIX (res, test_vcle##SUFFIX (a, b)); \ ++ CHECK16 (RESTYPE, -1, -1, 0, 0, 0, -1, -1, -1); \ ++ vst1##ST1_SUFFIX (res, test_vceq##SUFFIX (a, b)); \ ++ CHECK16 (RESTYPE, 0, -1, 0, 0, 0, -1, 0, 0); \ ++ vst1##ST1_SUFFIX (res, test_vcge##SUFFIX (a, b)); \ ++ CHECK16 (RESTYPE, 0, -1, -1, -1, -1, -1, 0, 0); \ ++ vst1##ST1_SUFFIX (res, test_vcgt##SUFFIX (a, b)); \ ++ CHECK16 (RESTYPE, 0, 0, -1, -1, -1, 0, 0, 0); \ ++ vst1##ST1_SUFFIX (res, test_vtst##SUFFIX (a, b)); \ ++ CHECK16 (RESTYPE, 0, -1, -1, 0, 0, -1, 0, -1); \ ++} ++ ++int ++main (int argc, char **argv) ++{ ++ TEST2 (int32, _s32, uint32_t, _u32); ++ TEST2 (uint32, _u32, uint32_t, _u32); ++ TEST2 (int64, q_s64, uint64_t, q_u64); ++ TEST2 (uint64, q_u64, uint64_t, q_u64); ++ ++ TEST4 (int16, _s16, uint16_t, _u16); ++ TEST4 (uint16, _u16, uint16_t, _u16); ++ TEST4 (int32, q_s32, uint32_t, q_u32); ++ TEST4 (uint32, q_u32, uint32_t, q_u32); ++ ++ TEST8 (int8, _s8, uint8_t, _u8); ++ TEST8 (uint8, _u8, uint8_t, _u8); ++ TEST8 (int16, q_s16, uint16_t, q_u16); ++ TEST8 (uint16, q_u16, uint16_t, q_u16); ++ ++ TEST16 (int8, q_s8, uint8_t, q_u8); ++ TEST16 (uint8, q_u8, uint8_t, q_u8); ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqu32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqu32.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++uint32x4x2_t ++test_vtrnqu32 (uint32x4_t _a, uint32x4_t _b) ++{ ++ return vtrnq_u32 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint32_t first[] = {1, 2, 3, 4}; ++ uint32_t second[] = {5, 6, 7, 8}; ++ uint32x4x2_t result = test_vtrnqu32 (vld1q_u32 (first), vld1q_u32 (second)); ++ uint32x4_t res1 = result.val[0], res2 = result.val[1]; ++ uint32_t exp1[] = {1, 5, 3, 7}; ++ uint32_t exp2[] = {2, 6, 4, 8}; ++ uint32x4_t expected1 = vld1q_u32 (exp1); ++ uint32x4_t expected2 = vld1q_u32 (exp2); ++ ++ for (i = 0; i < 4; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qs32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qs32.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++int32x4_t ++test_vrev64qs32 (int32x4_t _arg) ++{ ++ return vrev64q_s32 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int32x4_t inorder = {1, 2, 3, 4}; ++ int32x4_t reversed = test_vrev64qs32 (inorder); ++ int32x4_t expected = {2, 1, 4, 3}; ++ ++ for (i = 0; i < 4; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnu8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnu8.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++uint8x8x2_t ++test_vtrnu8 (uint8x8_t _a, uint8x8_t _b) ++{ ++ return vtrn_u8 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint8_t first[] = {1, 2, 3, 4, 5, 6, 7, 8}; ++ uint8_t second[] = {9, 10, 11, 12, 13, 14, 15, 16}; ++ uint8x8x2_t result = test_vtrnu8 (vld1_u8 (first), vld1_u8 (second)); ++ uint8x8_t res1 = result.val[0], res2 = result.val[1]; ++ uint8_t exp1[] = {1, 9, 3, 11, 5, 13, 7, 15}; ++ uint8_t exp2[] = {2, 10, 4, 12, 6, 14, 8, 16}; ++ uint8x8_t expected1 = vld1_u8 (exp1); ++ uint8x8_t expected2 = vld1_u8 (exp2); ++ ++ for (i = 0; i < 8; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qu32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qu32.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++uint32x4_t ++test_vrev64qu32 (uint32x4_t _arg) ++{ ++ return vrev64q_u32 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint32x4_t inorder = {1, 2, 3, 4}; ++ uint32x4_t reversed = test_vrev64qu32 (inorder); ++ uint32x4_t expected = {2, 1, 4, 3}; ++ ++ for (i = 0; i < 4; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_s64_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_s64_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vextQs64' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++#include "extq_s64.x" ++ ++/* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?#\[0-9\]+\(?:.8\)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_s8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_s8.x +@@ -0,0 +1,114 @@ ++extern void abort (void); ++ ++int8x8_t ++test_vext_s8_1 (int8x8_t a, int8x8_t b) ++{ ++ return vext_s8 (a, b, 1); ++} ++ ++int8x8_t ++test_vext_s8_2 (int8x8_t a, int8x8_t b) ++{ ++ return vext_s8 (a, b, 2); ++} ++ ++int8x8_t ++test_vext_s8_3 (int8x8_t a, int8x8_t b) ++{ ++ return vext_s8 (a, b, 3); ++} ++ ++int8x8_t ++test_vext_s8_4 (int8x8_t a, int8x8_t b) ++{ ++ return vext_s8 (a, b, 4); ++} ++ ++int8x8_t ++test_vext_s8_5 (int8x8_t a, int8x8_t b) ++{ ++ return vext_s8 (a, b, 5); ++} ++ ++int8x8_t ++test_vext_s8_6 (int8x8_t a, int8x8_t b) ++{ ++ return vext_s8 (a, b, 6); ++} ++ ++int8x8_t ++test_vext_s8_7 (int8x8_t a, int8x8_t b) ++{ ++ return vext_s8 (a, b, 7); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i, off; ++ int8_t arr1[] = {0, 1, 2, 3, 4, 5, 6, 7}; ++ int8x8_t in1 = vld1_s8 (arr1); ++ int8_t arr2[] = {8, 9, 10, 11, 12, 13, 14, 15}; ++ int8x8_t in2 = vld1_s8 (arr2); ++ int8_t exp[8]; ++ int8x8_t expected; ++ int8x8_t actual = test_vext_s8_1 (in1, in2); ++ ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 1; ++ expected = vld1_s8 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vext_s8_2 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 2; ++ expected = vld1_s8 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vext_s8_3 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 3; ++ expected = vld1_s8 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vext_s8_4 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 4; ++ expected = vld1_s8 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vext_s8_5 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 5; ++ expected = vld1_s8 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vext_s8_6 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 6; ++ expected = vld1_s8 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vext_s8_7 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 7; ++ expected = vld1_s8 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzips32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzips32_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vzip_s32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vzips32.x" ++ ++/* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnp16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnp16_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vtrn_p16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vtrnp16.x" ++ ++/* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qp8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qp8_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev32q_p8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev32qp8.x" ++ ++/* { dg-final { scan-assembler-times "rev32\[ \t\]+v\[0-9\]+.16b, ?v\[0-9\]+.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnu32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnu32_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vtrn_u32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vtrnu32.x" ++ ++/* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzps8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzps8.x +@@ -0,0 +1,26 @@ ++extern void abort (void); ++ ++int8x8x2_t ++test_vuzps8 (int8x8_t _a, int8x8_t _b) ++{ ++ return vuzp_s8 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int8_t first[] = {1, 2, 3, 4, 5, 6, 7, 8}; ++ int8_t second[] = {9, 10, 11, 12, 13, 14, 15, 16}; ++ int8x8x2_t result = test_vuzps8 (vld1_s8 (first), vld1_s8 (second)); ++ int8_t exp1[] = {1, 3, 5, 7, 9, 11, 13, 15}; ++ int8_t exp2[] = {2, 4, 6, 8, 10, 12, 14, 16}; ++ int8x8_t expect1 = vld1_s8 (exp1); ++ int8x8_t expect2 = vld1_s8 (exp2); ++ ++ for (i = 0; i < 8; i++) ++ if ((result.val[0][i] != expect1[i]) || (result.val[1][i] != expect2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqu8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqu8_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vzipq_u8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vzipqu8.x" ++ ++/* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqp8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqp8.x +@@ -0,0 +1,29 @@ ++extern void abort (void); ++ ++poly8x16x2_t ++test_vzipqp8 (poly8x16_t _a, poly8x16_t _b) ++{ ++ return vzipq_p8 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ poly8_t first[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; ++ poly8_t second[] = ++ {17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}; ++ poly8x16x2_t result = test_vzipqp8 (vld1q_p8 (first), vld1q_p8 (second)); ++ poly8x16_t res1 = result.val[0], res2 = result.val[1]; ++ poly8_t exp1[] = {1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23, 8, 24}; ++ poly8_t exp2[] = ++ {9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31, 16, 32}; ++ poly8x16_t expected1 = vld1q_p8 (exp1); ++ poly8x16_t expected2 = vld1q_p8 (exp2); ++ ++ for (i = 0; i < 16; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_p16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_p16_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vextp16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++#include "ext_p16.x" ++ ++/* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?#\[0-9\]+\(?:.2\)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 3 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32s16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32s16.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++int16x4_t ++test_vrev32s16 (int16x4_t _arg) ++{ ++ return vrev32_s16 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int16x4_t inorder = {1, 2, 3, 4}; ++ int16x4_t reversed = test_vrev32s16 (inorder); ++ int16x4_t expected = {2, 1, 4, 3}; ++ ++ for (i = 0; i < 4; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32u16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32u16.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++uint16x4_t ++test_vrev32u16 (uint16x4_t _arg) ++{ ++ return vrev32_u16 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint16x4_t inorder = {1, 2, 3, 4}; ++ uint16x4_t reversed = test_vrev32u16 (inorder); ++ uint16x4_t expected = {2, 1, 4, 3}; ++ ++ for (i = 0; i < 4; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64p16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64p16.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++poly16x4_t ++test_vrev64p16 (poly16x4_t _arg) ++{ ++ return vrev64_p16 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ poly16x4_t inorder = {1, 2, 3, 4}; ++ poly16x4_t reversed = test_vrev64p16 (inorder); ++ poly16x4_t expected = {4, 3, 2, 1}; ++ ++ for (i = 0; i < 4; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qf32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qf32_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev64q_f32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev64qf32.x" ++ ++/* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.4s, ?v\[0-9\]+.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqf32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqf32.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++float32x4x2_t ++test_vzipqf32 (float32x4_t _a, float32x4_t _b) ++{ ++ return vzipq_f32 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ float32_t first[] = {1, 2, 3, 4}; ++ float32_t second[] = {5, 6, 7, 8}; ++ float32x4x2_t result = test_vzipqf32 (vld1q_f32 (first), vld1q_f32 (second)); ++ float32x4_t res1 = result.val[0], res2 = result.val[1]; ++ float32_t exp1[] = {1, 5, 2, 6}; ++ float32_t exp2[] = {3, 7, 4, 8}; ++ float32x4_t expected1 = vld1q_f32 (exp1); ++ float32x4_t expected2 = vld1q_f32 (exp2); ++ ++ for (i = 0; i < 4; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_u32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_u32_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vextu32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++#include "ext_u32.x" ++ ++/* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?#\[0-9\]+\(?:.4)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_p8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_p8.x +@@ -0,0 +1,227 @@ ++extern void abort (void); ++ ++poly8x16_t ++test_vextq_p8_1 (poly8x16_t a, poly8x16_t b) ++{ ++ return vextq_p8 (a, b, 1); ++} ++ ++poly8x16_t ++test_vextq_p8_2 (poly8x16_t a, poly8x16_t b) ++{ ++ return vextq_p8 (a, b, 2); ++} ++ ++poly8x16_t ++test_vextq_p8_3 (poly8x16_t a, poly8x16_t b) ++{ ++ return vextq_p8 (a, b, 3); ++} ++ ++poly8x16_t ++test_vextq_p8_4 (poly8x16_t a, poly8x16_t b) ++{ ++ return vextq_p8 (a, b, 4); ++} ++ ++poly8x16_t ++test_vextq_p8_5 (poly8x16_t a, poly8x16_t b) ++{ ++ return vextq_p8 (a, b, 5); ++} ++ ++poly8x16_t ++test_vextq_p8_6 (poly8x16_t a, poly8x16_t b) ++{ ++ return vextq_p8 (a, b, 6); ++} ++ ++poly8x16_t ++test_vextq_p8_7 (poly8x16_t a, poly8x16_t b) ++{ ++ return vextq_p8 (a, b, 7); ++} ++ ++poly8x16_t ++test_vextq_p8_8 (poly8x16_t a, poly8x16_t b) ++{ ++ return vextq_p8 (a, b, 8); ++} ++ ++poly8x16_t ++test_vextq_p8_9 (poly8x16_t a, poly8x16_t b) ++{ ++ return vextq_p8 (a, b, 9); ++} ++ ++poly8x16_t ++test_vextq_p8_10 (poly8x16_t a, poly8x16_t b) ++{ ++ return vextq_p8 (a, b, 10); ++} ++ ++poly8x16_t ++test_vextq_p8_11 (poly8x16_t a, poly8x16_t b) ++{ ++ return vextq_p8 (a, b, 11); ++} ++ ++poly8x16_t ++test_vextq_p8_12 (poly8x16_t a, poly8x16_t b) ++{ ++ return vextq_p8 (a, b, 12); ++} ++ ++poly8x16_t ++test_vextq_p8_13 (poly8x16_t a, poly8x16_t b) ++{ ++ return vextq_p8 (a, b, 13); ++} ++ ++poly8x16_t ++test_vextq_p8_14 (poly8x16_t a, poly8x16_t b) ++{ ++ return vextq_p8 (a, b, 14); ++} ++ ++poly8x16_t ++test_vextq_p8_15 (poly8x16_t a, poly8x16_t b) ++{ ++ return vextq_p8 (a, b, 15); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ poly8_t arr1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; ++ poly8x16_t in1 = vld1q_p8 (arr1); ++ poly8_t arr2[] = ++ {16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}; ++ poly8x16_t in2 = vld1q_p8 (arr2); ++ poly8_t exp[16]; ++ poly8x16_t expected; ++ poly8x16_t actual = test_vextq_p8_1 (in1, in2); ++ ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 1; ++ expected = vld1q_p8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_p8_2 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 2; ++ expected = vld1q_p8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_p8_3 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 3; ++ expected = vld1q_p8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_p8_4 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 4; ++ expected = vld1q_p8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_p8_5 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 5; ++ expected = vld1q_p8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_p8_6 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 6; ++ expected = vld1q_p8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_p8_7 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 7; ++ expected = vld1q_p8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_p8_8 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 8; ++ expected = vld1q_p8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_p8_9 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 9; ++ expected = vld1q_p8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_p8_10 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 10; ++ expected = vld1q_p8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_p8_11 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 11; ++ expected = vld1q_p8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_p8_12 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 12; ++ expected = vld1q_p8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_p8_13 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 13; ++ expected = vld1q_p8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_p8_14 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 14; ++ expected = vld1q_p8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_p8_15 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 15; ++ expected = vld1q_p8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qs8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qs8.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++int8x16_t ++test_vrev64qs8 (int8x16_t _arg) ++{ ++ return vrev64q_s8 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int8x16_t inorder = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; ++ int8x16_t reversed = test_vrev64qs8 (inorder); ++ int8x16_t expected = {8, 7, 6, 5, 4, 3, 2, 1, 16, 15, 14, 13, 12, 11, 10, 9}; ++ ++ for (i = 0; i < 16; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16p8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16p8_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev16_p8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev16p8.x" ++ ++/* { dg-final { scan-assembler-times "rev16\[ \t\]+v\[0-9\]+.8b, ?v\[0-9\]+.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqs32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqs32_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vtrnq_s32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vtrnqs32.x" ++ ++/* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzps16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzps16.x +@@ -0,0 +1,26 @@ ++extern void abort (void); ++ ++int16x4x2_t ++test_vuzps16 (int16x4_t _a, int16x4_t _b) ++{ ++ return vuzp_s16 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int16_t first[] = {1, 2, 3, 4}; ++ int16_t second[] = {5, 6, 7, 8}; ++ int16x4x2_t result = test_vuzps16 (vld1_s16 (first), vld1_s16 (second)); ++ int16_t exp1[] = {1, 3, 5, 7}; ++ int16_t exp2[] = {2, 4, 6, 8}; ++ int16x4_t expect1 = vld1_s16 (exp1); ++ int16x4_t expect2 = vld1_s16 (exp2); ++ ++ for (i = 0; i < 4; i++) ++ if ((result.val[0][i] != expect1[i]) || (result.val[1][i] != expect2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpu16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpu16.x +@@ -0,0 +1,26 @@ ++extern void abort (void); ++ ++uint16x4x2_t ++test_vuzpu16 (uint16x4_t _a, uint16x4_t _b) ++{ ++ return vuzp_u16 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint16_t first[] = {1, 2, 3, 4}; ++ uint16_t second[] = {5, 6, 7, 8}; ++ uint16x4x2_t result = test_vuzpu16 (vld1_u16 (first), vld1_u16 (second)); ++ uint16_t exp1[] = {1, 3, 5, 7}; ++ uint16_t exp2[] = {2, 4, 6, 8}; ++ uint16x4_t expect1 = vld1_u16 (exp1); ++ uint16x4_t expect2 = vld1_u16 (exp2); ++ ++ for (i = 0; i < 4; i++) ++ if ((result.val[0][i] != expect1[i]) || (result.val[1][i] != expect2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnu8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnu8_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vtrn_u8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vtrnu8.x" ++ ++/* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnp8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnp8.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++poly8x8x2_t ++test_vtrnp8 (poly8x8_t _a, poly8x8_t _b) ++{ ++ return vtrn_p8 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ poly8_t first[] = {1, 2, 3, 4, 5, 6, 7, 8}; ++ poly8_t second[] = {9, 10, 11, 12, 13, 14, 15, 16}; ++ poly8x8x2_t result = test_vtrnp8 (vld1_p8 (first), vld1_p8 (second)); ++ poly8x8_t res1 = result.val[0], res2 = result.val[1]; ++ poly8_t exp1[] = {1, 9, 3, 11, 5, 13, 7, 15}; ++ poly8_t exp2[] = {2, 10, 4, 12, 6, 14, 8, 16}; ++ poly8x8_t expected1 = vld1_p8 (exp1); ++ poly8x8_t expected2 = vld1_p8 (exp2); ++ ++ for (i = 0; i < 8; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qs16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qs16.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++int16x8_t ++test_vrev32qs16 (int16x8_t _arg) ++{ ++ return vrev32q_s16 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int16x8_t inorder = {1, 2, 3, 4, 5, 6, 7, 8}; ++ int16x8_t reversed = test_vrev32qs16 (inorder); ++ int16x8_t expected = {2, 1, 4, 3, 6, 5, 8, 7}; ++ ++ for (i = 0; i < 8; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64f32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64f32_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev64_f32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev64f32.x" ++ ++/* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.2s, ?v\[0-9\]+.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzips8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzips8.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++int8x8x2_t ++test_vzips8 (int8x8_t _a, int8x8_t _b) ++{ ++ return vzip_s8 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int8_t first[] = {1, 2, 3, 4, 5, 6, 7, 8}; ++ int8_t second[] = {9, 10, 11, 12, 13, 14, 15, 16}; ++ int8x8x2_t result = test_vzips8 (vld1_s8 (first), vld1_s8 (second)); ++ int8x8_t res1 = result.val[0], res2 = result.val[1]; ++ int8_t exp1[] = {1, 9, 2, 10, 3, 11, 4, 12}; ++ int8_t exp2[] = {5, 13, 6, 14, 7, 15, 8, 16}; ++ int8x8_t expected1 = vld1_s8 (exp1); ++ int8x8_t expected2 = vld1_s8 (exp2); ++ ++ for (i = 0; i < 8; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_s32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_s32_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vextQs32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++#include "extq_s32.x" ++ ++/* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?#\[0-9\]+\(?:.4)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 3 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnf32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnf32.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++float32x2x2_t ++test_vtrnf32 (float32x2_t _a, float32x2_t _b) ++{ ++ return vtrn_f32 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ float32_t first[] = {1, 2}; ++ float32_t second[] = {3, 4}; ++ float32x2x2_t result = test_vtrnf32 (vld1_f32 (first), vld1_f32 (second)); ++ float32x2_t res1 = result.val[0], res2 = result.val[1]; ++ float32_t exp1[] = {1, 3}; ++ float32_t exp2[] = {2, 4}; ++ float32x2_t expected1 = vld1_f32 (exp1); ++ float32x2_t expected2 = vld1_f32 (exp2); ++ ++ for (i = 0; i < 2; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64u8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64u8_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev64_u8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev64u8.x" ++ ++/* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.8b, ?v\[0-9\]+.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qu16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qu16.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++uint16x8_t ++test_vrev32qu16 (uint16x8_t _arg) ++{ ++ return vrev32q_u16 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint16x8_t inorder = {1, 2, 3, 4, 5, 6, 7, 8}; ++ uint16x8_t reversed = test_vrev32qu16 (inorder); ++ uint16x8_t expected = {2, 1, 4, 3, 6, 5, 8, 7}; ++ ++ for (i = 0; i < 8; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qu16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qu16_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev64q_u16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev64qu16.x" ++ ++/* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.8h, ?v\[0-9\]+.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_s8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_s8_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vexts8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++#include "ext_s8.x" ++ ++/* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?#?\[0-9\]+\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 7 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16u8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16u8.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++uint8x8_t ++test_vrev16u8 (uint8x8_t _arg) ++{ ++ return vrev16_u8 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint8x8_t inorder = {1, 2, 3, 4, 5, 6, 7, 8}; ++ uint8x8_t reversed = test_vrev16u8 (inorder); ++ uint8x8_t expected = {2, 1, 4, 3, 6, 5, 8, 7}; ++ ++ for (i = 0; i < 8; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqs16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqs16_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vuzpq_s16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vuzpqs16.x" ++ ++/* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_s64.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_s64.x +@@ -0,0 +1,30 @@ ++extern void abort (void); ++ ++int64x2_t ++test_vextq_s64_1 (int64x2_t a, int64x2_t b) ++{ ++ return vextq_s64 (a, b, 1); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i, off; ++ int64_t arr1[] = {0, 1}; ++ int64x2_t in1 = vld1q_s64 (arr1); ++ int64_t arr2[] = {2, 3}; ++ int64x2_t in2 = vld1q_s64 (arr2); ++ int64_t exp[2]; ++ int64x2_t expected; ++ int64x2_t actual = test_vextq_s64_1 (in1, in2); ++ ++ for (i = 0; i < 2; i++) ++ exp[i] = i + 1; ++ expected = vld1q_s64 (exp); ++ for (i = 0; i < 2; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipp16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipp16.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++poly16x4x2_t ++test_vzipp16 (poly16x4_t _a, poly16x4_t _b) ++{ ++ return vzip_p16 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ poly16_t first[] = {1, 2, 3, 4}; ++ poly16_t second[] = {5, 6, 7, 8}; ++ poly16x4x2_t result = test_vzipp16 (vld1_p16 (first), vld1_p16 (second)); ++ poly16x4_t res1 = result.val[0], res2 = result.val[1]; ++ poly16_t exp1[] = {1, 5, 2, 6}; ++ poly16_t exp2[] = {3, 7, 4, 8}; ++ poly16x4_t expected1 = vld1_p16 (exp1); ++ poly16x4_t expected2 = vld1_p16 (exp2); ++ ++ for (i = 0; i < 4; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_u64.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_u64.x +@@ -0,0 +1,30 @@ ++extern void abort (void); ++ ++uint64x2_t ++test_vextq_u64_1 (uint64x2_t a, uint64x2_t b) ++{ ++ return vextq_u64 (a, b, 1); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i, off; ++ uint64_t arr1[] = {0, 1}; ++ uint64x2_t in1 = vld1q_u64 (arr1); ++ uint64_t arr2[] = {2, 3}; ++ uint64x2_t in2 = vld1q_u64 (arr2); ++ uint64_t exp[2]; ++ uint64x2_t expected; ++ uint64x2_t actual = test_vextq_u64_1 (in1, in2); ++ ++ for (i = 0; i < 2; i++) ++ exp[i] = i + 1; ++ expected = vld1q_u64 (exp); ++ for (i = 0; i < 2; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qu8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qu8_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev32q_u8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev32qu8.x" ++ ++/* { dg-final { scan-assembler-times "rev32\[ \t\]+v\[0-9\]+.16b, ?v\[0-9\]+.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64u16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64u16_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev64_u16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev64u16.x" ++ ++/* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.4h, ?v\[0-9\]+.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqs8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqs8.x +@@ -0,0 +1,29 @@ ++extern void abort (void); ++ ++int8x16x2_t ++test_vzipqs8 (int8x16_t _a, int8x16_t _b) ++{ ++ return vzipq_s8 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int8_t first[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; ++ int8_t second[] = ++ {17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}; ++ int8x16x2_t result = test_vzipqs8 (vld1q_s8 (first), vld1q_s8 (second)); ++ int8x16_t res1 = result.val[0], res2 = result.val[1]; ++ int8_t exp1[] = {1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23, 8, 24}; ++ int8_t exp2[] = ++ {9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31, 16, 32}; ++ int8x16_t expected1 = vld1q_s8 (exp1); ++ int8x16_t expected2 = vld1q_s8 (exp2); ++ ++ for (i = 0; i < 16; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqu8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqu8.x +@@ -0,0 +1,28 @@ ++extern void abort (void); ++ ++uint8x16x2_t ++test_vtrnqu8 (uint8x16_t _a, uint8x16_t _b) ++{ ++ return vtrnq_u8 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint8_t first[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; ++ uint8_t second[] = ++ {17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}; ++ uint8x16x2_t result = test_vtrnqu8 (vld1q_u8 (first), vld1q_u8 (second)); ++ uint8x16_t res1 = result.val[0], res2 = result.val[1]; ++ uint8_t exp1[] = {1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31}; ++ uint8_t exp2[] = {2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30, 16, 32}; ++ uint8x16_t expected1 = vld1q_u8 (exp1); ++ uint8x16_t expected2 = vld1q_u8 (exp2); ++ ++ for (i = 0; i < 16; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_s32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_s32.x +@@ -0,0 +1,30 @@ ++extern void abort (void); ++ ++int32x2_t ++test_vext_s32_1 (int32x2_t a, int32x2_t b) ++{ ++ return vext_s32 (a, b, 1); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i, off; ++ int32_t arr1[] = {0, 1}; ++ int32x2_t in1 = vld1_s32 (arr1); ++ int32_t arr2[] = {2, 3}; ++ int32x2_t in2 = vld1_s32 (arr2); ++ int32_t exp[2]; ++ int32x2_t expected; ++ int32x2_t actual = test_vext_s32_1 (in1, in2); ++ ++ for (i = 0; i < 2; i++) ++ exp[i] = i + 1; ++ expected = vld1_s32 (exp); ++ for (i = 0; i < 2; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzps16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzps16_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vuzp_s16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vuzps16.x" ++ ++/* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_u32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_u32.x +@@ -0,0 +1,30 @@ ++extern void abort (void); ++ ++uint32x2_t ++test_vext_u32_1 (uint32x2_t a, uint32x2_t b) ++{ ++ return vext_u32 (a, b, 1); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i, off; ++ uint32_t arr1[] = {0, 1}; ++ uint32x2_t in1 = vld1_u32 (arr1); ++ uint32_t arr2[] = {2, 3}; ++ uint32x2_t in2 = vld1_u32 (arr2); ++ uint32_t exp[2]; ++ uint32x2_t expected; ++ uint32x2_t actual = test_vext_u32_1 (in1, in2); ++ ++ for (i = 0; i < 2; i++) ++ exp[i] = i + 1; ++ expected = vld1_u32 (exp); ++ for (i = 0; i < 2; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqs8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqs8_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vuzpq_s8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vuzpqs8.x" ++ ++/* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_s8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_s8.x +@@ -0,0 +1,227 @@ ++extern void abort (void); ++ ++int8x16_t ++test_vextq_s8_1 (int8x16_t a, int8x16_t b) ++{ ++ return vextq_s8 (a, b, 1); ++} ++ ++int8x16_t ++test_vextq_s8_2 (int8x16_t a, int8x16_t b) ++{ ++ return vextq_s8 (a, b, 2); ++} ++ ++int8x16_t ++test_vextq_s8_3 (int8x16_t a, int8x16_t b) ++{ ++ return vextq_s8 (a, b, 3); ++} ++ ++int8x16_t ++test_vextq_s8_4 (int8x16_t a, int8x16_t b) ++{ ++ return vextq_s8 (a, b, 4); ++} ++ ++int8x16_t ++test_vextq_s8_5 (int8x16_t a, int8x16_t b) ++{ ++ return vextq_s8 (a, b, 5); ++} ++ ++int8x16_t ++test_vextq_s8_6 (int8x16_t a, int8x16_t b) ++{ ++ return vextq_s8 (a, b, 6); ++} ++ ++int8x16_t ++test_vextq_s8_7 (int8x16_t a, int8x16_t b) ++{ ++ return vextq_s8 (a, b, 7); ++} ++ ++int8x16_t ++test_vextq_s8_8 (int8x16_t a, int8x16_t b) ++{ ++ return vextq_s8 (a, b, 8); ++} ++ ++int8x16_t ++test_vextq_s8_9 (int8x16_t a, int8x16_t b) ++{ ++ return vextq_s8 (a, b, 9); ++} ++ ++int8x16_t ++test_vextq_s8_10 (int8x16_t a, int8x16_t b) ++{ ++ return vextq_s8 (a, b, 10); ++} ++ ++int8x16_t ++test_vextq_s8_11 (int8x16_t a, int8x16_t b) ++{ ++ return vextq_s8 (a, b, 11); ++} ++ ++int8x16_t ++test_vextq_s8_12 (int8x16_t a, int8x16_t b) ++{ ++ return vextq_s8 (a, b, 12); ++} ++ ++int8x16_t ++test_vextq_s8_13 (int8x16_t a, int8x16_t b) ++{ ++ return vextq_s8 (a, b, 13); ++} ++ ++int8x16_t ++test_vextq_s8_14 (int8x16_t a, int8x16_t b) ++{ ++ return vextq_s8 (a, b, 14); ++} ++ ++int8x16_t ++test_vextq_s8_15 (int8x16_t a, int8x16_t b) ++{ ++ return vextq_s8 (a, b, 15); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int8_t arr1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; ++ int8x16_t in1 = vld1q_s8 (arr1); ++ int8_t arr2[] = ++ {16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}; ++ int8x16_t in2 = vld1q_s8 (arr2); ++ int8_t exp[16]; ++ int8x16_t expected; ++ int8x16_t actual = test_vextq_s8_1 (in1, in2); ++ ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 1; ++ expected = vld1q_s8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_s8_2 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 2; ++ expected = vld1q_s8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_s8_3 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 3; ++ expected = vld1q_s8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_s8_4 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 4; ++ expected = vld1q_s8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_s8_5 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 5; ++ expected = vld1q_s8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_s8_6 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 6; ++ expected = vld1q_s8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_s8_7 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 7; ++ expected = vld1q_s8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_s8_8 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 8; ++ expected = vld1q_s8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_s8_9 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 9; ++ expected = vld1q_s8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_s8_10 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 10; ++ expected = vld1q_s8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_s8_11 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 11; ++ expected = vld1q_s8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_s8_12 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 12; ++ expected = vld1q_s8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_s8_13 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 13; ++ expected = vld1q_s8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_s8_14 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 14; ++ expected = vld1q_s8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_s8_15 (in1, in2); ++ for (i = 0; i < 16; i++) ++ exp[i] = i + 15; ++ expected = vld1q_s8 (exp); ++ for (i = 0; i < 16; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_f64_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_f64_1.c +@@ -0,0 +1,36 @@ ++/* Test the `vextq_f64' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++extern void abort (void); ++#include ++ ++float64x2_t ++test_vextq_f64_1 (float64x2_t a, float64x2_t b) ++{ ++ return vextq_f64 (a, b, 1); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i, off; ++ float64_t arr1[] = {0, 1}; ++ float64x2_t in1 = vld1q_f64 (arr1); ++ float64_t arr2[] = {2, 3}; ++ float64x2_t in2 = vld1q_f64 (arr2); ++ float64_t exp[] = {1, 2}; ++ float64x2_t expected = vld1q_f64 (exp); ++ float64x2_t actual = test_vextq_f64_1 (in1, in2); ++ ++ for (i = 0; i < 2; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?#\[0-9\]+\(?:.8\)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vpaddd_f64.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vpaddd_f64.c +@@ -0,0 +1,27 @@ ++/* Test the vpaddd_f64 AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3" } */ ++ ++#include "arm_neon.h" ++ ++#define SIZE 6 ++ ++extern void abort (void); ++ ++float64_t in[SIZE] = { -4.0, 4.0, -2.0, 2.0, -1.0, 1.0 }; ++ ++int ++main (void) ++{ ++ int i; ++ ++ for (i = 0; i < SIZE / 2; ++i) ++ if (vpaddd_f64 (vld1q_f64 (in + 2 * i)) != 0.0) ++ abort (); ++ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler "faddp\[ \t\]+\[dD\]\[0-9\]+, v\[0-9\].2d+\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qs16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qs16_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev32q_s16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev32qs16.x" ++ ++/* { dg-final { scan-assembler-times "rev32\[ \t\]+v\[0-9\]+.8h, ?v\[0-9\]+.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqs16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqs16_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vzipq_s16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vzipqs16.x" ++ ++/* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipf32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipf32_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vzip_f32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vzipf32.x" ++ ++/* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16p8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16p8.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++poly8x8_t ++test_vrev16p8 (poly8x8_t _arg) ++{ ++ return vrev16_p8 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ poly8x8_t inorder = {1, 2, 3, 4, 5, 6, 7, 8}; ++ poly8x8_t reversed = test_vrev16p8 (inorder); ++ poly8x8_t expected = {2, 1, 4, 3, 6, 5, 8, 7}; ++ ++ for (i = 0; i < 8; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16u8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16u8_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev16_u8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev16u8.x" ++ ++/* { dg-final { scan-assembler-times "rev16\[ \t\]+v\[0-9\]+.8b, ?v\[0-9\]+.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_p8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_p8_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vextp8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++#include "ext_p8.x" ++ ++/* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?#?\[0-9\]+\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 7 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrns8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrns8.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++int8x8x2_t ++test_vtrns8 (int8x8_t _a, int8x8_t _b) ++{ ++ return vtrn_s8 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int8_t first[] = {1, 2, 3, 4, 5, 6, 7, 8}; ++ int8_t second[] = {9, 10, 11, 12, 13, 14, 15, 16}; ++ int8x8x2_t result = test_vtrns8 (vld1_s8 (first), vld1_s8 (second)); ++ int8x8_t res1 = result.val[0], res2 = result.val[1]; ++ int8_t exp1[] = {1, 9, 3, 11, 5, 13, 7, 15}; ++ int8_t exp2[] = {2, 10, 4, 12, 6, 14, 8, 16}; ++ int8x8_t expected1 = vld1_s8 (exp1); ++ int8x8_t expected2 = vld1_s8 (exp2); ++ ++ for (i = 0; i < 8; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqs16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqs16.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++int16x8x2_t ++test_vtrnqs16 (int16x8_t _a, int16x8_t _b) ++{ ++ return vtrnq_s16 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int16_t first[] = {1, 2, 3, 4, 5, 6, 7, 8}; ++ int16_t second[] = {9, 10, 11, 12, 13, 14, 15, 16}; ++ int16x8x2_t result = test_vtrnqs16 (vld1q_s16 (first), vld1q_s16 (second)); ++ int16x8_t res1 = result.val[0], res2 = result.val[1]; ++ int16_t exp1[] = {1, 9, 3, 11, 5, 13, 7, 15}; ++ int16_t exp2[] = {2, 10, 4, 12, 6, 14, 8, 16}; ++ int16x8_t expected1 = vld1q_s16 (exp1); ++ int16x8_t expected2 = vld1q_s16 (exp2); ++ ++ for (i = 0; i < 8; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqu16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqu16.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++uint16x8x2_t ++test_vtrnqu16 (uint16x8_t _a, uint16x8_t _b) ++{ ++ return vtrnq_u16 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint16_t first[] = {1, 2, 3, 4, 5, 6, 7, 8}; ++ uint16_t second[] = {9, 10, 11, 12, 13, 14, 15, 16}; ++ uint16x8x2_t result = test_vtrnqu16 (vld1q_u16 (first), vld1q_u16 (second)); ++ uint16x8_t res1 = result.val[0], res2 = result.val[1]; ++ uint16_t exp1[] = {1, 9, 3, 11, 5, 13, 7, 15}; ++ uint16_t exp2[] = {2, 10, 4, 12, 6, 14, 8, 16}; ++ uint16x8_t expected1 = vld1q_u16 (exp1); ++ uint16x8_t expected2 = vld1q_u16 (exp2); ++ ++ for (i = 0; i < 8; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_p16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_p16.x +@@ -0,0 +1,114 @@ ++extern void abort (void); ++ ++poly16x8_t ++test_vextq_p16_1 (poly16x8_t a, poly16x8_t b) ++{ ++ return vextq_p16 (a, b, 1); ++} ++ ++poly16x8_t ++test_vextq_p16_2 (poly16x8_t a, poly16x8_t b) ++{ ++ return vextq_p16 (a, b, 2); ++} ++ ++poly16x8_t ++test_vextq_p16_3 (poly16x8_t a, poly16x8_t b) ++{ ++ return vextq_p16 (a, b, 3); ++} ++ ++poly16x8_t ++test_vextq_p16_4 (poly16x8_t a, poly16x8_t b) ++{ ++ return vextq_p16 (a, b, 4); ++} ++ ++poly16x8_t ++test_vextq_p16_5 (poly16x8_t a, poly16x8_t b) ++{ ++ return vextq_p16 (a, b, 5); ++} ++ ++poly16x8_t ++test_vextq_p16_6 (poly16x8_t a, poly16x8_t b) ++{ ++ return vextq_p16 (a, b, 6); ++} ++ ++poly16x8_t ++test_vextq_p16_7 (poly16x8_t a, poly16x8_t b) ++{ ++ return vextq_p16 (a, b, 7); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i, off; ++ poly16_t arr1[] = {0, 1, 2, 3, 4, 5, 6, 7}; ++ poly16x8_t in1 = vld1q_p16 (arr1); ++ poly16_t arr2[] = {8, 9, 10, 11, 12, 13, 14, 15}; ++ poly16x8_t in2 = vld1q_p16 (arr2); ++ poly16_t exp[8]; ++ poly16x8_t expected; ++ poly16x8_t actual = test_vextq_p16_1 (in1, in2); ++ ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 1; ++ expected = vld1q_p16 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_p16_2 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 2; ++ expected = vld1q_p16 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_p16_3 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 3; ++ expected = vld1q_p16 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_p16_4 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 4; ++ expected = vld1q_p16 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_p16_5 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 5; ++ expected = vld1q_p16 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_p16_6 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 6; ++ expected = vld1q_p16 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_p16_7 (in1, in2); ++ for (i = 0; i < 8; i++) ++ exp[i] = i + 7; ++ expected = vld1q_p16 (exp); ++ for (i = 0; i < 8; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qs16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qs16.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++int16x8_t ++test_vrev64qs16 (int16x8_t _arg) ++{ ++ return vrev64q_s16 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int16x8_t inorder = {1, 2, 3, 4, 5, 6, 7, 8}; ++ int16x8_t reversed = test_vrev64qs16 (inorder); ++ int16x8_t expected = {4, 3, 2, 1, 8, 7, 6, 5}; ++ ++ for (i = 0; i < 8; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qu16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qu16.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++uint16x8_t ++test_vrev64qu16 (uint16x8_t _arg) ++{ ++ return vrev64q_u16 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint16x8_t inorder = {1, 2, 3, 4, 5, 6, 7, 8}; ++ uint16x8_t reversed = test_vrev64qu16 (inorder); ++ uint16x8_t expected = {4, 3, 2, 1, 8, 7, 6, 5}; ++ ++ for (i = 0; i < 8; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64u8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64u8.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++uint8x8_t ++test_vrev64u8 (uint8x8_t _arg) ++{ ++ return vrev64_u8 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint8x8_t inorder = {1, 2, 3, 4, 5, 6, 7, 8}; ++ uint8x8_t reversed = test_vrev64u8 (inorder); ++ uint8x8_t expected = {8, 7, 6, 5, 4, 3, 2, 1}; ++ ++ for (i = 0; i < 8; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqp16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqp16.x +@@ -0,0 +1,26 @@ ++extern void abort (void); ++ ++poly16x8x2_t ++test_vuzpqp16 (poly16x8_t _a, poly16x8_t _b) ++{ ++ return vuzpq_p16 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ poly16_t first[] = {1, 2, 3, 4, 5, 6, 7, 8}; ++ poly16_t second[] = {9, 10, 11, 12, 13, 14, 15, 16}; ++ poly16x8x2_t result = test_vuzpqp16 (vld1q_p16 (first), vld1q_p16 (second)); ++ poly16_t exp1[] = {1, 3, 5, 7, 9, 11, 13, 15}; ++ poly16_t exp2[] = {2, 4, 6, 8, 10, 12, 14, 16}; ++ poly16x8_t expect1 = vld1q_p16 (exp1); ++ poly16x8_t expect2 = vld1q_p16 (exp2); ++ ++ for (i = 0; i < 8; i++) ++ if ((result.val[0][i] != expect1[i]) || (result.val[1][i] != expect2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrns16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrns16_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vtrn_s16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vtrns16.x" ++ ++/* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpf32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpf32.x +@@ -0,0 +1,26 @@ ++extern void abort (void); ++ ++float32x2x2_t ++test_vuzpf32 (float32x2_t _a, float32x2_t _b) ++{ ++ return vuzp_f32 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ float32_t first[] = {1, 2}; ++ float32_t second[] = {3, 4}; ++ float32x2x2_t result = test_vuzpf32 (vld1_f32 (first), vld1_f32 (second)); ++ float32_t exp1[] = {1, 3}; ++ float32_t exp2[] = {2, 4}; ++ float32x2_t expect1 = vld1_f32 (exp1); ++ float32x2_t expect2 = vld1_f32 (exp2); ++ ++ for (i = 0; i < 2; i++) ++ if ((result.val[0][i] != expect1[i]) || (result.val[1][i] != expect2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipu16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipu16_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vzip_u16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vzipu16.x" ++ ++/* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqf32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqf32_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vtrnq_f32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vtrnqf32.x" ++ ++/* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqs8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqs8_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vtrnq_s8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vtrnqs8.x" ++ ++/* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqp8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqp8.x +@@ -0,0 +1,28 @@ ++extern void abort (void); ++ ++poly8x16x2_t ++test_vtrnqp8 (poly8x16_t _a, poly8x16_t _b) ++{ ++ return vtrnq_p8 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ poly8_t first[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; ++ poly8_t second[] = ++ {17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}; ++ poly8x16x2_t result = test_vtrnqp8 (vld1q_p8 (first), vld1q_p8 (second)); ++ poly8x16_t res1 = result.val[0], res2 = result.val[1]; ++ poly8_t exp1[] = {1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31}; ++ poly8_t exp2[] = {2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30, 16, 32}; ++ poly8x16_t expected1 = vld1q_p8 (exp1); ++ poly8x16_t expected2 = vld1q_p8 (exp2); ++ ++ for (i = 0; i < 16; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64s32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64s32.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++int32x2_t ++test_vrev64s32 (int32x2_t _arg) ++{ ++ return vrev64_s32 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int32x2_t inorder = {1, 2}; ++ int32x2_t reversed = test_vrev64s32 (inorder); ++ int32x2_t expected = {2, 1}; ++ ++ for (i = 0; i < 2; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_s16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_s16_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vexts16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++#include "ext_s16.x" ++ ++/* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?#\[0-9\]+\(?:.2\)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 3 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qu8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qu8.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++uint8x16_t ++test_vrev32qu8 (uint8x16_t _arg) ++{ ++ return vrev32q_u8 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint8x16_t inorder = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; ++ uint8x16_t reversed = test_vrev32qu8 (inorder); ++ uint8x16_t expected = {4, 3, 2, 1, 8, 7, 6, 5, 12, 11, 10, 9, 16, 15, 14, 13}; ++ ++ for (i = 0; i < 16; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64u32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64u32.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++uint32x2_t ++test_vrev64u32 (uint32x2_t _arg) ++{ ++ return vrev64_u32 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint32x2_t inorder = {1, 2}; ++ uint32x2_t reversed = test_vrev64u32 (inorder); ++ uint32x2_t expected = {2, 1}; ++ ++ for (i = 0; i < 2; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_f32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_f32_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vextQf32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++#include "extq_f32.x" ++ ++/* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?#\[0-9\]+\(?:.4)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 3 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16qu8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16qu8.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++uint8x16_t ++test_vrev16qu8 (uint8x16_t _arg) ++{ ++ return vrev16q_u8 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint8x16_t inorder = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; ++ uint8x16_t reversed = test_vrev16qu8 (inorder); ++ uint8x16_t expected = {2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15}; ++ ++ for (i = 0; i < 16; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqp8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqp8_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vuzpq_p8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vuzpqp8.x" ++ ++/* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qp16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qp16_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev64q_p16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev64qp16.x" ++ ++/* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.8h, ?v\[0-9\]+.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqp16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqp16.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++poly16x8x2_t ++test_vzipqp16 (poly16x8_t _a, poly16x8_t _b) ++{ ++ return vzipq_p16 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ poly16_t first[] = {1, 2, 3, 4, 5, 6, 7, 8}; ++ poly16_t second[] = {9, 10, 11, 12, 13, 14, 15, 16}; ++ poly16x8x2_t result = test_vzipqp16 (vld1q_p16 (first), vld1q_p16 (second)); ++ poly16x8_t res1 = result.val[0], res2 = result.val[1]; ++ poly16_t exp1[] = {1, 9, 2, 10, 3, 11, 4, 12}; ++ poly16_t exp2[] = {5, 13, 6, 14, 7, 15, 8, 16}; ++ poly16x8_t expected1 = vld1q_p16 (exp1); ++ poly16x8_t expected2 = vld1q_p16 (exp2); ++ ++ for (i = 0; i < 8; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqu16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqu16_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vtrnq_u16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vtrnqu16.x" ++ ++/* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qu32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qu32_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev64q_u32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev64qu32.x" ++ ++/* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.4s, ?v\[0-9\]+.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqu8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqu8.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++uint8x16x2_t ++test_vuzpqu8 (uint8x16_t _a, uint8x16_t _b) ++{ ++ return vuzpq_u8 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint8_t first[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; ++ uint8_t second[] = ++ {17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}; ++ uint8x16x2_t result = test_vuzpqu8 (vld1q_u8 (first), vld1q_u8 (second)); ++ uint8_t exp1[] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}; ++ uint8_t exp2[] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32}; ++ uint8x16_t expect1 = vld1q_u8 (exp1); ++ uint8x16_t expect2 = vld1q_u8 (exp2); ++ ++ for (i = 0; i < 16; i++) ++ if ((result.val[0][i] != expect1[i]) || (result.val[1][i] != expect2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64p8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64p8.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++poly8x8_t ++test_vrev64p8 (poly8x8_t _arg) ++{ ++ return vrev64_p8 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ poly8x8_t inorder = {1, 2, 3, 4, 5, 6, 7, 8}; ++ poly8x8_t reversed = test_vrev64p8 (inorder); ++ poly8x8_t expected = {8, 7, 6, 5, 4, 3, 2, 1}; ++ ++ for (i = 0; i < 8; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32u8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32u8.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++uint8x8_t ++test_vrev32u8 (uint8x8_t _arg) ++{ ++ return vrev32_u8 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint8x8_t inorder = {1, 2, 3, 4, 5, 6, 7, 8}; ++ uint8x8_t reversed = test_vrev32u8 (inorder); ++ uint8x8_t expected = {4, 3, 2, 1, 8, 7, 6, 5}; ++ ++ for (i = 0; i < 8; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16s8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16s8.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++int8x8_t ++test_vrev16s8 (int8x8_t _arg) ++{ ++ return vrev16_s8 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int8x8_t inorder = {1, 2, 3, 4, 5, 6, 7, 8}; ++ int8x8_t reversed = test_vrev16s8 (inorder); ++ int8x8_t expected = {2, 1, 4, 3, 6, 5, 8, 7}; ++ ++ for (i = 0; i < 8; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_u8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_u8_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vextu8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++#include "ext_u8.x" ++ ++/* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?#?\[0-9\]+\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 7 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_u16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_u16_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vextQu16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++#include "extq_u16.x" ++ ++/* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?#\[0-9\]+\(?:.2\)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 7 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/int_comparisons.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/int_comparisons.x +@@ -0,0 +1,68 @@ ++/* test_vcXXX wrappers for all the vcXXX (vector compare) and vtst intrinsics ++ in arm_neon.h (excluding the 64x1 variants as these generally produce scalar ++ not vector ops). */ ++#include "arm_neon.h" ++ ++#define DONT_FORCE(X) ++ ++#define FORCE_SIMD(V1) asm volatile ("mov %d0, %1.d[0]" \ ++ : "=w"(V1) \ ++ : "w"(V1) \ ++ : /* No clobbers */); ++ ++#define OP1(SIZE, OP, BASETYPE, SUFFIX, FORCE) uint##SIZE##_t \ ++test_v##OP##SUFFIX (BASETYPE##SIZE##_t a) \ ++{ \ ++ uint##SIZE##_t res; \ ++ FORCE (a); \ ++ res = v##OP##SUFFIX (a); \ ++ FORCE (res); \ ++ return res; \ ++} ++ ++#define OP2(SIZE, OP, BASETYPE, SUFFIX, FORCE) uint##SIZE##_t \ ++test_v##OP##SUFFIX (BASETYPE##SIZE##_t a, BASETYPE##SIZE##_t b) \ ++{ \ ++ uint##SIZE##_t res; \ ++ FORCE (a); \ ++ FORCE (b); \ ++ res = v##OP##SUFFIX (a, b); \ ++ FORCE (res); \ ++ return res; \ ++} ++ ++#define UNSIGNED_OPS(SIZE, BASETYPE, SUFFIX, FORCE) \ ++OP2 (SIZE, tst, BASETYPE, SUFFIX, FORCE) \ ++OP1 (SIZE, ceqz, BASETYPE, SUFFIX, FORCE) \ ++OP2 (SIZE, ceq, BASETYPE, SUFFIX, FORCE) \ ++OP2 (SIZE, cge, BASETYPE, SUFFIX, FORCE) \ ++OP2 (SIZE, cgt, BASETYPE, SUFFIX, FORCE) \ ++OP2 (SIZE, cle, BASETYPE, SUFFIX, FORCE) \ ++OP2 (SIZE, clt, BASETYPE, SUFFIX, FORCE) ++ ++#define ALL_OPS(SIZE, BASETYPE, SUFFIX, FORCE) \ ++OP1 (SIZE, cgez, BASETYPE, SUFFIX, FORCE) \ ++OP1 (SIZE, cgtz, BASETYPE, SUFFIX, FORCE) \ ++OP1 (SIZE, clez, BASETYPE, SUFFIX, FORCE) \ ++OP1 (SIZE, cltz, BASETYPE, SUFFIX, FORCE) \ ++UNSIGNED_OPS (SIZE, BASETYPE, SUFFIX, FORCE) ++ ++ALL_OPS (8x8, int, _s8, DONT_FORCE) ++ALL_OPS (16x4, int, _s16, DONT_FORCE) ++ALL_OPS (32x2, int, _s32, DONT_FORCE) ++ALL_OPS (64x1, int, _s64, DONT_FORCE) ++ALL_OPS (64, int, d_s64, FORCE_SIMD) ++ALL_OPS (8x16, int, q_s8, DONT_FORCE) ++ALL_OPS (16x8, int, q_s16, DONT_FORCE) ++ALL_OPS (32x4, int, q_s32, DONT_FORCE) ++ALL_OPS (64x2, int, q_s64, DONT_FORCE) ++UNSIGNED_OPS (8x8, uint, _u8, DONT_FORCE) ++UNSIGNED_OPS (16x4, uint, _u16, DONT_FORCE) ++UNSIGNED_OPS (32x2, uint, _u32, DONT_FORCE) ++UNSIGNED_OPS (64x1, uint, _u64, DONT_FORCE) ++UNSIGNED_OPS (64, uint, d_u64, FORCE_SIMD) ++UNSIGNED_OPS (8x16, uint, q_u8, DONT_FORCE) ++UNSIGNED_OPS (16x8, uint, q_u16, DONT_FORCE) ++UNSIGNED_OPS (32x4, uint, q_u32, DONT_FORCE) ++UNSIGNED_OPS (64x2, uint, q_u64, DONT_FORCE) ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqs32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqs32_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vuzpq_s32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vuzpqs32.x" ++ ++/* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzps8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzps8_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vuzp_s8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vuzps8.x" ++ ++/* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqp8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqp8_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vtrnq_p8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vtrnqp8.x" ++ ++/* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64p16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64p16_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev64_p16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev64p16.x" ++ ++/* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.4h, ?v\[0-9\]+.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32u16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32u16_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev32_u16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev32u16.x" ++ ++/* { dg-final { scan-assembler-times "rev32\[ \t\]+v\[0-9\]+.4h, ?v\[0-9\]+.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qp8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qp8.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++poly8x16_t ++test_vrev32qp8 (poly8x16_t _arg) ++{ ++ return vrev32q_p8 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ poly8x16_t inorder = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; ++ poly8x16_t reversed = test_vrev32qp8 (inorder); ++ poly8x16_t expected = {4, 3, 2, 1, 8, 7, 6, 5, 12, 11, 10, 9, 16, 15, 14, 13}; ++ ++ for (i = 0; i < 16; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16qs8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16qs8_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev16q_s8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev16qs8.x" ++ ++/* { dg-final { scan-assembler-times "rev16\[ \t\]+v\[0-9\]+.16b, ?v\[0-9\]+.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnp16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnp16.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++poly16x4x2_t ++test_vtrnp16 (poly16x4_t _a, poly16x4_t _b) ++{ ++ return vtrn_p16 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ poly16_t first[] = {1, 2, 3, 4}; ++ poly16_t second[] = {5, 6, 7, 8}; ++ poly16x4x2_t result = test_vtrnp16 (vld1_p16 (first), vld1_p16 (second)); ++ poly16x4_t res1 = result.val[0], res2 = result.val[1]; ++ poly16_t exp1[] = {1, 5, 3, 7}; ++ poly16_t exp2[] = {2, 6, 4, 8}; ++ poly16x4_t expected1 = vld1_p16 (exp1); ++ poly16x4_t expected2 = vld1_p16 (exp2); ++ ++ for (i = 0; i < 4; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzips32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzips32.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++int32x2x2_t ++test_vzips32 (int32x2_t _a, int32x2_t _b) ++{ ++ return vzip_s32 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int32_t first[] = {1, 2}; ++ int32_t second[] = {3, 4}; ++ int32x2x2_t result = test_vzips32 (vld1_s32 (first), vld1_s32 (second)); ++ int32x2_t res1 = result.val[0], res2 = result.val[1]; ++ int32_t exp1[] = {1, 3}; ++ int32_t exp2[] = {2, 4}; ++ int32x2_t expected1 = vld1_s32 (exp1); ++ int32x2_t expected2 = vld1_s32 (exp2); ++ ++ for (i = 0; i < 2; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64u32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64u32_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev64_u32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev64u32.x" ++ ++/* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.2s, ?v\[0-9\]+.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16qp8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16qp8.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++poly8x16_t ++test_vrev16qp8 (poly8x16_t _arg) ++{ ++ return vrev16q_p8 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ poly8x16_t inorder = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; ++ poly8x16_t reversed = test_vrev16qp8 (inorder); ++ poly8x16_t expected = {2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15}; ++ ++ for (i = 0; i < 16; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipu32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipu32.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++uint32x2x2_t ++test_vzipu32 (uint32x2_t _a, uint32x2_t _b) ++{ ++ return vzip_u32 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint32_t first[] = {1, 2}; ++ uint32_t second[] = {3, 4}; ++ uint32x2x2_t result = test_vzipu32 (vld1_u32 (first), vld1_u32 (second)); ++ uint32x2_t res1 = result.val[0], res2 = result.val[1]; ++ uint32_t exp1[] = {1, 3}; ++ uint32_t exp2[] = {2, 4}; ++ uint32x2_t expected1 = vld1_u32 (exp1); ++ uint32x2_t expected2 = vld1_u32 (exp2); ++ ++ for (i = 0; i < 2; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqf32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqf32.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++float32x4x2_t ++test_vtrnqf32 (float32x4_t _a, float32x4_t _b) ++{ ++ return vtrnq_f32 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ float32_t first[] = {1, 2, 3, 4}; ++ float32_t second[] = {5, 6, 7, 8}; ++ float32x4x2_t result = test_vtrnqf32 (vld1q_f32 (first), vld1q_f32 (second)); ++ float32x4_t res1 = result.val[0], res2 = result.val[1]; ++ float32_t exp1[] = {1, 5, 3, 7}; ++ float32_t exp2[] = {2, 6, 4, 8}; ++ float32x4_t expected1 = vld1q_f32 (exp1); ++ float32x4_t expected2 = vld1q_f32 (exp2); ++ ++ for (i = 0; i < 4; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqs8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqs8.x +@@ -0,0 +1,28 @@ ++extern void abort (void); ++ ++int8x16x2_t ++test_vtrnqs8 (int8x16_t _a, int8x16_t _b) ++{ ++ return vtrnq_s8 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int8_t first[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; ++ int8_t second[] = ++ {17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}; ++ int8x16x2_t result = test_vtrnqs8 (vld1q_s8 (first), vld1q_s8 (second)); ++ int8x16_t res1 = result.val[0], res2 = result.val[1]; ++ int8_t exp1[] = {1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31}; ++ int8_t exp2[] = {2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30, 16, 32}; ++ int8x16_t expected1 = vld1q_s8 (exp1); ++ int8x16_t expected2 = vld1q_s8 (exp2); ++ ++ for (i = 0; i < 16; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_s64_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_s64_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vexts64' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++#include "ext_s64.x" ++ ++/* Do not scan-assembler. An EXT instruction could be emitted, but would merely ++ return its first argument, so it is legitimate to optimize it out. */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzps32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzps32_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vuzp_s32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vuzps32.x" ++ ++/* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qf32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qf32.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++float32x4_t ++test_vrev64qf32 (float32x4_t _arg) ++{ ++ return vrev64q_f32 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ float32x4_t inorder = {1, 2, 3, 4}; ++ float32x4_t reversed = test_vrev64qf32 (inorder); ++ float32x4_t expected = {2, 1, 4, 3}; ++ ++ for (i = 0; i < 4; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_s16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_s16.x +@@ -0,0 +1,58 @@ ++extern void abort (void); ++ ++int16x4_t ++test_vext_s16_1 (int16x4_t a, int16x4_t b) ++{ ++ return vext_s16 (a, b, 1); ++} ++ ++int16x4_t ++test_vext_s16_2 (int16x4_t a, int16x4_t b) ++{ ++ return vext_s16 (a, b, 2); ++} ++ ++int16x4_t ++test_vext_s16_3 (int16x4_t a, int16x4_t b) ++{ ++ return vext_s16 (a, b, 3); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i, off; ++ int16_t arr1[] = {0, 1, 2, 3}; ++ int16x4_t in1 = vld1_s16 (arr1); ++ int16_t arr2[] = {4, 5, 6, 7}; ++ int16x4_t in2 = vld1_s16 (arr2); ++ int16_t exp[4]; ++ int16x4_t expected; ++ int16x4_t actual = test_vext_s16_1 (in1, in2); ++ ++ for (i = 0; i < 4; i++) ++ exp[i] = i + 1; ++ expected = vld1_s16 (exp); ++ for (i = 0; i < 4; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vext_s16_2 (in1, in2); ++ for (i = 0; i < 4; i++) ++ exp[i] = i + 2; ++ expected = vld1_s16 (exp); ++ for (i = 0; i < 4; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vext_s16_3 (in1, in2); ++ for (i = 0; i < 4; i++) ++ exp[i] = i + 3; ++ expected = vld1_s16 (exp); ++ for (i = 0; i < 4; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_u16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_u16.x +@@ -0,0 +1,58 @@ ++extern void abort (void); ++ ++uint16x4_t ++test_vext_u16_1 (uint16x4_t a, uint16x4_t b) ++{ ++ return vext_u16 (a, b, 1); ++} ++ ++uint16x4_t ++test_vext_u16_2 (uint16x4_t a, uint16x4_t b) ++{ ++ return vext_u16 (a, b, 2); ++} ++ ++uint16x4_t ++test_vext_u16_3 (uint16x4_t a, uint16x4_t b) ++{ ++ return vext_u16 (a, b, 3); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i, off; ++ uint16_t arr1[] = {0, 1, 2, 3}; ++ uint16x4_t in1 = vld1_u16 (arr1); ++ uint16_t arr2[] = {4, 5, 6, 7}; ++ uint16x4_t in2 = vld1_u16 (arr2); ++ uint16_t exp[4]; ++ uint16x4_t expected; ++ uint16x4_t actual = test_vext_u16_1 (in1, in2); ++ ++ for (i = 0; i < 4; i++) ++ exp[i] = i + 1; ++ expected = vld1_u16 (exp); ++ for (i = 0; i < 4; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vext_u16_2 (in1, in2); ++ for (i = 0; i < 4; i++) ++ exp[i] = i + 2; ++ expected = vld1_u16 (exp); ++ for (i = 0; i < 4; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vext_u16_3 (in1, in2); ++ for (i = 0; i < 4; i++) ++ exp[i] = i + 3; ++ expected = vld1_u16 (exp); ++ for (i = 0; i < 4; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqs32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqs32_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vzipq_s32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vzipqs32.x" ++ ++/* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqp8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqp8.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++poly8x16x2_t ++test_vuzpqp8 (poly8x16_t _a, poly8x16_t _b) ++{ ++ return vuzpq_p8 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ poly8_t first[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; ++ poly8_t second[] = ++ {17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}; ++ poly8x16x2_t result = test_vuzpqp8 (vld1q_p8 (first), vld1q_p8 (second)); ++ poly8_t exp1[] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}; ++ poly8_t exp2[] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32}; ++ poly8x16_t expect1 = vld1q_p8 (exp1); ++ poly8x16_t expect2 = vld1q_p8 (exp2); ++ ++ for (i = 0; i < 16; i++) ++ if ((result.val[0][i] != expect1[i]) || (result.val[1][i] != expect2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqu8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqu8_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vuzpq_u8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vuzpqu8.x" ++ ++/* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzips8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzips8_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vzip_s8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vzips8.x" ++ ++/* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32p8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32p8.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++poly8x8_t ++test_vrev32p8 (poly8x8_t _arg) ++{ ++ return vrev32_p8 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ poly8x8_t inorder = {1, 2, 3, 4, 5, 6, 7, 8}; ++ poly8x8_t reversed = test_vrev32p8 (inorder); ++ poly8x8_t expected = {4, 3, 2, 1, 8, 7, 6, 5}; ++ ++ for (i = 0; i < 8; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64s8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64s8.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++int8x8_t ++test_vrev64s8 (int8x8_t _arg) ++{ ++ return vrev64_s8 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int8x8_t inorder = {1, 2, 3, 4, 5, 6, 7, 8}; ++ int8x8_t reversed = test_vrev64s8 (inorder); ++ int8x8_t expected = {8, 7, 6, 5, 4, 3, 2, 1}; ++ ++ for (i = 0; i < 8; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpp8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpp8_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vuzp_p8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vuzpp8.x" ++ ++/* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_s32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_s32.x +@@ -0,0 +1,58 @@ ++extern void abort (void); ++ ++int32x4_t ++test_vextq_s32_1 (int32x4_t a, int32x4_t b) ++{ ++ return vextq_s32 (a, b, 1); ++} ++ ++int32x4_t ++test_vextq_s32_2 (int32x4_t a, int32x4_t b) ++{ ++ return vextq_s32 (a, b, 2); ++} ++ ++int32x4_t ++test_vextq_s32_3 (int32x4_t a, int32x4_t b) ++{ ++ return vextq_s32 (a, b, 3); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i, off; ++ int32_t arr1[] = {0, 1, 2, 3}; ++ int32x4_t in1 = vld1q_s32 (arr1); ++ int32_t arr2[] = {4, 5, 6, 7}; ++ int32x4_t in2 = vld1q_s32 (arr2); ++ int32_t exp[4]; ++ int32x4_t expected; ++ int32x4_t actual = test_vextq_s32_1 (in1, in2); ++ ++ for (i = 0; i < 4; i++) ++ exp[i] = i + 1; ++ expected = vld1q_s32 (exp); ++ for (i = 0; i < 4; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_s32_2 (in1, in2); ++ for (i = 0; i < 4; i++) ++ exp[i] = i + 2; ++ expected = vld1q_s32 (exp); ++ for (i = 0; i < 4; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_s32_3 (in1, in2); ++ for (i = 0; i < 4; i++) ++ exp[i] = i + 3; ++ expected = vld1q_s32 (exp); ++ for (i = 0; i < 4; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_u32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_u32.x +@@ -0,0 +1,58 @@ ++extern void abort (void); ++ ++uint32x4_t ++test_vextq_u32_1 (uint32x4_t a, uint32x4_t b) ++{ ++ return vextq_u32 (a, b, 1); ++} ++ ++uint32x4_t ++test_vextq_u32_2 (uint32x4_t a, uint32x4_t b) ++{ ++ return vextq_u32 (a, b, 2); ++} ++ ++uint32x4_t ++test_vextq_u32_3 (uint32x4_t a, uint32x4_t b) ++{ ++ return vextq_u32 (a, b, 3); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i, off; ++ uint32_t arr1[] = {0, 1, 2, 3}; ++ uint32x4_t in1 = vld1q_u32 (arr1); ++ uint32_t arr2[] = {4, 5, 6, 7}; ++ uint32x4_t in2 = vld1q_u32 (arr2); ++ uint32_t exp[4]; ++ uint32x4_t expected; ++ uint32x4_t actual = test_vextq_u32_1 (in1, in2); ++ ++ for (i = 0; i < 4; i++) ++ exp[i] = i + 1; ++ expected = vld1q_u32 (exp); ++ for (i = 0; i < 4; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_u32_2 (in1, in2); ++ for (i = 0; i < 4; i++) ++ exp[i] = i + 2; ++ expected = vld1q_u32 (exp); ++ for (i = 0; i < 4; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ actual = test_vextq_u32_3 (in1, in2); ++ for (i = 0; i < 4; i++) ++ exp[i] = i + 3; ++ expected = vld1q_u32 (exp); ++ for (i = 0; i < 4; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_u64_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_u64_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vextQu64' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++#include "extq_u64.x" ++ ++/* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?#\[0-9\]+\(?:.8\)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipp16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipp16_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vzip_p16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vzipp16.x" ++ ++/* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrns32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrns32_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vtrn_s32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vtrns32.x" ++ ++/* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16qp8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16qp8_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev16q_p8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev16qp8.x" ++ ++/* { dg-final { scan-assembler-times "rev16\[ \t\]+v\[0-9\]+.16b, ?v\[0-9\]+.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqs32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqs32.x +@@ -0,0 +1,26 @@ ++extern void abort (void); ++ ++int32x4x2_t ++test_vuzpqs32 (int32x4_t _a, int32x4_t _b) ++{ ++ return vuzpq_s32 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int32_t first[] = {1, 2, 3, 4}; ++ int32_t second[] = {5, 6, 7, 8}; ++ int32x4x2_t result = test_vuzpqs32 (vld1q_s32 (first), vld1q_s32 (second)); ++ int32_t exp1[] = {1, 3, 5, 7}; ++ int32_t exp2[] = {2, 4, 6, 8}; ++ int32x4_t expect1 = vld1q_s32 (exp1); ++ int32x4_t expect2 = vld1q_s32 (exp2); ++ ++ for (i = 0; i < 4; i++) ++ if ((result.val[0][i] != expect1[i]) || (result.val[1][i] != expect2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipu32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipu32_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vzip_u32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vzipu32.x" ++ ++/* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32p16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32p16.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++poly16x4_t ++test_vrev32p16 (poly16x4_t _arg) ++{ ++ return vrev32_p16 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ poly16x4_t inorder = {1, 2, 3, 4}; ++ poly16x4_t reversed = test_vrev32p16 (inorder); ++ poly16x4_t expected = {2, 1, 4, 3}; ++ ++ for (i = 0; i < 4; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqu32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqu32.x +@@ -0,0 +1,26 @@ ++extern void abort (void); ++ ++uint32x4x2_t ++test_vuzpqu32 (uint32x4_t _a, uint32x4_t _b) ++{ ++ return vuzpq_u32 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint32_t first[] = {1, 2, 3, 4}; ++ uint32_t second[] = {5, 6, 7, 8}; ++ uint32x4x2_t result = test_vuzpqu32 (vld1q_u32 (first), vld1q_u32 (second)); ++ uint32_t exp1[] = {1, 3, 5, 7}; ++ uint32_t exp2[] = {2, 4, 6, 8}; ++ uint32x4_t expect1 = vld1q_u32 (exp1); ++ uint32x4_t expect2 = vld1q_u32 (exp2); ++ ++ for (i = 0; i < 4; i++) ++ if ((result.val[0][i] != expect1[i]) || (result.val[1][i] != expect2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrbit_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrbit_1.c +@@ -0,0 +1,56 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2 --save-temps -fno-inline" } */ ++ ++#include ++ ++extern void abort (void); ++ ++uint64_t in1 = 0x0123456789abcdefULL; ++uint64_t expected1 = 0x80c4a2e691d5b3f7ULL; ++ ++#define TEST8(BASETYPE, SUFFIX) \ ++void test8_##SUFFIX () \ ++{ \ ++ BASETYPE##8x8_t out = vrbit_##SUFFIX (vcreate_##SUFFIX (in1)); \ ++ uint64_t res = vget_lane_u64 (vreinterpret_u64_##SUFFIX (out), 0); \ ++ if (res != expected1) abort (); \ ++} ++ ++uint64_t in2 = 0xdeadbeefcafebabeULL; ++uint64_t expected2 = 0x7bb57df7537f5d7dULL; ++ ++#define TEST16(BASETYPE, SUFFIX) \ ++void test16_##SUFFIX () \ ++{ \ ++ BASETYPE##8x16_t in = vcombine_##SUFFIX (vcreate_##SUFFIX (in1), \ ++ vcreate_##SUFFIX (in2)); \ ++ uint64x2_t res = vreinterpretq_u64_##SUFFIX (vrbitq_##SUFFIX (in)); \ ++ uint64_t res1 = vgetq_lane_u64 (res, 0); \ ++ uint64_t res2 = vgetq_lane_u64 (res, 1); \ ++ if (res1 != expected1 || res2 != expected2) abort (); \ ++} ++ ++TEST8 (poly, p8); ++TEST8 (int, s8); ++TEST8 (uint, u8); ++ ++TEST16 (poly, p8); ++TEST16 (int, s8); ++TEST16 (uint, u8); ++ ++int ++main (int argc, char **argv) ++{ ++ test8_p8 (); ++ test8_s8 (); ++ test8_u8 (); ++ test16_p8 (); ++ test16_s8 (); ++ test16_u8 (); ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times "rbit\[ \t\]+\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\]" 3 } } */ ++/* { dg-final { scan-assembler-times "rbit\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\]" 3 } } */ ++ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_s32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_s32_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vexts32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++#include "ext_s32.x" ++ ++/* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?#\[0-9\]+\(?:.4)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqu8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqu8_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vtrnq_u8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vtrnqu8.x" ++ ++/* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qs8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qs8.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++int8x16_t ++test_vrev32qs8 (int8x16_t _arg) ++{ ++ return vrev32q_s8 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int8x16_t inorder = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; ++ int8x16_t reversed = test_vrev32qs8 (inorder); ++ int8x16_t expected = {4, 3, 2, 1, 8, 7, 6, 5, 12, 11, 10, 9, 16, 15, 14, 13}; ++ ++ for (i = 0; i < 16; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16qs8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16qs8.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++int8x16_t ++test_vrev16qs8 (int8x16_t _arg) ++{ ++ return vrev16q_s8 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int8x16_t inorder = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; ++ int8x16_t reversed = test_vrev16qs8 (inorder); ++ int8x16_t expected = {2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15}; ++ ++ for (i = 0; i < 16; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64s16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64s16.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++int16x4_t ++test_vrev64s16 (int16x4_t _arg) ++{ ++ return vrev64_s16 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int16x4_t inorder = {1, 2, 3, 4}; ++ int16x4_t reversed = test_vrev64s16 (inorder); ++ int16x4_t expected = {4, 3, 2, 1}; ++ ++ for (i = 0; i < 4; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_s8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_s8_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vextQs8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++#include "extq_s8.x" ++ ++/* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?#?\[0-9\]+\(?:.2\)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 15 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64u16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64u16.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++uint16x4_t ++test_vrev64u16 (uint16x4_t _arg) ++{ ++ return vrev64_u16 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint16x4_t inorder = {1, 2, 3, 4}; ++ uint16x4_t reversed = test_vrev64u16 (inorder); ++ uint16x4_t expected = {4, 3, 2, 1}; ++ ++ for (i = 0; i < 4; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpp16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpp16.x +@@ -0,0 +1,26 @@ ++extern void abort (void); ++ ++poly16x4x2_t ++test_vuzpp16 (poly16x4_t _a, poly16x4_t _b) ++{ ++ return vuzp_p16 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ poly16_t first[] = {1, 2, 3, 4}; ++ poly16_t second[] = {5, 6, 7, 8}; ++ poly16x4x2_t result = test_vuzpp16 (vld1_p16 (first), vld1_p16 (second)); ++ poly16_t exp1[] = {1, 3, 5, 7}; ++ poly16_t exp2[] = {2, 4, 6, 8}; ++ poly16x4_t expect1 = vld1_p16 (exp1); ++ poly16x4_t expect2 = vld1_p16 (exp2); ++ ++ for (i = 0; i < 4; i++) ++ if ((result.val[0][i] != expect1[i]) || (result.val[1][i] != expect2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqf32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqf32_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vuzpq_f32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vuzpqf32.x" ++ ++/* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipp8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipp8_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vzip_p8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vzipp8.x" ++ ++/* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqp16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqp16_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vtrnq_p16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vtrnqp16.x" ++ ++/* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qp16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qp16.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++poly16x8_t ++test_vrev32qp16 (poly16x8_t _arg) ++{ ++ return vrev32q_p16 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ poly16x8_t inorder = {1, 2, 3, 4, 5, 6, 7, 8}; ++ poly16x8_t reversed = test_vrev32qp16 (inorder); ++ poly16x8_t expected = {2, 1, 4, 3, 6, 5, 8, 7}; ++ ++ for (i = 0; i < 8; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqu32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqu32_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vtrnq_u32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vtrnqu32.x" ++ ++/* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqs8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqs8.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++int8x16x2_t ++test_vuzpqs8 (int8x16_t _a, int8x16_t _b) ++{ ++ return vuzpq_s8 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int8_t first[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; ++ int8_t second[] = ++ {17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}; ++ int8x16x2_t result = test_vuzpqs8 (vld1q_s8 (first), vld1q_s8 (second)); ++ int8_t exp1[] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}; ++ int8_t exp2[] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32}; ++ int8x16_t expect1 = vld1q_s8 (exp1); ++ int8x16_t expect2 = vld1q_s8 (exp2); ++ ++ for (i = 0; i < 16; i++) ++ if ((result.val[0][i] != expect1[i]) || (result.val[1][i] != expect2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqs32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqs32.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++int32x4x2_t ++test_vzipqs32 (int32x4_t _a, int32x4_t _b) ++{ ++ return vzipq_s32 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int32_t first[] = {1, 2, 3, 4}; ++ int32_t second[] = {5, 6, 7, 8}; ++ int32x4x2_t result = test_vzipqs32 (vld1q_s32 (first), vld1q_s32 (second)); ++ int32x4_t res1 = result.val[0], res2 = result.val[1]; ++ int32_t exp1[] = {1, 5, 2, 6}; ++ int32_t exp2[] = {3, 7, 4, 8}; ++ int32x4_t expected1 = vld1q_s32 (exp1); ++ int32x4_t expected2 = vld1q_s32 (exp2); ++ ++ for (i = 0; i < 4; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qs16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qs16_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev64q_s16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev64qs16.x" ++ ++/* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.8h, ?v\[0-9\]+.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32s8.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32s8.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++int8x8_t ++test_vrev32s8 (int8x8_t _arg) ++{ ++ return vrev32_s8 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int8x8_t inorder = {1, 2, 3, 4, 5, 6, 7, 8}; ++ int8x8_t reversed = test_vrev32s8 (inorder); ++ int8x8_t expected = {4, 3, 2, 1, 8, 7, 6, 5}; ++ ++ for (i = 0; i < 8; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_p16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_p16_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vextQp16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++#include "extq_p16.x" ++ ++/* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?#\[0-9\]+\(?:.2\)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 7 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqu32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqu32.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++uint32x4x2_t ++test_vzipqu32 (uint32x4_t _a, uint32x4_t _b) ++{ ++ return vzipq_u32 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint32_t first[] = {1, 2, 3, 4}; ++ uint32_t second[] = {5, 6, 7, 8}; ++ uint32x4x2_t result = test_vzipqu32 (vld1q_u32 (first), vld1q_u32 (second)); ++ uint32x4_t res1 = result.val[0], res2 = result.val[1]; ++ uint32_t exp1[] = {1, 5, 2, 6}; ++ uint32_t exp2[] = {3, 7, 4, 8}; ++ uint32x4_t expected1 = vld1q_u32 (exp1); ++ uint32x4_t expected2 = vld1q_u32 (exp2); ++ ++ for (i = 0; i < 4; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_u32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_u32_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vextQu32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++#include "extq_u32.x" ++ ++/* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?#\[0-9\]+\(?:.4)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 3 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32p16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32p16_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev32_p16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev32p16.x" ++ ++/* { dg-final { scan-assembler-times "rev32\[ \t\]+v\[0-9\]+.4h, ?v\[0-9\]+.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_f32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_f32.x +@@ -0,0 +1,30 @@ ++extern void abort (void); ++ ++float32x2_t ++test_vext_f32_1 (float32x2_t a, float32x2_t b) ++{ ++ return vext_f32 (a, b, 1); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i, off; ++ float32_t arr1[] = {0, 1}; ++ float32x2_t in1 = vld1_f32 (arr1); ++ float32_t arr2[] = {2, 3}; ++ float32x2_t in2 = vld1_f32 (arr2); ++ float32_t exp[2]; ++ float32x2_t expected; ++ float32x2_t actual = test_vext_f32_1 (in1, in2); ++ ++ for (i = 0; i < 2; i++) ++ exp[i] = i + 1; ++ expected = vld1_f32 (exp); ++ for (i = 0; i < 2; i++) ++ if (actual[i] != expected[i]) ++ abort (); ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_f64_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_f64_1.c +@@ -0,0 +1,25 @@ ++/* Test the `vextf64' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++ ++extern void abort (void); ++ ++int ++main (int argc, char **argv) ++{ ++ int i, off; ++ float64x1_t in1 = {0}; ++ float64x1_t in2 = {1}; ++ float64x1_t actual = vext_f64 (in1, in2, 0); ++ if (actual != in1) ++ abort (); ++ ++ return 0; ++} ++ ++/* Do not scan-assembler. An EXT instruction could be emitted, but would merely ++ return its first argument, so it is legitimate to optimize it out. */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpf32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpf32_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vuzp_f32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vuzpf32.x" ++ ++/* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqu16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqu16_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vuzpq_u16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vuzpqu16.x" ++ ++/* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpu8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpu8_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vuzp_u8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vuzpu8.x" ++ ++/* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqf32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqf32_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vzipq_f32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vzipqf32.x" ++ ++/* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmullh_laneq_s16.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmullh_laneq_s16.c +@@ -0,0 +1,15 @@ ++/* Test the vqdmullh_laneq_s16 AArch64 SIMD intrinsic. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++ ++int32_t ++t_vqdmullh_laneq_s16 (int16_t a, int16x8_t b) ++{ ++ return vqdmullh_laneq_s16 (a, b, 0); ++} ++ ++/* { dg-final { scan-assembler-times "sqdmull\[ \t\]+\[sS\]\[0-9\]+, ?\[hH\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64s16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64s16_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev64_s16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev64s16.x" ++ ++/* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.4h, ?v\[0-9\]+.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrns32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrns32.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++int32x2x2_t ++test_vtrns32 (int32x2_t _a, int32x2_t _b) ++{ ++ return vtrn_s32 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int32_t first[] = {1, 2}; ++ int32_t second[] = {3, 4}; ++ int32x2x2_t result = test_vtrns32 (vld1_s32 (first), vld1_s32 (second)); ++ int32x2_t res1 = result.val[0], res2 = result.val[1]; ++ int32_t exp1[] = {1, 3}; ++ int32_t exp2[] = {2, 4}; ++ int32x2_t expected1 = vld1_s32 (exp1); ++ int32x2_t expected2 = vld1_s32 (exp2); ++ ++ for (i = 0; i < 2; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16qu8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16qu8_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev16q_u8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev16qu8.x" ++ ++/* { dg-final { scan-assembler-times "rev16\[ \t\]+v\[0-9\]+.16b, ?v\[0-9\]+.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzips16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzips16.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++int16x4x2_t ++test_vzips16 (int16x4_t _a, int16x4_t _b) ++{ ++ return vzip_s16 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ int16_t first[] = {1, 2, 3, 4}; ++ int16_t second[] = {5, 6, 7, 8}; ++ int16x4x2_t result = test_vzips16 (vld1_s16 (first), vld1_s16 (second)); ++ int16x4_t res1 = result.val[0], res2 = result.val[1]; ++ int16_t exp1[] = {1, 5, 2, 6}; ++ int16_t exp2[] = {3, 7, 4, 8}; ++ int16x4_t expected1 = vld1_s16 (exp1); ++ int16x4_t expected2 = vld1_s16 (exp2); ++ ++ for (i = 0; i < 4; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qs8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qs8_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev64q_s8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev64qs8.x" ++ ++/* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.16b, ?v\[0-9\]+.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_p8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_p8_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vextQp8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++#include "extq_p8.x" ++ ++/* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?#?\[0-9\]+\(?:.2\)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 15 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnu32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnu32.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++uint32x2x2_t ++test_vtrnu32 (uint32x2_t _a, uint32x2_t _b) ++{ ++ return vtrn_u32 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint32_t first[] = {1, 2}; ++ uint32_t second[] = {3, 4}; ++ uint32x2x2_t result = test_vtrnu32 (vld1_u32 (first), vld1_u32 (second)); ++ uint32x2_t res1 = result.val[0], res2 = result.val[1]; ++ uint32_t exp1[] = {1, 3}; ++ uint32_t exp2[] = {2, 4}; ++ uint32x2_t expected1 = vld1_u32 (exp1); ++ uint32x2_t expected2 = vld1_u32 (exp2); ++ ++ for (i = 0; i < 2; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipu16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipu16.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++uint16x4x2_t ++test_vzipu16 (uint16x4_t _a, uint16x4_t _b) ++{ ++ return vzip_u16 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ uint16_t first[] = {1, 2, 3, 4}; ++ uint16_t second[] = {5, 6, 7, 8}; ++ uint16x4x2_t result = test_vzipu16 (vld1_u16 (first), vld1_u16 (second)); ++ uint16x4_t res1 = result.val[0], res2 = result.val[1]; ++ uint16_t exp1[] = {1, 5, 2, 6}; ++ uint16_t exp2[] = {3, 7, 4, 8}; ++ uint16x4_t expected1 = vld1_u16 (exp1); ++ uint16x4_t expected2 = vld1_u16 (exp2); ++ ++ for (i = 0; i < 4; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpu16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpu16_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vuzp_u16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vuzpu16.x" ++ ++/* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32s8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32s8_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev32_s8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev32s8.x" ++ ++/* { dg-final { scan-assembler-times "rev32\[ \t\]+v\[0-9\]+.8b, ?v\[0-9\]+.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qu16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qu16_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vrev32q_u16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vrev32qu16.x" ++ ++/* { dg-final { scan-assembler-times "rev32\[ \t\]+v\[0-9\]+.8h, ?v\[0-9\]+.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnf32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnf32_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vtrn_f32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vtrnf32.x" ++ ++/* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqu16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqu16_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vzipq_u16' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vzipqu16.x" ++ ++/* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipu8_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipu8_1.c +@@ -0,0 +1,11 @@ ++/* Test the `vzip_u8' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline" } */ ++ ++#include ++#include "vzipu8.x" ++ ++/* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqp16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqp16.x +@@ -0,0 +1,27 @@ ++extern void abort (void); ++ ++poly16x8x2_t ++test_vtrnqp16 (poly16x8_t _a, poly16x8_t _b) ++{ ++ return vtrnq_p16 (_a, _b); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ poly16_t first[] = {1, 2, 3, 4, 5, 6, 7, 8}; ++ poly16_t second[] = {9, 10, 11, 12, 13, 14, 15, 16}; ++ poly16x8x2_t result = test_vtrnqp16 (vld1q_p16 (first), vld1q_p16 (second)); ++ poly16x8_t res1 = result.val[0], res2 = result.val[1]; ++ poly16_t exp1[] = {1, 9, 3, 11, 5, 13, 7, 15}; ++ poly16_t exp2[] = {2, 10, 4, 12, 6, 14, 8, 16}; ++ poly16x8_t expected1 = vld1q_p16 (exp1); ++ poly16x8_t expected2 = vld1q_p16 (exp2); ++ ++ for (i = 0; i < 8; i++) ++ if ((res1[i] != expected1[i]) || (res2[i] != expected2[i])) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/int_comparisons_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/int_comparisons_1.c +@@ -0,0 +1,47 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -fno-inline" } */ ++ ++/* Scan-assembler test, so, incorporate as little other code as possible. */ ++ ++#include "arm_neon.h" ++#include "int_comparisons.x" ++ ++/* Operations on all 18 integer types: (q?)_[su](8|16|32|64), d_[su]64. ++ (d?)_[us]64 generate regs of form 'd0' rather than e.g. 'v0.2d'. */ ++/* { dg-final { scan-assembler-times "\[ \t\]cmeq\[ \t\]+v\[0-9\]+\.\[0-9\]+\[bshd\],\[ \t\]*v\[0-9\]+\.\[0-9\]+\[bshd\],\[ \t\]*#?0" 14 } } */ ++/* { dg-final { scan-assembler-times "\[ \t\]cmeq\[ \t\]+d\[0-9\]+,\[ \t\]*d\[0-9\]+,\[ \t\]*#?0" 4 } } */ ++/* { dg-final { scan-assembler-times "\[ \t\]cmeq\[ \t\]+v\[0-9\]+\.\[0-9\]+\[bshd\],\[ \t\]*v\[0-9\]+\.\[0-9\]+\[bshd\],\[ \t\]+v\[0-9\]+\.\[0-9\]+\[bshd\]" 14 } } */ ++/* { dg-final { scan-assembler-times "\[ \t\]cmeq\[ \t\]+d\[0-9\]+,\[ \t\]*d\[0-9\]+,\[ \t\]+d\[0-9\]+" 4 } } */ ++/* { dg-final { scan-assembler-times "\[ \t\]cmtst\[ \t\]+v\[0-9\]+\.\[0-9\]+\[bshd\],\[ \t\]*v\[0-9\]+\.\[0-9\]+\[bshd\],\[ \t\]+v\[0-9\]+\.\[0-9\]+\[bshd\]" 14 } } */ ++/* { dg-final { scan-assembler-times "\[ \t\]cmtst\[ \t\]+d\[0-9\]+,\[ \t\]*d\[0-9\]+,\[ \t\]+d\[0-9\]+" 4 } } */ ++ ++/* vcge + vcle both implemented with cmge (signed) or cmhs (unsigned). */ ++/* { dg-final { scan-assembler-times "\[ \t\]cmge\[ \t\]+v\[0-9\]+\.\[0-9\]+\[bshd\],\[ \t\]*v\[0-9\]+\.\[0-9\]+\[bshd\],\[ \t\]+v\[0-9\]+\.\[0-9\]+\[bshd\]" 14 } } */ ++/* { dg-final { scan-assembler-times "\[ \t\]cmge\[ \t\]+d\[0-9\]+,\[ \t\]*d\[0-9\]+,\[ \t\]+d\[0-9\]+" 4 } } */ ++/* { dg-final { scan-assembler-times "\[ \t\]cmhs\[ \t\]+v\[0-9\]+\.\[0-9\]+\[bshd\],\[ \t\]*v\[0-9\]+\.\[0-9\]+\[bshd\],\[ \t\]+v\[0-9\]+\.\[0-9\]+\[bshd\]" 14 } } */ ++/* { dg-final { scan-assembler-times "\[ \t\]cmhs\[ \t\]+d\[0-9\]+,\[ \t\]*d\[0-9\]+,\[ \t\]+d\[0-9\]+" 4 } } */ ++ ++/* vcgt + vclt both implemented with cmgt (signed) or cmhi (unsigned). */ ++/* { dg-final { scan-assembler-times "\[ \t\]cmgt\[ \t\]+v\[0-9\]+\.\[0-9\]+\[bshd\],\[ \t\]*v\[0-9\]+\.\[0-9\]+\[bshd\],\[ \t\]+v\[0-9\]+\.\[0-9\]+\[bshd\]" 14 } } */ ++/* { dg-final { scan-assembler-times "\[ \t\]cmgt\[ \t\]+d\[0-9\]+,\[ \t\]*d\[0-9\]+,\[ \t\]+d\[0-9\]+" 4 } } */ ++/* { dg-final { scan-assembler-times "\[ \t\]cmhi\[ \t\]+v\[0-9\]+\.\[0-9\]+\[bshd\],\[ \t\]*v\[0-9\]+\.\[0-9\]+\[bshd\],\[ \t\]+v\[0-9\]+\.\[0-9\]+\[bshd\]" 14 } } */ ++/* { dg-final { scan-assembler-times "\[ \t\]cmhi\[ \t\]+d\[0-9\]+,\[ \t\]*d\[0-9\]+,\[ \t\]+d\[0-9\]+" 4 } } */ ++ ++/* Comparisons against immediate zero, on the 8 signed integer types only. */ ++ ++/* { dg-final { scan-assembler-times "\[ \t\]cmge\[ \t\]+v\[0-9\]+\.\[0-9\]+\[bshd\],\[ \t\]*v\[0-9\]+\.\[0-9\]+\[bshd\],\[ \t\]*#?0" 7 } } */ ++/* For int64_t and int64x1_t, combine_simplify_rtx failure of ++ https://gcc.gnu.org/ml/gcc/2014-06/msg00253.html ++ prevents generation of cmge....#0, instead producing mvn + sshr. */ ++/* { #dg-final { scan-assembler-times "\[ \t\]cmge\[ \t\]+d\[0-9\]+,\[ \t\]*d\[0-9\]+,\[ \t\]*#?0" 2 } } */ ++/* { dg-final { scan-assembler-times "\[ \t\]cmgt\[ \t\]+v\[0-9\]+\.\[0-9\]+\[bshd\],\[ \t\]*v\[0-9\]+\.\[0-9\]+\[bshd\],\[ \t\]*#?0" 7 } } */ ++/* { dg-final { scan-assembler-times "\[ \t\]cmgt\[ \t\]+d\[0-9\]+,\[ \t\]*d\[0-9\]+,\[ \t\]*#?0" 2 } } */ ++/* { dg-final { scan-assembler-times "\[ \t\]cmle\[ \t\]+v\[0-9\]+\.\[0-9\]+\[bshd\],\[ \t\]*v\[0-9\]+\.\[0-9\]+\[bshd\],\[ \t\]*#?0" 7 } } */ ++/* { dg-final { scan-assembler-times "\[ \t\]cmle\[ \t\]+d\[0-9\]+,\[ \t\]*d\[0-9\]+,\[ \t\]*#?0" 2 } } */ ++/* { dg-final { scan-assembler-times "\[ \t\]cmlt\[ \t\]+v\[0-9\]+\.\[0-9\]+\[bshd\],\[ \t\]*v\[0-9\]+\.\[0-9\]+\[bshd\],\[ \t\]*#?0" 7 } } */ ++/* For int64_t and int64x1_t, cmlt ... #0 and sshr ... #63 are equivalent, ++ so allow either. cmgez issue above results in extra 2 * sshr....63. */ ++/* { dg-final { scan-assembler-times "\[ \t\](?:cmlt|sshr)\[ \t\]+d\[0-9\]+,\[ \t\]*d\[0-9\]+,\[ \t\]*#?(?:0|63)" 4 } } */ ++ ++// All should have been compiled into single insns without inverting result: ++/* { dg-final { scan-assembler-not "\[ \t\]not\[ \t\]" } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qp16.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qp16.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++poly16x8_t ++test_vrev64qp16 (poly16x8_t _arg) ++{ ++ return vrev64q_p16 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ poly16x8_t inorder = {1, 2, 3, 4, 5, 6, 7, 8}; ++ poly16x8_t reversed = test_vrev64qp16 (inorder); ++ poly16x8_t expected = {4, 3, 2, 1, 8, 7, 6, 5}; ++ ++ for (i = 0; i < 8; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_f32_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_f32_1.c +@@ -0,0 +1,10 @@ ++/* Test the `vextf32' AArch64 SIMD intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -O3 -fno-inline" } */ ++ ++#include "arm_neon.h" ++#include "ext_f32.x" ++ ++/* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?#\[0-9\]+\(?:.4)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64f32.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64f32.x +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++float32x2_t ++test_vrev64f32 (float32x2_t _arg) ++{ ++ return vrev64_f32 (_arg); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int i; ++ float32x2_t inorder = {1, 2}; ++ float32x2_t reversed = test_vrev64f32 (inorder); ++ float32x2_t expected = {2, 1}; ++ ++ for (i = 0; i < 2; i++) ++ if (reversed[i] != expected[i]) ++ abort (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/vdup_lane_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vdup_lane_1.c +@@ -0,0 +1,430 @@ ++/* Test vdup_lane intrinsics work correctly. */ ++/* { dg-do run } */ ++/* { dg-options "--save-temps -O1" } */ ++ ++#include ++ ++extern void abort (void); ++ ++float32x2_t __attribute__ ((noinline)) ++wrap_vdup_lane_f32_0 (float32x2_t a) ++{ ++ return vdup_lane_f32 (a, 0); ++} ++ ++float32x2_t __attribute__ ((noinline)) ++wrap_vdup_lane_f32_1 (float32x2_t a) ++{ ++ return vdup_lane_f32 (a, 1); ++} ++ ++int __attribute__ ((noinline)) ++test_vdup_lane_f32 () ++{ ++ float32x2_t a; ++ float32x2_t b; ++ int i; ++ float32_t c[2] = { 0.0 , 3.14 }; ++ float32_t d[2]; ++ ++ a = vld1_f32 (c); ++ b = wrap_vdup_lane_f32_0 (a); ++ vst1_f32 (d, b); ++ for (i = 0; i < 2; i++) ++ if (c[0] != d[i]) ++ return 1; ++ ++ b = wrap_vdup_lane_f32_1 (a); ++ vst1_f32 (d, b); ++ for (i = 0; i < 2; i++) ++ if (c[1] != d[i]) ++ return 1; ++ return 0; ++} ++ ++float32x4_t __attribute__ ((noinline)) ++wrap_vdupq_lane_f32_0 (float32x2_t a) ++{ ++ return vdupq_lane_f32 (a, 0); ++} ++ ++float32x4_t __attribute__ ((noinline)) ++wrap_vdupq_lane_f32_1 (float32x2_t a) ++{ ++ return vdupq_lane_f32 (a, 1); ++} ++ ++int __attribute__ ((noinline)) ++test_vdupq_lane_f32 () ++{ ++ float32x2_t a; ++ float32x4_t b; ++ int i; ++ float32_t c[2] = { 0.0 , 3.14 }; ++ float32_t d[4]; ++ ++ a = vld1_f32 (c); ++ b = wrap_vdupq_lane_f32_0 (a); ++ vst1q_f32 (d, b); ++ for (i = 0; i < 4; i++) ++ if (c[0] != d[i]) ++ return 1; ++ ++ b = wrap_vdupq_lane_f32_1 (a); ++ vst1q_f32 (d, b); ++ for (i = 0; i < 4; i++) ++ if (c[1] != d[i]) ++ return 1; ++ return 0; ++} ++ ++int8x8_t __attribute__ ((noinline)) ++wrap_vdup_lane_s8_0 (int8x8_t a) ++{ ++ return vdup_lane_s8 (a, 0); ++} ++ ++int8x8_t __attribute__ ((noinline)) ++wrap_vdup_lane_s8_1 (int8x8_t a) ++{ ++ return vdup_lane_s8 (a, 1); ++} ++ ++int __attribute__ ((noinline)) ++test_vdup_lane_s8 () ++{ ++ int8x8_t a; ++ int8x8_t b; ++ int i; ++ /* Only two first cases are interesting. */ ++ int8_t c[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; ++ int8_t d[8]; ++ ++ a = vld1_s8 (c); ++ b = wrap_vdup_lane_s8_0 (a); ++ vst1_s8 (d, b); ++ for (i = 0; i < 8; i++) ++ if (c[0] != d[i]) ++ return 1; ++ ++ b = wrap_vdup_lane_s8_1 (a); ++ vst1_s8 (d, b); ++ for (i = 0; i < 8; i++) ++ if (c[1] != d[i]) ++ return 1; ++ return 0; ++} ++ ++int8x16_t __attribute__ ((noinline)) ++wrap_vdupq_lane_s8_0 (int8x8_t a) ++{ ++ return vdupq_lane_s8 (a, 0); ++} ++ ++int8x16_t __attribute__ ((noinline)) ++wrap_vdupq_lane_s8_1 (int8x8_t a) ++{ ++ return vdupq_lane_s8 (a, 1); ++} ++ ++int __attribute__ ((noinline)) ++test_vdupq_lane_s8 () ++{ ++ int8x8_t a; ++ int8x16_t b; ++ int i; ++ /* Only two first cases are interesting. */ ++ int8_t c[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; ++ int8_t d[16]; ++ ++ a = vld1_s8 (c); ++ b = wrap_vdupq_lane_s8_0 (a); ++ vst1q_s8 (d, b); ++ for (i = 0; i < 16; i++) ++ if (c[0] != d[i]) ++ return 1; ++ ++ b = wrap_vdupq_lane_s8_1 (a); ++ vst1q_s8 (d, b); ++ for (i = 0; i < 16; i++) ++ if (c[1] != d[i]) ++ return 1; ++ return 0; ++} ++ ++int16x4_t __attribute__ ((noinline)) ++wrap_vdup_lane_s16_0 (int16x4_t a) ++{ ++ return vdup_lane_s16 (a, 0); ++} ++ ++int16x4_t __attribute__ ((noinline)) ++wrap_vdup_lane_s16_1 (int16x4_t a) ++{ ++ return vdup_lane_s16 (a, 1); ++} ++ ++int __attribute__ ((noinline)) ++test_vdup_lane_s16 () ++{ ++ int16x4_t a; ++ int16x4_t b; ++ int i; ++ /* Only two first cases are interesting. */ ++ int16_t c[4] = { 0, 1, 2, 3 }; ++ int16_t d[4]; ++ ++ a = vld1_s16 (c); ++ b = wrap_vdup_lane_s16_0 (a); ++ vst1_s16 (d, b); ++ for (i = 0; i < 4; i++) ++ if (c[0] != d[i]) ++ return 1; ++ ++ b = wrap_vdup_lane_s16_1 (a); ++ vst1_s16 (d, b); ++ for (i = 0; i < 4; i++) ++ if (c[1] != d[i]) ++ return 1; ++ return 0; ++} ++ ++int16x8_t __attribute__ ((noinline)) ++wrap_vdupq_lane_s16_0 (int16x4_t a) ++{ ++ return vdupq_lane_s16 (a, 0); ++} ++ ++int16x8_t __attribute__ ((noinline)) ++wrap_vdupq_lane_s16_1 (int16x4_t a) ++{ ++ return vdupq_lane_s16 (a, 1); ++} ++ ++int __attribute__ ((noinline)) ++test_vdupq_lane_s16 () ++{ ++ int16x4_t a; ++ int16x8_t b; ++ int i; ++ /* Only two first cases are interesting. */ ++ int16_t c[4] = { 0, 1, 2, 3 }; ++ int16_t d[8]; ++ ++ a = vld1_s16 (c); ++ b = wrap_vdupq_lane_s16_0 (a); ++ vst1q_s16 (d, b); ++ for (i = 0; i < 8; i++) ++ if (c[0] != d[i]) ++ return 1; ++ ++ b = wrap_vdupq_lane_s16_1 (a); ++ vst1q_s16 (d, b); ++ for (i = 0; i < 8; i++) ++ if (c[1] != d[i]) ++ return 1; ++ return 0; ++} ++ ++int32x2_t __attribute__ ((noinline)) ++wrap_vdup_lane_s32_0 (int32x2_t a) ++{ ++ return vdup_lane_s32 (a, 0); ++} ++ ++int32x2_t __attribute__ ((noinline)) ++wrap_vdup_lane_s32_1 (int32x2_t a) ++{ ++ return vdup_lane_s32 (a, 1); ++} ++ ++int __attribute__ ((noinline)) ++test_vdup_lane_s32 () ++{ ++ int32x2_t a; ++ int32x2_t b; ++ int i; ++ int32_t c[2] = { 0, 1 }; ++ int32_t d[2]; ++ ++ a = vld1_s32 (c); ++ b = wrap_vdup_lane_s32_0 (a); ++ vst1_s32 (d, b); ++ for (i = 0; i < 2; i++) ++ if (c[0] != d[i]) ++ return 1; ++ ++ b = wrap_vdup_lane_s32_1 (a); ++ vst1_s32 (d, b); ++ for (i = 0; i < 2; i++) ++ if (c[1] != d[i]) ++ return 1; ++ return 0; ++} ++ ++int32x4_t __attribute__ ((noinline)) ++wrap_vdupq_lane_s32_0 (int32x2_t a) ++{ ++ return vdupq_lane_s32 (a, 0); ++} ++ ++int32x4_t __attribute__ ((noinline)) ++wrap_vdupq_lane_s32_1 (int32x2_t a) ++{ ++ return vdupq_lane_s32 (a, 1); ++} ++ ++int __attribute__ ((noinline)) ++test_vdupq_lane_s32 () ++{ ++ int32x2_t a; ++ int32x4_t b; ++ int i; ++ int32_t c[2] = { 0, 1 }; ++ int32_t d[4]; ++ ++ a = vld1_s32 (c); ++ b = wrap_vdupq_lane_s32_0 (a); ++ vst1q_s32 (d, b); ++ for (i = 0; i < 4; i++) ++ if (c[0] != d[i]) ++ return 1; ++ ++ b = wrap_vdupq_lane_s32_1 (a); ++ vst1q_s32 (d, b); ++ for (i = 0; i < 4; i++) ++ if (c[1] != d[i]) ++ return 1; ++ return 0; ++} ++ ++int64x1_t __attribute__ ((noinline)) ++wrap_vdup_lane_s64_0 (int64x1_t a) ++{ ++ return vdup_lane_s64 (a, 0); ++} ++ ++int64x1_t __attribute__ ((noinline)) ++wrap_vdup_lane_s64_1 (int64x1_t a) ++{ ++ return vdup_lane_s64 (a, 1); ++} ++ ++int __attribute__ ((noinline)) ++test_vdup_lane_s64 () ++{ ++ int64x1_t a; ++ int64x1_t b; ++ int64_t c[1]; ++ int64_t d[1]; ++ ++ c[0] = 0; ++ a = vld1_s64 (c); ++ b = wrap_vdup_lane_s64_0 (a); ++ vst1_s64 (d, b); ++ if (c[0] != d[0]) ++ return 1; ++ ++ c[0] = 1; ++ a = vld1_s64 (c); ++ b = wrap_vdup_lane_s64_1 (a); ++ vst1_s64 (d, b); ++ if (c[0] != d[0]) ++ return 1; ++ return 0; ++} ++ ++int64x2_t __attribute__ ((noinline)) ++wrap_vdupq_lane_s64_0 (int64x1_t a) ++{ ++ return vdupq_lane_s64 (a, 0); ++} ++ ++int64x2_t __attribute__ ((noinline)) ++wrap_vdupq_lane_s64_1 (int64x1_t a) ++{ ++ return vdupq_lane_s64 (a, 1); ++} ++ ++int __attribute__ ((noinline)) ++test_vdupq_lane_s64 () ++{ ++ int64x1_t a; ++ int64x2_t b; ++ int i; ++ int64_t c[1]; ++ int64_t d[2]; ++ ++ c[0] = 0; ++ a = vld1_s64 (c); ++ b = wrap_vdupq_lane_s64_0 (a); ++ vst1q_s64 (d, b); ++ for (i = 0; i < 2; i++) ++ if (c[0] != d[i]) ++ return 1; ++ ++ c[0] = 1; ++ a = vld1_s64 (c); ++ b = wrap_vdupq_lane_s64_1 (a); ++ vst1q_s64 (d, b); ++ for (i = 0; i < 2; i++) ++ if (c[0] != d[i]) ++ return 1; ++ return 0; ++} ++ ++int ++main () ++{ ++ ++ if (test_vdup_lane_f32 ()) ++ abort (); ++ if (test_vdup_lane_s8 ()) ++ abort (); ++ if (test_vdup_lane_s16 ()) ++ abort (); ++ if (test_vdup_lane_s32 ()) ++ abort (); ++ if (test_vdup_lane_s64 ()) ++ abort (); ++ if (test_vdupq_lane_f32 ()) ++ abort (); ++ if (test_vdupq_lane_s8 ()) ++ abort (); ++ if (test_vdupq_lane_s16 ()) ++ abort (); ++ if (test_vdupq_lane_s32 ()) ++ abort (); ++ if (test_vdupq_lane_s64 ()) ++ abort (); ++ ++ return 0; ++} ++ ++/* Asm check for test_vdup_lane_s8. */ ++/* { dg-final { scan-assembler-times "dup\\tv\[0-9\]+\.8b, v\[0-9\]+\.b\\\[0\\\]" 1 } } */ ++/* { dg-final { scan-assembler-times "dup\\tv\[0-9\]+\.8b, v\[0-9\]+\.b\\\[1\\\]" 1 } } */ ++ ++/* Asm check for test_vdupq_lane_s8. */ ++/* { dg-final { scan-assembler-times "dup\\tv\[0-9\]+\.16b, v\[0-9\]+\.b\\\[0\\\]" 1 } } */ ++/* { dg-final { scan-assembler-times "dup\\tv\[0-9\]+\.16b, v\[0-9\]+\.b\\\[1\\\]" 1 } } */ ++ ++/* Asm check for test_vdup_lane_s16. */ ++/* { dg-final { scan-assembler-times "dup\\tv\[0-9\]+\.4h, v\[0-9\]+\.h\\\[0\\\]" 1 } } */ ++/* Asm check for test_vdup_lane_s16. */ ++/* { dg-final { scan-assembler-times "dup\\tv\[0-9\]+\.4h, v\[0-9\]+\.h\\\[1\\\]" 1 } } */ ++ ++/* Asm check for test_vdupq_lane_s16. */ ++/* { dg-final { scan-assembler-times "dup\\tv\[0-9\]+\.8h, v\[0-9\]+\.h\\\[0\\\]" 1 } } */ ++/* Asm check for test_vdupq_lane_s16. */ ++/* { dg-final { scan-assembler-times "dup\\tv\[0-9\]+\.8h, v\[0-9\]+\.h\\\[1\\\]" 1 } } */ ++ ++/* Asm check for test_vdup_lane_f32 and test_vdup_lane_s32. */ ++/* { dg-final { scan-assembler-times "dup\\tv\[0-9\]+\.2s, v\[0-9\]+\.s\\\[0\\\]" 2 } } */ ++/* { dg-final { scan-assembler-times "dup\\tv\[0-9\]+\.2s, v\[0-9\]+\.s\\\[1\\\]" 2 } } */ ++ ++/* Asm check for test_vdupq_lane_f32 and test_vdupq_lane_s32. */ ++/* { dg-final { scan-assembler-times "dup\\tv\[0-9\]+\.4s, v\[0-9\]+\.s\\\[0\\\]" 2 } } */ ++/* { dg-final { scan-assembler-times "dup\\tv\[0-9\]+\.4s, v\[0-9\]+\.s\\\[1\\\]" 2 } } */ ++ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_15.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_15.c +@@ -0,0 +1,19 @@ ++/* Verify: ++ * with outgoing. ++ * total frame size > 512. ++ area except outgoing <= 512 ++ * number of callee-save reg >= 2. ++ * split the stack adjustment into two substractions, ++ the first could be optimized into "stp !". */ ++ ++/* { dg-do run } */ ++/* { dg-options "-O2 --save-temps" } */ ++ ++#include "test_frame_common.h" ++ ++t_frame_pattern_outgoing (test15, 480, , 8, a[8]) ++t_frame_run (test15) ++ ++/* { dg-final { scan-assembler-times "sub\tsp, sp, #\[0-9\]+" 1 } } */ ++/* { dg-final { scan-assembler-times "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" 3 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/bics_3.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/bics_3.c +@@ -0,0 +1,69 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2 --save-temps" } */ ++ ++extern void abort (void); ++ ++int __attribute__ ((noinline)) ++bics_si_test (int a, int b) ++{ ++ if (a & ~b) ++ return 1; ++ else ++ return 0; ++} ++ ++int __attribute__ ((noinline)) ++bics_si_test2 (int a, int b) ++{ ++ if (a & ~ (b << 2)) ++ return 1; ++ else ++ return 0; ++} ++ ++typedef long long s64; ++ ++int __attribute__ ((noinline)) ++bics_di_test (s64 a, s64 b) ++{ ++ if (a & ~b) ++ return 1; ++ else ++ return 0; ++} ++ ++int __attribute__ ((noinline)) ++bics_di_test2 (s64 a, s64 b) ++{ ++ if (a & ~(b << 2)) ++ return 1; ++ else ++ return 0; ++} ++ ++int ++main (void) ++{ ++ int a = 5; ++ int b = 5; ++ int c = 20; ++ s64 d = 5; ++ s64 e = 5; ++ s64 f = 20; ++ if (bics_si_test (a, b)) ++ abort (); ++ if (bics_si_test2 (c, b)) ++ abort (); ++ if (bics_di_test (d, e)) ++ abort (); ++ if (bics_di_test2 (f, e)) ++ abort (); ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times "bics\twzr, w\[0-9\]+, w\[0-9\]+" 2 } } */ ++/* { dg-final { scan-assembler-times "bics\twzr, w\[0-9\]+, w\[0-9\]+, lsl 2" 1 } } */ ++/* { dg-final { scan-assembler-times "bics\txzr, x\[0-9\]+, x\[0-9\]+" 2 } } */ ++/* { dg-final { scan-assembler-times "bics\txzr, x\[0-9\]+, x\[0-9\]+, lsl 2" 1 } } */ ++ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/vbslq_u64_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vbslq_u64_1.c +@@ -0,0 +1,17 @@ ++/* Test if a BSL-like instruction can be generated from a C idiom. */ ++/* { dg-do assemble } */ ++/* { dg-options "--save-temps -O3" } */ ++ ++#include ++ ++/* Folds to BIF. */ ++ ++uint32x4_t ++vbslq_dummy_u32 (uint32x4_t a, uint32x4_t b, uint32x4_t mask) ++{ ++ return (mask & a) | (~mask & b); ++} ++ ++/* { dg-final { scan-assembler-times "bif\\tv" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/vdup_n_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vdup_n_1.c +@@ -0,0 +1,619 @@ ++/* Test vdup_lane intrinsics work correctly. */ ++/* { dg-do run } */ ++/* { dg-options "-O1 --save-temps" } */ ++ ++#include ++ ++extern void abort (void); ++ ++float32x2_t __attribute__ ((noinline)) ++wrap_vdup_n_f32 (float32_t a) ++{ ++ return vdup_n_f32 (a); ++} ++ ++int __attribute__ ((noinline)) ++test_vdup_n_f32 () ++{ ++ float32_t a = 1.0; ++ float32x2_t b; ++ float32_t c[2]; ++ int i; ++ ++ b = wrap_vdup_n_f32 (a); ++ vst1_f32 (c, b); ++ for (i = 0; i < 2; i++) ++ if (a != c[i]) ++ return 1; ++ return 0; ++} ++ ++float32x4_t __attribute__ ((noinline)) ++wrap_vdupq_n_f32 (float32_t a) ++{ ++ return vdupq_n_f32 (a); ++} ++ ++int __attribute__ ((noinline)) ++test_vdupq_n_f32 () ++{ ++ float32_t a = 1.0; ++ float32x4_t b; ++ float32_t c[4]; ++ int i; ++ ++ b = wrap_vdupq_n_f32 (a); ++ vst1q_f32 (c, b); ++ for (i = 0; i < 4; i++) ++ if (a != c[i]) ++ return 1; ++ return 0; ++} ++ ++float64x1_t __attribute__ ((noinline)) ++wrap_vdup_n_f64 (float64_t a) ++{ ++ return vdup_n_f64 (a); ++} ++ ++int __attribute__ ((noinline)) ++test_vdup_n_f64 () ++{ ++ float64_t a = 1.0; ++ float64x1_t b; ++ float64_t c[1]; ++ int i; ++ ++ b = wrap_vdup_n_f64 (a); ++ vst1_f64 (c, b); ++ for (i = 0; i < 1; i++) ++ if (a != c[i]) ++ return 1; ++ return 0; ++} ++ ++float64x2_t __attribute__ ((noinline)) ++wrap_vdupq_n_f64 (float64_t a) ++{ ++ return vdupq_n_f64 (a); ++} ++ ++int __attribute__ ((noinline)) ++test_vdupq_n_f64 () ++{ ++ float64_t a = 1.0; ++ float64x2_t b; ++ float64_t c[2]; ++ int i; ++ ++ b = wrap_vdupq_n_f64 (a); ++ vst1q_f64 (c, b); ++ for (i = 0; i < 2; i++) ++ if (a != c[i]) ++ return 1; ++ return 0; ++} ++ ++poly8x8_t __attribute__ ((noinline)) ++wrap_vdup_n_p8 (poly8_t a) ++{ ++ return vdup_n_p8 (a); ++} ++ ++int __attribute__ ((noinline)) ++test_vdup_n_p8 () ++{ ++ poly8_t a = 1; ++ poly8x8_t b; ++ poly8_t c[8]; ++ int i; ++ ++ b = wrap_vdup_n_p8 (a); ++ vst1_p8 (c, b); ++ for (i = 0; i < 8; i++) ++ if (a != c[i]) ++ return 1; ++ return 0; ++} ++ ++poly8x16_t __attribute__ ((noinline)) ++wrap_vdupq_n_p8 (poly8_t a) ++{ ++ return vdupq_n_p8 (a); ++} ++ ++int __attribute__ ((noinline)) ++test_vdupq_n_p8 () ++{ ++ poly8_t a = 1; ++ poly8x16_t b; ++ poly8_t c[16]; ++ int i; ++ ++ b = wrap_vdupq_n_p8 (a); ++ vst1q_p8 (c, b); ++ for (i = 0; i < 16; i++) ++ if (a != c[i]) ++ return 1; ++ return 0; ++} ++ ++int8x8_t __attribute__ ((noinline)) ++wrap_vdup_n_s8 (int8_t a) ++{ ++ return vdup_n_s8 (a); ++} ++ ++int __attribute__ ((noinline)) ++test_vdup_n_s8 () ++{ ++ int8_t a = 1; ++ int8x8_t b; ++ int8_t c[8]; ++ int i; ++ ++ b = wrap_vdup_n_s8 (a); ++ vst1_s8 (c, b); ++ for (i = 0; i < 8; i++) ++ if (a != c[i]) ++ return 1; ++ return 0; ++} ++ ++int8x16_t __attribute__ ((noinline)) ++wrap_vdupq_n_s8 (int8_t a) ++{ ++ return vdupq_n_s8 (a); ++} ++ ++int __attribute__ ((noinline)) ++test_vdupq_n_s8 () ++{ ++ int8_t a = 1; ++ int8x16_t b; ++ int8_t c[16]; ++ int i; ++ ++ b = wrap_vdupq_n_s8 (a); ++ vst1q_s8 (c, b); ++ for (i = 0; i < 16; i++) ++ if (a != c[i]) ++ return 1; ++ return 0; ++} ++ ++uint8x8_t __attribute__ ((noinline)) ++wrap_vdup_n_u8 (uint8_t a) ++{ ++ return vdup_n_u8 (a); ++} ++ ++int __attribute__ ((noinline)) ++test_vdup_n_u8 () ++{ ++ uint8_t a = 1; ++ uint8x8_t b; ++ uint8_t c[8]; ++ int i; ++ ++ b = wrap_vdup_n_u8 (a); ++ vst1_u8 (c, b); ++ for (i = 0; i < 8; i++) ++ if (a != c[i]) ++ return 1; ++ return 0; ++} ++ ++uint8x16_t __attribute__ ((noinline)) ++wrap_vdupq_n_u8 (uint8_t a) ++{ ++ return vdupq_n_u8 (a); ++} ++ ++int __attribute__ ((noinline)) ++test_vdupq_n_u8 () ++{ ++ uint8_t a = 1; ++ uint8x16_t b; ++ uint8_t c[16]; ++ int i; ++ ++ b = wrap_vdupq_n_u8 (a); ++ vst1q_u8 (c, b); ++ for (i = 0; i < 16; i++) ++ if (a != c[i]) ++ return 1; ++ return 0; ++} ++ ++poly16x4_t __attribute__ ((noinline)) ++wrap_vdup_n_p16 (poly16_t a) ++{ ++ return vdup_n_p16 (a); ++} ++ ++int __attribute__ ((noinline)) ++test_vdup_n_p16 () ++{ ++ poly16_t a = 1; ++ poly16x4_t b; ++ poly16_t c[4]; ++ int i; ++ ++ b = wrap_vdup_n_p16 (a); ++ vst1_p16 (c, b); ++ for (i = 0; i < 4; i++) ++ if (a != c[i]) ++ return 1; ++ return 0; ++} ++ ++poly16x8_t __attribute__ ((noinline)) ++wrap_vdupq_n_p16 (poly16_t a) ++{ ++ return vdupq_n_p16 (a); ++} ++ ++int __attribute__ ((noinline)) ++test_vdupq_n_p16 () ++{ ++ poly16_t a = 1; ++ poly16x8_t b; ++ poly16_t c[8]; ++ int i; ++ ++ b = wrap_vdupq_n_p16 (a); ++ vst1q_p16 (c, b); ++ for (i = 0; i < 8; i++) ++ if (a != c[i]) ++ return 1; ++ return 0; ++} ++ ++int16x4_t __attribute__ ((noinline)) ++wrap_vdup_n_s16 (int16_t a) ++{ ++ return vdup_n_s16 (a); ++} ++ ++int __attribute__ ((noinline)) ++test_vdup_n_s16 () ++{ ++ int16_t a = 1; ++ int16x4_t b; ++ int16_t c[4]; ++ int i; ++ ++ b = wrap_vdup_n_s16 (a); ++ vst1_s16 (c, b); ++ for (i = 0; i < 4; i++) ++ if (a != c[i]) ++ return 1; ++ return 0; ++} ++ ++int16x8_t __attribute__ ((noinline)) ++wrap_vdupq_n_s16 (int16_t a) ++{ ++ return vdupq_n_s16 (a); ++} ++ ++int __attribute__ ((noinline)) ++test_vdupq_n_s16 () ++{ ++ int16_t a = 1; ++ int16x8_t b; ++ int16_t c[8]; ++ int i; ++ ++ b = wrap_vdupq_n_s16 (a); ++ vst1q_s16 (c, b); ++ for (i = 0; i < 8; i++) ++ if (a != c[i]) ++ return 1; ++ return 0; ++} ++ ++uint16x4_t __attribute__ ((noinline)) ++wrap_vdup_n_u16 (uint16_t a) ++{ ++ return vdup_n_u16 (a); ++} ++ ++int __attribute__ ((noinline)) ++test_vdup_n_u16 () ++{ ++ uint16_t a = 1; ++ uint16x4_t b; ++ uint16_t c[4]; ++ int i; ++ ++ b = wrap_vdup_n_u16 (a); ++ vst1_u16 (c, b); ++ for (i = 0; i < 4; i++) ++ if (a != c[i]) ++ return 1; ++ return 0; ++} ++ ++uint16x8_t __attribute__ ((noinline)) ++wrap_vdupq_n_u16 (uint16_t a) ++{ ++ return vdupq_n_u16 (a); ++} ++ ++int __attribute__ ((noinline)) ++test_vdupq_n_u16 () ++{ ++ uint16_t a = 1; ++ uint16x8_t b; ++ uint16_t c[8]; ++ int i; ++ ++ b = wrap_vdupq_n_u16 (a); ++ vst1q_u16 (c, b); ++ for (i = 0; i < 8; i++) ++ if (a != c[i]) ++ return 1; ++ return 0; ++} ++ ++int32x2_t __attribute__ ((noinline)) ++wrap_vdup_n_s32 (int32_t a) ++{ ++ return vdup_n_s32 (a); ++} ++ ++int __attribute__ ((noinline)) ++test_vdup_n_s32 () ++{ ++ int32_t a = 1; ++ int32x2_t b; ++ int32_t c[2]; ++ int i; ++ ++ b = wrap_vdup_n_s32 (a); ++ vst1_s32 (c, b); ++ for (i = 0; i < 2; i++) ++ if (a != c[i]) ++ return 1; ++ return 0; ++} ++ ++int32x4_t __attribute__ ((noinline)) ++wrap_vdupq_n_s32 (int32_t a) ++{ ++ return vdupq_n_s32 (a); ++} ++ ++int __attribute__ ((noinline)) ++test_vdupq_n_s32 () ++{ ++ int32_t a = 1; ++ int32x4_t b; ++ int32_t c[4]; ++ int i; ++ ++ b = wrap_vdupq_n_s32 (a); ++ vst1q_s32 (c, b); ++ for (i = 0; i < 4; i++) ++ if (a != c[i]) ++ return 1; ++ return 0; ++} ++ ++uint32x2_t __attribute__ ((noinline)) ++wrap_vdup_n_u32 (uint32_t a) ++{ ++ return vdup_n_u32 (a); ++} ++ ++int __attribute__ ((noinline)) ++test_vdup_n_u32 () ++{ ++ uint32_t a = 1; ++ uint32x2_t b; ++ uint32_t c[2]; ++ int i; ++ ++ b = wrap_vdup_n_u32 (a); ++ vst1_u32 (c, b); ++ for (i = 0; i < 2; i++) ++ if (a != c[i]) ++ return 1; ++ return 0; ++} ++ ++uint32x4_t __attribute__ ((noinline)) ++wrap_vdupq_n_u32 (uint32_t a) ++{ ++ return vdupq_n_u32 (a); ++} ++ ++int __attribute__ ((noinline)) ++test_vdupq_n_u32 () ++{ ++ uint32_t a = 1; ++ uint32x4_t b; ++ uint32_t c[4]; ++ int i; ++ ++ b = wrap_vdupq_n_u32 (a); ++ vst1q_u32 (c, b); ++ for (i = 0; i < 4; i++) ++ if (a != c[i]) ++ return 1; ++ return 0; ++} ++ ++int64x1_t __attribute__ ((noinline)) ++wrap_vdup_n_s64 (int64_t a) ++{ ++ return vdup_n_s64 (a); ++} ++ ++int __attribute__ ((noinline)) ++test_vdup_n_s64 () ++{ ++ int64_t a = 1; ++ int64x1_t b; ++ int64_t c[1]; ++ int i; ++ ++ b = wrap_vdup_n_s64 (a); ++ vst1_s64 (c, b); ++ for (i = 0; i < 1; i++) ++ if (a != c[i]) ++ return 1; ++ return 0; ++} ++ ++int64x2_t __attribute__ ((noinline)) ++wrap_vdupq_n_s64 (int64_t a) ++{ ++ return vdupq_n_s64 (a); ++} ++ ++int __attribute__ ((noinline)) ++test_vdupq_n_s64 () ++{ ++ int64_t a = 1; ++ int64x2_t b; ++ int64_t c[2]; ++ int i; ++ ++ b = wrap_vdupq_n_s64 (a); ++ vst1q_s64 (c, b); ++ for (i = 0; i < 2; i++) ++ if (a != c[i]) ++ return 1; ++ return 0; ++} ++ ++uint64x1_t __attribute__ ((noinline)) ++wrap_vdup_n_u64 (uint64_t a) ++{ ++ return vdup_n_u64 (a); ++} ++ ++int __attribute__ ((noinline)) ++test_vdup_n_u64 () ++{ ++ uint64_t a = 1; ++ uint64x1_t b; ++ uint64_t c[1]; ++ int i; ++ ++ b = wrap_vdup_n_u64 (a); ++ vst1_u64 (c, b); ++ for (i = 0; i < 1; i++) ++ if (a != c[i]) ++ return 1; ++ return 0; ++} ++ ++uint64x2_t __attribute__ ((noinline)) ++wrap_vdupq_n_u64 (uint64_t a) ++{ ++ return vdupq_n_u64 (a); ++} ++ ++int __attribute__ ((noinline)) ++test_vdupq_n_u64 () ++{ ++ uint64_t a = 1; ++ uint64x2_t b; ++ uint64_t c[2]; ++ int i; ++ ++ b = wrap_vdupq_n_u64 (a); ++ vst1q_u64 (c, b); ++ for (i = 0; i < 2; i++) ++ if (a != c[i]) ++ return 1; ++ return 0; ++} ++ ++int ++main () ++{ ++ if (test_vdup_n_f32 ()) ++ abort (); ++ if (test_vdup_n_f64 ()) ++ abort (); ++ if (test_vdup_n_p8 ()) ++ abort (); ++ if (test_vdup_n_u8 ()) ++ abort (); ++ if (test_vdup_n_s8 ()) ++ abort (); ++ if (test_vdup_n_p16 ()) ++ abort (); ++ if (test_vdup_n_s16 ()) ++ abort (); ++ if (test_vdup_n_u16 ()) ++ abort (); ++ if (test_vdup_n_s32 ()) ++ abort (); ++ if (test_vdup_n_u32 ()) ++ abort (); ++ if (test_vdup_n_s64 ()) ++ abort (); ++ if (test_vdup_n_u64 ()) ++ abort (); ++ if (test_vdupq_n_f32 ()) ++ abort (); ++ if (test_vdupq_n_f64 ()) ++ abort (); ++ if (test_vdupq_n_p8 ()) ++ abort (); ++ if (test_vdupq_n_u8 ()) ++ abort (); ++ if (test_vdupq_n_s8 ()) ++ abort (); ++ if (test_vdupq_n_p16 ()) ++ abort (); ++ if (test_vdupq_n_s16 ()) ++ abort (); ++ if (test_vdupq_n_u16 ()) ++ abort (); ++ if (test_vdupq_n_s32 ()) ++ abort (); ++ if (test_vdupq_n_u32 ()) ++ abort (); ++ if (test_vdupq_n_s64 ()) ++ abort (); ++ if (test_vdupq_n_u64 ()) ++ abort (); ++ return 0; ++} ++ ++/* No asm checks for vdup_n_f32, vdupq_n_f32, vdup_n_f64 and vdupq_n_f64. ++ Cannot force floating point value in general purpose regester. */ ++ ++/* Asm check for test_vdup_n_p8, test_vdup_n_s8, test_vdup_n_u8. */ ++/* { dg-final { scan-assembler-times "dup\\tv\[0-9\]+\.8b, w\[0-9\]+" 3 } } */ ++ ++/* Asm check for test_vdupq_n_p8, test_vdupq_n_s8, test_vdupq_n_u8. */ ++/* { dg-final { scan-assembler-times "dup\\tv\[0-9\]+\.16b, w\[0-9\]+" 3 } } */ ++ ++/* Asm check for test_vdup_n_p16, test_vdup_n_s16, test_vdup_n_u16. */ ++/* { dg-final { scan-assembler-times "dup\\tv\[0-9\]+\.4h, w\[0-9\]+" 3 } } */ ++ ++/* Asm check for test_vdupq_n_p16, test_vdupq_n_s16, test_vdupq_n_u16. */ ++/* { dg-final { scan-assembler-times "dup\\tv\[0-9\]+\.8h, w\[0-9\]+" 3 } } */ ++ ++/* Asm check for test_vdup_n_s32, test_vdup_n_u32. */ ++/* { dg-final { scan-assembler-times "dup\\tv\[0-9\]+\.2s, w\[0-9\]+" 2 } } */ ++ ++/* Asm check for test_vdupq_n_s32, test_vdupq_n_u32. */ ++/* { dg-final { scan-assembler-times "dup\\tv\[0-9\]+\.4s, w\[0-9\]+" 2 } } */ ++ ++/* Asm check for test_vdup_n_s64, test_vdup_n_u64 are left out. ++ Attempts to make the compiler generate "dup\\td\[0-9\]+, x\[0-9\]+" ++ are not practical. */ ++ ++/* Asm check for test_vdupq_n_s64, test_vdupq_n_u64. */ ++/* { dg-final { scan-assembler-times "dup\\tv\[0-9\]+\.2d, x\[0-9\]+" 2 } } */ ++ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_4.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_4.c +@@ -0,0 +1,19 @@ ++/* Verify: ++ * -fomit-frame-pointer. ++ * without outgoing. ++ * total frame size <= 512 but > 256. ++ * number of callee-save reg >= 2. ++ * we can use "stp !" to optimize stack adjustment. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fomit-frame-pointer --save-temps" } */ ++ ++#include "test_frame_common.h" ++ ++t_frame_pattern (test4, 400, "x19") ++t_frame_run (test4) ++ ++/* { dg-final { scan-assembler-times "stp\tx19, x30, \\\[sp, -\[0-9\]+\\\]!" 1 } } */ ++/* { dg-final { scan-assembler-times "ldp\tx19, x30, \\\[sp\\\], \[0-9\]+" 2 } } */ ++ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/fcsel_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/fcsel_1.c +@@ -0,0 +1,22 @@ ++/* { dg-do compile } */ ++/* { dg-options " -O2 " } */ ++ ++float ++f_1 (float a, float b, float c, float d) ++{ ++ if (a > 0.0) ++ return c; ++ else ++ return 2.0; ++} ++ ++double ++f_2 (double a, double b, double c, double d) ++{ ++ if (a > b) ++ return c; ++ else ++ return d; ++} ++ ++/* { dg-final { scan-assembler-times "\tfcsel" 2 } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/pr62178.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/pr62178.c +@@ -0,0 +1,17 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3" } */ ++ ++int a[30 +1][30 +1], b[30 +1][30 +1], r[30 +1][30 +1]; ++ ++void foo (void) { ++ int i, j, k; ++ ++ for ( i = 1; i <= 30; i++ ) ++ for ( j = 1; j <= 30; j++ ) { ++ r[i][j] = 0; ++ for(k = 1; k <= 30; k++ ) ++ r[i][j] += a[i][k]*b[k][j]; ++ } ++} ++ ++/* { dg-final { scan-assembler "ld1r\\t\{v\[0-9\]+\."} } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/vect_ctz_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vect_ctz_1.c +@@ -0,0 +1,41 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -save-temps -fno-inline" } */ ++ ++extern void abort (); ++ ++#define TEST(name, subname, count) \ ++void \ ++count_tz_##name (unsigned *__restrict a, int *__restrict b) \ ++{ \ ++ int i; \ ++ for (i = 0; i < count; i++) \ ++ b[i] = __builtin_##subname (a[i]); \ ++} ++ ++#define CHECK(name, count, input, output) \ ++ count_tz_##name (input, output); \ ++ for (i = 0; i < count; i++) \ ++ { \ ++ if (output[i] != r[i]) \ ++ abort (); \ ++ } ++ ++TEST (v4si, ctz, 4) ++TEST (v2si, ctz, 2) ++/* { dg-final { scan-assembler "clz\tv\[0-9\]+\.4s" } } */ ++/* { dg-final { scan-assembler "clz\tv\[0-9\]+\.2s" } } */ ++ ++int ++main () ++{ ++ unsigned int x4[4] = { 0x0, 0xFF80, 0x1FFFF, 0xFF000000 }; ++ int r[4] = { 32, 7, 0, 24 }; ++ int d[4], i; ++ ++ CHECK (v4si, 4, x4, d); ++ CHECK (v2si, 2, x4, d); ++ ++ return 0; ++} ++ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/vect-fp.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-fp.c +@@ -8,11 +8,11 @@ + + + #define DEFN_SETV(type) \ +- set_vector_##type (pR##type a, type n) \ +- { \ +- int i; \ +- for (i=0; i<16; i++) \ +- a[i] = n; \ ++ void set_vector_##type (pR##type a, type n) \ ++ { \ ++ int i; \ ++ for (i=0; i<16; i++) \ ++ a[i] = n; \ + } + + #define DEFN_CHECKV(type) \ +--- a/src/gcc/testsuite/gcc.target/aarch64/rev16_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/rev16_1.c +@@ -0,0 +1,59 @@ ++/* { dg-options "-O2" } */ ++/* { dg-do run } */ ++ ++extern void abort (void); ++ ++typedef unsigned int __u32; ++ ++__u32 ++__rev16_32_alt (__u32 x) ++{ ++ return (((__u32)(x) & (__u32)0xff00ff00UL) >> 8) ++ | (((__u32)(x) & (__u32)0x00ff00ffUL) << 8); ++} ++ ++__u32 ++__rev16_32 (__u32 x) ++{ ++ return (((__u32)(x) & (__u32)0x00ff00ffUL) << 8) ++ | (((__u32)(x) & (__u32)0xff00ff00UL) >> 8); ++} ++ ++typedef unsigned long long __u64; ++ ++__u64 ++__rev16_64_alt (__u64 x) ++{ ++ return (((__u64)(x) & (__u64)0xff00ff00ff00ff00UL) >> 8) ++ | (((__u64)(x) & (__u64)0x00ff00ff00ff00ffUL) << 8); ++} ++ ++__u64 ++__rev16_64 (__u64 x) ++{ ++ return (((__u64)(x) & (__u64)0x00ff00ff00ff00ffUL) << 8) ++ | (((__u64)(x) & (__u64)0xff00ff00ff00ff00UL) >> 8); ++} ++ ++int ++main (void) ++{ ++ volatile __u32 in32 = 0x12345678; ++ volatile __u32 expected32 = 0x34127856; ++ volatile __u64 in64 = 0x1234567890abcdefUL; ++ volatile __u64 expected64 = 0x34127856ab90efcdUL; ++ ++ if (__rev16_32 (in32) != expected32) ++ abort (); ++ ++ if (__rev16_32_alt (in32) != expected32) ++ abort (); ++ ++ if (__rev16_64 (in64) != expected64) ++ abort (); ++ ++ if (__rev16_64_alt (in64) != expected64) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/vget_high_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vget_high_1.c +@@ -0,0 +1,60 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -std=c99" } */ ++ ++#include ++ ++extern void abort (void); ++ ++#define VARIANTS(VARIANT) \ ++VARIANT (uint8_t, 8, uint8x8_t, uint8x16_t, u8) \ ++VARIANT (uint16_t, 4, uint16x4_t, uint16x8_t, u16) \ ++VARIANT (uint32_t, 2, uint32x2_t, uint32x4_t, u32) \ ++VARIANT (uint64_t, 1, uint64x1_t, uint64x2_t, u64) \ ++VARIANT (int8_t, 8, int8x8_t, int8x16_t, s8) \ ++VARIANT (int16_t, 4, int16x4_t, int16x8_t, s16) \ ++VARIANT (int32_t, 2, int32x2_t, int32x4_t, s32) \ ++VARIANT (int64_t, 1, int64x1_t, int64x2_t, s64) \ ++VARIANT (float32_t, 2, float32x2_t, float32x4_t, f32) \ ++VARIANT (float64_t, 1, float64x1_t, float64x2_t, f64) ++ ++ ++#define TESTMETH(BASETYPE, NUM64, TYPE64, TYPE128, SUFFIX) \ ++int \ ++test_vget_low_ ##SUFFIX (BASETYPE *data) \ ++{ \ ++ BASETYPE temp [NUM64]; \ ++ TYPE128 vec = vld1q_##SUFFIX (data); \ ++ TYPE64 high = vget_high_##SUFFIX (vec); \ ++ vst1_##SUFFIX (temp, high); \ ++ for (int i = 0; i < NUM64; i++) \ ++ if (temp[i] != data[i + NUM64]) \ ++ return 1; \ ++ return 0; \ ++} ++ ++VARIANTS (TESTMETH) ++ ++#define CHECK(BASETYPE, NUM64, TYPE64, TYPE128, SUFFIX) \ ++ if (test_vget_low_##SUFFIX (BASETYPE ## _ ## data) != 0) \ ++ abort (); ++ ++int ++main (int argc, char **argv) ++{ ++ uint8_t uint8_t_data[16] = ++ { 1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47 }; ++ uint16_t uint16_t_data[8] = { 1, 22, 333, 4444, 55555, 6666, 777, 88 }; ++ uint32_t uint32_t_data[4] = { 65537, 11, 70000, 23 }; ++ uint64_t uint64_t_data[2] = { 0xdeadbeefcafebabeULL, 0x0123456789abcdefULL }; ++ int8_t int8_t_data[16] = ++ { -1, -3, -5, -7, 9, -11, -13, 15, -17, -19, 21, -23, 25, 27, -29, -31 }; ++ int16_t int16_t_data[8] = { -17, 19, 3, -999, 44048, 505, 9999, 1000}; ++ int32_t int32_t_data[4] = { 123456789, -987654321, -135792468, 975318642 }; ++ int64_t int64_t_data[2] = {0xfedcba9876543210LL, 0xdeadbabecafebeefLL }; ++ float32_t float32_t_data[4] = { 3.14159, 2.718, 1.414, 100.0 }; ++ float64_t float64_t_data[2] = { 1.01001000100001, 12345.6789 }; ++ ++ VARIANTS (CHECK); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/vldN_dup_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vldN_dup_1.c +@@ -0,0 +1,84 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -fno-inline" } */ ++ ++#include ++ ++extern void abort (void); ++ ++#define VARIANTS(VARIANT, STRUCT) \ ++VARIANT (uint8, , 8, _u8, STRUCT) \ ++VARIANT (uint16, , 4, _u16, STRUCT) \ ++VARIANT (uint32, , 2, _u32, STRUCT) \ ++VARIANT (uint64, , 1, _u64, STRUCT) \ ++VARIANT (int8, , 8, _s8, STRUCT) \ ++VARIANT (int16, , 4, _s16, STRUCT) \ ++VARIANT (int32, , 2, _s32, STRUCT) \ ++VARIANT (int64, , 1, _s64, STRUCT) \ ++VARIANT (poly8, , 8, _p8, STRUCT) \ ++VARIANT (poly16, , 4, _p16, STRUCT) \ ++VARIANT (float32, , 2, _f32, STRUCT) \ ++VARIANT (float64, , 1, _f64, STRUCT) \ ++VARIANT (uint8, q, 16, _u8, STRUCT) \ ++VARIANT (uint16, q, 8, _u16, STRUCT) \ ++VARIANT (uint32, q, 4, _u32, STRUCT) \ ++VARIANT (uint64, q, 2, _u64, STRUCT) \ ++VARIANT (int8, q, 16, _s8, STRUCT) \ ++VARIANT (int16, q, 8, _s16, STRUCT) \ ++VARIANT (int32, q, 4, _s32, STRUCT) \ ++VARIANT (int64, q, 2, _s64, STRUCT) \ ++VARIANT (poly8, q, 16, _p8, STRUCT) \ ++VARIANT (poly16, q, 8, _p16, STRUCT) \ ++VARIANT (float32, q, 4, _f32, STRUCT) \ ++VARIANT (float64, q, 2, _f64, STRUCT) ++ ++#define TESTMETH(BASE, Q, ELTS, SUFFIX, STRUCT) \ ++int \ ++test_vld##STRUCT##Q##_dup##SUFFIX (const BASE##_t *data) \ ++{ \ ++ BASE##_t temp[ELTS]; \ ++ BASE##x##ELTS##x##STRUCT##_t vectors = \ ++ vld##STRUCT##Q##_dup##SUFFIX (data); \ ++ int i,j; \ ++ for (i = 0; i < STRUCT; i++) \ ++ { \ ++ vst1##Q##SUFFIX (temp, vectors.val[i]); \ ++ for (j = 0; j < ELTS; j++) \ ++ if (temp[j] != data[i]) \ ++ return 1; \ ++ } \ ++ return 0; \ ++} ++ ++/* Tests of vld2_dup and vld2q_dup. */ ++VARIANTS (TESTMETH, 2) ++/* Tests of vld3_dup and vld3q_dup. */ ++VARIANTS (TESTMETH, 3) ++/* Tests of vld4_dup and vld4q_dup. */ ++VARIANTS (TESTMETH, 4) ++ ++#define CHECK(BASE, Q, ELTS, SUFFIX, STRUCT) \ ++ if (test_vld##STRUCT##Q##_dup##SUFFIX (BASE ##_data) != 0) \ ++ abort (); ++ ++int ++main (int argc, char **argv) ++{ ++ uint8_t uint8_data[4] = { 7, 11, 13, 17 }; ++ uint16_t uint16_data[4] = { 257, 263, 269, 271 }; ++ uint32_t uint32_data[4] = { 65537, 65539, 65543, 65551 }; ++ uint64_t uint64_data[4] = { 0xdeadbeefcafebabeULL, 0x0123456789abcdefULL, ++ 0xfedcba9876543210LL, 0xdeadbabecafebeefLL }; ++ int8_t int8_data[4] = { -1, 3, -5, 7 }; ++ int16_t int16_data[4] = { 257, -259, 261, -263 }; ++ int32_t int32_data[4] = { 123456789, -987654321, -135792468, 975318642 }; ++ int64_t *int64_data = (int64_t *)uint64_data; ++ poly8_t poly8_data[4] = { 0, 7, 13, 18, }; ++ poly16_t poly16_data[4] = { 11111, 2222, 333, 44 }; ++ float32_t float32_data[4] = { 3.14159, 2.718, 1.414, 100.0 }; ++ float64_t float64_data[4] = { 1.010010001, 12345.6789, -9876.54321, 1.618 }; ++ ++ VARIANTS (CHECK, 2); ++ VARIANTS (CHECK, 3); ++ VARIANTS (CHECK, 4); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/vdup_lane_2.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vdup_lane_2.c +@@ -0,0 +1,343 @@ ++/* Test vdup_lane intrinsics work correctly. */ ++/* { dg-do run } */ ++/* { dg-options "-O1 --save-temps" } */ ++ ++#include ++ ++#define force_simd(V1) asm volatile ("mov %d0, %1.d[0]" \ ++ : "=w"(V1) \ ++ : "w"(V1) \ ++ : /* No clobbers */) ++ ++extern void abort (void); ++ ++float32_t __attribute__ ((noinline)) ++wrap_vdups_lane_f32_0 (float32x2_t dummy, float32x2_t a) ++{ ++ return vdups_lane_f32 (a, 0); ++} ++ ++float32_t __attribute__ ((noinline)) ++wrap_vdups_lane_f32_1 (float32x2_t a) ++{ ++ return vdups_lane_f32 (a, 1); ++} ++ ++int __attribute__ ((noinline)) ++test_vdups_lane_f32 () ++{ ++ float32x2_t a; ++ float32_t b; ++ float32_t c[2] = { 0.0, 1.0 }; ++ ++ a = vld1_f32 (c); ++ b = wrap_vdups_lane_f32_0 (a, a); ++ if (c[0] != b) ++ return 1; ++ b = wrap_vdups_lane_f32_1 (a); ++ if (c[1] != b) ++ return 1; ++ return 0; ++} ++ ++float64_t __attribute__ ((noinline)) ++wrap_vdupd_lane_f64_0 (float64x1_t dummy, float64x1_t a) ++{ ++ return vdupd_lane_f64 (a, 0); ++} ++ ++int __attribute__ ((noinline)) ++test_vdupd_lane_f64 () ++{ ++ float64x1_t a; ++ float64_t b; ++ float64_t c[1] = { 0.0 }; ++ a = vld1_f64 (c); ++ b = wrap_vdupd_lane_f64_0 (a, a); ++ if (c[0] != b) ++ return 1; ++ return 0; ++} ++ ++int8_t __attribute__ ((noinline)) ++wrap_vdupb_lane_s8_0 (int8x8_t dummy, int8x8_t a) ++{ ++ int8_t result = vdupb_lane_s8 (a, 0); ++ force_simd (result); ++ return result; ++} ++ ++int8_t __attribute__ ((noinline)) ++wrap_vdupb_lane_s8_1 (int8x8_t a) ++{ ++ int8_t result = vdupb_lane_s8 (a, 1); ++ force_simd (result); ++ return result; ++} ++ ++int __attribute__ ((noinline)) ++test_vdupb_lane_s8 () ++{ ++ int8x8_t a; ++ int8_t b; ++ int8_t c[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; ++ ++ a = vld1_s8 (c); ++ b = wrap_vdupb_lane_s8_0 (a, a); ++ if (c[0] != b) ++ return 1; ++ b = wrap_vdupb_lane_s8_1 (a); ++ if (c[1] != b) ++ return 1; ++ ++ return 0; ++} ++ ++uint8_t __attribute__ ((noinline)) ++wrap_vdupb_lane_u8_0 (uint8x8_t dummy, uint8x8_t a) ++{ ++ uint8_t result = vdupb_lane_u8 (a, 0); ++ force_simd (result); ++ return result; ++} ++ ++uint8_t __attribute__ ((noinline)) ++wrap_vdupb_lane_u8_1 (uint8x8_t a) ++{ ++ uint8_t result = vdupb_lane_u8 (a, 1); ++ force_simd (result); ++ return result; ++} ++ ++int __attribute__ ((noinline)) ++test_vdupb_lane_u8 () ++{ ++ uint8x8_t a; ++ uint8_t b; ++ uint8_t c[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; ++ ++ a = vld1_u8 (c); ++ b = wrap_vdupb_lane_u8_0 (a, a); ++ if (c[0] != b) ++ return 1; ++ b = wrap_vdupb_lane_u8_1 (a); ++ if (c[1] != b) ++ return 1; ++ return 0; ++} ++ ++int16_t __attribute__ ((noinline)) ++wrap_vduph_lane_s16_0 (int16x4_t dummy, int16x4_t a) ++{ ++ int16_t result = vduph_lane_s16 (a, 0); ++ force_simd (result); ++ return result; ++} ++ ++int16_t __attribute__ ((noinline)) ++wrap_vduph_lane_s16_1 (int16x4_t a) ++{ ++ int16_t result = vduph_lane_s16 (a, 1); ++ force_simd (result); ++ return result; ++} ++ ++int __attribute__ ((noinline)) ++test_vduph_lane_s16 () ++{ ++ int16x4_t a; ++ int16_t b; ++ int16_t c[4] = { 0, 1, 2, 3 }; ++ ++ a = vld1_s16 (c); ++ b = wrap_vduph_lane_s16_0 (a, a); ++ if (c[0] != b) ++ return 1; ++ b = wrap_vduph_lane_s16_1 (a); ++ if (c[1] != b) ++ return 1; ++ return 0; ++} ++ ++uint16_t __attribute__ ((noinline)) ++wrap_vduph_lane_u16_0 (uint16x4_t dummy, uint16x4_t a) ++{ ++ uint16_t result = vduph_lane_u16 (a, 0); ++ force_simd (result); ++ return result; ++} ++ ++uint16_t __attribute__ ((noinline)) ++wrap_vduph_lane_u16_1 (uint16x4_t a) ++{ ++ uint16_t result = vduph_lane_u16 (a, 1); ++ force_simd (result); ++ return result; ++} ++ ++int __attribute__ ((noinline)) ++test_vduph_lane_u16 () ++{ ++ uint16x4_t a; ++ uint16_t b; ++ uint16_t c[4] = { 0, 1, 2, 3 }; ++ ++ a = vld1_u16 (c); ++ b = wrap_vduph_lane_u16_0 (a, a); ++ if (c[0] != b) ++ return 1; ++ b = wrap_vduph_lane_u16_1 (a); ++ if (c[1] != b) ++ return 1; ++ return 0; ++} ++ ++int32_t __attribute__ ((noinline)) ++wrap_vdups_lane_s32_0 (int32x2_t dummy, int32x2_t a) ++{ ++ int32_t result = vdups_lane_s32 (a, 0); ++ force_simd (result); ++ return result; ++} ++ ++int32_t __attribute__ ((noinline)) ++wrap_vdups_lane_s32_1 (int32x2_t a) ++{ ++ int32_t result = vdups_lane_s32 (a, 1); ++ force_simd (result); ++ return result; ++} ++ ++int __attribute__ ((noinline)) ++test_vdups_lane_s32 () ++{ ++ int32x2_t a; ++ int32_t b; ++ int32_t c[2] = { 0, 1 }; ++ ++ a = vld1_s32 (c); ++ b = wrap_vdups_lane_s32_0 (vcreate_s32 (0), a); ++ if (c[0] != b) ++ return 1; ++ b = wrap_vdups_lane_s32_1 (a); ++ if (c[1] != b) ++ return 1; ++ return 0; ++} ++ ++uint32_t __attribute__ ((noinline)) ++wrap_vdups_lane_u32_0 (uint32x2_t dummy, uint32x2_t a) ++{ ++ uint32_t result = vdups_lane_u32 (a, 0); ++ force_simd (result); ++ return result; ++} ++ ++uint32_t __attribute__ ((noinline)) ++wrap_vdups_lane_u32_1 (uint32x2_t a) ++{ ++ uint32_t result = vdups_lane_u32 (a, 1); ++ force_simd (result); ++ return result; ++} ++ ++int __attribute__ ((noinline)) ++test_vdups_lane_u32 () ++{ ++ uint32x2_t a; ++ uint32_t b; ++ uint32_t c[2] = { 0, 1 }; ++ a = vld1_u32 (c); ++ b = wrap_vdups_lane_u32_0 (a, a); ++ if (c[0] != b) ++ return 1; ++ b = wrap_vdups_lane_u32_1 (a); ++ if (c[1] != b) ++ return 1; ++ return 0; ++} ++ ++uint64_t __attribute__ ((noinline)) ++wrap_vdupd_lane_u64_0 (uint64x1_t dummy, uint64x1_t a) ++{ ++ return vdupd_lane_u64 (a, 0);; ++} ++ ++int __attribute__ ((noinline)) ++test_vdupd_lane_u64 () ++{ ++ uint64x1_t a; ++ uint64_t b; ++ uint64_t c[1] = { 0 }; ++ ++ a = vld1_u64 (c); ++ b = wrap_vdupd_lane_u64_0 (a, a); ++ if (c[0] != b) ++ return 1; ++ return 0; ++} ++ ++int64_t __attribute__ ((noinline)) ++wrap_vdupd_lane_s64_0 (uint64x1_t dummy, int64x1_t a) ++{ ++ return vdupd_lane_u64 (a, 0); ++} ++ ++int __attribute__ ((noinline)) ++test_vdupd_lane_s64 () ++{ ++ int64x1_t a; ++ int64_t b; ++ int64_t c[1] = { 0 }; ++ ++ a = vld1_s64 (c); ++ b = wrap_vdupd_lane_s64_0 (a, a); ++ if (c[0] != b) ++ return 1; ++ return 0; ++} ++ ++int ++main () ++{ ++ if (test_vdups_lane_f32 ()) ++ abort (); ++ if (test_vdupd_lane_f64 ()) ++ abort (); ++ if (test_vdupb_lane_s8 ()) ++ abort (); ++ if (test_vdupb_lane_u8 ()) ++ abort (); ++ if (test_vduph_lane_s16 ()) ++ abort (); ++ if (test_vduph_lane_u16 ()) ++ abort (); ++ if (test_vdups_lane_s32 ()) ++ abort (); ++ if (test_vdups_lane_u32 ()) ++ abort (); ++ if (test_vdupd_lane_s64 ()) ++ abort (); ++ if (test_vdupd_lane_u64 ()) ++ abort (); ++ return 0; ++} ++ ++/* Asm check for vdupb_lane_s8, vdupb_lane_u8. */ ++/* { dg-final { scan-assembler-not "dup\\tb\[0-9\]+, v\[0-9\]+\.b\\\[0\\\]" } } */ ++/* { dg-final { scan-assembler-times "dup\\tb\[0-9\]+, v\[0-9\]+\.b\\\[1\\\]" 2 } } */ ++ ++/* Asm check for vduph_lane_h16, vduph_lane_h16. */ ++/* { dg-final { scan-assembler-not "dup\\th\[0-9\]+, v\[0-9\]+\.h\\\[0\\\]" } } */ ++/* { dg-final { scan-assembler-times "dup\\th\[0-9\]+, v\[0-9\]+\.h\\\[1\\\]" 2 } } */ ++ ++/* Asm check for vdups_lane_f32, vdups_lane_s32, vdups_lane_u32. */ ++/* Can't generate "dup s, v[0]" for vdups_lane_s32 and vdups_lane_u32. */ ++/* { dg-final { scan-assembler-times "dup\\ts\[0-9\]+, v\[0-9\]+\.s\\\[0\\\]" 1} } */ ++/* { dg-final { scan-assembler-times "dup\\ts\[0-9\]+, v\[0-9\]+\.s\\\[1\\\]" 3 } } */ ++ ++/* Asm check for vdupd_lane_f64, vdupd_lane_s64, vdupd_lane_u64. */ ++/* Attempts to make the compiler generate vdupd are not practical. */ ++/* { dg-final { scan-assembler-not "dup\\td\[0-9\]+, v\[0-9\]+\.d\\\[0\\\]" } } ++ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/bics_4.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/bics_4.c +@@ -0,0 +1,87 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2 --save-temps -fno-inline" } */ ++ ++extern void abort (void); ++ ++int ++bics_si_test1 (int a, int b, int c) ++{ ++ if ((a & b) == a) ++ return a; ++ else ++ return c; ++} ++ ++int ++bics_si_test2 (int a, int b, int c) ++{ ++ if ((a & b) == b) ++ return b; ++ else ++ return c; ++} ++ ++typedef long long s64; ++ ++s64 ++bics_di_test1 (s64 a, s64 b, s64 c) ++{ ++ if ((a & b) == a) ++ return a; ++ else ++ return c; ++} ++ ++s64 ++bics_di_test2 (s64 a, s64 b, s64 c) ++{ ++ if ((a & b) == b) ++ return b; ++ else ++ return c; ++} ++ ++int ++main () ++{ ++ int x; ++ s64 y; ++ ++ x = bics_si_test1 (0xf00d, 0xf11f, 0); ++ if (x != 0xf00d) ++ abort (); ++ ++ x = bics_si_test1 (0xf11f, 0xf00d, 0); ++ if (x != 0) ++ abort (); ++ ++ x = bics_si_test2 (0xf00d, 0xf11f, 0); ++ if (x != 0) ++ abort (); ++ ++ x = bics_si_test2 (0xf11f, 0xf00d, 0); ++ if (x != 0xf00d) ++ abort (); ++ ++ y = bics_di_test1 (0x10001000f00dll, 0x12341000f00dll, 0ll); ++ if (y != 0x10001000f00dll) ++ abort (); ++ ++ y = bics_di_test1 (0x12341000f00dll, 0x10001000f00dll, 0ll); ++ if (y != 0) ++ abort (); ++ ++ y = bics_di_test2 (0x10001000f00dll, 0x12341000f00dll, 0ll); ++ if (y != 0) ++ abort (); ++ ++ y = bics_di_test2 (0x12341000f00dll, 0x10001000f00dll, 0ll); ++ if (y != 0x10001000f00dll) ++ abort (); ++ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times "bics\twzr, w\[0-9\]+, w\[0-9\]+" 2 } } */ ++/* { dg-final { scan-assembler-times "bics\txzr, x\[0-9\]+, x\[0-9\]+" 2 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/vbslq_u64_2.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vbslq_u64_2.c +@@ -0,0 +1,22 @@ ++/* Test vbslq_u64 can be folded. */ ++/* { dg-do assemble } */ ++/* { dg-options "--save-temps -O3" } */ ++#include ++ ++/* Folds to BIC. */ ++ ++int32x4_t ++half_fold_int (uint32x4_t mask) ++{ ++ int32x4_t a = {0, 0, 0, 0}; ++ int32x4_t b = {2, 4, 8, 16}; ++ return vbslq_s32 (mask, a, b); ++} ++ ++/* { dg-final { scan-assembler-not "bsl\\tv" } } */ ++/* { dg-final { scan-assembler-not "bit\\tv" } } */ ++/* { dg-final { scan-assembler-not "bif\\tv" } } */ ++/* { dg-final { scan-assembler "bic\\tv" } } */ ++ ++/* { dg-final { cleanup-saved-temps } } */ ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/vdup_n_2.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vdup_n_2.c +@@ -0,0 +1,28 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fno-inline --save-temps" } */ ++ ++extern void abort (void); ++ ++typedef float float32x2_t __attribute__ ((__vector_size__ ((8)))); ++typedef unsigned int uint32x2_t __attribute__ ((__vector_size__ ((8)))); ++ ++float32x2_t ++test_dup_1 (float32x2_t in) ++{ ++ return __builtin_shuffle (in, (uint32x2_t) {1, 1}); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ float32x2_t test = {2.718, 3.141}; ++ float32x2_t res = test_dup_1 (test); ++ if (res[0] != test[1] || res[1] != test[1]) ++ abort (); ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times "\[ \t\]*dup\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.s\\\[\[01\]\\\]" 1 } } */ ++/* { dg-final { scan-assembler-not "zip" } } */ ++/* { dg-final { cleanup-saved-temps } } */ ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_5.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_5.c +@@ -0,0 +1,13 @@ ++/* Verify: ++ * -fomit-frame-pointer. ++ * with outgoing. ++ * total frame size <= 512. ++ * one subtraction of the whole frame size. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fomit-frame-pointer" } */ ++ ++#include "test_frame_common.h" ++ ++t_frame_pattern_outgoing (test5, 300, "x19", 8, a[8]) ++t_frame_run (test5) +--- a/src/gcc/testsuite/gcc.target/aarch64/vld1-vst1_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vld1-vst1_1.c +@@ -5,48 +5,54 @@ + + extern void abort (void); + +-int __attribute__ ((noinline)) +-test_vld1_vst1 () +-{ +- int8x8_t a; +- int8x8_t b; +- int i = 0; +- int8_t c[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; +- int8_t d[8]; +- a = vld1_s8 (c); +- asm volatile ("":::"memory"); +- vst1_s8 (d, a); +- asm volatile ("":::"memory"); +- for (; i < 8; i++) +- if (c[i] != d[i]) +- return 1; +- return 0; ++#define TESTMETH(TYPE, NUM, BASETYPE, SUFFIX) \ ++int __attribute__ ((noinline)) \ ++test_vld1_vst1##SUFFIX () \ ++{ \ ++ TYPE vec; \ ++ int i = 0; \ ++ BASETYPE src[NUM]; \ ++ BASETYPE dest[NUM]; \ ++ for (i = 0; i < NUM; i++) \ ++ src[i] = 2*i + 1; \ ++ asm volatile ("":::"memory"); \ ++ vec = vld1 ## SUFFIX (src); \ ++ asm volatile ("":::"memory"); \ ++ vst1 ## SUFFIX (dest, vec); \ ++ asm volatile ("":::"memory"); \ ++ for (i = 0; i < NUM; i++) \ ++ if (src[i] != dest[i]) \ ++ return 1; \ ++ return 0; \ + } + +-int __attribute__ ((noinline)) +-test_vld1q_vst1q () +-{ +- int16x8_t a; +- int16x8_t b; +- int i = 0; +- int16_t c[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; +- int16_t d[8]; +- a = vld1q_s16 (c); +- asm volatile ("":::"memory"); +- vst1q_s16 (d, a); +- asm volatile ("":::"memory"); +- for (; i < 8; i++) +- if (c[i] != d[i]) +- return 1; +- return 0; +-} ++#define VARIANTS(THING) \ ++THING (int8x8_t, 8, int8_t, _s8) \ ++THING (uint8x8_t, 8, uint8_t, _u8) \ ++THING (int16x4_t, 4, int16_t, _s16) \ ++THING (uint16x4_t, 4, uint16_t, _u16) \ ++THING (int32x2_t, 2, int32_t, _s32) \ ++THING (uint32x2_t, 2, uint32_t, _u32) \ ++THING (float32x2_t, 2, float32_t, _f32) \ ++THING (int8x16_t, 16, int8_t, q_s8) \ ++THING (uint8x16_t, 16, uint8_t, q_u8) \ ++THING (int16x8_t, 8, int16_t, q_s16) \ ++THING (uint16x8_t, 8, uint16_t, q_u16) \ ++THING (int32x4_t, 4, int32_t, q_s32) \ ++THING (uint32x4_t, 4, uint32_t, q_u32) \ ++THING (int64x2_t, 2, int64_t, q_s64) \ ++THING (uint64x2_t, 2, uint64_t, q_u64) \ ++THING (float64x2_t, 2, float64_t, q_f64) + ++VARIANTS (TESTMETH) ++ ++#define DOTEST(TYPE, NUM, BASETYPE, SUFFIX) \ ++ if (test_vld1_vst1##SUFFIX ()) \ ++ abort (); ++ + int + main () + { +- if (test_vld1_vst1 ()) +- abort (); +- if (test_vld1q_vst1q ()) +- abort (); ++ VARIANTS (DOTEST); + return 0; + } +--- a/src/gcc/testsuite/gcc.target/aarch64/cvtf_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/cvtf_1.c +@@ -0,0 +1,95 @@ ++/* { dg-do run } */ ++/* { dg-options "-save-temps -fno-inline -O1" } */ ++ ++#define FCVTDEF(ftype,itype) \ ++void \ ++cvt_##itype##_to_##ftype (itype a, ftype b)\ ++{\ ++ ftype c;\ ++ c = (ftype) a;\ ++ if ( (c - b) > 0.00001) abort();\ ++} ++ ++#define force_simd_for_float(v) asm volatile ("mov %s0, %1.s[0]" :"=w" (v) :"w" (v) :) ++#define force_simd_for_double(v) asm volatile ("mov %d0, %1.d[0]" :"=w" (v) :"w" (v) :) ++ ++#define FCVTDEF_SISD(ftype,itype) \ ++void \ ++cvt_##itype##_to_##ftype##_sisd (itype a, ftype b)\ ++{\ ++ ftype c;\ ++ force_simd_for_##ftype(a);\ ++ c = (ftype) a;\ ++ if ( (c - b) > 0.00001) abort();\ ++} ++ ++#define FCVT(ftype,itype,ival,fval) cvt_##itype##_to_##ftype (ival, fval); ++#define FCVT_SISD(ftype,itype,ival,fval) cvt_##itype##_to_##ftype##_sisd (ival, fval); ++ ++typedef int int32_t; ++typedef unsigned int uint32_t; ++typedef long long int int64_t; ++typedef unsigned long long int uint64_t; ++ ++extern void abort(); ++ ++FCVTDEF (float, int32_t) ++/* { dg-final { scan-assembler "scvtf\ts\[0-9\]+,\ w\[0-9\]+" } } */ ++FCVTDEF (float, uint32_t) ++/* { dg-final { scan-assembler "ucvtf\ts\[0-9\]+,\ w\[0-9\]+" } } */ ++FCVTDEF (double, int32_t) ++/* "scvtf\td\[0-9\]+,\ w\[0-9\]+" */ ++FCVTDEF (double, uint32_t) ++/* "ucvtf\td\[0-9\]+,\ w\[0-9\]+" */ ++FCVTDEF (float, int64_t) ++/* "scvtf\ts\[0-9\]+,\ x\[0-9\]+" */ ++FCVTDEF (float, uint64_t) ++/* "ucvtf\ts\[0-9\]+,\ x\[0-9\]+" */ ++FCVTDEF (double, int64_t) ++/* { dg-final { scan-assembler "scvtf\td\[0-9\]+,\ x\[0-9\]+" } } */ ++FCVTDEF (double, uint64_t) ++/* { dg-final { scan-assembler "ucvtf\td\[0-9\]+,\ x\[0-9\]+" } } */ ++FCVTDEF_SISD (float, int32_t) ++/* { dg-final { scan-assembler "scvtf\ts\[0-9\]+,\ s\[0-9\]+" } } */ ++FCVTDEF_SISD (double, int64_t) ++/* { dg-final { scan-assembler "scvtf\td\[0-9\]+,\ d\[0-9\]+" } } */ ++FCVTDEF_SISD (float, uint32_t) ++/* { dg-final { scan-assembler "ucvtf\ts\[0-9\]+,\ s\[0-9\]+" } } */ ++FCVTDEF_SISD (double, uint64_t) ++/* { dg-final { scan-assembler "ucvtf\td\[0-9\]+,\ d\[0-9\]+" } } */ ++FCVTDEF_SISD (float, int64_t) ++/* { dg-final { scan-assembler-times "scvtf\ts\[0-9\]+,\ x\[0-9\]+" 2 } } */ ++FCVTDEF_SISD (float, uint64_t) ++/* { dg-final { scan-assembler-times "ucvtf\ts\[0-9\]+,\ x\[0-9\]+" 2 } } */ ++FCVTDEF_SISD (double, int32_t) ++/* { dg-final { scan-assembler-times "scvtf\td\[0-9\]+,\ w\[0-9\]+" 2 } } */ ++FCVTDEF_SISD (double, uint32_t) ++/* { dg-final { scan-assembler-times "ucvtf\td\[0-9\]+,\ w\[0-9\]+" 2 } } */ ++ ++int32_t ival = -1234; ++int64_t llival = -13031303L; ++uint32_t uival = 1234; ++uint64_t ullival = 13031303L; ++ ++int main () ++{ ++ float x; ++ double y; ++ ++ FCVT (float, int32_t, ival, -1234.0); ++ FCVT (float, uint32_t, uival, 1234.0); ++ FCVT (float, int64_t, llival, -13031303.0); ++ FCVT (float, uint64_t, ullival, 13031303.0); ++ FCVT (double, int32_t, ival, -1234.0); ++ FCVT (double, uint32_t, uival, 1234.0); ++ FCVT (double, int64_t, llival, -13031303.0); ++ FCVT (double, uint64_t, ullival, 13031303.0); ++ FCVT_SISD (float, int32_t, ival, -1234.0); ++ FCVT_SISD (double, int64_t, llival, -13031303.0); ++ FCVT_SISD (float, uint32_t, uival, 1234.0); ++ FCVT_SISD (double, uint64_t, ullival, 13031303.0); ++ ++ return 0; ++} ++ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/vqdmulls_lane_s32.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vqdmulls_lane_s32.c +@@ -5,7 +5,7 @@ + + #include "arm_neon.h" + +-int64x1_t ++int64_t + t_vqdmulls_lane_s32 (int32_t a, int32x2_t b) + { + return vqdmulls_lane_s32 (a, b, 0); +--- a/src/gcc/testsuite/gcc.target/aarch64/symbol-range.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/symbol-range.c +@@ -0,0 +1,13 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -save-temps -mcmodel=small" } */ ++ ++int fixed_regs[0x200000000ULL]; ++ ++int ++foo() ++{ ++ return fixed_regs[0x100000000ULL]; ++} ++ ++/* { dg-final { scan-assembler-not "adrp\tx\[0-9\]+, fixed_regs\\\+" } } */ ++/* { dg-final {cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/pr64263_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/pr64263_1.c +@@ -0,0 +1,23 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O1" } */ ++ ++#include "arm_neon.h" ++ ++extern long int vget_lane_s64_1 (int64x1_t, const int); ++ ++void ++foo () ++{ ++ int8x8_t val14; ++ int8x8_t val15; ++ uint8x8_t val16; ++ uint32x4_t val40; ++ val14 = vcreate_s8 (0xff0080f6807f807fUL); ++ val15 = vcreate_s8 (0x10807fff7f808080UL); ++ val16 = vcgt_s8 (val14, val15); ++ val40 = vreinterpretq_u32_u64 ( ++ vdupq_n_u64 ( ++ vget_lane_s64_1 ( ++ vreinterpret_s64_u8 (val16), 0) ++ )); ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/reload-valid-spoff.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/reload-valid-spoff.c +@@ -17,6 +17,11 @@ + }; + typedef struct _IO_FILE FILE; + extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream); ++extern void *memset (void *s, int c, size_t n); ++extern void *memcpy (void *dest, const void *src, size_t n); ++extern int fprintf (FILE *stream, const char *format, ...); ++extern char * safe_strncpy (char *dst, const char *src, size_t size); ++extern size_t strlen (const char *s); + extern struct _IO_FILE *stderr; + extern int optind; + struct aftype { +--- a/src/gcc/testsuite/gcc.target/aarch64/tail_indirect_call_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/tail_indirect_call_1.c +@@ -0,0 +1,18 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++typedef void FP (int); ++ ++/* { dg-final { scan-assembler "br" } } */ ++/* { dg-final { scan-assembler-not "blr" } } */ ++void ++f1 (FP fp, int n) ++{ ++ (fp) (n); ++} ++ ++void ++f2 (int n, FP fp) ++{ ++ (fp) (n); ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/vqdml_lane_intrinsics-bad_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vqdml_lane_intrinsics-bad_1.c +@@ -0,0 +1,54 @@ ++/* { dg-do compile } */ ++ ++#include "arm_neon.h" ++ ++int32x4_t ++foo (int32x4_t a, int16x4_t b, int16x4_t c, int d) ++{ ++ return vqdmlal_lane_s16 (a, b, c, d); ++} ++ ++int32x4_t ++foo1 (int32x4_t a, int16x4_t b, int16x8_t c, int d) ++{ ++ return vqdmlal_laneq_s16 (a, b, c, d); ++} ++ ++int32x4_t ++foo2 (int32x4_t a, int16x4_t b, int16x4_t c, int d) ++{ ++ return vqdmlsl_lane_s16 (a, b, c, d); ++} ++ ++int32x4_t ++foo3 (int32x4_t a, int16x4_t b, int16x8_t c, int d) ++{ ++ return vqdmlsl_laneq_s16 (a, b, c, d); ++} ++ ++int32x4_t ++foo4 (int32x4_t a, int16x8_t b, int16x4_t c, int d) ++{ ++ return vqdmlal_high_lane_s16 (a, b, c, d); ++} ++ ++int32x4_t ++foo5 (int32x4_t a, int16x8_t b, int16x4_t c, int d) ++{ ++ return vqdmlsl_high_lane_s16 (a, b, c, d); ++} ++ ++int32x4_t ++foo6 (int32x4_t a, int16x8_t b, int16x8_t c, int d) ++{ ++ return vqdmlal_high_laneq_s16 (a, b, c, d); ++} ++ ++int32x4_t ++foo7 (int32x4_t a, int16x8_t b, int16x8_t c, int d) ++{ ++ return vqdmlsl_high_laneq_s16 (a, b, c, d); ++} ++ ++ ++/* { dg-excess-errors "incompatible type for argument" } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_6.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_6.c +@@ -0,0 +1,20 @@ ++/* Verify: ++ * -fomit-frame-pointer. ++ * without outgoing. ++ * total frame size > 512. ++ * number of callee-saved reg == 1. ++ * split stack adjustment into two subtractions. ++ the second subtraction should use "str !". */ ++ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fomit-frame-pointer --save-temps" } */ ++ ++#include "test_frame_common.h" ++ ++t_frame_pattern (test6, 700, ) ++t_frame_run (test6) ++ ++/* { dg-final { scan-assembler-times "str\tx30, \\\[sp, -\[0-9\]+\\\]!" 2 } } */ ++/* { dg-final { scan-assembler-times "ldr\tx30, \\\[sp\\\], \[0-9\]+" 3 } } */ ++ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/symbol-range-tiny.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/symbol-range-tiny.c +@@ -0,0 +1,13 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -save-temps -mcmodel=tiny" } */ ++ ++int fixed_regs[0x00200000]; ++ ++int ++foo() ++{ ++ return fixed_regs[0x00080000]; ++} ++ ++/* { dg-final { scan-assembler-not "adr\tx\[0-9\]+, fixed_regs\\\+" } } */ ++/* { dg-final {cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmls_n.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmls_n.c +@@ -0,0 +1,25 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vmls ++#define TEST_MSG "VMLS_N" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfa4b, 0xfa4c, 0xfa4d, 0xfa4e }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffff4a6, 0xfffff4a7 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xef01, 0xef02, 0xef03, 0xef04 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffe95c, 0xffffe95d }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xc49bdeb8, 0xc49bbeb8 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xe3b7, 0xe3b8, 0xe3b9, 0xe3ba, ++ 0xe3bb, 0xe3bc, 0xe3bd, 0xe3be }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffde12, 0xffffde13, ++ 0xffffde14, 0xffffde15 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xd86d, 0xd86e, 0xd86f, 0xd870, ++ 0xd871, 0xd872, 0xd873, 0xd874 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffd2c8, 0xffffd2c9, ++ 0xffffd2ca, 0xffffd2cb }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0xc56a087b, 0xc569f87b, ++ 0xc569e87b, 0xc569d87b }; ++ ++#include "vmlX_n.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal_lane.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal_lane.c +@@ -0,0 +1,38 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vqdmlal_lane ++#define TEST_MSG "VQDMLAL_LANE" ++ ++/* Expected values of cumulative_saturation flag. */ ++int VECT_VAR(expected_cumulative_sat,int,32,4) = 0; ++int VECT_VAR(expected_cumulative_sat,int,64,2) = 0; ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x7c1e, 0x7c1f, 0x7c20, 0x7c21 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x7c1e, 0x7c1f }; ++ ++/* Expected values of cumulative_saturation flag when multiplying with ++ 0. */ ++int VECT_VAR(expected_cumulative_sat2,int,32,4) = 0; ++int VECT_VAR(expected_cumulative_sat2,int,64,2) = 0; ++ ++/* Expected values when multiplying with 0. */ ++VECT_VAR_DECL(expected2,int,32,4) [] = { 0xfffffff0, 0xfffffff1, ++ 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected2,int,64,2) [] = { 0xfffffffffffffff0, ++ 0xfffffffffffffff1 }; ++ ++/* Expected values of cumulative_saturation flag when multiplication ++ saturates. */ ++int VECT_VAR(expected_cumulative_sat3,int,32,4) = 1; ++int VECT_VAR(expected_cumulative_sat3,int,64,2) = 1; ++ ++/* Expected values when multiplication saturates. */ ++VECT_VAR_DECL(expected3,int,32,4) [] = { 0x7fffffef, 0x7ffffff0, ++ 0x7ffffff1, 0x7ffffff2 }; ++VECT_VAR_DECL(expected3,int,64,2) [] = { 0x7fffffffffffffef, ++ 0x7ffffffffffffff0 }; ++ ++#include "vqdmlXl_lane.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqadd.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqadd.c +@@ -0,0 +1,278 @@ ++#define INSN_NAME vqadd ++#define TEST_MSG "VQADD/VQADDQ" ++ ++/* Extra tests for special cases: ++ - some requiring intermediate types larger than 64 bits to ++ compute saturation flag. ++ - corner case saturations with types smaller than 64 bits. ++*/ ++void vqadd_extras(void); ++#define EXTRA_TESTS vqadd_extras ++ ++#include "binary_sat_op.inc" ++ ++/* Expected values of cumulative_saturation flag. */ ++int VECT_VAR(expected_cumulative_sat,int,8,8) = 0; ++int VECT_VAR(expected_cumulative_sat,int,16,4) = 0; ++int VECT_VAR(expected_cumulative_sat,int,32,2) = 0; ++int VECT_VAR(expected_cumulative_sat,int,64,1) = 0; ++int VECT_VAR(expected_cumulative_sat,uint,8,8) = 1; ++int VECT_VAR(expected_cumulative_sat,uint,16,4) = 1; ++int VECT_VAR(expected_cumulative_sat,uint,32,2) = 1; ++int VECT_VAR(expected_cumulative_sat,uint,64,1) = 1; ++int VECT_VAR(expected_cumulative_sat,int,8,16) = 0; ++int VECT_VAR(expected_cumulative_sat,int,16,8) = 0; ++int VECT_VAR(expected_cumulative_sat,int,32,4) = 0; ++int VECT_VAR(expected_cumulative_sat,int,64,2) = 0; ++int VECT_VAR(expected_cumulative_sat,uint,8,16) = 1; ++int VECT_VAR(expected_cumulative_sat,uint,16,8) = 1; ++int VECT_VAR(expected_cumulative_sat,uint,32,4) = 1; ++int VECT_VAR(expected_cumulative_sat,uint,64,2) = 1; ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x1, 0x2, 0x3, 0x4, ++ 0x5, 0x6, 0x7, 0x8 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x12, 0x13, 0x14, 0x15 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x23, 0x24 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x34 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xff, 0xff }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xffff, 0xffff, 0xffff, 0xffff }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffff, 0xffffffff }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0xffffffffffffffff }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x1, 0x2, 0x3, 0x4, ++ 0x5, 0x6, 0x7, 0x8, ++ 0x9, 0xa, 0xb, 0xc, ++ 0xd, 0xe, 0xf, 0x10 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x12, 0x13, 0x14, 0x15, ++ 0x16, 0x17, 0x18, 0x19 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x23, 0x24, 0x25, 0x26 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x34, 0x35 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xff, 0xff }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xffff, 0xffff, 0xffff, 0xffff, ++ 0xffff, 0xffff, 0xffff, 0xffff }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffff, 0xffffffff, ++ 0xffffffff, 0xffffffff }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffffffffffff, ++ 0xffffffffffffffff }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++ ++/* 64-bits types, with 0 as second input. */ ++int VECT_VAR(expected_cumulative_sat_64,int,64,1) = 0; ++int VECT_VAR(expected_cumulative_sat_64,uint,64,1) = 0; ++int VECT_VAR(expected_cumulative_sat_64,int,64,2) = 0; ++int VECT_VAR(expected_cumulative_sat_64,uint,64,2) = 0; ++VECT_VAR_DECL(expected_64,int,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected_64,uint,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected_64,int,64,2) [] = { 0xfffffffffffffff0, ++ 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected_64,uint,64,2) [] = { 0xfffffffffffffff0, ++ 0xfffffffffffffff1 }; ++ ++/* 64-bits types, some cases causing cumulative saturation. */ ++int VECT_VAR(expected_cumulative_sat_64_2,int,64,1) = 0; ++int VECT_VAR(expected_cumulative_sat_64_2,uint,64,1) = 1; ++int VECT_VAR(expected_cumulative_sat_64_2,int,64,2) = 0; ++int VECT_VAR(expected_cumulative_sat_64_2,uint,64,2) = 1; ++VECT_VAR_DECL(expected_64_2,int,64,1) [] = { 0x34 }; ++VECT_VAR_DECL(expected_64_2,uint,64,1) [] = { 0xffffffffffffffff }; ++VECT_VAR_DECL(expected_64_2,int,64,2) [] = { 0x34, 0x35 }; ++VECT_VAR_DECL(expected_64_2,uint,64,2) [] = { 0xffffffffffffffff, ++ 0xffffffffffffffff }; ++ ++/* 64-bits types, all causing cumulative saturation. */ ++int VECT_VAR(expected_cumulative_sat_64_3,int,64,1) = 1; ++int VECT_VAR(expected_cumulative_sat_64_3,uint,64,1) = 1; ++int VECT_VAR(expected_cumulative_sat_64_3,int,64,2) = 1; ++int VECT_VAR(expected_cumulative_sat_64_3,uint,64,2) = 1; ++VECT_VAR_DECL(expected_64_3,int,64,1) [] = { 0x8000000000000000 }; ++VECT_VAR_DECL(expected_64_3,uint,64,1) [] = { 0xffffffffffffffff }; ++VECT_VAR_DECL(expected_64_3,int,64,2) [] = { 0x7fffffffffffffff, ++ 0x7fffffffffffffff }; ++VECT_VAR_DECL(expected_64_3,uint,64,2) [] = { 0xffffffffffffffff, ++ 0xffffffffffffffff }; ++ ++/* smaller types, corner cases causing cumulative saturation. (1) */ ++int VECT_VAR(expected_csat_lt_64_1,int,8,8) = 1; ++int VECT_VAR(expected_csat_lt_64_1,int,16,4) = 1; ++int VECT_VAR(expected_csat_lt_64_1,int,32,2) = 1; ++int VECT_VAR(expected_csat_lt_64_1,int,8,16) = 1; ++int VECT_VAR(expected_csat_lt_64_1,int,16,8) = 1; ++int VECT_VAR(expected_csat_lt_64_1,int,32,4) = 1; ++VECT_VAR_DECL(expected_lt_64_1,int,8,8) [] = { 0x80, 0x80, 0x80, 0x80, ++ 0x80, 0x80, 0x80, 0x80 }; ++VECT_VAR_DECL(expected_lt_64_1,int,16,4) [] = { 0x8000, 0x8000, ++ 0x8000, 0x8000 }; ++VECT_VAR_DECL(expected_lt_64_1,int,32,2) [] = { 0x80000000, 0x80000000 }; ++VECT_VAR_DECL(expected_lt_64_1,int,8,16) [] = { 0x80, 0x80, 0x80, 0x80, ++ 0x80, 0x80, 0x80, 0x80, ++ 0x80, 0x80, 0x80, 0x80, ++ 0x80, 0x80, 0x80, 0x80 }; ++VECT_VAR_DECL(expected_lt_64_1,int,16,8) [] = { 0x8000, 0x8000, ++ 0x8000, 0x8000, ++ 0x8000, 0x8000, ++ 0x8000, 0x8000 }; ++VECT_VAR_DECL(expected_lt_64_1,int,32,4) [] = { 0x80000000, 0x80000000, ++ 0x80000000, 0x80000000 }; ++ ++/* smaller types, corner cases causing cumulative saturation. (2) */ ++int VECT_VAR(expected_csat_lt_64_2,uint,8,8) = 1; ++int VECT_VAR(expected_csat_lt_64_2,uint,16,4) = 1; ++int VECT_VAR(expected_csat_lt_64_2,uint,32,2) = 1; ++int VECT_VAR(expected_csat_lt_64_2,uint,8,16) = 1; ++int VECT_VAR(expected_csat_lt_64_2,uint,16,8) = 1; ++int VECT_VAR(expected_csat_lt_64_2,uint,32,4) = 1; ++VECT_VAR_DECL(expected_lt_64_2,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xff, 0xff }; ++VECT_VAR_DECL(expected_lt_64_2,uint,16,4) [] = { 0xffff, 0xffff, ++ 0xffff, 0xffff }; ++VECT_VAR_DECL(expected_lt_64_2,uint,32,2) [] = { 0xffffffff, ++ 0xffffffff }; ++VECT_VAR_DECL(expected_lt_64_2,uint,8,16) [] = { 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xff, 0xff }; ++VECT_VAR_DECL(expected_lt_64_2,uint,16,8) [] = { 0xffff, 0xffff, ++ 0xffff, 0xffff, ++ 0xffff, 0xffff, ++ 0xffff, 0xffff }; ++VECT_VAR_DECL(expected_lt_64_2,uint,32,4) [] = { 0xffffffff, 0xffffffff, ++ 0xffffffff, 0xffffffff }; ++ ++void vqadd_extras(void) ++{ ++ DECL_VARIABLE_ALL_VARIANTS(vector1); ++ DECL_VARIABLE_ALL_VARIANTS(vector2); ++ DECL_VARIABLE_ALL_VARIANTS(vector_res); ++ ++ /* Initialize input "vector1" from "buffer". */ ++ TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector1, buffer); ++ ++ /* Use a second vector full of 0. */ ++ VDUP(vector2, , int, s, 64, 1, 0); ++ VDUP(vector2, , uint, u, 64, 1, 0); ++ VDUP(vector2, q, int, s, 64, 2, 0); ++ VDUP(vector2, q, uint, u, 64, 2, 0); ++ ++#define MSG "64 bits saturation adding zero" ++ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 64, 1, expected_cumulative_sat_64, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 64, 1, expected_cumulative_sat_64, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 64, 2, expected_cumulative_sat_64, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 64, 2, expected_cumulative_sat_64, MSG); ++ ++ CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_64, MSG); ++ CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_64, MSG); ++ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_64, MSG); ++ CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_64, MSG); ++ ++ /* Another set of tests with non-zero values, some chosen to create ++ overflow. */ ++ VDUP(vector2, , int, s, 64, 1, 0x44); ++ VDUP(vector2, , uint, u, 64, 1, 0x88); ++ VDUP(vector2, q, int, s, 64, 2, 0x44); ++ VDUP(vector2, q, uint, u, 64, 2, 0x88); ++ ++#undef MSG ++#define MSG "64 bits saturation cumulative_sat (2)" ++ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 64, 1, expected_cumulative_sat_64_2, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 64, 1, expected_cumulative_sat_64_2, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 64, 2, expected_cumulative_sat_64_2, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 64, 2, expected_cumulative_sat_64_2, MSG); ++ ++ CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_64_2, MSG); ++ CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_64_2, MSG); ++ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_64_2, MSG); ++ CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_64_2, MSG); ++ ++ /* Another set of tests, with input values chosen to set ++ cumulative_sat in all cases. */ ++ VDUP(vector2, , int, s, 64, 1, 0x8000000000000003LL); ++ VDUP(vector2, , uint, u, 64, 1, 0x88); ++ /* To check positive saturation, we need to write a positive value ++ in vector1. */ ++ VDUP(vector1, q, int, s, 64, 2, 0x4000000000000000LL); ++ VDUP(vector2, q, int, s, 64, 2, 0x4000000000000000LL); ++ VDUP(vector2, q, uint, u, 64, 2, 0x22); ++ ++#undef MSG ++#define MSG "64 bits saturation cumulative_sat (3)" ++ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 64, 1, expected_cumulative_sat_64_3, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 64, 1, expected_cumulative_sat_64_3, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 64, 2, expected_cumulative_sat_64_3, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 64, 2, expected_cumulative_sat_64_3, MSG); ++ ++ CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_64_3, MSG); ++ CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_64_3, MSG); ++ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_64_3, MSG); ++ CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_64_3, MSG); ++ ++ /* To improve coverage, check saturation with less than 64 bits ++ too. */ ++ VDUP(vector2, , int, s, 8, 8, 0x81); ++ VDUP(vector2, , int, s, 16, 4, 0x8001); ++ VDUP(vector2, , int, s, 32, 2, 0x80000001); ++ VDUP(vector2, q, int, s, 8, 16, 0x81); ++ VDUP(vector2, q, int, s, 16, 8, 0x8001); ++ VDUP(vector2, q, int, s, 32, 4, 0x80000001); ++ ++#undef MSG ++#define MSG "less than 64 bits saturation cumulative_sat (1)" ++ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 8, 8, expected_csat_lt_64_1, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 16, 4, expected_csat_lt_64_1, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 32, 2, expected_csat_lt_64_1, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 8, 16, expected_csat_lt_64_1, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 16, 8, expected_csat_lt_64_1, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 32, 4, expected_csat_lt_64_1, MSG); ++ ++ CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_lt_64_1, MSG); ++ CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_lt_64_1, MSG); ++ CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_lt_64_1, MSG); ++ CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_lt_64_1, MSG); ++ CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_lt_64_1, MSG); ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_lt_64_1, MSG); ++ ++ /* Another set of tests with large vector1 values. */ ++ VDUP(vector1, , uint, u, 8, 8, 0xF0); ++ VDUP(vector1, , uint, u, 16, 4, 0xFFF0); ++ VDUP(vector1, , uint, u, 32, 2, 0xFFFFFFF0); ++ VDUP(vector1, q, uint, u, 8, 16, 0xF0); ++ VDUP(vector1, q, uint, u, 16, 8, 0xFFF0); ++ VDUP(vector1, q, uint, u, 32, 4, 0xFFFFFFF0); ++ ++ VDUP(vector2, , uint, u, 8, 8, 0x20); ++ VDUP(vector2, , uint, u, 16, 4, 0x20); ++ VDUP(vector2, , uint, u, 32, 2, 0x20); ++ VDUP(vector2, q, uint, u, 8, 16, 0x20); ++ VDUP(vector2, q, uint, u, 16, 8, 0x20); ++ VDUP(vector2, q, uint, u, 32, 4, 0x20); ++ ++#undef MSG ++#define MSG "less than 64 bits saturation cumulative_sat (2)" ++ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 8, 8, expected_csat_lt_64_2, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 16, 4, expected_csat_lt_64_2, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 32, 2, expected_csat_lt_64_2, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 8, 16, expected_csat_lt_64_2, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 16, 8, expected_csat_lt_64_2, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 32, 4, expected_csat_lt_64_2, MSG); ++ ++ CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_lt_64_2, MSG); ++ CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_lt_64_2, MSG); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_lt_64_2, MSG); ++ CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_lt_64_2, MSG); ++ CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_lt_64_2, MSG); ++ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_lt_64_2, MSG); ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmla.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmla.c +@@ -0,0 +1,35 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vmla ++#define TEST_MSG "VMLA" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xdf, 0xe0, 0xe1, 0xe2, ++ 0xe3, 0xe4, 0xe5, 0xe6 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x1f8c, 0x1f8d, 0x1f8e, 0x1f8f }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x2bf7, 0x2bf8 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x20, 0x21, 0x22, 0x23, ++ 0x24, 0x25, 0x26, 0x27 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3e07, 0x3e08, 0x3e09, 0x3e0a }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x43ac, 0x43ad }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x43a14e76, 0x43a1ce76 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0xf, 0x10, 0x11, 0x12, ++ 0x13, 0x14, 0x15, 0x16, ++ 0x17, 0x18, 0x19, 0x1a, ++ 0x1b, 0x1c, 0x1d, 0x1e }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x4830, 0x4831, 0x4832, 0x4833, ++ 0x4834, 0x4835, 0x4836, 0x4837 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x470f, 0x4710, 0x4711, 0x4712 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xac, 0xad, 0xae, 0xaf, ++ 0xb0, 0xb1, 0xb2, 0xb3, ++ 0xb4, 0xb5, 0xb6, 0xb7, ++ 0xb8, 0xb9, 0xba, 0xbb }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x3e07, 0x3e08, 0x3e09, 0x3e0a, ++ 0x3e0b, 0x3e0c, 0x3e0d, 0x3e0e }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x3620, 0x3621, 0x3622, 0x3623 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x45f0ae15, 0x45f0b615, ++ 0x45f0be15, 0x45f0c615 }; ++ ++#include "vmlX.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqsub.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqsub.c +@@ -0,0 +1,278 @@ ++#define INSN_NAME vqsub ++#define TEST_MSG "VQSUB/VQSUBQ" ++ ++/* Extra tests for special cases: ++ - some requiring intermediate types larger than 64 bits to ++ compute saturation flag. ++ - corner case saturations with types smaller than 64 bits. ++*/ ++void vqsub_extras(void); ++#define EXTRA_TESTS vqsub_extras ++ ++#include "binary_sat_op.inc" ++ ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xdf, 0xe0, 0xe1, 0xe2, ++ 0xe3, 0xe4, 0xe5, 0xe6 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xffce, 0xffcf, ++ 0xffd0, 0xffd1 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xffffffbd, 0xffffffbe }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0xffffffffffffffac }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x9b, 0x9c, 0x9d, 0x9e, ++ 0x9f, 0xa0, 0xa1, 0xa2 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xff8a, 0xff8b, ++ 0xff8c, 0xff8d }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffff79, 0xffffff7a }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0xffffffffffffff68 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0xdf, 0xe0, 0xe1, 0xe2, ++ 0xe3, 0xe4, 0xe5, 0xe6, ++ 0xe7, 0xe8, 0xe9, 0xea, ++ 0xeb, 0xec, 0xed, 0xee }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xffce, 0xffcf, 0xffd0, 0xffd1, ++ 0xffd2, 0xffd3, 0xffd4, 0xffd5 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffffbd, 0xffffffbe, ++ 0xffffffbf, 0xffffffc0 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xffffffffffffffac, ++ 0xffffffffffffffad }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x9b, 0x9c, 0x9d, 0x9e, ++ 0x9f, 0xa0, 0xa1, 0xa2, ++ 0xa3, 0xa4, 0xa5, 0xa6, ++ 0xa7, 0xa8, 0xa9, 0xaa }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xff8a, 0xff8b, 0xff8c, 0xff8d, ++ 0xff8e, 0xff8f, 0xff90, 0xff91 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffff79, 0xffffff7a, ++ 0xffffff7b, 0xffffff7c }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffffffffff68, ++ 0xffffffffffffff69 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++/* Expected values of cumulative saturation flag. */ ++int VECT_VAR(expected_cumulative_sat,int,8,8) = 0; ++int VECT_VAR(expected_cumulative_sat,int,16,4) = 0; ++int VECT_VAR(expected_cumulative_sat,int,32,2) = 0; ++int VECT_VAR(expected_cumulative_sat,int,64,1) = 0; ++int VECT_VAR(expected_cumulative_sat,uint,8,8) = 0; ++int VECT_VAR(expected_cumulative_sat,uint,16,4) = 0; ++int VECT_VAR(expected_cumulative_sat,uint,32,2) = 0; ++int VECT_VAR(expected_cumulative_sat,uint,64,1) = 0; ++int VECT_VAR(expected_cumulative_sat,int,8,16) = 0; ++int VECT_VAR(expected_cumulative_sat,int,16,8) = 0; ++int VECT_VAR(expected_cumulative_sat,int,32,4) = 0; ++int VECT_VAR(expected_cumulative_sat,int,64,2) = 0; ++int VECT_VAR(expected_cumulative_sat,uint,8,16) = 0; ++int VECT_VAR(expected_cumulative_sat,uint,16,8) = 0; ++int VECT_VAR(expected_cumulative_sat,uint,32,4) = 0; ++int VECT_VAR(expected_cumulative_sat,uint,64,2) = 0; ++ ++/* 64-bits types, with 0 as second input. */ ++VECT_VAR_DECL(expected_64,int,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected_64,uint,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected_64,int,64,2) [] = { 0xfffffffffffffff0, ++ 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected_64,uint,64,2) [] = { 0xfffffffffffffff0, ++ 0xfffffffffffffff1 }; ++int VECT_VAR(expected_cumulative_sat_64,int,64,1) = 0; ++int VECT_VAR(expected_cumulative_sat_64,uint,64,1) = 0; ++int VECT_VAR(expected_cumulative_sat_64,int,64,2) = 0; ++int VECT_VAR(expected_cumulative_sat_64,uint,64,2) = 0; ++ ++/* 64-bits types, other cases. */ ++VECT_VAR_DECL(expected_64_2,int,64,1) [] = { 0xffffffffffffffac }; ++VECT_VAR_DECL(expected_64_2,uint,64,1) [] = { 0xffffffffffffff68 }; ++VECT_VAR_DECL(expected_64_2,int,64,2) [] = { 0xffffffffffffffac, ++ 0xffffffffffffffad }; ++VECT_VAR_DECL(expected_64_2,uint,64,2) [] = { 0xffffffffffffff68, ++ 0xffffffffffffff69 }; ++int VECT_VAR(expected_cumulative_sat_64_2,int,64,1) = 0; ++int VECT_VAR(expected_cumulative_sat_64_2,uint,64,1) = 0; ++int VECT_VAR(expected_cumulative_sat_64_2,int,64,2) = 0; ++int VECT_VAR(expected_cumulative_sat_64_2,uint,64,2) = 0; ++ ++/* 64-bits types, all causing cumulative saturation. */ ++VECT_VAR_DECL(expected_64_3,int,64,1) [] = { 0x8000000000000000 }; ++VECT_VAR_DECL(expected_64_3,uint,64,1) [] = { 0x0 }; ++VECT_VAR_DECL(expected_64_3,int,64,2) [] = { 0x7fffffffffffffff, ++ 0x7fffffffffffffff }; ++VECT_VAR_DECL(expected_64_3,uint,64,2) [] = { 0x0, 0x0 }; ++int VECT_VAR(expected_cumulative_sat_64_3,int,64,1) = 1; ++int VECT_VAR(expected_cumulative_sat_64_3,uint,64,1) = 1; ++int VECT_VAR(expected_cumulative_sat_64_3,int,64,2) = 1; ++int VECT_VAR(expected_cumulative_sat_64_3,uint,64,2) = 1; ++ ++/* smaller types, corner cases causing cumulative saturation. (1) */ ++VECT_VAR_DECL(expected_lt_64_1,int,8,8) [] = { 0x80, 0x80, 0x80, 0x80, ++ 0x80, 0x80, 0x80, 0x80 }; ++VECT_VAR_DECL(expected_lt_64_1,int,16,4) [] = { 0x8000, 0x8000, ++ 0x8000, 0x8000 }; ++VECT_VAR_DECL(expected_lt_64_1,int,32,2) [] = { 0x80000000, 0x80000000 }; ++VECT_VAR_DECL(expected_lt_64_1,int,8,16) [] = { 0x80, 0x80, 0x80, 0x80, ++ 0x80, 0x80, 0x80, 0x80, ++ 0x80, 0x80, 0x80, 0x80, ++ 0x80, 0x80, 0x80, 0x80 }; ++VECT_VAR_DECL(expected_lt_64_1,int,16,8) [] = { 0x8000, 0x8000, ++ 0x8000, 0x8000, ++ 0x8000, 0x8000, ++ 0x8000, 0x8000 }; ++VECT_VAR_DECL(expected_lt_64_1,int,32,4) [] = { 0x80000000, 0x80000000, ++ 0x80000000, 0x80000000 }; ++int VECT_VAR(expected_csat_lt_64_1,int,8,8) = 1; ++int VECT_VAR(expected_csat_lt_64_1,int,16,4) = 1; ++int VECT_VAR(expected_csat_lt_64_1,int,32,2) = 1; ++int VECT_VAR(expected_csat_lt_64_1,int,8,16) = 1; ++int VECT_VAR(expected_csat_lt_64_1,int,16,8) = 1; ++int VECT_VAR(expected_csat_lt_64_1,int,32,4) = 1; ++ ++/* smaller types, corner cases causing cumulative saturation. (2) */ ++VECT_VAR_DECL(expected_lt_64_2,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_lt_64_2,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_lt_64_2,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected_lt_64_2,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_lt_64_2,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_lt_64_2,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 }; ++int VECT_VAR(expected_csat_lt_64_2,uint,8,8) = 1; ++int VECT_VAR(expected_csat_lt_64_2,uint,16,4) = 1; ++int VECT_VAR(expected_csat_lt_64_2,uint,32,2) = 1; ++int VECT_VAR(expected_csat_lt_64_2,uint,8,16) = 1; ++int VECT_VAR(expected_csat_lt_64_2,uint,16,8) = 1; ++int VECT_VAR(expected_csat_lt_64_2,uint,32,4) = 1; ++ ++void vqsub_extras(void) ++{ ++ DECL_VARIABLE_ALL_VARIANTS(vector1); ++ DECL_VARIABLE_ALL_VARIANTS(vector2); ++ DECL_VARIABLE_ALL_VARIANTS(vector_res); ++ ++ /* Initialize input "vector1" from "buffer". */ ++ TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector1, buffer); ++ ++ /* Use a second vector full of 0. */ ++ VDUP(vector2, , int, s, 64, 1, 0x0); ++ VDUP(vector2, , uint, u, 64, 1, 0x0); ++ VDUP(vector2, q, int, s, 64, 2, 0x0); ++ VDUP(vector2, q, uint, u, 64, 2, 0x0); ++ ++#define MSG "64 bits saturation when adding zero" ++ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 64, 1, expected_cumulative_sat_64, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 64, 1, expected_cumulative_sat_64, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 64, 2, expected_cumulative_sat_64, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 64, 2, expected_cumulative_sat_64, MSG); ++ ++ CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_64, MSG); ++ CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_64, MSG); ++ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_64, MSG); ++ CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_64, MSG); ++ ++ /* Another set of tests with non-zero values. */ ++ VDUP(vector2, , int, s, 64, 1, 0x44); ++ VDUP(vector2, , uint, u, 64, 1, 0x88); ++ VDUP(vector2, q, int, s, 64, 2, 0x44); ++ VDUP(vector2, q, uint, u, 64, 2, 0x88); ++ ++#undef MSG ++#define MSG "64 bits saturation cumulative_sat (2)" ++ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 64, 1, expected_cumulative_sat_64_2, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 64, 1, expected_cumulative_sat_64_2, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 64, 2, expected_cumulative_sat_64_2, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 64, 2, expected_cumulative_sat_64_2, MSG); ++ ++ CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_64_2, MSG); ++ CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_64_2, MSG); ++ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_64_2, MSG); ++ CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_64_2, MSG); ++ ++ /* Another set of tests, with input values chosen to set ++ cumulative_sat in all cases. */ ++ VDUP(vector2, , int, s, 64, 1, 0x7fffffffffffffffLL); ++ VDUP(vector2, , uint, u, 64, 1, 0xffffffffffffffffULL); ++ /* To check positive saturation, we need to write a positive value ++ in vector1. */ ++ VDUP(vector1, q, int, s, 64, 2, 0x3fffffffffffffffLL); ++ VDUP(vector2, q, int, s, 64, 2, 0x8000000000000000LL); ++ VDUP(vector2, q, uint, u, 64, 2, 0xffffffffffffffffULL); ++ ++#undef MSG ++#define MSG "64 bits saturation cumulative_sat (3)" ++ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 64, 1, expected_cumulative_sat_64_3, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 64, 1, expected_cumulative_sat_64_3, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 64, 2, expected_cumulative_sat_64_3, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 64, 2, expected_cumulative_sat_64_3, MSG); ++ ++ CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_64_3, MSG); ++ CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_64_3, MSG); ++ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_64_3, MSG); ++ CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_64_3, MSG); ++ ++ /* To improve coverage, check saturation with less than 64 bits ++ too. */ ++ VDUP(vector2, , int, s, 8, 8, 0x7F); ++ VDUP(vector2, , int, s, 16, 4, 0x7FFF); ++ VDUP(vector2, , int, s, 32, 2, 0x7FFFFFFF); ++ VDUP(vector2, q, int, s, 8, 16, 0x7F); ++ VDUP(vector2, q, int, s, 16, 8, 0x7FFF); ++ VDUP(vector2, q, int, s, 32, 4, 0x7FFFFFFF); ++ ++#undef MSG ++#define MSG "less than 64 bits saturation cumulative_sat (1)" ++ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 8, 8, expected_csat_lt_64_1, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 16, 4, expected_csat_lt_64_1, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 32, 2, expected_csat_lt_64_1, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 8, 16, expected_csat_lt_64_1, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 16, 8, expected_csat_lt_64_1, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 32, 4, expected_csat_lt_64_1, MSG); ++ ++ CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_lt_64_1, MSG); ++ CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_lt_64_1, MSG); ++ CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_lt_64_1, MSG); ++ CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_lt_64_1, MSG); ++ CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_lt_64_1, MSG); ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_lt_64_1, MSG); ++ ++ /* Another set of tests with vector1 values smaller than ++ vector2. */ ++ VDUP(vector1, , uint, u, 8, 8, 0x10); ++ VDUP(vector1, , uint, u, 16, 4, 0x10); ++ VDUP(vector1, , uint, u, 32, 2, 0x10); ++ VDUP(vector1, q, uint, u, 8, 16, 0x10); ++ VDUP(vector1, q, uint, u, 16, 8, 0x10); ++ VDUP(vector1, q, uint, u, 32, 4, 0x10); ++ ++ VDUP(vector2, , uint, u, 8, 8, 0x20); ++ VDUP(vector2, , uint, u, 16, 4, 0x20); ++ VDUP(vector2, , uint, u, 32, 2, 0x20); ++ VDUP(vector2, q, uint, u, 8, 16, 0x20); ++ VDUP(vector2, q, uint, u, 16, 8, 0x20); ++ VDUP(vector2, q, uint, u, 32, 4, 0x20); ++ ++#undef MSG ++#define MSG "less than 64 bits saturation cumulative_sat (2)" ++ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 8, 8, expected_csat_lt_64_2, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 16, 4, expected_csat_lt_64_2, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 32, 2, expected_csat_lt_64_2, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 8, 16, expected_csat_lt_64_2, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 16, 8, expected_csat_lt_64_2, MSG); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 32, 4, expected_csat_lt_64_2, MSG); ++ ++ CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_lt_64_2, MSG); ++ CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_lt_64_2, MSG); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_lt_64_2, MSG); ++ CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_lt_64_2, MSG); ++ CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_lt_64_2, MSG); ++ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_lt_64_2, MSG); ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull_n.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull_n.c +@@ -0,0 +1,92 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected values of cumulative_saturation flag. */ ++int VECT_VAR(expected_cumulative_sat,int,16,4) = 0; ++int VECT_VAR(expected_cumulative_sat,int,32,2) = 0; ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x44000, 0x44000, ++ 0x44000, 0x44000 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xaa000, 0xaa000 }; ++ ++/* Expected values of cumulative_saturation flag when saturation ++ occurs. */ ++int VECT_VAR(expected_cumulative_sat2,int,16,4) = 1; ++int VECT_VAR(expected_cumulative_sat2,int,32,2) = 1; ++ ++/* Expected results when saturation occurs. */ ++VECT_VAR_DECL(expected2,int,32,4) [] = { 0x7fffffff, 0x7fffffff, ++ 0x7fffffff, 0x7fffffff }; ++VECT_VAR_DECL(expected2,int,64,2) [] = { 0x7fffffffffffffff, ++ 0x7fffffffffffffff }; ++ ++#define INSN_NAME vqdmull ++#define TEST_MSG "VQDMULL_N" ++ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ int i; ++ ++ /* vector_res = vqdmull_n(vector,val), then store the result. */ ++#define TEST_VQDMULL_N2(INSN, T1, T2, W, W2, N, L, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W2, N)); \ ++ VECT_VAR(vector_res, T1, W2, N) = \ ++ INSN##_n_##T2##W(VECT_VAR(vector, T1, W, N), \ ++ L); \ ++ vst1q_##T2##W2(VECT_VAR(result, T1, W2, N), \ ++ VECT_VAR(vector_res, T1, W2, N)); \ ++ CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++ /* Two auxliary macros are necessary to expand INSN. */ ++#define TEST_VQDMULL_N1(INSN, T1, T2, W, W2, N, L, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ TEST_VQDMULL_N2(INSN, T1, T2, W, W2, N, L, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++#define TEST_VQDMULL_N(T1, T2, W, W2, N, L, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ TEST_VQDMULL_N1(INSN_NAME, T1, T2, W, W2, N, L, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++ DECL_VARIABLE(vector, int, 16, 4); ++ DECL_VARIABLE(vector, int, 32, 2); ++ DECL_VARIABLE(vector2, int, 16, 4); ++ DECL_VARIABLE(vector2, int, 32, 2); ++ ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ DECL_VARIABLE(vector_res, int, 64, 2); ++ ++ clean_results (); ++ ++ /* Initialize vector. */ ++ VDUP(vector, , int, s, 16, 4, 0x1000); ++ VDUP(vector, , int, s, 32, 2, 0x1000); ++ ++ /* Initialize vector2. */ ++ VDUP(vector2, , int, s, 16, 4, 0x4); ++ VDUP(vector2, , int, s, 32, 2, 0x2); ++ ++ /* Choose multiplier arbitrarily. */ ++ TEST_VQDMULL_N(int, s, 16, 32, 4, 0x22, expected_cumulative_sat, ""); ++ TEST_VQDMULL_N(int, s, 32, 64, 2, 0x55, expected_cumulative_sat, ""); ++ ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, ""); ++ ++ VDUP(vector, , int, s, 16, 4, 0x8000); ++ VDUP(vector, , int, s, 32, 2, 0x80000000); ++ ++#define TEST_MSG2 "with saturation" ++ TEST_VQDMULL_N(int, s, 16, 32, 4, 0x8000, expected_cumulative_sat2, TEST_MSG2); ++ TEST_VQDMULL_N(int, s, 32, 64, 2, 0x80000000, expected_cumulative_sat2, TEST_MSG2); ++ ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected2, TEST_MSG2); ++ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected2, TEST_MSG2); ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/compute-ref-data.h ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/compute-ref-data.h +@@ -0,0 +1,193 @@ ++/* This file contains input data static definitions, shared by most of ++ the tests. */ ++ ++#include ++#include "arm-neon-ref.h" ++ ++/* Initialization helpers; 4 slices are needed for vld2, vld3 and ++ vld4. */ ++#define MY_INIT_TABLE(T,W,N) xNAME(INIT_TABLE,N)(T##W##_t) ++#define MY_INIT_TABLE2(T,W,N) xNAME(INIT_TABLE2,N)(T##W##_t) ++#define MY_INIT_TABLE3(T,W,N) xNAME(INIT_TABLE3,N)(T##W##_t) ++#define MY_INIT_TABLE4(T,W,N) xNAME(INIT_TABLE4,N)(T##W##_t) ++ ++/* Initialized input buffers. */ ++#define VECT_VAR_DECL_INIT(V, T, W, N) \ ++ VECT_VAR_DECL(V,T,W,N) [] = { MY_INIT_TABLE(T,W,N) } ++ ++/* Specialized initializer with 4 entries, as used by vldX_dup and ++ vdup tests, which iterate 4 times on input buffers. */ ++#define VECT_VAR_DECL_INIT4(V, T, W, N) \ ++ VECT_VAR_DECL(V,T,W,N) [] = { MY_INIT_TABLE(T,W,4) }; ++ ++/* Initializers for arrays of vectors. */ ++#define VECT_ARRAY_INIT2(V, T, W, N) \ ++ T##W##_t VECT_ARRAY_VAR(V,T,W,N,2)[] = \ ++ { MY_INIT_TABLE(T,W,N) \ ++ MY_INIT_TABLE2(T,W,N) } ++ ++#define VECT_ARRAY_INIT3(V, T, W, N) \ ++ T##W##_t VECT_ARRAY_VAR(V,T,W,N,3)[] = \ ++ { MY_INIT_TABLE(T,W,N) \ ++ MY_INIT_TABLE2(T,W,N) \ ++ MY_INIT_TABLE3(T,W,N) } ++ ++#define VECT_ARRAY_INIT4(V, T, W, N) \ ++ T##W##_t VECT_ARRAY_VAR(V,T,W,N,4)[] = \ ++ { MY_INIT_TABLE(T,W,N) \ ++ MY_INIT_TABLE2(T,W,N) \ ++ MY_INIT_TABLE3(T,W,N) \ ++ MY_INIT_TABLE4(T,W,N) } ++ ++/* Sample initialization vectors. */ ++#define INIT_TABLE_1(T) \ ++ (T)-16, ++#define INIT_TABLE2_1(T) \ ++ (T)-15, ++#define INIT_TABLE3_1(T) \ ++ (T)-14, ++#define INIT_TABLE4_1(T) \ ++ (T)-13, ++ ++#define INIT_TABLE_2(T) \ ++ (T)-16, (T)-15, ++#define INIT_TABLE2_2(T) \ ++ (T)-14, (T)-13, ++#define INIT_TABLE3_2(T) \ ++ (T)-12, (T)-11, ++#define INIT_TABLE4_2(T) \ ++ (T)-10, (T)-9, ++ ++/* Initializer for vld3_lane tests. */ ++#define INIT_TABLE_3(T) \ ++ (T)-16, (T)-15, (T)-14, ++ ++#define INIT_TABLE_4(T) \ ++ (T)-16, (T)-15, (T)-14, (T)-13, ++#define INIT_TABLE2_4(T) \ ++ (T)-12, (T)-11, (T)-10, (T)-9, ++#define INIT_TABLE3_4(T) \ ++ (T)-8, (T)-7, (T)-6, (T)-5, ++#define INIT_TABLE4_4(T) \ ++ (T)-4, (T)-3, (T)-2, (T)-1, ++ ++#define INIT_TABLE_8(T) \ ++ (T)-16, (T)-15, (T)-14, (T)-13, (T)-12, (T)-11, (T)-10, (T)-9, ++#define INIT_TABLE2_8(T) \ ++ (T)-8, (T)-7, (T)-6, (T)-5, (T)-4, (T)-3, (T)-2, (T)-1, ++#define INIT_TABLE3_8(T) \ ++ (T)0, (T)1, (T)2, (T)3, (T)4, (T)5, (T)6, (T)7, ++#define INIT_TABLE4_8(T) \ ++ (T)8, (T)9, (T)10, (T)11, (T)12, (T)13, (T)14, (T)15, ++ ++#define INIT_TABLE_16(T) \ ++ (T)-16, (T)-15, (T)-14, (T)-13, (T)-12, (T)-11, (T)-10, (T)-9, \ ++ (T)-8, (T)-7, (T)-6, (T)-5, (T)-4, (T)-3, (T)-2, (T)-1, ++#define INIT_TABLE2_16(T) \ ++ (T)0, (T)1, (T)2, (T)3, (T)4, (T)5, (T)6, (T)7, \ ++ (T)8, (T)9, (T)10, (T)11, (T)12, (T)13, (T)14, (T)15, ++#define INIT_TABLE3_16(T) \ ++ (T)16, (T)17, (T)18, (T)19, (T)20, (T)21, (T)22, (T)23, \ ++ (T)24, (T)25, (T)26, (T)27, (T)28, (T)29, (T)30, (T)31, ++#define INIT_TABLE4_16(T) \ ++ (T)32, (T)33, (T)34, (T)35, (T)36, (T)37, (T)38, (T)39, \ ++ (T)40, (T)41, (T)42, (T)43, (T)44, (T)45, (T)46, (T)47, ++ ++/* This one is used for padding between input buffers. */ ++#define PAD(V, T, W, N) char VECT_VAR(V,T,W,N)=42 ++ ++/* Input buffers, one of each size. */ ++/* Insert some padding to try to exhibit out of bounds accesses. */ ++VECT_VAR_DECL_INIT(buffer, int, 8, 8); ++PAD(buffer_pad, int, 8, 8); ++VECT_VAR_DECL_INIT(buffer, int, 16, 4); ++PAD(buffer_pad, int, 16, 4); ++VECT_VAR_DECL_INIT(buffer, int, 32, 2); ++PAD(buffer_pad, int, 32, 2); ++VECT_VAR_DECL_INIT(buffer, int, 64, 1); ++PAD(buffer_pad, int, 64, 1); ++VECT_VAR_DECL_INIT(buffer, uint, 8, 8); ++PAD(buffer_pad, uint, 8, 8); ++VECT_VAR_DECL_INIT(buffer, poly, 8, 8); ++PAD(buffer_pad, poly, 8, 8); ++VECT_VAR_DECL_INIT(buffer, poly, 16, 4); ++PAD(buffer_pad, poly, 16, 4); ++VECT_VAR_DECL_INIT(buffer, uint, 16, 4); ++PAD(buffer_pad, uint, 16, 4); ++VECT_VAR_DECL_INIT(buffer, uint, 32, 2); ++PAD(buffer_pad, uint, 32, 2); ++VECT_VAR_DECL_INIT(buffer, uint, 64, 1); ++PAD(buffer_pad, uint, 64, 1); ++VECT_VAR_DECL_INIT(buffer, float, 32, 2); ++PAD(buffer_pad, float, 32, 2); ++VECT_VAR_DECL_INIT(buffer, int, 8, 16); ++PAD(buffer_pad, int, 8, 16); ++VECT_VAR_DECL_INIT(buffer, int, 16, 8); ++PAD(buffer_pad, int, 16, 8); ++VECT_VAR_DECL_INIT(buffer, int, 32, 4); ++PAD(buffer_pad, int, 32, 4); ++VECT_VAR_DECL_INIT(buffer, int, 64, 2); ++PAD(buffer_pad, int, 64, 2); ++VECT_VAR_DECL_INIT(buffer, uint, 8, 16); ++PAD(buffer_pad, uint, 8, 16); ++VECT_VAR_DECL_INIT(buffer, uint, 16, 8); ++PAD(buffer_pad, uint, 16, 8); ++VECT_VAR_DECL_INIT(buffer, uint, 32, 4); ++PAD(buffer_pad, uint, 32, 4); ++VECT_VAR_DECL_INIT(buffer, uint, 64, 2); ++PAD(buffer_pad, uint, 64, 2); ++VECT_VAR_DECL_INIT(buffer, poly, 8, 16); ++PAD(buffer_pad, poly, 8, 16); ++VECT_VAR_DECL_INIT(buffer, poly, 16, 8); ++PAD(buffer_pad, poly, 16, 8); ++VECT_VAR_DECL_INIT(buffer, float, 32, 4); ++PAD(buffer_pad, float, 32, 4); ++ ++/* The tests for vld1_dup and vdup expect at least 4 entries in the ++ input buffer, so force 1- and 2-elements initializers to have 4 ++ entries (using VECT_VAR_DECL_INIT4). */ ++VECT_VAR_DECL_INIT(buffer_dup, int, 8, 8); ++VECT_VAR_DECL(buffer_dup_pad, int, 8, 8); ++VECT_VAR_DECL_INIT(buffer_dup, int, 16, 4); ++VECT_VAR_DECL(buffer_dup_pad, int, 16, 4); ++VECT_VAR_DECL_INIT4(buffer_dup, int, 32, 2); ++VECT_VAR_DECL(buffer_dup_pad, int, 32, 2); ++VECT_VAR_DECL_INIT4(buffer_dup, int, 64, 1); ++VECT_VAR_DECL(buffer_dup_pad, int, 64, 1); ++VECT_VAR_DECL_INIT(buffer_dup, uint, 8, 8); ++VECT_VAR_DECL(buffer_dup_pad, uint, 8, 8); ++VECT_VAR_DECL_INIT(buffer_dup, uint, 16, 4); ++VECT_VAR_DECL(buffer_dup_pad, uint, 16, 4); ++VECT_VAR_DECL_INIT4(buffer_dup, uint, 32, 2); ++VECT_VAR_DECL(buffer_dup_pad, uint, 32, 2); ++VECT_VAR_DECL_INIT4(buffer_dup, uint, 64, 1); ++VECT_VAR_DECL(buffer_dup_pad, uint, 64, 1); ++VECT_VAR_DECL_INIT(buffer_dup, poly, 8, 8); ++VECT_VAR_DECL(buffer_dup_pad, poly, 8, 8); ++VECT_VAR_DECL_INIT(buffer_dup, poly, 16, 4); ++VECT_VAR_DECL(buffer_dup_pad, poly, 16, 4); ++VECT_VAR_DECL_INIT4(buffer_dup, float, 32, 2); ++VECT_VAR_DECL(buffer_dup_pad, float, 32, 2); ++ ++VECT_VAR_DECL_INIT(buffer_dup, int, 8, 16); ++VECT_VAR_DECL(buffer_dup_pad, int, 8, 16); ++VECT_VAR_DECL_INIT(buffer_dup, int, 16, 8); ++VECT_VAR_DECL(buffer_dup_pad, int, 16, 8); ++VECT_VAR_DECL_INIT(buffer_dup, int, 32, 4); ++VECT_VAR_DECL(buffer_dup_pad, int, 32, 4); ++VECT_VAR_DECL_INIT4(buffer_dup, int, 64, 2); ++VECT_VAR_DECL(buffer_dup_pad, int, 64, 2); ++VECT_VAR_DECL_INIT(buffer_dup, uint, 8, 16); ++VECT_VAR_DECL(buffer_dup_pad, uint, 8, 16); ++VECT_VAR_DECL_INIT(buffer_dup, uint, 16, 8); ++VECT_VAR_DECL(buffer_dup_pad, uint, 16, 8); ++VECT_VAR_DECL_INIT(buffer_dup, uint, 32, 4); ++VECT_VAR_DECL(buffer_dup_pad, uint, 32, 4); ++VECT_VAR_DECL_INIT4(buffer_dup, uint, 64, 2); ++VECT_VAR_DECL(buffer_dup_pad, uint, 64, 2); ++VECT_VAR_DECL_INIT(buffer_dup, poly, 8, 16); ++VECT_VAR_DECL(buffer_dup_pad, poly, 8, 16); ++VECT_VAR_DECL_INIT(buffer_dup, poly, 16, 8); ++VECT_VAR_DECL(buffer_dup_pad, poly, 16, 8); ++VECT_VAR_DECL_INIT(buffer_dup, float, 32, 4); ++VECT_VAR_DECL(buffer_dup_pad, float, 32, 4); +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcombine.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcombine.c +@@ -0,0 +1,98 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7, ++ 0x11, 0x11, 0x11, 0x11, ++ 0x11, 0x11, 0x11, 0x11 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3, ++ 0x22, 0x22, 0x22, 0x22 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffff0, 0xfffffff1, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xfffffffffffffff0, 0x44 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7, ++ 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3, ++ 0x66, 0x66, 0x66, 0x66 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfffffff0, 0xfffffff1, 0x77, 0x77 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xfffffffffffffff0, 0x88 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7, ++ 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3, ++ 0x66, 0x66, 0x66, 0x66 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0xc1800000, 0xc1700000, ++ 0x40533333, 0x40533333 }; ++ ++#define TEST_MSG "VCOMBINE" ++void exec_vcombine (void) ++{ ++ /* Basic test: vec128=vcombine(vec64_a, vec64_b), then store the result. */ ++#define TEST_VCOMBINE(T1, T2, W, N, N2) \ ++ VECT_VAR(vector128, T1, W, N2) = \ ++ vcombine_##T2##W(VECT_VAR(vector64_a, T1, W, N), \ ++ VECT_VAR(vector64_b, T1, W, N)); \ ++ vst1q_##T2##W(VECT_VAR(result, T1, W, N2), VECT_VAR(vector128, T1, W, N2)) ++ ++ DECL_VARIABLE_64BITS_VARIANTS(vector64_a); ++ DECL_VARIABLE_64BITS_VARIANTS(vector64_b); ++ DECL_VARIABLE_128BITS_VARIANTS(vector128); ++ ++ /* Initialize input "vector64_a" from "buffer". */ ++ TEST_MACRO_64BITS_VARIANTS_2_5(VLOAD, vector64_a, buffer); ++ VLOAD(vector64_a, buffer, , float, f, 32, 2); ++ ++ /* Choose init value arbitrarily. */ ++ VDUP(vector64_b, , int, s, 8, 8, 0x11); ++ VDUP(vector64_b, , int, s, 16, 4, 0x22); ++ VDUP(vector64_b, , int, s, 32, 2, 0x33); ++ VDUP(vector64_b, , int, s, 64, 1, 0x44); ++ VDUP(vector64_b, , uint, u, 8, 8, 0x55); ++ VDUP(vector64_b, , uint, u, 16, 4, 0x66); ++ VDUP(vector64_b, , uint, u, 32, 2, 0x77); ++ VDUP(vector64_b, , uint, u, 64, 1, 0x88); ++ VDUP(vector64_b, , poly, p, 8, 8, 0x55); ++ VDUP(vector64_b, , poly, p, 16, 4, 0x66); ++ VDUP(vector64_b, , float, f, 32, 2, 3.3f); ++ ++ clean_results (); ++ ++ /* Execute the tests. */ ++ TEST_VCOMBINE(int, s, 8, 8, 16); ++ TEST_VCOMBINE(int, s, 16, 4, 8); ++ TEST_VCOMBINE(int, s, 32, 2, 4); ++ TEST_VCOMBINE(int, s, 64, 1, 2); ++ TEST_VCOMBINE(uint, u, 8, 8, 16); ++ TEST_VCOMBINE(uint, u, 16, 4, 8); ++ TEST_VCOMBINE(uint, u, 32, 2, 4); ++ TEST_VCOMBINE(uint, u, 64, 1, 2); ++ TEST_VCOMBINE(poly, p, 8, 8, 16); ++ TEST_VCOMBINE(poly, p, 16, 4, 8); ++ TEST_VCOMBINE(float, f, 32, 2, 4); ++ ++ CHECK_RESULTS (TEST_MSG, ""); ++} ++ ++int main (void) ++{ ++ exec_vcombine (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsubhn.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsubhn.c +@@ -0,0 +1,24 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#if defined(__cplusplus) ++#include ++#else ++#include ++#endif ++ ++#define INSN_NAME vsubhn ++#define TEST_MSG "VSUBHN" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x31, 0x31, 0x31, 0x31, ++ 0x31, 0x31, 0x31, 0x31 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x31, 0x31, 0x31, 0x31 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x17, 0x17 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x2, 0x2, 0x2, 0x2, ++ 0x2, 0x2, 0x2, 0x2 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x36, 0x36, 0x36, 0x36 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x2, 0x2 }; ++ ++#include "vXXXhn.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_n.inc ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_n.inc +@@ -0,0 +1,61 @@ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ /* vector_res = vmlxl_n(vector, vector2, val), ++ then store the result. */ ++#define TEST_VMLXL_N1(INSN, T1, T2, W, W2, N, V) \ ++ VECT_VAR(vector_res, T1, W, N) = INSN##_##T2##W2(VECT_VAR(vector, T1, W, N), \ ++ VECT_VAR(vector2, T1, W2, N), \ ++ V); \ ++ vst1q_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N)) ++ ++#define TEST_VMLXL_N(INSN, T1, T2, W, W2, N, V) \ ++ TEST_VMLXL_N1(INSN, T1, T2, W, W2, N, V) ++ ++ DECL_VARIABLE(vector, int, 32, 4); ++ DECL_VARIABLE(vector2, int, 16, 4); ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ ++ DECL_VARIABLE(vector, int, 64, 2); ++ DECL_VARIABLE(vector2, int, 32, 2); ++ DECL_VARIABLE(vector_res, int, 64, 2); ++ ++ DECL_VARIABLE(vector, uint, 32, 4); ++ DECL_VARIABLE(vector2, uint, 16, 4); ++ DECL_VARIABLE(vector_res, uint, 32, 4); ++ ++ DECL_VARIABLE(vector, uint, 64, 2); ++ DECL_VARIABLE(vector2, uint, 32, 2); ++ DECL_VARIABLE(vector_res, uint, 64, 2); ++ ++ clean_results (); ++ ++ VLOAD(vector, buffer, q, int, s, 32, 4); ++ VLOAD(vector, buffer, q, int, s, 64, 2); ++ VLOAD(vector, buffer, q, uint, u, 32, 4); ++ VLOAD(vector, buffer, q, uint, u, 64, 2); ++ ++ VDUP(vector2, , int, s, 16, 4, 0x55); ++ VDUP(vector2, , int, s, 32, 2, 0x55); ++ VDUP(vector2, , uint, u, 16, 4, 0x55); ++ VDUP(vector2, , uint, u, 32, 2, 0x55); ++ ++ /* Choose multiplier arbitrarily. */ ++ TEST_VMLXL_N(INSN_NAME, int, s, 32, 16, 4, 0x11); ++ TEST_VMLXL_N(INSN_NAME, int, s, 64, 32, 2, 0x22); ++ TEST_VMLXL_N(INSN_NAME, uint, u, 32, 16, 4, 0x33); ++ TEST_VMLXL_N(INSN_NAME, uint, u, 64, 32, 2, 0x33); ++ ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, ""); ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpadal.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpadal.c +@@ -0,0 +1,141 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xffd1, 0xffd6, 0xffdb, 0xffe0 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xffffffd1, 0xffffffd6 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0xffffffffffffffd1 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x1d1, 0x1d6, 0x1db, 0x1e0 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x1ffd1, 0x1ffd6 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x1ffffffd1 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xffd1, 0xffd6, 0xffdb, 0xffe0, ++ 0xffe5, 0xffea, 0xffef, 0xfff4 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffffd1, 0xffffffd6, ++ 0xffffffdb, 0xffffffe0 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xffffffffffffffd1, 0xffffffffffffffd6 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x1d1, 0x1d6, 0x1db, 0x1e0, ++ 0x1e5, 0x1ea, 0x1ef, 0x1f4 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x1ffd1, 0x1ffd6, 0x1ffdb, 0x1ffe0 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x1ffffffd1, 0x1ffffffd6 }; ++ ++#define INSN_NAME vpadal ++#define TEST_MSG "VPADAL/VPADALQ" ++ ++#define FNNAME1(NAME) void exec_ ## NAME (void) ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++FNNAME (INSN_NAME) ++{ ++ /* Basic test: y=OP(x), then store the result. */ ++#define TEST_VPADAL1(INSN, Q, T1, T2, W, N, W2, N2) \ ++ VECT_VAR(vector_res, T1, W2, N2) = \ ++ INSN##Q##_##T2##W(VECT_VAR(vector, T1, W2, N2), VECT_VAR(vector2, T1, W, N)); \ ++ vst1##Q##_##T2##W2(VECT_VAR(result, T1, W2, N2), \ ++ VECT_VAR(vector_res, T1, W2, N2)) ++ ++#define TEST_VPADAL(INSN, Q, T1, T2, W, N, W2, N2) \ ++ TEST_VPADAL1(INSN, Q, T1, T2, W, N, W2, N2) ++ ++ DECL_VARIABLE(vector, int, 16, 4); ++ DECL_VARIABLE(vector, int, 32, 2); ++ DECL_VARIABLE(vector, int, 64, 1); ++ DECL_VARIABLE(vector, uint, 16, 4); ++ DECL_VARIABLE(vector, uint, 32, 2); ++ DECL_VARIABLE(vector, uint, 64, 1); ++ DECL_VARIABLE(vector, int, 16, 8); ++ DECL_VARIABLE(vector, int, 32, 4); ++ DECL_VARIABLE(vector, int, 64, 2); ++ DECL_VARIABLE(vector, uint, 16, 8); ++ DECL_VARIABLE(vector, uint, 32, 4); ++ DECL_VARIABLE(vector, uint, 64, 2); ++ ++ DECL_VARIABLE(vector2, int, 8, 8); ++ DECL_VARIABLE(vector2, int, 16, 4); ++ DECL_VARIABLE(vector2, int, 32, 2); ++ DECL_VARIABLE(vector2, uint, 8, 8); ++ DECL_VARIABLE(vector2, uint, 16, 4); ++ DECL_VARIABLE(vector2, uint, 32, 2); ++ DECL_VARIABLE(vector2, int, 8, 16); ++ DECL_VARIABLE(vector2, int, 16, 8); ++ DECL_VARIABLE(vector2, int, 32, 4); ++ DECL_VARIABLE(vector2, uint, 8, 16); ++ DECL_VARIABLE(vector2, uint, 16, 8); ++ DECL_VARIABLE(vector2, uint, 32, 4); ++ ++ DECL_VARIABLE(vector_res, int, 16, 4); ++ DECL_VARIABLE(vector_res, int, 32, 2); ++ DECL_VARIABLE(vector_res, int, 64, 1); ++ DECL_VARIABLE(vector_res, uint, 16, 4); ++ DECL_VARIABLE(vector_res, uint, 32, 2); ++ DECL_VARIABLE(vector_res, uint, 64, 1); ++ DECL_VARIABLE(vector_res, int, 16, 8); ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ DECL_VARIABLE(vector_res, int, 64, 2); ++ DECL_VARIABLE(vector_res, uint, 16, 8); ++ DECL_VARIABLE(vector_res, uint, 32, 4); ++ DECL_VARIABLE(vector_res, uint, 64, 2); ++ ++ clean_results (); ++ ++ /* Initialize input "vector" from "buffer". */ ++ VLOAD(vector, buffer, , int, s, 16, 4); ++ VLOAD(vector, buffer, , int, s, 32, 2); ++ VLOAD(vector, buffer, , int, s, 64, 1); ++ VLOAD(vector, buffer, , uint, u, 16, 4); ++ VLOAD(vector, buffer, , uint, u, 32, 2); ++ VLOAD(vector, buffer, , uint, u, 64, 1); ++ VLOAD(vector, buffer, q, int, s, 16, 8); ++ VLOAD(vector, buffer, q, int, s, 32, 4); ++ VLOAD(vector, buffer, q, int, s, 64, 2); ++ VLOAD(vector, buffer, q, uint, u, 16, 8); ++ VLOAD(vector, buffer, q, uint, u, 32, 4); ++ VLOAD(vector, buffer, q, uint, u, 64, 2); ++ ++ /* Initialize input "vector2" from "buffer". */ ++ VLOAD(vector2, buffer, , int, s, 8, 8); ++ VLOAD(vector2, buffer, , int, s, 16, 4); ++ VLOAD(vector2, buffer, , int, s, 32, 2); ++ VLOAD(vector2, buffer, , uint, u, 8, 8); ++ VLOAD(vector2, buffer, , uint, u, 16, 4); ++ VLOAD(vector2, buffer, , uint, u, 32, 2); ++ VLOAD(vector2, buffer, q, int, s, 8, 16); ++ VLOAD(vector2, buffer, q, int, s, 16, 8); ++ VLOAD(vector2, buffer, q, int, s, 32, 4); ++ VLOAD(vector2, buffer, q, uint, u, 8, 16); ++ VLOAD(vector2, buffer, q, uint, u, 16, 8); ++ VLOAD(vector2, buffer, q, uint, u, 32, 4); ++ ++ /* Apply a unary operator named INSN_NAME. */ ++ TEST_VPADAL(INSN_NAME, , int, s, 8, 8, 16, 4); ++ TEST_VPADAL(INSN_NAME, , int, s, 16, 4, 32, 2); ++ TEST_VPADAL(INSN_NAME, , int, s, 32, 2, 64 ,1); ++ TEST_VPADAL(INSN_NAME, , uint, u, 8, 8, 16, 4); ++ TEST_VPADAL(INSN_NAME, , uint, u, 16, 4, 32, 2); ++ TEST_VPADAL(INSN_NAME, , uint, u, 32, 2, 64, 1); ++ TEST_VPADAL(INSN_NAME, q, int, s, 8, 16, 16, 8); ++ TEST_VPADAL(INSN_NAME, q, int, s, 16, 8, 32, 4); ++ TEST_VPADAL(INSN_NAME, q, int, s, 32, 4, 64 ,2); ++ TEST_VPADAL(INSN_NAME, q, uint, u, 8, 16, 16, 8); ++ TEST_VPADAL(INSN_NAME, q, uint, u, 16, 8, 32, 4); ++ TEST_VPADAL(INSN_NAME, q, uint, u, 32, 4, 64, 2); ++ ++ CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, ""); ++ CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, ""); ++ CHECK(TEST_MSG, int, 64, 1, PRIx64, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected, ""); ++ CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, ""); ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, ""); ++} ++ ++int main (void) ++{ ++ exec_vpadal (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcls.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcls.c +@@ -0,0 +1,174 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x2, 0x2, 0x2, 0x2 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x19, 0x19 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x7, 0x7, 0x7, 0x7, ++ 0x7, 0x7, 0x7, 0x7, ++ 0x7, 0x7, 0x7, 0x7, ++ 0x7, 0x7, 0x7, 0x7 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x2, 0x2, 0x2, 0x2, ++ 0x2, 0x2, 0x2, 0x2 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x14, 0x14, 0x14, 0x14 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++/* Expected results with negative input. */ ++VECT_VAR_DECL(expected_with_negative,int,8,8) [] = { 0x7, 0x7, 0x7, 0x7, ++ 0x7, 0x7, 0x7, 0x7 }; ++VECT_VAR_DECL(expected_with_negative,int,16,4) [] = { 0x1, 0x1, 0x1, 0x1 }; ++VECT_VAR_DECL(expected_with_negative,int,32,2) [] = { 0x1, 0x1 }; ++VECT_VAR_DECL(expected_with_negative,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected_with_negative,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_with_negative,uint,16,4) [] = { 0x3333, 0x3333, ++ 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_with_negative,uint,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected_with_negative,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected_with_negative,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_with_negative,poly,16,4) [] = { 0x3333, 0x3333, ++ 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_with_negative,hfloat,32,2) [] = { 0x33333333, ++ 0x33333333 }; ++VECT_VAR_DECL(expected_with_negative,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_with_negative,int,16,8) [] = { 0x2, 0x2, 0x2, 0x2, ++ 0x2, 0x2, 0x2, 0x2 }; ++VECT_VAR_DECL(expected_with_negative,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_with_negative,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_with_negative,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_with_negative,uint,16,8) [] = { 0x3333, 0x3333, ++ 0x3333, 0x3333, ++ 0x3333, 0x3333, ++ 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_with_negative,uint,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected_with_negative,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_with_negative,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_with_negative,poly,16,8) [] = { 0x3333, 0x3333, ++ 0x3333, 0x3333, ++ 0x3333, 0x3333, ++ 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_with_negative,hfloat,32,4) [] = { 0x33333333, ++ 0x33333333, ++ 0x33333333, ++ 0x33333333 }; ++ ++#define INSN_NAME vcls ++#define TEST_MSG "VCLS/VCLSQ" ++ ++#define FNNAME1(NAME) void exec_ ## NAME (void) ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++FNNAME (INSN_NAME) ++{ ++ /* Basic test: y=vcls(x), then store the result. */ ++#define TEST_UNARY_OP1(INSN, Q, T1, T2, W, N) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ INSN##Q##_##T2##W(VECT_VAR(vector, T1, W, N)); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N)) ++ ++#define TEST_UNARY_OP(INSN, Q, T1, T2, W, N) \ ++ TEST_UNARY_OP1(INSN, Q, T1, T2, W, N) \ ++ ++ /* No need for 64 bits variants. */ ++ DECL_VARIABLE(vector, int, 8, 8); ++ DECL_VARIABLE(vector, int, 16, 4); ++ DECL_VARIABLE(vector, int, 32, 2); ++ DECL_VARIABLE(vector, int, 8, 16); ++ DECL_VARIABLE(vector, int, 16, 8); ++ DECL_VARIABLE(vector, int, 32, 4); ++ ++ DECL_VARIABLE(vector_res, int, 8, 8); ++ DECL_VARIABLE(vector_res, int, 16, 4); ++ DECL_VARIABLE(vector_res, int, 32, 2); ++ DECL_VARIABLE(vector_res, int, 8, 16); ++ DECL_VARIABLE(vector_res, int, 16, 8); ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ ++ clean_results (); ++ ++ /* Fill input vector with arbitrary values. */ ++ VDUP(vector, , int, s, 8, 8, 0x1); ++ VDUP(vector, , int, s, 16, 4, 0x1234); ++ VDUP(vector, , int, s, 32, 2, 0x34); ++ VDUP(vector, q, int, s, 8, 16, 0); ++ VDUP(vector, q, int, s, 16, 8, 0x1234); ++ VDUP(vector, q, int, s, 32, 4, 0x678); ++ ++ /* Apply a unary operator named INSN_NAME. */ ++ TEST_UNARY_OP(INSN_NAME, , int, s, 8, 8); ++ TEST_UNARY_OP(INSN_NAME, , int, s, 16, 4); ++ TEST_UNARY_OP(INSN_NAME, , int, s, 32, 2); ++ TEST_UNARY_OP(INSN_NAME, q, int, s, 8, 16); ++ TEST_UNARY_OP(INSN_NAME, q, int, s, 16, 8); ++ TEST_UNARY_OP(INSN_NAME, q, int, s, 32, 4); ++ ++ CHECK_RESULTS (TEST_MSG, " (positive input)"); ++ ++ /* Fill input vector with arbitrary values (negative). */ ++ VDUP(vector, , int, s, 8, 8, 0xFF); ++ VDUP(vector, , int, s, 16, 4, 0xC234); ++ VDUP(vector, , int, s, 32, 2, 0xDEAD0034); ++ VDUP(vector, q, int, s, 8, 16, 0x80); ++ VDUP(vector, q, int, s, 16, 8, 0xE234); ++ VDUP(vector, q, int, s, 32, 4, 0xBEEF0678); ++ ++ /* Apply a unary operator named INSN_NAME */ ++ TEST_UNARY_OP(INSN_NAME, , int, s, 8, 8); ++ TEST_UNARY_OP(INSN_NAME, , int, s, 16, 4); ++ TEST_UNARY_OP(INSN_NAME, , int, s, 32, 2); ++ TEST_UNARY_OP(INSN_NAME, q, int, s, 8, 16); ++ TEST_UNARY_OP(INSN_NAME, q, int, s, 16, 8); ++ TEST_UNARY_OP(INSN_NAME, q, int, s, 32, 4); ++ ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_with_negative, " (negative input)"); ++} ++ ++int main (void) ++{ ++ exec_vcls (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrhadd.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrhadd.c +@@ -0,0 +1,34 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vrhadd ++#define TEST_MSG "VRHADD/VRHADDQ" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf2, 0xf2, 0xf3, 0xf3, ++ 0xf4, 0xf4, 0xf5, 0xf5 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff1, 0xfff2, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xf2, 0xf2, 0xf3, 0xf3, ++ 0xf4, 0xf4, 0xf5, 0xf5 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfff1, 0xfff1, 0xfff2, 0xfff2 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0xf2, 0xf3, 0xf3, 0xf4, ++ 0xf4, 0xf5, 0xf5, 0xf6, ++ 0xf6, 0xf7, 0xf7, 0xf8, ++ 0xf8, 0xf9, 0xf9, 0xfa }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xfff2, 0xfff2, 0xfff3, 0xfff3, ++ 0xfff4, 0xfff4, 0xfff5, 0xfff5 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffff1, 0xfffffff1, ++ 0xfffffff2, 0xfffffff2 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xf5, 0xf5, 0xf6, 0xf6, ++ 0xf7, 0xf7, 0xf8, 0xf8, ++ 0xf9, 0xf9, 0xfa, 0xfa, ++ 0xfb, 0xfb, 0xfc, 0xfc }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfff1, 0xfff2, 0xfff2, 0xfff3, ++ 0xfff3, 0xfff4, 0xfff4, 0xfff5 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfffffff1, 0xfffffff1, ++ 0xfffffff2, 0xfffffff2 }; ++ ++#include "binary_op_no64.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcnt.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcnt.c +@@ -0,0 +1,96 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333, 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, ++ 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, ++ 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++#define INSN_NAME vcnt ++#define TEST_MSG "VCNT/VCNTQ" ++ ++#define FNNAME1(NAME) void exec_ ## NAME (void) ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++FNNAME (INSN_NAME) ++{ ++ /* Basic test: y=vcnt(x), then store the result. */ ++#define TEST_UNARY_OP1(INSN, Q, T1, T2, W, N) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ INSN##Q##_##T2##W(VECT_VAR(vector, T1, W, N)); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N)) ++ ++#define TEST_UNARY_OP(INSN, Q, T1, T2, W, N) \ ++ TEST_UNARY_OP1(INSN, Q, T1, T2, W, N) \ ++ ++ /* No need for 64 bits variants. */ ++ DECL_VARIABLE(vector, int, 8, 8); ++ DECL_VARIABLE(vector, uint, 8, 8); ++ DECL_VARIABLE(vector, poly, 8, 8); ++ DECL_VARIABLE(vector, int, 8, 16); ++ DECL_VARIABLE(vector, uint, 8, 16); ++ DECL_VARIABLE(vector, poly, 8, 16); ++ ++ DECL_VARIABLE(vector_res, int, 8, 8); ++ DECL_VARIABLE(vector_res, uint, 8, 8); ++ DECL_VARIABLE(vector_res, poly, 8, 8); ++ DECL_VARIABLE(vector_res, int, 8, 16); ++ DECL_VARIABLE(vector_res, uint, 8, 16); ++ DECL_VARIABLE(vector_res, poly, 8, 16); ++ ++ clean_results (); ++ ++ /* Fill input vector with arbitrary values. */ ++ VDUP(vector, , int, s, 8, 8, 0xFF); ++ VDUP(vector, , uint, u, 8, 8, 0x35); ++ VDUP(vector, , poly, p, 8, 8, 0x35); ++ VDUP(vector, q, int, s, 8, 16, 0); ++ VDUP(vector, q, uint, u, 8, 16, 0xBD); ++ VDUP(vector, q, poly, p, 8, 16, 0xBD); ++ ++ /* Apply a unary operator named INSN_NAME. */ ++ TEST_UNARY_OP(INSN_NAME, , int, s, 8, 8); ++ TEST_UNARY_OP(INSN_NAME, , uint, u, 8, 8); ++ TEST_UNARY_OP(INSN_NAME, , poly, p, 8, 8); ++ TEST_UNARY_OP(INSN_NAME, q, int, s, 8, 16); ++ TEST_UNARY_OP(INSN_NAME, q, uint, u, 8, 16); ++ TEST_UNARY_OP(INSN_NAME, q, poly, p, 8, 16); ++ ++ CHECK_RESULTS (TEST_MSG, ""); ++} ++ ++int main (void) ++{ ++ exec_vcnt (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqabs.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqabs.c +@@ -0,0 +1,127 @@ ++#define INSN_NAME vqabs ++#define TEST_MSG "VQABS/VQABSQ" ++ ++/* Extra tests for functions requiring corner cases tests. */ ++void vqabs_extra(void); ++#define EXTRA_TESTS vqabs_extra ++ ++#include "unary_sat_op.inc" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x10, 0xf, 0xe, 0xd, 0xc, 0xb, 0xa, 0x9 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x10, 0xf, 0xe, 0xd }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x10, 0xf }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x10, 0xf, 0xe, 0xd, ++ 0xc, 0xb, 0xa, 0x9, ++ 0x8, 0x7, 0x6, 0x5, ++ 0x4, 0x3, 0x2, 0x1 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x10, 0xf, 0xe, 0xd, ++ 0xc, 0xb, 0xa, 0x9 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x10, 0xf, 0xe, 0xd }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333, 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++/* Expected values of cumulative_saturation flag. */ ++int VECT_VAR(expected_cumulative_sat,int,8,8) = 0; ++int VECT_VAR(expected_cumulative_sat,int,16,4) = 0; ++int VECT_VAR(expected_cumulative_sat,int,32,2) = 0; ++int VECT_VAR(expected_cumulative_sat,int,8,16) = 0; ++int VECT_VAR(expected_cumulative_sat,int,16,8) = 0; ++int VECT_VAR(expected_cumulative_sat,int,32,4) = 0; ++ ++/* Expected results when input is the min negative value of the type. */ ++VECT_VAR_DECL(expected_min_neg,int,8,8) [] = { 0x7f, 0x7f, 0x7f, 0x7f, ++ 0x7f, 0x7f, 0x7f, 0x7f }; ++VECT_VAR_DECL(expected_min_neg,int,16,4) [] = { 0x7fff, 0x7fff, ++ 0x7fff, 0x7fff }; ++VECT_VAR_DECL(expected_min_neg,int,32,2) [] = { 0x7fffffff, 0x7fffffff }; ++VECT_VAR_DECL(expected_min_neg,int,8,16) [] = { 0x7f, 0x7f, 0x7f, 0x7f, ++ 0x7f, 0x7f, 0x7f, 0x7f, ++ 0x7f, 0x7f, 0x7f, 0x7f, ++ 0x7f, 0x7f, 0x7f, 0x7f }; ++VECT_VAR_DECL(expected_min_neg,int,16,8) [] = { 0x7fff, 0x7fff, ++ 0x7fff, 0x7fff, ++ 0x7fff, 0x7fff, ++ 0x7fff, 0x7fff }; ++VECT_VAR_DECL(expected_min_neg,int,32,4) [] = { 0x7fffffff, 0x7fffffff, ++ 0x7fffffff, 0x7fffffff }; ++ ++/* Expected values of cumulative_saturation flag when input is the min ++ negative value of the type. */ ++int VECT_VAR(expected_cumulative_sat_min_neg,int,8,8) = 1; ++int VECT_VAR(expected_cumulative_sat_min_neg,int,16,4) = 1; ++int VECT_VAR(expected_cumulative_sat_min_neg,int,32,2) = 1; ++int VECT_VAR(expected_cumulative_sat_min_neg,int,8,16) = 1; ++int VECT_VAR(expected_cumulative_sat_min_neg,int,16,8) = 1; ++int VECT_VAR(expected_cumulative_sat_min_neg,int,32,4) = 1; ++ ++void vqabs_extra() ++{ ++ /* No need for 64 bits variants. */ ++ DECL_VARIABLE(vector, int, 8, 8); ++ DECL_VARIABLE(vector, int, 16, 4); ++ DECL_VARIABLE(vector, int, 32, 2); ++ DECL_VARIABLE(vector, int, 8, 16); ++ DECL_VARIABLE(vector, int, 16, 8); ++ DECL_VARIABLE(vector, int, 32, 4); ++ ++ DECL_VARIABLE(vector_res, int, 8, 8); ++ DECL_VARIABLE(vector_res, int, 16, 4); ++ DECL_VARIABLE(vector_res, int, 32, 2); ++ DECL_VARIABLE(vector_res, int, 8, 16); ++ DECL_VARIABLE(vector_res, int, 16, 8); ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ ++ clean_results (); ++ ++ /* Initialize input "vector" with min negative values to check ++ saturation. */ ++ VDUP(vector, , int, s, 8, 8, 0x80); ++ VDUP(vector, , int, s, 16, 4, 0x8000); ++ VDUP(vector, , int, s, 32, 2, 0x80000000); ++ VDUP(vector, q, int, s, 8, 16, 0x80); ++ VDUP(vector, q, int, s, 16, 8, 0x8000); ++ VDUP(vector, q, int, s, 32, 4, 0x80000000); ++ ++#define MSG "min negative input" ++ TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 8, 8, expected_cumulative_sat_min_neg, MSG); ++ TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 16, 4, expected_cumulative_sat_min_neg, MSG); ++ TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 32, 2, expected_cumulative_sat_min_neg, MSG); ++ TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 8, 16, expected_cumulative_sat_min_neg, MSG); ++ TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 16, 8, expected_cumulative_sat_min_neg, MSG); ++ TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 32, 4, expected_cumulative_sat_min_neg, MSG); ++ ++ CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_min_neg, MSG); ++ CHECK(TEST_MSG, int, 16, 4, PRIx8, expected_min_neg, MSG); ++ CHECK(TEST_MSG, int, 32, 2, PRIx8, expected_min_neg, MSG); ++ CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_min_neg, MSG); ++ CHECK(TEST_MSG, int, 16, 8, PRIx8, expected_min_neg, MSG); ++ CHECK(TEST_MSG, int, 32, 4, PRIx8, expected_min_neg, MSG); ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_n.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_n.c +@@ -0,0 +1,61 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x11000, 0x11000, 0x11000, 0x11000 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x22000, 0x22000 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x33000, 0x33000, 0x33000, 0x33000 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x44000, 0x44000 }; ++ ++#define INSN_NAME vmull ++#define TEST_MSG "VMULL_N" ++void exec_vmull_n (void) ++{ ++ int i; ++ ++ /* vector_res = vmull_n(vector,val), then store the result. */ ++#define TEST_VMULL_N1(INSN, T1, T2, W, W2, N, L) \ ++ VECT_VAR(vector_res, T1, W2, N) = \ ++ INSN##_n_##T2##W(VECT_VAR(vector, T1, W, N), \ ++ L); \ ++ vst1q_##T2##W2(VECT_VAR(result, T1, W2, N), VECT_VAR(vector_res, T1, W2, N)) ++ ++#define TEST_VMULL_N(INSN, T1, T2, W, W2, N, L) \ ++ TEST_VMULL_N1(INSN, T1, T2, W, W2, N, L) ++ ++ DECL_VARIABLE(vector, int, 16, 4); ++ DECL_VARIABLE(vector, int, 32, 2); ++ DECL_VARIABLE(vector, uint, 16, 4); ++ DECL_VARIABLE(vector, uint, 32, 2); ++ ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ DECL_VARIABLE(vector_res, int, 64, 2); ++ DECL_VARIABLE(vector_res, uint, 32, 4); ++ DECL_VARIABLE(vector_res, uint, 64, 2); ++ ++ clean_results (); ++ ++ /* Initialize vector. */ ++ VDUP(vector, , int, s, 16, 4, 0x1000); ++ VDUP(vector, , int, s, 32, 2, 0x1000); ++ VDUP(vector, , uint, u, 16, 4, 0x1000); ++ VDUP(vector, , uint, u, 32, 2, 0x1000); ++ ++ /* Choose multiplier arbitrarily. */ ++ TEST_VMULL_N(INSN_NAME, int, s, 16, 32, 4, 0x11); ++ TEST_VMULL_N(INSN_NAME, int, s, 32, 64, 2, 0x22); ++ TEST_VMULL_N(INSN_NAME, uint, u, 16, 32, 4, 0x33); ++ TEST_VMULL_N(INSN_NAME, uint, u, 32, 64, 2, 0x44); ++ ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, ""); ++} ++ ++int main (void) ++{ ++ exec_vmull_n (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl_lane.inc ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl_lane.inc +@@ -0,0 +1,73 @@ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ /* vector_res = vqdmlXl_lane(vector, vector3, vector4, lane), ++ then store the result. */ ++#define TEST_VQDMLXL_LANE1(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N)); \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ INSN##_##T2##W2(VECT_VAR(vector, T1, W, N), \ ++ VECT_VAR(vector3, T1, W2, N), \ ++ VECT_VAR(vector4, T1, W2, N), \ ++ V); \ ++ vst1q_##T2##W(VECT_VAR(result, T1, W, N), \ ++ VECT_VAR(vector_res, T1, W, N)); \ ++ CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++#define TEST_VQDMLXL_LANE(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ TEST_VQDMLXL_LANE1(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++ DECL_VARIABLE(vector, int, 32, 4); ++ DECL_VARIABLE(vector3, int, 16, 4); ++ DECL_VARIABLE(vector4, int, 16, 4); ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ ++ DECL_VARIABLE(vector, int, 64, 2); ++ DECL_VARIABLE(vector3, int, 32, 2); ++ DECL_VARIABLE(vector4, int, 32, 2); ++ DECL_VARIABLE(vector_res, int, 64, 2); ++ ++ clean_results (); ++ ++ VLOAD(vector, buffer, q, int, s, 32, 4); ++ VLOAD(vector, buffer, q, int, s, 64, 2); ++ ++ VDUP(vector3, , int, s, 16, 4, 0x55); ++ VDUP(vector4, , int, s, 16, 4, 0xBB); ++ VDUP(vector3, , int, s, 32, 2, 0x55); ++ VDUP(vector4, , int, s, 32, 2, 0xBB); ++ ++ TEST_VQDMLXL_LANE(INSN_NAME, int, s, 32, 16, 4, 0, expected_cumulative_sat, ""); ++ TEST_VQDMLXL_LANE(INSN_NAME, int, s, 64, 32, 2, 0, expected_cumulative_sat, ""); ++ ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, ""); ++ ++#define TEST_MSG2 "(mul with input=0)" ++ VDUP(vector3, , int, s, 16, 4, 0); ++ VDUP(vector3, , int, s, 32, 2, 0); ++ TEST_VQDMLXL_LANE(INSN_NAME, int, s, 32, 16, 4, 0, expected_cumulative_sat2, TEST_MSG2); ++ TEST_VQDMLXL_LANE(INSN_NAME, int, s, 64, 32, 2, 0, expected_cumulative_sat2, TEST_MSG2); ++ ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected2, TEST_MSG2); ++ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected2, TEST_MSG2); ++ ++#define TEST_MSG3 "(mul with saturation)" ++ VDUP(vector3, , int, s, 16, 4, 0x8000); ++ VDUP(vector3, , int, s, 32, 2, 0x80000000); ++ VDUP(vector4, , int, s, 16, 4, 0x8000); ++ VDUP(vector4, , int, s, 32, 2, 0x80000000); ++ TEST_VQDMLXL_LANE(INSN_NAME, int, s, 32, 16, 4, 0, expected_cumulative_sat3, TEST_MSG3); ++ TEST_VQDMLXL_LANE(INSN_NAME, int, s, 64, 32, 2, 0, expected_cumulative_sat3, TEST_MSG3); ++ ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected3, TEST_MSG3); ++ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected3, TEST_MSG3); ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl.inc ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl.inc +@@ -0,0 +1,63 @@ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ /* vector_res = OP(vector, vector3, vector4), ++ then store the result. */ ++#define TEST_VQDMLXL1(INSN, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N)); \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ INSN##_##T2##W2(VECT_VAR(vector, T1, W, N), \ ++ VECT_VAR(vector3, T1, W2, N), \ ++ VECT_VAR(vector4, T1, W2, N)); \ ++ vst1q_##T2##W(VECT_VAR(result, T1, W, N), \ ++ VECT_VAR(vector_res, T1, W, N)); \ ++ CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++#define TEST_VQDMLXL(INSN, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ TEST_VQDMLXL1(INSN, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++ DECL_VARIABLE(vector, int, 32, 4); ++ DECL_VARIABLE(vector3, int, 16, 4); ++ DECL_VARIABLE(vector4, int, 16, 4); ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ DECL_VARIABLE(vector, int, 64, 2); ++ DECL_VARIABLE(vector3, int, 32, 2); ++ DECL_VARIABLE(vector4, int, 32, 2); ++ DECL_VARIABLE(vector_res, int, 64, 2); ++ ++ clean_results (); ++ ++ VLOAD(vector, buffer, q, int, s, 32, 4); ++ VLOAD(vector, buffer, q, int, s, 64, 2); ++ ++ VDUP(vector3, , int, s, 16, 4, 0x55); ++ VDUP(vector4, , int, s, 16, 4, 0xBB); ++ VDUP(vector3, , int, s, 32, 2, 0x55); ++ VDUP(vector4, , int, s, 32, 2, 0xBB); ++ ++ TEST_VQDMLXL(INSN_NAME, int, s, 32, 16, 4, expected_cumulative_sat, ""); ++ TEST_VQDMLXL(INSN_NAME, int, s, 64, 32, 2, expected_cumulative_sat, ""); ++ ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, ""); ++ ++ VDUP(vector3, , int, s, 16, 4, 0x8000); ++ VDUP(vector4, , int, s, 16, 4, 0x8000); ++ VDUP(vector3, , int, s, 32, 2, 0x80000000); ++ VDUP(vector4, , int, s, 32, 2, 0x80000000); ++ ++#define TEST_MSG2 "with saturation" ++ TEST_VQDMLXL(INSN_NAME, int, s, 32, 16, 4, expected_cumulative_sat2, TEST_MSG2); ++ TEST_VQDMLXL(INSN_NAME, int, s, 64, 32, 2, expected_cumulative_sat2, TEST_MSG2); ++ ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected2, TEST_MSG2); ++ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected2, TEST_MSG2); ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vXXXl.inc ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vXXXl.inc +@@ -0,0 +1,70 @@ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ /* Basic test: y=vaddl(x1,x2), then store the result. */ ++#define TEST_VADDL1(INSN, T1, T2, W, W2, N) \ ++ VECT_VAR(vector_res, T1, W2, N) = \ ++ INSN##_##T2##W(VECT_VAR(vector, T1, W, N), \ ++ VECT_VAR(vector2, T1, W, N)); \ ++ vst1q_##T2##W2(VECT_VAR(result, T1, W2, N), VECT_VAR(vector_res, T1, W2, N)) ++ ++#define TEST_VADDL(INSN, T1, T2, W, W2, N) \ ++ TEST_VADDL1(INSN, T1, T2, W, W2, N) ++ ++ DECL_VARIABLE(vector, int, 8, 8); ++ DECL_VARIABLE(vector, int, 16, 4); ++ DECL_VARIABLE(vector, int, 32, 2); ++ DECL_VARIABLE(vector, uint, 8, 8); ++ DECL_VARIABLE(vector, uint, 16, 4); ++ DECL_VARIABLE(vector, uint, 32, 2); ++ ++ DECL_VARIABLE(vector2, int, 8, 8); ++ DECL_VARIABLE(vector2, int, 16, 4); ++ DECL_VARIABLE(vector2, int, 32, 2); ++ DECL_VARIABLE(vector2, uint, 8, 8); ++ DECL_VARIABLE(vector2, uint, 16, 4); ++ DECL_VARIABLE(vector2, uint, 32, 2); ++ ++ DECL_VARIABLE(vector_res, int, 16, 8); ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ DECL_VARIABLE(vector_res, int, 64, 2); ++ DECL_VARIABLE(vector_res, uint, 16, 8); ++ DECL_VARIABLE(vector_res, uint, 32, 4); ++ DECL_VARIABLE(vector_res, uint, 64, 2); ++ ++ clean_results (); ++ ++ /* Initialize input "vector" from "buffer". */ ++ VLOAD(vector, buffer, , int, s, 8, 8); ++ VLOAD(vector, buffer, , int, s, 16, 4); ++ VLOAD(vector, buffer, , int, s, 32, 2); ++ VLOAD(vector, buffer, , uint, u, 8, 8); ++ VLOAD(vector, buffer, , uint, u, 16, 4); ++ VLOAD(vector, buffer, , uint, u, 32, 2); ++ ++ /* Choose init value arbitrarily. */ ++ VDUP(vector2, , int, s, 8, 8, -13); ++ VDUP(vector2, , int, s, 16, 4, -14); ++ VDUP(vector2, , int, s, 32, 2, -16); ++ VDUP(vector2, , uint, u, 8, 8, 0xf3); ++ VDUP(vector2, , uint, u, 16, 4, 0xfff1); ++ VDUP(vector2, , uint, u, 32, 2, 0xfffffff0); ++ ++ /* Execute the tests. */ ++ TEST_VADDL(INSN_NAME, int, s, 8, 16, 8); ++ TEST_VADDL(INSN_NAME, int, s, 16, 32, 4); ++ TEST_VADDL(INSN_NAME, int, s, 32, 64, 2); ++ TEST_VADDL(INSN_NAME, uint, u, 8, 16, 8); ++ TEST_VADDL(INSN_NAME, uint, u, 16, 32, 4); ++ TEST_VADDL(INSN_NAME, uint, u, 32, 64, 2); ++ ++ CHECK_RESULTS (TEST_MSG, ""); ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmls_lane.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmls_lane.c +@@ -0,0 +1,25 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vmls ++#define TEST_MSG "VMLS_LANE" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xc1d9, 0xc1da, 0xc1db, 0xc1dc }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xffffc1d9, 0xffffc1da }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xc1d9, 0xc1da, 0xc1db, 0xc1dc }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffc1d9, 0xffffc1da }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xc420c687, 0xc4208687 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xc1d9, 0xc1da, 0xc1db, 0xc1dc, ++ 0xc1dd, 0xc1de, 0xc1df, 0xc1e0 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffc1d9, 0xffffc1da, ++ 0xffffc1db, 0xffffc1dc }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xc1d9, 0xc1da, 0xc1db, 0xc1dc, ++ 0xc1dd, 0xc1de, 0xc1df, 0xc1e0 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffc1d9, 0xffffc1da, ++ 0xffffc1db, 0xffffc1dc }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0xc4223168, 0xc421f168, ++ 0xc421b168, 0xc4217168 }; ++ ++#include "vmlX_lane.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmls.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmls.c +@@ -0,0 +1,37 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vmls ++#define TEST_MSG "VMLS" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x1, 0x2, 0x3, 0x4, ++ 0x5, 0x6, 0x7, 0x8 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xe054, 0xe055, 0xe056, 0xe057 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xffffd3e9, 0xffffd3ea }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xc0, 0xc1, 0xc2, 0xc3, ++ 0xc4, 0xc5, 0xc6, 0xc7 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xc1d9, 0xc1da, 0xc1db, 0xc1dc }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffbc34, 0xffffbc35 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xc3b14e76, 0xc3b0ce76 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0xd1, 0xd2, 0xd3, 0xd4, ++ 0xd5, 0xd6, 0xd7, 0xd8, ++ 0xd9, 0xda, 0xdb, 0xdc, ++ 0xdd, 0xde, 0xdf, 0xe0 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xb7b0, 0xb7b1, 0xb7b2, 0xb7b3, ++ 0xb7b4, 0xb7b5, 0xb7b6, 0xb7b7 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffb8d1, 0xffffb8d2, ++ 0xffffb8d3, 0xffffb8d4 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x34, 0x35, 0x36, 0x37, ++ 0x38, 0x39, 0x3a, 0x3b, ++ 0x3c, 0x3d, 0x3e, 0x3f, ++ 0x40, 0x41, 0x42, 0x43 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xc1d9, 0xc1da, 0xc1db, 0xc1dc, ++ 0xc1dd, 0xc1de, 0xc1df, 0xc1e0 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffc9c0, 0xffffc9c1, ++ 0xffffc9c2, 0xffffc9c3 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0xc5f1ae15, 0xc5f1a615, ++ 0xc5f19e15, 0xc5f19615 }; ++ ++#include "vmlX.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl_lane.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl_lane.c +@@ -0,0 +1,40 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vqdmlsl_lane ++#define TEST_MSG "VQDMLSL_LANE" ++ ++/* Expected values of cumulative_saturation flag. */ ++int VECT_VAR(expected_cumulative_sat,int,32,4) = 0; ++int VECT_VAR(expected_cumulative_sat,int,64,2) = 0; ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xffff83c2, 0xffff83c3, ++ 0xffff83c4, 0xffff83c5 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xffffffffffff83c2, ++ 0xffffffffffff83c3 }; ++ ++/* Expected values of cumulative_saturation flag when multiplying with ++ 0. */ ++int VECT_VAR(expected_cumulative_sat2,int,32,4) = 0; ++int VECT_VAR(expected_cumulative_sat2,int,64,2) = 0; ++ ++/* Expected values when multiplying with 0. */ ++VECT_VAR_DECL(expected2,int,32,4) [] = { 0xfffffff0, 0xfffffff1, ++ 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected2,int,64,2) [] = { 0xfffffffffffffff0, ++ 0xfffffffffffffff1 }; ++ ++/* Expected values of cumulative_saturation flag when multiplication ++ saturates. */ ++int VECT_VAR(expected_cumulative_sat3,int,32,4) = 1; ++int VECT_VAR(expected_cumulative_sat3,int,64,2) = 1; ++ ++/* Expected values when multiplication saturates. */ ++VECT_VAR_DECL(expected3,int,32,4) [] = { 0x80000000, 0x80000000, ++ 0x80000000, 0x80000000 }; ++VECT_VAR_DECL(expected3,int,64,2) [] = { 0x8000000000000000, ++ 0x8000000000000000 }; ++ ++#include "vqdmlXl_lane.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvt.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvt.c +@@ -0,0 +1,185 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++#include ++ ++/* Expected results for vcvt. */ ++VECT_VAR_DECL(expected_s,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 }; ++VECT_VAR_DECL(expected_u,hfloat,32,2) [] = { 0x4f800000, 0x4f800000 }; ++VECT_VAR_DECL(expected_s,hfloat,32,4) [] = { 0xc1800000, 0xc1700000, ++ 0xc1600000, 0xc1500000 }; ++VECT_VAR_DECL(expected_u,hfloat,32,4) [] = { 0x4f800000, 0x4f800000, ++ 0x4f800000, 0x4f800000 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffff1, 0x5 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x0, 0x5 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x0, 0x0, 0xf, 0xfffffff1 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x0, 0x0, 0xf, 0x0 }; ++ ++/* Expected results for vcvt_n. */ ++VECT_VAR_DECL(expected_vcvt_n_s,hfloat,32,2) [] = { 0xc0800000, 0xc0700000 }; ++VECT_VAR_DECL(expected_vcvt_n_u,hfloat,32,2) [] = { 0x4c000000, 0x4c000000 }; ++VECT_VAR_DECL(expected_vcvt_n_s,hfloat,32,4) [] = { 0xb2800000, 0xb2700000, ++ 0xb2600000, 0xb2500000 }; ++VECT_VAR_DECL(expected_vcvt_n_u,hfloat,32,4) [] = { 0x49800000, 0x49800000, ++ 0x49800000, 0x49800000 }; ++VECT_VAR_DECL(expected_vcvt_n,int,32,2) [] = { 0xff0b3333, 0x54cccd }; ++VECT_VAR_DECL(expected_vcvt_n,uint,32,2) [] = { 0x0, 0x15 }; ++VECT_VAR_DECL(expected_vcvt_n,int,32,4) [] = { 0x0, 0x0, 0x1e3d7, 0xfffe1c29 }; ++VECT_VAR_DECL(expected_vcvt_n,uint,32,4) [] = { 0x0, 0x0, 0x1e, 0x0 }; ++ ++/* Expected results for vcvt with rounding. */ ++VECT_VAR_DECL(expected_rounding,int,32,2) [] = { 0xa, 0xa }; ++VECT_VAR_DECL(expected_rounding,uint,32,2) [] = { 0xa, 0xa }; ++VECT_VAR_DECL(expected_rounding,int,32,4) [] = { 0x7d, 0x7d, 0x7d, 0x7d }; ++VECT_VAR_DECL(expected_rounding,uint,32,4) [] = { 0x7d, 0x7d, 0x7d, 0x7d }; ++ ++/* Expected results for vcvt_n with rounding. */ ++VECT_VAR_DECL(expected_vcvt_n_rounding,int,32,2) [] = { 0xa66666, 0xa66666 }; ++VECT_VAR_DECL(expected_vcvt_n_rounding,uint,32,2) [] = { 0xa66666, 0xa66666 }; ++VECT_VAR_DECL(expected_vcvt_n_rounding,int,32,4) [] = { 0xfbccc, 0xfbccc, ++ 0xfbccc, 0xfbccc }; ++VECT_VAR_DECL(expected_vcvt_n_rounding,uint,32,4) [] = { 0xfbccc, 0xfbccc, ++ 0xfbccc, 0xfbccc }; ++ ++/* Expected results for vcvt_n with saturation. */ ++VECT_VAR_DECL(expected_vcvt_n_saturation,int,32,2) [] = { 0x7fffffff, ++ 0x7fffffff }; ++VECT_VAR_DECL(expected_vcvt_n_saturation,int,32,4) [] = { 0x7fffffff, ++ 0x7fffffff, ++ 0x7fffffff, 0x7fffffff }; ++ ++#define TEST_MSG "VCVT/VCVTQ" ++void exec_vcvt (void) ++{ ++ int i; ++ ++ /* Basic test: y=vcvt(x), then store the result. */ ++#define TEST_VCVT(Q, T1, T2, W, N, TS1, TS2, EXP) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ vcvt##Q##_##T2##W##_##TS2##W(VECT_VAR(vector, TS1, W, N)); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \ ++ VECT_VAR(vector_res, T1, W, N)); \ ++ CHECK(TEST_MSG, T1, W, N, PRIx##W, EXP, TEST_MSG2); ++ ++#define TEST_VCVT_FP(Q, T1, T2, W, N, TS1, TS2, EXP) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ vcvt##Q##_##T2##W##_##TS2##W(VECT_VAR(vector, TS1, W, N)); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \ ++ VECT_VAR(vector_res, T1, W, N)); \ ++ CHECK_FP(TEST_MSG, T1, W, N, PRIx##W, EXP, TEST_MSG2); ++ ++#define TEST_VCVT_N(Q, T1, T2, W, N, TS1, TS2, V, EXP) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ vcvt##Q##_n_##T2##W##_##TS2##W(VECT_VAR(vector, TS1, W, N), V); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \ ++ VECT_VAR(vector_res, T1, W, N)); \ ++ CHECK(TEST_MSG, T1, W, N, PRIx##W, EXP, TEST_MSG2); ++ ++#define TEST_VCVT_N_FP(Q, T1, T2, W, N, TS1, TS2, V, EXP) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ vcvt##Q##_n_##T2##W##_##TS2##W(VECT_VAR(vector, TS1, W, N), V); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \ ++ VECT_VAR(vector_res, T1, W, N)); \ ++ CHECK_FP(TEST_MSG, T1, W, N, PRIx##W, EXP, TEST_MSG2); ++ ++ DECL_VARIABLE_ALL_VARIANTS(vector); ++ DECL_VARIABLE_ALL_VARIANTS(vector_res); ++ ++ clean_results (); ++ ++ /* Initialize input "vector" from "buffer". */ ++ TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector, buffer); ++ VLOAD(vector, buffer, , float, f, 32, 2); ++ VLOAD(vector, buffer, q, float, f, 32, 4); ++ ++ /* Make sure some elements have a fractional part, to exercise ++ integer conversions. */ ++ VSET_LANE(vector, , float, f, 32, 2, 0, -15.3f); ++ VSET_LANE(vector, , float, f, 32, 2, 1, 5.3f); ++ VSET_LANE(vector, q, float, f, 32, 4, 2, -15.3f); ++ VSET_LANE(vector, q, float, f, 32, 4, 3, 5.3f); ++ ++ /* The same result buffers are used multiple times, so we check them ++ before overwriting them. */ ++#define TEST_MSG2 "" ++ ++ /* vcvt_f32_xx. */ ++ TEST_VCVT_FP(, float, f, 32, 2, int, s, expected_s); ++ TEST_VCVT_FP(, float, f, 32, 2, uint, u, expected_u); ++ ++ /* vcvtq_f32_xx. */ ++ TEST_VCVT_FP(q, float, f, 32, 4, int, s, expected_s); ++ TEST_VCVT_FP(q, float, f, 32, 4, uint, u, expected_u); ++ ++ /* vcvt_xx_f32. */ ++ TEST_VCVT(, int, s, 32, 2, float, f, expected); ++ TEST_VCVT(, uint, u, 32, 2, float, f, expected); ++ ++ VSET_LANE(vector, q, float, f, 32, 4, 0, 0.0f); ++ VSET_LANE(vector, q, float, f, 32, 4, 1, -0.0f); ++ VSET_LANE(vector, q, float, f, 32, 4, 2, 15.12f); ++ VSET_LANE(vector, q, float, f, 32, 4, 3, -15.12f); ++ ++ /* vcvtq_xx_f32. */ ++ TEST_VCVT(q, int, s, 32, 4, float, f, expected); ++ TEST_VCVT(q, uint, u, 32, 4, float, f, expected); ++ ++ /* The same result buffers are used multiple times, so we check them ++ before overwriting them. */ ++#undef TEST_MSG ++#define TEST_MSG "VCVT_N/VCVTQ_N" ++ ++ /* vcvt_n_f32_xx. */ ++ TEST_VCVT_N_FP(, float, f, 32, 2, int, s, 2, expected_vcvt_n_s); ++ TEST_VCVT_N_FP(, float, f, 32, 2, uint, u, 7, expected_vcvt_n_u); ++ ++ /* vcvtq_n_f32_xx. */ ++ TEST_VCVT_N_FP(q, float, f, 32, 4, int, s, 30, expected_vcvt_n_s); ++ TEST_VCVT_N_FP(q, float, f, 32, 4, uint, u, 12, expected_vcvt_n_u); ++ ++ /* vcvt_n_xx_f32. */ ++ TEST_VCVT_N(, int, s, 32, 2, float, f, 20, expected_vcvt_n); ++ TEST_VCVT_N(, uint, u, 32, 2, float, f, 2, expected_vcvt_n); ++ ++ /* vcvtq_n_xx_f32. */ ++ TEST_VCVT_N(q, int, s, 32, 4, float, f, 13, expected_vcvt_n); ++ TEST_VCVT_N(q, uint, u, 32, 4, float, f, 1, expected_vcvt_n); ++ ++ /* Check rounding. */ ++#undef TEST_MSG ++#define TEST_MSG "VCVT/VCVTQ" ++#undef TEST_MSG2 ++#define TEST_MSG2 "(check rounding)" ++ VDUP(vector, , float, f, 32, 2, 10.4f); ++ VDUP(vector, q, float, f, 32, 4, 125.9f); ++ /* vcvt_xx_f32. */ ++ TEST_VCVT(, int, s, 32, 2, float, f, expected_rounding); ++ TEST_VCVT(, uint, u, 32, 2, float, f, expected_rounding); ++ /* vcvtq_xx_f32. */ ++ TEST_VCVT(q, int, s, 32, 4, float, f, expected_rounding); ++ TEST_VCVT(q, uint, u, 32, 4, float, f, expected_rounding); ++ ++#undef TEST_MSG ++#define TEST_MSG "VCVT_N/VCVTQ_N" ++ /* vcvt_n_xx_f32. */ ++ TEST_VCVT_N(, int, s, 32, 2, float, f, 20, expected_vcvt_n_rounding); ++ TEST_VCVT_N(, uint, u, 32, 2, float, f, 20, expected_vcvt_n_rounding); ++ /* vcvtq_n_xx_f32. */ ++ TEST_VCVT_N(q, int, s, 32, 4, float, f, 13, expected_vcvt_n_rounding); ++ TEST_VCVT_N(q, uint, u, 32, 4, float, f, 13, expected_vcvt_n_rounding); ++ ++#undef TEST_MSG ++#define TEST_MSG "VCVT_N/VCVTQ_N" ++#undef TEST_MSG2 ++#define TEST_MSG2 "(check saturation)" ++ /* vcvt_n_xx_f32. */ ++ TEST_VCVT_N(, int, s, 32, 2, float, f, 31, expected_vcvt_n_saturation); ++ /* vcvtq_n_xx_f32. */ ++ TEST_VCVT_N(q, int, s, 32, 4, float, f, 31, expected_vcvt_n_saturation); ++} ++ ++int main (void) ++{ ++ exec_vcvt (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/unary_op.inc ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/unary_op.inc +@@ -0,0 +1,72 @@ ++/* Template file for unary operator validation. ++ ++ This file is meant to be included by the relevant test files, which ++ have to define the intrinsic family to test. If a given intrinsic ++ supports variants which are not supported by all the other unary ++ operators, these can be tested by providing a definition for ++ EXTRA_TESTS. */ ++ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ /* Basic test: y=OP(x), then store the result. */ ++#define TEST_UNARY_OP1(INSN, Q, T1, T2, W, N) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ INSN##Q##_##T2##W(VECT_VAR(vector, T1, W, N)); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N)) ++ ++#define TEST_UNARY_OP(INSN, Q, T1, T2, W, N) \ ++ TEST_UNARY_OP1(INSN, Q, T1, T2, W, N) \ ++ ++ /* No need for 64 bits variants in the general case. */ ++ DECL_VARIABLE(vector, int, 8, 8); ++ DECL_VARIABLE(vector, int, 16, 4); ++ DECL_VARIABLE(vector, int, 32, 2); ++ DECL_VARIABLE(vector, int, 8, 16); ++ DECL_VARIABLE(vector, int, 16, 8); ++ DECL_VARIABLE(vector, int, 32, 4); ++ ++ DECL_VARIABLE(vector_res, int, 8, 8); ++ DECL_VARIABLE(vector_res, int, 16, 4); ++ DECL_VARIABLE(vector_res, int, 32, 2); ++ DECL_VARIABLE(vector_res, int, 8, 16); ++ DECL_VARIABLE(vector_res, int, 16, 8); ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ ++ clean_results (); ++ ++ /* Initialize input "vector" from "buffer". */ ++ VLOAD(vector, buffer, , int, s, 8, 8); ++ VLOAD(vector, buffer, , int, s, 16, 4); ++ VLOAD(vector, buffer, , int, s, 32, 2); ++ VLOAD(vector, buffer, q, int, s, 8, 16); ++ VLOAD(vector, buffer, q, int, s, 16, 8); ++ VLOAD(vector, buffer, q, int, s, 32, 4); ++ ++ /* Apply a unary operator named INSN_NAME. */ ++ TEST_UNARY_OP(INSN_NAME, , int, s, 8, 8); ++ TEST_UNARY_OP(INSN_NAME, , int, s, 16, 4); ++ TEST_UNARY_OP(INSN_NAME, , int, s, 32, 2); ++ TEST_UNARY_OP(INSN_NAME, q, int, s, 8, 16); ++ TEST_UNARY_OP(INSN_NAME, q, int, s, 16, 8); ++ TEST_UNARY_OP(INSN_NAME, q, int, s, 32, 4); ++ ++ CHECK_RESULTS (TEST_MSG, ""); ++ ++#ifdef EXTRA_TESTS ++ EXTRA_TESTS(); ++#endif ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME)(); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcge.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcge.c +@@ -0,0 +1,76 @@ ++#define INSN_NAME vcge ++#define TEST_MSG "VCGE/VCGEQ" ++ ++#include "cmp_op.inc" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x0, 0x0, 0xffff, 0xffff }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffff, 0xffffffff }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333, ++ 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0, ++ 0xff, 0xff, 0xff, 0xff }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0xffff, 0xffff }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x0, 0x0, 0xffffffff, 0xffffffff }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++VECT_VAR_DECL(expected_uint,uint,8,8) [] = { 0x0, 0x0, 0x0, 0xff, ++ 0xff, 0xff, 0xff, 0xff }; ++VECT_VAR_DECL(expected_uint,uint,16,4) [] = { 0x0, 0x0, 0xffff, 0xffff }; ++VECT_VAR_DECL(expected_uint,uint,32,2) [] = { 0x0, 0xffffffff }; ++ ++VECT_VAR_DECL(expected_q_uint,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0, ++ 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xff, 0xff }; ++VECT_VAR_DECL(expected_q_uint,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0, ++ 0, 0x0, 0xffff, 0xffff }; ++VECT_VAR_DECL(expected_q_uint,uint,32,4) [] = { 0x0, 0x0, 0xffffffff, 0xffffffff }; ++ ++VECT_VAR_DECL(expected_float,uint,32,2) [] = { 0x0, 0xffffffff }; ++VECT_VAR_DECL(expected_q_float,uint,32,4) [] = { 0x0, 0x0, 0xffffffff, 0xffffffff }; ++ ++VECT_VAR_DECL(expected_uint2,uint,32,2) [] = { 0xffffffff, 0xffffffff }; ++VECT_VAR_DECL(expected_uint3,uint,32,2) [] = { 0x0, 0xffffffff }; ++VECT_VAR_DECL(expected_uint4,uint,32,2) [] = { 0xffffffff, 0xffffffff }; ++ ++VECT_VAR_DECL(expected_nan,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected_mnan,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected_nan2,uint,32,2) [] = { 0x0, 0x0 }; ++ ++VECT_VAR_DECL(expected_inf,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected_minf,uint,32,2) [] = { 0xffffffff, 0xffffffff }; ++VECT_VAR_DECL(expected_inf2,uint,32,2) [] = { 0xffffffff, 0xffffffff }; ++ ++VECT_VAR_DECL(expected_mzero,uint,32,2) [] = { 0xffffffff, 0xffffffff }; +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vorn.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vorn.c +@@ -0,0 +1,48 @@ ++#define INSN_NAME vorn ++#define TEST_MSG "VORN/VORNQ" ++ ++#include "binary_op.inc" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xfd, 0xfd, 0xff, 0xff, ++ 0xfd, 0xfd, 0xff, 0xff }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff3, 0xfff3, 0xfff3, 0xfff3 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffffc, 0xfffffffd }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0xfffffffffffffffb }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xfb, 0xfb, 0xfb, 0xfb, ++ 0xff, 0xff, 0xff, 0xff }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfff1, 0xfff1, 0xfff3, 0xfff3 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffffff7, 0xfffffff7 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0xfffffffffffffffd }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0xf9, 0xf9, 0xfb, 0xfb, ++ 0xfd, 0xfd, 0xff, 0xff, ++ 0xf9, 0xf9, 0xfb, 0xfb, ++ 0xfd, 0xfd, 0xff, 0xff }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xfff3, 0xfff3, 0xfff3, 0xfff3, ++ 0xfff7, 0xfff7, 0xfff7, 0xfff7 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffffd, 0xfffffffd, ++ 0xffffffff, 0xffffffff }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xfffffffffffffff7, ++ 0xfffffffffffffff7 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xf3, 0xf3, 0xf3, 0xf3, ++ 0xf7, 0xf7, 0xf7, 0xf7, ++ 0xfb, 0xfb, 0xfb, 0xfb, ++ 0xff, 0xff, 0xff, 0xff }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfffc, 0xfffd, 0xfffe, 0xffff, ++ 0xfffc, 0xfffd, 0xfffe, 0xffff }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfffffff8, 0xfffffff9, ++ 0xfffffffa, 0xfffffffb }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xfffffffffffffffc, ++ 0xfffffffffffffffd }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpXXX.inc ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpXXX.inc +@@ -0,0 +1,67 @@ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ /* Basic test: y=OP(x), then store the result. */ ++#define TEST_VPXXX1(INSN, T1, T2, W, N) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ INSN##_##T2##W(VECT_VAR(vector, T1, W, N), \ ++ VECT_VAR(vector, T1, W, N)); \ ++ vst1##_##T2##W(VECT_VAR(result, T1, W, N), \ ++ VECT_VAR(vector_res, T1, W, N)) ++ ++#define TEST_VPXXX(INSN, T1, T2, W, N) \ ++ TEST_VPXXX1(INSN, T1, T2, W, N) \ ++ ++ /* No need for 64 bits variants. */ ++ DECL_VARIABLE(vector, int, 8, 8); ++ DECL_VARIABLE(vector, int, 16, 4); ++ DECL_VARIABLE(vector, int, 32, 2); ++ DECL_VARIABLE(vector, uint, 8, 8); ++ DECL_VARIABLE(vector, uint, 16, 4); ++ DECL_VARIABLE(vector, uint, 32, 2); ++ DECL_VARIABLE(vector, float, 32, 2); ++ ++ DECL_VARIABLE(vector_res, int, 8, 8); ++ DECL_VARIABLE(vector_res, int, 16, 4); ++ DECL_VARIABLE(vector_res, int, 32, 2); ++ DECL_VARIABLE(vector_res, uint, 8, 8); ++ DECL_VARIABLE(vector_res, uint, 16, 4); ++ DECL_VARIABLE(vector_res, uint, 32, 2); ++ DECL_VARIABLE(vector_res, float, 32, 2); ++ ++ clean_results (); ++ ++ /* Initialize input "vector" from "buffer". */ ++ VLOAD(vector, buffer, , int, s, 8, 8); ++ VLOAD(vector, buffer, , int, s, 16, 4); ++ VLOAD(vector, buffer, , int, s, 32, 2); ++ VLOAD(vector, buffer, , uint, u, 8, 8); ++ VLOAD(vector, buffer, , uint, u, 16, 4); ++ VLOAD(vector, buffer, , uint, u, 32, 2); ++ VLOAD(vector, buffer, , float, f, 32, 2); ++ ++ /* Apply a binary operator named INSN_NAME. */ ++ TEST_VPXXX(INSN_NAME, int, s, 8, 8); ++ TEST_VPXXX(INSN_NAME, int, s, 16, 4); ++ TEST_VPXXX(INSN_NAME, int, s, 32, 2); ++ TEST_VPXXX(INSN_NAME, uint, u, 8, 8); ++ TEST_VPXXX(INSN_NAME, uint, u, 16, 4); ++ TEST_VPXXX(INSN_NAME, uint, u, 32, 2); ++ TEST_VPXXX(INSN_NAME, float, f, 32, 2); ++ ++ CHECK(TEST_MSG, int, 8, 8, PRIx32, expected, ""); ++ CHECK(TEST_MSG, int, 16, 4, PRIx64, expected, ""); ++ CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 8, 8, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 4, PRIx64, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, ""); ++ CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected, ""); ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vldX_dup.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vldX_dup.c +@@ -0,0 +1,671 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++ ++/* vld2_dup/chunk 0. */ ++VECT_VAR_DECL(expected_vld2_0,int,8,8) [] = { 0xf0, 0xf1, 0xf0, 0xf1, ++ 0xf0, 0xf1, 0xf0, 0xf1 }; ++VECT_VAR_DECL(expected_vld2_0,int,16,4) [] = { 0xfff0, 0xfff1, 0xfff0, 0xfff1 }; ++VECT_VAR_DECL(expected_vld2_0,int,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected_vld2_0,int,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected_vld2_0,uint,8,8) [] = { 0xf0, 0xf1, 0xf0, 0xf1, ++ 0xf0, 0xf1, 0xf0, 0xf1 }; ++VECT_VAR_DECL(expected_vld2_0,uint,16,4) [] = { 0xfff0, 0xfff1, 0xfff0, 0xfff1 }; ++VECT_VAR_DECL(expected_vld2_0,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected_vld2_0,uint,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected_vld2_0,poly,8,8) [] = { 0xf0, 0xf1, 0xf0, 0xf1, ++ 0xf0, 0xf1, 0xf0, 0xf1 }; ++VECT_VAR_DECL(expected_vld2_0,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff0, 0xfff1 }; ++VECT_VAR_DECL(expected_vld2_0,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 }; ++VECT_VAR_DECL(expected_vld2_0,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld2_0,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld2_0,int,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected_vld2_0,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld2_0,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld2_0,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld2_0,uint,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected_vld2_0,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld2_0,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld2_0,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld2_0,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++/* vld2_dup/chunk 1. */ ++VECT_VAR_DECL(expected_vld2_1,int,8,8) [] = { 0xf0, 0xf1, 0xf0, 0xf1, ++ 0xf0, 0xf1, 0xf0, 0xf1 }; ++VECT_VAR_DECL(expected_vld2_1,int,16,4) [] = { 0xfff0, 0xfff1, 0xfff0, 0xfff1 }; ++VECT_VAR_DECL(expected_vld2_1,int,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected_vld2_1,int,64,1) [] = { 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected_vld2_1,uint,8,8) [] = { 0xf0, 0xf1, 0xf0, 0xf1, ++ 0xf0, 0xf1, 0xf0, 0xf1 }; ++VECT_VAR_DECL(expected_vld2_1,uint,16,4) [] = { 0xfff0, 0xfff1, 0xfff0, 0xfff1 }; ++VECT_VAR_DECL(expected_vld2_1,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected_vld2_1,uint,64,1) [] = { 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected_vld2_1,poly,8,8) [] = { 0xf0, 0xf1, 0xf0, 0xf1, ++ 0xf0, 0xf1, 0xf0, 0xf1 }; ++VECT_VAR_DECL(expected_vld2_1,poly,16,4) [] = { 0xfff0, 0xfff1, ++ 0xfff0, 0xfff1 }; ++VECT_VAR_DECL(expected_vld2_1,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 }; ++VECT_VAR_DECL(expected_vld2_1,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld2_1,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld2_1,int,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected_vld2_1,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld2_1,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld2_1,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld2_1,uint,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected_vld2_1,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld2_1,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld2_1,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld2_1,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++/* vld3_dup/chunk 0. */ ++VECT_VAR_DECL(expected_vld3_0,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf0, ++ 0xf1, 0xf2, 0xf0, 0xf1 }; ++VECT_VAR_DECL(expected_vld3_0,int,16,4) [] = { 0xfff0, 0xfff1, ++ 0xfff2, 0xfff0 }; ++VECT_VAR_DECL(expected_vld3_0,int,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected_vld3_0,int,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected_vld3_0,uint,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf0, ++ 0xf1, 0xf2, 0xf0, 0xf1 }; ++VECT_VAR_DECL(expected_vld3_0,uint,16,4) [] = { 0xfff0, 0xfff1, ++ 0xfff2, 0xfff0 }; ++VECT_VAR_DECL(expected_vld3_0,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected_vld3_0,uint,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected_vld3_0,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf0, ++ 0xf1, 0xf2, 0xf0, 0xf1 }; ++VECT_VAR_DECL(expected_vld3_0,poly,16,4) [] = { 0xfff0, 0xfff1, ++ 0xfff2, 0xfff0 }; ++VECT_VAR_DECL(expected_vld3_0,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 }; ++VECT_VAR_DECL(expected_vld3_0,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld3_0,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld3_0,int,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected_vld3_0,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld3_0,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld3_0,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld3_0,uint,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected_vld3_0,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld3_0,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld3_0,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld3_0,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++/* vld3_dup/chunk 1. */ ++VECT_VAR_DECL(expected_vld3_1,int,8,8) [] = { 0xf2, 0xf0, 0xf1, 0xf2, ++ 0xf0, 0xf1, 0xf2, 0xf0 }; ++VECT_VAR_DECL(expected_vld3_1,int,16,4) [] = { 0xfff1, 0xfff2, ++ 0xfff0, 0xfff1 }; ++VECT_VAR_DECL(expected_vld3_1,int,32,2) [] = { 0xfffffff2, 0xfffffff0 }; ++VECT_VAR_DECL(expected_vld3_1,int,64,1) [] = { 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected_vld3_1,uint,8,8) [] = { 0xf2, 0xf0, 0xf1, 0xf2, ++ 0xf0, 0xf1, 0xf2, 0xf0 }; ++VECT_VAR_DECL(expected_vld3_1,uint,16,4) [] = { 0xfff1, 0xfff2, ++ 0xfff0, 0xfff1 }; ++VECT_VAR_DECL(expected_vld3_1,uint,32,2) [] = { 0xfffffff2, 0xfffffff0 }; ++VECT_VAR_DECL(expected_vld3_1,uint,64,1) [] = { 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected_vld3_1,poly,8,8) [] = { 0xf2, 0xf0, 0xf1, 0xf2, ++ 0xf0, 0xf1, 0xf2, 0xf0 }; ++VECT_VAR_DECL(expected_vld3_1,poly,16,4) [] = { 0xfff1, 0xfff2, ++ 0xfff0, 0xfff1 }; ++VECT_VAR_DECL(expected_vld3_1,hfloat,32,2) [] = { 0xc1600000, 0xc1800000 }; ++VECT_VAR_DECL(expected_vld3_1,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld3_1,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld3_1,int,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected_vld3_1,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld3_1,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld3_1,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld3_1,uint,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected_vld3_1,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld3_1,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld3_1,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld3_1,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++/* vld3_dup/chunk 2. */ ++VECT_VAR_DECL(expected_vld3_2,int,8,8) [] = { 0xf1, 0xf2, 0xf0, 0xf1, ++ 0xf2, 0xf0, 0xf1, 0xf2 }; ++VECT_VAR_DECL(expected_vld3_2,int,16,4) [] = { 0xfff2, 0xfff0, ++ 0xfff1, 0xfff2 }; ++VECT_VAR_DECL(expected_vld3_2,int,32,2) [] = { 0xfffffff1, 0xfffffff2 }; ++VECT_VAR_DECL(expected_vld3_2,int,64,1) [] = { 0xfffffffffffffff2 }; ++VECT_VAR_DECL(expected_vld3_2,uint,8,8) [] = { 0xf1, 0xf2, 0xf0, 0xf1, ++ 0xf2, 0xf0, 0xf1, 0xf2 }; ++VECT_VAR_DECL(expected_vld3_2,uint,16,4) [] = { 0xfff2, 0xfff0, ++ 0xfff1, 0xfff2 }; ++VECT_VAR_DECL(expected_vld3_2,uint,32,2) [] = { 0xfffffff1, 0xfffffff2 }; ++VECT_VAR_DECL(expected_vld3_2,uint,64,1) [] = { 0xfffffffffffffff2 }; ++VECT_VAR_DECL(expected_vld3_2,poly,8,8) [] = { 0xf1, 0xf2, 0xf0, 0xf1, ++ 0xf2, 0xf0, 0xf1, 0xf2 }; ++VECT_VAR_DECL(expected_vld3_2,poly,16,4) [] = { 0xfff2, 0xfff0, ++ 0xfff1, 0xfff2 }; ++VECT_VAR_DECL(expected_vld3_2,hfloat,32,2) [] = { 0xc1700000, 0xc1600000 }; ++VECT_VAR_DECL(expected_vld3_2,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld3_2,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld3_2,int,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected_vld3_2,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld3_2,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld3_2,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld3_2,uint,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected_vld3_2,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld3_2,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld3_2,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld3_2,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++/* vld4_dup/chunk 0. */ ++VECT_VAR_DECL(expected_vld4_0,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf0, 0xf1, 0xf2, 0xf3 }; ++VECT_VAR_DECL(expected_vld4_0,int,16,4) [] = { 0xfff0, 0xfff1, ++ 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld4_0,int,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected_vld4_0,int,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected_vld4_0,uint,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf0, 0xf1, 0xf2, 0xf3 }; ++VECT_VAR_DECL(expected_vld4_0,uint,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld4_0,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected_vld4_0,uint,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected_vld4_0,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf0, 0xf1, 0xf2, 0xf3 }; ++VECT_VAR_DECL(expected_vld4_0,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld4_0,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 }; ++VECT_VAR_DECL(expected_vld4_0,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld4_0,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld4_0,int,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected_vld4_0,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_0,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld4_0,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld4_0,uint,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected_vld4_0,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_0,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld4_0,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld4_0,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++/* vld4_dup/chunk 1. */ ++VECT_VAR_DECL(expected_vld4_1,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf0, 0xf1, 0xf2, 0xf3 }; ++VECT_VAR_DECL(expected_vld4_1,int,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld4_1,int,32,2) [] = { 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected_vld4_1,int,64,1) [] = { 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected_vld4_1,uint,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf0, 0xf1, 0xf2, 0xf3 }; ++VECT_VAR_DECL(expected_vld4_1,uint,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld4_1,uint,32,2) [] = { 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected_vld4_1,uint,64,1) [] = { 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected_vld4_1,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf0, 0xf1, 0xf2, 0xf3 }; ++VECT_VAR_DECL(expected_vld4_1,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld4_1,hfloat,32,2) [] = { 0xc1600000, 0xc1500000 }; ++VECT_VAR_DECL(expected_vld4_1,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld4_1,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld4_1,int,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected_vld4_1,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_1,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld4_1,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld4_1,uint,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected_vld4_1,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_1,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld4_1,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld4_1,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++/* vld4_dup/chunk 2. */ ++VECT_VAR_DECL(expected_vld4_2,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf0, 0xf1, 0xf2, 0xf3 }; ++VECT_VAR_DECL(expected_vld4_2,int,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld4_2,int,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected_vld4_2,int,64,1) [] = { 0xfffffffffffffff2 }; ++VECT_VAR_DECL(expected_vld4_2,uint,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf0, 0xf1, 0xf2, 0xf3 }; ++VECT_VAR_DECL(expected_vld4_2,uint,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld4_2,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected_vld4_2,uint,64,1) [] = { 0xfffffffffffffff2 }; ++VECT_VAR_DECL(expected_vld4_2,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf0, 0xf1, 0xf2, 0xf3 }; ++VECT_VAR_DECL(expected_vld4_2,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld4_2,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 }; ++VECT_VAR_DECL(expected_vld4_2,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld4_2,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld4_2,int,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected_vld4_2,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_2,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld4_2,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld4_2,uint,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected_vld4_2,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_2,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld4_2,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld4_2,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++/* vld4_dup/chunk3. */ ++VECT_VAR_DECL(expected_vld4_3,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf0, 0xf1, 0xf2, 0xf3 }; ++VECT_VAR_DECL(expected_vld4_3,int,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld4_3,int,32,2) [] = { 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected_vld4_3,int,64,1) [] = { 0xfffffffffffffff3 }; ++VECT_VAR_DECL(expected_vld4_3,uint,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf0, 0xf1, 0xf2, 0xf3 }; ++VECT_VAR_DECL(expected_vld4_3,uint,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld4_3,uint,32,2) [] = { 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected_vld4_3,uint,64,1) [] = { 0xfffffffffffffff3 }; ++VECT_VAR_DECL(expected_vld4_3,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf0, 0xf1, 0xf2, 0xf3 }; ++VECT_VAR_DECL(expected_vld4_3,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld4_3,hfloat,32,2) [] = { 0xc1600000, 0xc1500000 }; ++VECT_VAR_DECL(expected_vld4_3,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld4_3,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld4_3,int,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected_vld4_3,int,64,2) [] = { 0x3333333333333333, 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_3,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld4_3,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld4_3,uint,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected_vld4_3,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_3,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld4_3,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_vld4_3,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++void exec_vldX_dup (void) ++{ ++ /* In this case, input variables are arrays of vectors. */ ++#define DECL_VLDX_DUP(T1, W, N, X) \ ++ VECT_ARRAY_TYPE(T1, W, N, X) VECT_ARRAY_VAR(vector, T1, W, N, X); \ ++ VECT_VAR_DECL(result_bis_##X, T1, W, N)[X * N] ++ ++ /* We need to use a temporary result buffer (result_bis), because ++ the one used for other tests is not large enough. A subset of the ++ result data is moved from result_bis to result, and it is this ++ subset which is used to check the actual behaviour. The next ++ macro enables to move another chunk of data from result_bis to ++ result. */ ++#define TEST_VLDX_DUP(Q, T1, T2, W, N, X) \ ++ VECT_ARRAY_VAR(vector, T1, W, N, X) = \ ++ vld##X##Q##_dup_##T2##W(&VECT_VAR(buffer_dup, T1, W, N)[0]); \ ++ \ ++ vst##X##Q##_##T2##W(VECT_VAR(result_bis_##X, T1, W, N), \ ++ VECT_ARRAY_VAR(vector, T1, W, N, X)); \ ++ memcpy(VECT_VAR(result, T1, W, N), VECT_VAR(result_bis_##X, T1, W, N), \ ++ sizeof(VECT_VAR(result, T1, W, N))); ++ ++ ++ /* Overwrite "result" with the contents of "result_bis"[Y]. */ ++#define TEST_EXTRA_CHUNK(T1, W, N, X,Y) \ ++ memcpy(VECT_VAR(result, T1, W, N), \ ++ &(VECT_VAR(result_bis_##X, T1, W, N)[Y*N]), \ ++ sizeof(VECT_VAR(result, T1, W, N))); ++ ++#define DECL_ALL_VLDX_DUP(X) \ ++ DECL_VLDX_DUP(int, 8, 8, X); \ ++ DECL_VLDX_DUP(int, 16, 4, X); \ ++ DECL_VLDX_DUP(int, 32, 2, X); \ ++ DECL_VLDX_DUP(int, 64, 1, X); \ ++ DECL_VLDX_DUP(uint, 8, 8, X); \ ++ DECL_VLDX_DUP(uint, 16, 4, X); \ ++ DECL_VLDX_DUP(uint, 32, 2, X); \ ++ DECL_VLDX_DUP(uint, 64, 1, X); \ ++ DECL_VLDX_DUP(poly, 8, 8, X); \ ++ DECL_VLDX_DUP(poly, 16, 4, X); \ ++ DECL_VLDX_DUP(float, 32, 2, X) ++ ++#define TEST_ALL_VLDX_DUP(X) \ ++ TEST_VLDX_DUP(, int, s, 8, 8, X); \ ++ TEST_VLDX_DUP(, int, s, 16, 4, X); \ ++ TEST_VLDX_DUP(, int, s, 32, 2, X); \ ++ TEST_VLDX_DUP(, int, s, 64, 1, X); \ ++ TEST_VLDX_DUP(, uint, u, 8, 8, X); \ ++ TEST_VLDX_DUP(, uint, u, 16, 4, X); \ ++ TEST_VLDX_DUP(, uint, u, 32, 2, X); \ ++ TEST_VLDX_DUP(, uint, u, 64, 1, X); \ ++ TEST_VLDX_DUP(, poly, p, 8, 8, X); \ ++ TEST_VLDX_DUP(, poly, p, 16, 4, X); \ ++ TEST_VLDX_DUP(, float, f, 32, 2, X) ++ ++#define TEST_ALL_EXTRA_CHUNKS(X, Y) \ ++ TEST_EXTRA_CHUNK(int, 8, 8, X, Y); \ ++ TEST_EXTRA_CHUNK(int, 16, 4, X, Y); \ ++ TEST_EXTRA_CHUNK(int, 32, 2, X, Y); \ ++ TEST_EXTRA_CHUNK(int, 64, 1, X, Y); \ ++ TEST_EXTRA_CHUNK(uint, 8, 8, X, Y); \ ++ TEST_EXTRA_CHUNK(uint, 16, 4, X, Y); \ ++ TEST_EXTRA_CHUNK(uint, 32, 2, X, Y); \ ++ TEST_EXTRA_CHUNK(uint, 64, 1, X, Y); \ ++ TEST_EXTRA_CHUNK(poly, 8, 8, X, Y); \ ++ TEST_EXTRA_CHUNK(poly, 16, 4, X, Y); \ ++ TEST_EXTRA_CHUNK(float, 32, 2, X, Y) ++ ++ ++ DECL_ALL_VLDX_DUP(2); ++ DECL_ALL_VLDX_DUP(3); ++ DECL_ALL_VLDX_DUP(4); ++ ++ /* Special input buffers of suitable size are needed for vld2/vld3/vld4. */ ++ /* Input buffers for vld2, 1 of each size */ ++ VECT_ARRAY_INIT2(buffer_vld2, int, 8, 8); ++ PAD(buffer_vld2_pad, int, 8, 8); ++ VECT_ARRAY_INIT2(buffer_vld2, int, 16, 4); ++ PAD(buffer_vld2_pad, int, 16, 4); ++ VECT_ARRAY_INIT2(buffer_vld2, int, 32, 2); ++ PAD(buffer_vld2_pad, int, 32, 2); ++ VECT_ARRAY_INIT2(buffer_vld2, int, 64, 1); ++ PAD(buffer_vld2_pad, int, 64, 1); ++ VECT_ARRAY_INIT2(buffer_vld2, uint, 8, 8); ++ PAD(buffer_vld2_pad, uint, 8, 8); ++ VECT_ARRAY_INIT2(buffer_vld2, uint, 16, 4); ++ PAD(buffer_vld2_pad, uint, 16, 4); ++ VECT_ARRAY_INIT2(buffer_vld2, uint, 32, 2); ++ PAD(buffer_vld2_pad, uint, 32, 2); ++ VECT_ARRAY_INIT2(buffer_vld2, uint, 64, 1); ++ PAD(buffer_vld2_pad, uint, 64, 1); ++ VECT_ARRAY_INIT2(buffer_vld2, poly, 8, 8); ++ PAD(buffer_vld2_pad, poly, 8, 8); ++ VECT_ARRAY_INIT2(buffer_vld2, poly, 16, 4); ++ PAD(buffer_vld2_pad, poly, 16, 4); ++ VECT_ARRAY_INIT2(buffer_vld2, float, 32, 2); ++ PAD(buffer_vld2_pad, float, 32, 2); ++ ++ VECT_ARRAY_INIT2(buffer_vld2, int, 8, 16); ++ PAD(buffer_vld2_pad, int, 8, 16); ++ VECT_ARRAY_INIT2(buffer_vld2, int, 16, 8); ++ PAD(buffer_vld2_pad, int, 16, 8); ++ VECT_ARRAY_INIT2(buffer_vld2, int, 32, 4); ++ PAD(buffer_vld2_pad, int, 32, 4); ++ VECT_ARRAY_INIT2(buffer_vld2, int, 64, 2); ++ PAD(buffer_vld2_pad, int, 64, 2); ++ VECT_ARRAY_INIT2(buffer_vld2, uint, 8, 16); ++ PAD(buffer_vld2_pad, uint, 8, 16); ++ VECT_ARRAY_INIT2(buffer_vld2, uint, 16, 8); ++ PAD(buffer_vld2_pad, uint, 16, 8); ++ VECT_ARRAY_INIT2(buffer_vld2, uint, 32, 4); ++ PAD(buffer_vld2_pad, uint, 32, 4); ++ VECT_ARRAY_INIT2(buffer_vld2, uint, 64, 2); ++ PAD(buffer_vld2_pad, uint, 64, 2); ++ VECT_ARRAY_INIT2(buffer_vld2, poly, 8, 16); ++ PAD(buffer_vld2_pad, poly, 8, 16); ++ VECT_ARRAY_INIT2(buffer_vld2, poly, 16, 8); ++ PAD(buffer_vld2_pad, poly, 16, 8); ++ VECT_ARRAY_INIT2(buffer_vld2, float, 32, 4); ++ PAD(buffer_vld2_pad, float, 32, 4); ++ ++ /* Input buffers for vld3, 1 of each size */ ++ VECT_ARRAY_INIT3(buffer_vld3, int, 8, 8); ++ PAD(buffer_vld3_pad, int, 8, 8); ++ VECT_ARRAY_INIT3(buffer_vld3, int, 16, 4); ++ PAD(buffer_vld3_pad, int, 16, 4); ++ VECT_ARRAY_INIT3(buffer_vld3, int, 32, 2); ++ PAD(buffer_vld3_pad, int, 32, 2); ++ VECT_ARRAY_INIT3(buffer_vld3, int, 64, 1); ++ PAD(buffer_vld3_pad, int, 64, 1); ++ VECT_ARRAY_INIT3(buffer_vld3, uint, 8, 8); ++ PAD(buffer_vld3_pad, uint, 8, 8); ++ VECT_ARRAY_INIT3(buffer_vld3, uint, 16, 4); ++ PAD(buffer_vld3_pad, uint, 16, 4); ++ VECT_ARRAY_INIT3(buffer_vld3, uint, 32, 2); ++ PAD(buffer_vld3_pad, uint, 32, 2); ++ VECT_ARRAY_INIT3(buffer_vld3, uint, 64, 1); ++ PAD(buffer_vld3_pad, uint, 64, 1); ++ VECT_ARRAY_INIT3(buffer_vld3, poly, 8, 8); ++ PAD(buffer_vld3_pad, poly, 8, 8); ++ VECT_ARRAY_INIT3(buffer_vld3, poly, 16, 4); ++ PAD(buffer_vld3_pad, poly, 16, 4); ++ VECT_ARRAY_INIT3(buffer_vld3, float, 32, 2); ++ PAD(buffer_vld3_pad, float, 32, 2); ++ ++ VECT_ARRAY_INIT3(buffer_vld3, int, 8, 16); ++ PAD(buffer_vld3_pad, int, 8, 16); ++ VECT_ARRAY_INIT3(buffer_vld3, int, 16, 8); ++ PAD(buffer_vld3_pad, int, 16, 8); ++ VECT_ARRAY_INIT3(buffer_vld3, int, 32, 4); ++ PAD(buffer_vld3_pad, int, 32, 4); ++ VECT_ARRAY_INIT3(buffer_vld3, int, 64, 2); ++ PAD(buffer_vld3_pad, int, 64, 2); ++ VECT_ARRAY_INIT3(buffer_vld3, uint, 8, 16); ++ PAD(buffer_vld3_pad, uint, 8, 16); ++ VECT_ARRAY_INIT3(buffer_vld3, uint, 16, 8); ++ PAD(buffer_vld3_pad, uint, 16, 8); ++ VECT_ARRAY_INIT3(buffer_vld3, uint, 32, 4); ++ PAD(buffer_vld3_pad, uint, 32, 4); ++ VECT_ARRAY_INIT3(buffer_vld3, uint, 64, 2); ++ PAD(buffer_vld3_pad, uint, 64, 2); ++ VECT_ARRAY_INIT3(buffer_vld3, poly, 8, 16); ++ PAD(buffer_vld3_pad, poly, 8, 16); ++ VECT_ARRAY_INIT3(buffer_vld3, poly, 16, 8); ++ PAD(buffer_vld3_pad, poly, 16, 8); ++ VECT_ARRAY_INIT3(buffer_vld3, float, 32, 4); ++ PAD(buffer_vld3_pad, float, 32, 4); ++ ++ /* Input buffers for vld4, 1 of each size */ ++ VECT_ARRAY_INIT4(buffer_vld4, int, 8, 8); ++ PAD(buffer_vld4_pad, int, 8, 8); ++ VECT_ARRAY_INIT4(buffer_vld4, int, 16, 4); ++ PAD(buffer_vld4_pad, int, 16, 4); ++ VECT_ARRAY_INIT4(buffer_vld4, int, 32, 2); ++ PAD(buffer_vld4_pad, int, 32, 2); ++ VECT_ARRAY_INIT4(buffer_vld4, int, 64, 1); ++ PAD(buffer_vld4_pad, int, 64, 1); ++ VECT_ARRAY_INIT4(buffer_vld4, uint, 8, 8); ++ PAD(buffer_vld4_pad, uint, 8, 8); ++ VECT_ARRAY_INIT4(buffer_vld4, uint, 16, 4); ++ PAD(buffer_vld4_pad, uint, 16, 4); ++ VECT_ARRAY_INIT4(buffer_vld4, uint, 32, 2); ++ PAD(buffer_vld4_pad, uint, 32, 2); ++ VECT_ARRAY_INIT4(buffer_vld4, uint, 64, 1); ++ PAD(buffer_vld4_pad, uint, 64, 1); ++ VECT_ARRAY_INIT4(buffer_vld4, poly, 8, 8); ++ PAD(buffer_vld4_pad, poly, 8, 8); ++ VECT_ARRAY_INIT4(buffer_vld4, poly, 16, 4); ++ PAD(buffer_vld4_pad, poly, 16, 4); ++ VECT_ARRAY_INIT4(buffer_vld4, float, 32, 2); ++ PAD(buffer_vld4_pad, float, 32, 2); ++ ++ VECT_ARRAY_INIT4(buffer_vld4, int, 8, 16); ++ PAD(buffer_vld4_pad, int, 8, 16); ++ VECT_ARRAY_INIT4(buffer_vld4, int, 16, 8); ++ PAD(buffer_vld4_pad, int, 16, 8); ++ VECT_ARRAY_INIT4(buffer_vld4, int, 32, 4); ++ PAD(buffer_vld4_pad, int, 32, 4); ++ VECT_ARRAY_INIT4(buffer_vld4, int, 64, 2); ++ PAD(buffer_vld4_pad, int, 64, 2); ++ VECT_ARRAY_INIT4(buffer_vld4, uint, 8, 16); ++ PAD(buffer_vld4_pad, uint, 8, 16); ++ VECT_ARRAY_INIT4(buffer_vld4, uint, 16, 8); ++ PAD(buffer_vld4_pad, uint, 16, 8); ++ VECT_ARRAY_INIT4(buffer_vld4, uint, 32, 4); ++ PAD(buffer_vld4_pad, uint, 32, 4); ++ VECT_ARRAY_INIT4(buffer_vld4, uint, 64, 2); ++ PAD(buffer_vld4_pad, uint, 64, 2); ++ VECT_ARRAY_INIT4(buffer_vld4, poly, 8, 16); ++ PAD(buffer_vld4_pad, poly, 8, 16); ++ VECT_ARRAY_INIT4(buffer_vld4, poly, 16, 8); ++ PAD(buffer_vld4_pad, poly, 16, 8); ++ VECT_ARRAY_INIT4(buffer_vld4, float, 32, 4); ++ PAD(buffer_vld4_pad, float, 32, 4); ++ ++ /* Check vld2_dup/vld2q_dup. */ ++ clean_results (); ++#define TEST_MSG "VLD2_DUP/VLD2Q_DUP" ++ TEST_ALL_VLDX_DUP(2); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld2_0, "chunk 0"); ++ ++ TEST_ALL_EXTRA_CHUNKS(2, 1); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld2_1, "chunk 1"); ++ ++ /* Check vld3_dup/vld3q_dup. */ ++ clean_results (); ++#undef TEST_MSG ++#define TEST_MSG "VLD3_DUP/VLD3Q_DUP" ++ TEST_ALL_VLDX_DUP(3); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld3_0, "chunk 0"); ++ ++ TEST_ALL_EXTRA_CHUNKS(3, 1); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld3_1, "chunk 1"); ++ ++ TEST_ALL_EXTRA_CHUNKS(3, 2); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld3_2, "chunk 2"); ++ ++ /* Check vld4_dup/vld4q_dup */ ++ clean_results (); ++#undef TEST_MSG ++#define TEST_MSG "VLD4_DUP/VLD4Q_DUP" ++ TEST_ALL_VLDX_DUP(4); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld4_0, "chunk 0"); ++ ++ TEST_ALL_EXTRA_CHUNKS(4, 1); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld4_1, "chunk 1"); ++ ++ TEST_ALL_EXTRA_CHUNKS(4, 2); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld4_2, "chunk 2"); ++ ++ TEST_ALL_EXTRA_CHUNKS(4, 3); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld4_3, "chunk 3"); ++} ++ ++int main (void) ++{ ++ exec_vldX_dup (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcage.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcage.c +@@ -0,0 +1,52 @@ ++#define INSN_NAME vcage ++#define TEST_MSG "VCAGE/VCAGEQ" ++ ++#include "cmp_fp_op.inc" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffff, 0x0 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333, ++ 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333, ++ 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffff, 0xffffffff, ++ 0xffffffff, 0x0 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++VECT_VAR_DECL(expected2,uint,32,2) [] = { 0xffffffff, 0xffffffff }; ++VECT_VAR_DECL(expected2,uint,32,4) [] = { 0xffffffff, 0xffffffff, ++ 0xffffffff, 0xffffffff }; +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vget_low.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vget_low.c +@@ -0,0 +1,86 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++#define TEST_MSG "VGET_LOW" ++void exec_vget_low (void) ++{ ++ /* Basic test: vec64=vget_low(vec128), then store the result. */ ++#define TEST_VGET_LOW(T1, T2, W, N, N2) \ ++ VECT_VAR(vector64, T1, W, N) = \ ++ vget_low_##T2##W(VECT_VAR(vector128, T1, W, N2)); \ ++ vst1_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector64, T1, W, N)) ++ ++ DECL_VARIABLE_64BITS_VARIANTS(vector64); ++ DECL_VARIABLE_128BITS_VARIANTS(vector128); ++ ++ TEST_MACRO_128BITS_VARIANTS_2_5(VLOAD, vector128, buffer); ++ VLOAD(vector128, buffer, q, float, f, 32, 4); ++ ++ clean_results (); ++ ++ /* Execute the tests. */ ++ TEST_VGET_LOW(int, s, 8, 8, 16); ++ TEST_VGET_LOW(int, s, 16, 4, 8); ++ TEST_VGET_LOW(int, s, 32, 2, 4); ++ TEST_VGET_LOW(int, s, 64, 1, 2); ++ TEST_VGET_LOW(uint, u, 8, 8, 16); ++ TEST_VGET_LOW(uint, u, 16, 4, 8); ++ TEST_VGET_LOW(uint, u, 32, 2, 4); ++ TEST_VGET_LOW(uint, u, 64, 1, 2); ++ TEST_VGET_LOW(poly, p, 8, 8, 16); ++ TEST_VGET_LOW(poly, p, 16, 4, 8); ++ TEST_VGET_LOW(float, f, 32, 2, 4); ++ ++ CHECK_RESULTS (TEST_MSG, ""); ++} ++ ++int main (void) ++{ ++ exec_vget_low (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmvn.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmvn.c +@@ -0,0 +1,137 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf, 0xe, 0xd, 0xc, ++ 0xb, 0xa, 0x9, 0x8 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xf, 0xe, 0xd, 0xc }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xf, 0xe }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xf, 0xe, 0xd, 0xc, ++ 0xb, 0xa, 0x9, 0x8 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xf, 0xe, 0xd, 0xc }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xf, 0xe }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0xf, 0xe, 0xd, 0xc, ++ 0xb, 0xa, 0x9, 0x8 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0xf, 0xe, 0xd, 0xc, ++ 0xb, 0xa, 0x9, 0x8, ++ 0x7, 0x6, 0x5, 0x4, ++ 0x3, 0x2, 0x1, 0x0 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xf, 0xe, 0xd, 0xc, ++ 0xb, 0xa, 0x9, 0x8 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xf, 0xe, 0xd, 0xc }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xf, 0xe, 0xd, 0xc, ++ 0xb, 0xa, 0x9, 0x8, ++ 0x7, 0x6, 0x5, 0x4, ++ 0x3, 0x2, 0x1, 0x0 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xf, 0xe, 0xd, 0xc, ++ 0xb, 0xa, 0x9, 0x8 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xf, 0xe, 0xd, 0xc }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0xf, 0xe, 0xd, 0xc, ++ 0xb, 0xa, 0x9, 0x8, ++ 0x7, 0x6, 0x5, 0x4, ++ 0x3, 0x2, 0x1, 0x0 }; ++ ++#define INSN_NAME vmvn ++#define TEST_MSG "VMVN/VMVNQ" ++ ++#define FNNAME1(NAME) void exec_ ## NAME (void) ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++FNNAME (INSN_NAME) ++{ ++ /* Basic test: y=OP(x), then store the result. */ ++#define TEST_UNARY_OP1(INSN, Q, T1, T2, W, N) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ INSN##Q##_##T2##W(VECT_VAR(vector, T1, W, N)); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N)) ++ ++#define TEST_UNARY_OP(INSN, Q, T1, T2, W, N) \ ++ TEST_UNARY_OP1(INSN, Q, T1, T2, W, N) \ ++ ++ /* No need for 64 bits variants. */ ++ DECL_VARIABLE(vector, int, 8, 8); ++ DECL_VARIABLE(vector, int, 16, 4); ++ DECL_VARIABLE(vector, int, 32, 2); ++ DECL_VARIABLE(vector, uint, 8, 8); ++ DECL_VARIABLE(vector, uint, 16, 4); ++ DECL_VARIABLE(vector, uint, 32, 2); ++ DECL_VARIABLE(vector, poly, 8, 8); ++ DECL_VARIABLE(vector, int, 8, 16); ++ DECL_VARIABLE(vector, int, 16, 8); ++ DECL_VARIABLE(vector, int, 32, 4); ++ DECL_VARIABLE(vector, uint, 8, 16); ++ DECL_VARIABLE(vector, uint, 16, 8); ++ DECL_VARIABLE(vector, uint, 32, 4); ++ DECL_VARIABLE(vector, poly, 8, 16); ++ ++ DECL_VARIABLE(vector_res, int, 8, 8); ++ DECL_VARIABLE(vector_res, int, 16, 4); ++ DECL_VARIABLE(vector_res, int, 32, 2); ++ DECL_VARIABLE(vector_res, uint, 8, 8); ++ DECL_VARIABLE(vector_res, uint, 16, 4); ++ DECL_VARIABLE(vector_res, uint, 32, 2); ++ DECL_VARIABLE(vector_res, poly, 8, 8); ++ DECL_VARIABLE(vector_res, int, 8, 16); ++ DECL_VARIABLE(vector_res, int, 16, 8); ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ DECL_VARIABLE(vector_res, uint, 8, 16); ++ DECL_VARIABLE(vector_res, uint, 16, 8); ++ DECL_VARIABLE(vector_res, uint, 32, 4); ++ DECL_VARIABLE(vector_res, poly, 8, 16); ++ ++ clean_results (); ++ ++ /* Initialize input "vector" from "buffer". */ ++ VLOAD(vector, buffer, , int, s, 8, 8); ++ VLOAD(vector, buffer, , int, s, 16, 4); ++ VLOAD(vector, buffer, , int, s, 32, 2); ++ VLOAD(vector, buffer, , uint, u, 8, 8); ++ VLOAD(vector, buffer, , uint, u, 16, 4); ++ VLOAD(vector, buffer, , uint, u, 32, 2); ++ VLOAD(vector, buffer, , poly, p, 8, 8); ++ VLOAD(vector, buffer, q, int, s, 8, 16); ++ VLOAD(vector, buffer, q, int, s, 16, 8); ++ VLOAD(vector, buffer, q, int, s, 32, 4); ++ VLOAD(vector, buffer, q, uint, u, 8, 16); ++ VLOAD(vector, buffer, q, uint, u, 16, 8); ++ VLOAD(vector, buffer, q, uint, u, 32, 4); ++ VLOAD(vector, buffer, q, poly, p, 8, 16); ++ ++ /* Apply a unary operator named INSN_NAME. */ ++ TEST_UNARY_OP(INSN_NAME, , int, s, 8, 8); ++ TEST_UNARY_OP(INSN_NAME, , int, s, 16, 4); ++ TEST_UNARY_OP(INSN_NAME, , int, s, 32, 2); ++ TEST_UNARY_OP(INSN_NAME, , uint, u, 8, 8); ++ TEST_UNARY_OP(INSN_NAME, , uint, u, 16, 4); ++ TEST_UNARY_OP(INSN_NAME, , uint, u, 32, 2); ++ TEST_UNARY_OP(INSN_NAME, , poly, p, 8, 8); ++ TEST_UNARY_OP(INSN_NAME, q, int, s, 8, 16); ++ TEST_UNARY_OP(INSN_NAME, q, int, s, 16, 8); ++ TEST_UNARY_OP(INSN_NAME, q, int, s, 32, 4); ++ TEST_UNARY_OP(INSN_NAME, q, uint, u, 8, 16); ++ TEST_UNARY_OP(INSN_NAME, q, uint, u, 16, 8); ++ TEST_UNARY_OP(INSN_NAME, q, uint, u, 32, 4); ++ TEST_UNARY_OP(INSN_NAME, q, poly, p, 8, 16); ++ ++ CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, ""); ++ CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, ""); ++ CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, ""); ++ CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected, ""); ++ CHECK(TEST_MSG, int, 8, 16, PRIx8, expected, ""); ++ CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, ""); ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, poly, 8, 16, PRIx8, expected, ""); ++} ++ ++int main (void) ++{ ++ exec_vmvn (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vorr.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vorr.c +@@ -0,0 +1,48 @@ ++#define INSN_NAME vorr ++#define TEST_MSG "VORR/VORRQ" ++ ++#include "binary_op.inc" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf2, 0xf3, 0xf2, 0xf3, ++ 0xf6, 0xf7, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfffc, 0xfffd, 0xfffe, 0xffff }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffff3, 0xfffffff3 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0xfffffffffffffff4 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xf4, 0xf5, 0xf6, 0xf7, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfffe, 0xffff, 0xfffe, 0xffff }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffffff8, 0xfffffff9 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0xfffffffffffffff2 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0xf6, 0xf7, 0xf6, 0xf7, ++ 0xf6, 0xf7, 0xf6, 0xf7, ++ 0xfe, 0xff, 0xfe, 0xff, ++ 0xfe, 0xff, 0xfe, 0xff }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xfffc, 0xfffd, 0xfffe, 0xffff, ++ 0xfffc, 0xfffd, 0xfffe, 0xffff }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffff2, 0xfffffff3, ++ 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xfffffffffffffff8, ++ 0xfffffffffffffff9 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xfc, 0xfd, 0xfe, 0xff, ++ 0xfc, 0xfd, 0xfe, 0xff, ++ 0xfc, 0xfd, 0xfe, 0xff, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfff3, 0xfff3, 0xfff3, 0xfff3, ++ 0xfff7, 0xfff7, 0xfff7, 0xfff7 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfffffff7, 0xfffffff7, ++ 0xfffffff7, 0xfffffff7 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xfffffffffffffff3, ++ 0xfffffffffffffff3 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vtrn.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vtrn.c +@@ -0,0 +1,93 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results splitted in several chunks. */ ++/* Chunk 0. */ ++VECT_VAR_DECL(expected0,int,8,8) [] = { 0xf0, 0xf1, 0x11, 0x11, ++ 0xf2, 0xf3, 0x11, 0x11 }; ++VECT_VAR_DECL(expected0,int,16,4) [] = { 0xfff0, 0xfff1, 0x22, 0x22 }; ++VECT_VAR_DECL(expected0,int,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected0,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected0,uint,8,8) [] = { 0xf0, 0xf1, 0x55, 0x55, ++ 0xf2, 0xf3, 0x55, 0x55 }; ++VECT_VAR_DECL(expected0,uint,16,4) [] = { 0xfff0, 0xfff1, 0x66, 0x66 }; ++VECT_VAR_DECL(expected0,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected0,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected0,poly,8,8) [] = { 0xf0, 0xf1, 0x55, 0x55, ++ 0xf2, 0xf3, 0x55, 0x55 }; ++VECT_VAR_DECL(expected0,poly,16,4) [] = { 0xfff0, 0xfff1, 0x66, 0x66 }; ++VECT_VAR_DECL(expected0,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 }; ++VECT_VAR_DECL(expected0,int,8,16) [] = { 0xf0, 0xf1, 0x11, 0x11, ++ 0xf2, 0xf3, 0x11, 0x11, ++ 0xf4, 0xf5, 0x11, 0x11, ++ 0xf6, 0xf7, 0x11, 0x11 }; ++VECT_VAR_DECL(expected0,int,16,8) [] = { 0xfff0, 0xfff1, 0x22, 0x22, ++ 0xfff2, 0xfff3, 0x22, 0x22 }; ++VECT_VAR_DECL(expected0,int,32,4) [] = { 0xfffffff0, 0xfffffff1, 0x33, 0x33 }; ++VECT_VAR_DECL(expected0,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected0,uint,8,16) [] = { 0xf0, 0xf1, 0x55, 0x55, ++ 0xf2, 0xf3, 0x55, 0x55, ++ 0xf4, 0xf5, 0x55, 0x55, ++ 0xf6, 0xf7, 0x55, 0x55 }; ++VECT_VAR_DECL(expected0,uint,16,8) [] = { 0xfff0, 0xfff1, 0x66, 0x66, ++ 0xfff2, 0xfff3, 0x66, 0x66 }; ++VECT_VAR_DECL(expected0,uint,32,4) [] = { 0xfffffff0, 0xfffffff1, 0x77, 0x77 }; ++VECT_VAR_DECL(expected0,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected0,poly,8,16) [] = { 0xf0, 0xf1, 0x55, 0x55, ++ 0xf2, 0xf3, 0x55, 0x55, ++ 0xf4, 0xf5, 0x55, 0x55, ++ 0xf6, 0xf7, 0x55, 0x55 }; ++VECT_VAR_DECL(expected0,poly,16,8) [] = { 0xfff0, 0xfff1, 0x66, 0x66, ++ 0xfff2, 0xfff3, 0x66, 0x66 }; ++VECT_VAR_DECL(expected0,hfloat,32,4) [] = { 0xc1800000, 0xc1700000, ++ 0x42073333, 0x42073333 }; ++ ++/* Chunk 1. */ ++VECT_VAR_DECL(expected1,int,8,8) [] = { 0xf4, 0xf5, 0x11, 0x11, ++ 0xf6, 0xf7, 0x11, 0x11 }; ++VECT_VAR_DECL(expected1,int,16,4) [] = { 0xfff2, 0xfff3, 0x22, 0x22 }; ++VECT_VAR_DECL(expected1,int,32,2) [] = { 0x33, 0x33 }; ++VECT_VAR_DECL(expected1,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected1,uint,8,8) [] = { 0xf4, 0xf5, 0x55, 0x55, ++ 0xf6, 0xf7, 0x55, 0x55 }; ++VECT_VAR_DECL(expected1,uint,16,4) [] = { 0xfff2, 0xfff3, 0x66, 0x66 }; ++VECT_VAR_DECL(expected1,uint,32,2) [] = { 0x77, 0x77 }; ++VECT_VAR_DECL(expected1,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected1,poly,8,8) [] = { 0xf4, 0xf5, 0x55, 0x55, ++ 0xf6, 0xf7, 0x55, 0x55 }; ++VECT_VAR_DECL(expected1,poly,16,4) [] = { 0xfff2, 0xfff3, 0x66, 0x66 }; ++VECT_VAR_DECL(expected1,hfloat,32,2) [] = { 0x42066666, 0x42066666 }; ++VECT_VAR_DECL(expected1,int,8,16) [] = { 0xf8, 0xf9, 0x11, 0x11, ++ 0xfa, 0xfb, 0x11, 0x11, ++ 0xfc, 0xfd, 0x11, 0x11, ++ 0xfe, 0xff, 0x11, 0x11 }; ++VECT_VAR_DECL(expected1,int,16,8) [] = { 0xfff4, 0xfff5, 0x22, 0x22, ++ 0xfff6, 0xfff7, 0x22, 0x22 }; ++VECT_VAR_DECL(expected1,int,32,4) [] = { 0xfffffff2, 0xfffffff3, 0x33, 0x33 }; ++VECT_VAR_DECL(expected1,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected1,uint,8,16) [] = { 0xf8, 0xf9, 0x55, 0x55, ++ 0xfa, 0xfb, 0x55, 0x55, ++ 0xfc, 0xfd, 0x55, 0x55, ++ 0xfe, 0xff, 0x55, 0x55 }; ++VECT_VAR_DECL(expected1,uint,16,8) [] = { 0xfff4, 0xfff5, 0x66, 0x66, ++ 0xfff6, 0xfff7, 0x66, 0x66 }; ++VECT_VAR_DECL(expected1,uint,32,4) [] = { 0xfffffff2, 0xfffffff3, 0x77, 0x77 }; ++VECT_VAR_DECL(expected1,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected1,poly,8,16) [] = { 0xf8, 0xf9, 0x55, 0x55, ++ 0xfa, 0xfb, 0x55, 0x55, ++ 0xfc, 0xfd, 0x55, 0x55, ++ 0xfe, 0xff, 0x55, 0x55 }; ++VECT_VAR_DECL(expected1,poly,16,8) [] = { 0xfff4, 0xfff5, 0x66, 0x66, ++ 0xfff6, 0xfff7, 0x66, 0x66 }; ++VECT_VAR_DECL(expected1,hfloat,32,4) [] = { 0xc1600000, 0xc1500000, ++ 0x42073333, 0x42073333 }; ++ ++#define INSN_NAME vtrn ++#define TEST_MSG "VTRN/VTRNQ" ++ ++#include "vshuffle.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl.inc ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl.inc +@@ -0,0 +1,89 @@ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ /* vector_res = OP(vector, vector3, vector4), ++ then store the result. */ ++#define TEST_VMLXL1(INSN, T1, T2, W, W2, N) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ INSN##_##T2##W2(VECT_VAR(vector, T1, W, N), \ ++ VECT_VAR(vector3, T1, W2, N), \ ++ VECT_VAR(vector4, T1, W2, N)); \ ++ vst1q_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N)) ++ ++#define TEST_VMLXL(INSN, T1, T2, W, W2, N) \ ++ TEST_VMLXL1(INSN, T1, T2, W, W2, N) ++ ++ DECL_VARIABLE(vector, int, 16, 8); ++ DECL_VARIABLE(vector3, int, 8, 8); ++ DECL_VARIABLE(vector4, int, 8, 8); ++ DECL_VARIABLE(vector_res, int, 16, 8); ++ ++ DECL_VARIABLE(vector, int, 32, 4); ++ DECL_VARIABLE(vector3, int, 16, 4); ++ DECL_VARIABLE(vector4, int, 16, 4); ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ ++ DECL_VARIABLE(vector, int, 64, 2); ++ DECL_VARIABLE(vector3, int, 32, 2); ++ DECL_VARIABLE(vector4, int, 32, 2); ++ DECL_VARIABLE(vector_res, int, 64, 2); ++ ++ DECL_VARIABLE(vector, uint, 16, 8); ++ DECL_VARIABLE(vector3, uint, 8, 8); ++ DECL_VARIABLE(vector4, uint, 8, 8); ++ DECL_VARIABLE(vector_res, uint, 16, 8); ++ ++ DECL_VARIABLE(vector, uint, 32, 4); ++ DECL_VARIABLE(vector3, uint, 16, 4); ++ DECL_VARIABLE(vector4, uint, 16, 4); ++ DECL_VARIABLE(vector_res, uint, 32, 4); ++ ++ DECL_VARIABLE(vector, uint, 64, 2); ++ DECL_VARIABLE(vector3, uint, 32, 2); ++ DECL_VARIABLE(vector4, uint, 32, 2); ++ DECL_VARIABLE(vector_res, uint, 64, 2); ++ ++ clean_results (); ++ ++ VLOAD(vector, buffer, q, int, s, 16, 8); ++ VLOAD(vector, buffer, q, int, s, 32, 4); ++ VLOAD(vector, buffer, q, int, s, 64, 2); ++ VLOAD(vector, buffer, q, uint, u, 16, 8); ++ VLOAD(vector, buffer, q, uint, u, 32, 4); ++ VLOAD(vector, buffer, q, uint, u, 64, 2); ++ ++ VDUP(vector3, , int, s, 8, 8, 0x55); ++ VDUP(vector4, , int, s, 8, 8, 0xBB); ++ VDUP(vector3, , int, s, 16, 4, 0x55); ++ VDUP(vector4, , int, s, 16, 4, 0xBB); ++ VDUP(vector3, , int, s, 32, 2, 0x55); ++ VDUP(vector4, , int, s, 32, 2, 0xBB); ++ VDUP(vector3, , uint, u, 8, 8, 0x55); ++ VDUP(vector4, , uint, u, 8, 8, 0xBB); ++ VDUP(vector3, , uint, u, 16, 4, 0x55); ++ VDUP(vector4, , uint, u, 16, 4, 0xBB); ++ VDUP(vector3, , uint, u, 32, 2, 0x55); ++ VDUP(vector4, , uint, u, 32, 2, 0xBB); ++ ++ TEST_VMLXL(INSN_NAME, int, s, 16, 8, 8); ++ TEST_VMLXL(INSN_NAME, int, s, 32, 16, 4); ++ TEST_VMLXL(INSN_NAME, int, s, 64, 32, 2); ++ TEST_VMLXL(INSN_NAME, uint, u, 16, 8, 8); ++ TEST_VMLXL(INSN_NAME, uint, u, 32, 16, 4); ++ TEST_VMLXL(INSN_NAME, uint, u, 64, 32, 2); ++ ++ CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, ""); ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, ""); ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsubl.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsubl.c +@@ -0,0 +1,48 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vsubl ++#define TEST_MSG "VSUBL" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xfffd, 0xfffe, 0xffff, 0x0, ++ 0x1, 0x2, 0x3, 0x4 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffffe, 0xffffffff, 0x0, 0x1 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x0, 0x1 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfffd, 0xfffe, 0xffff, 0x0, ++ 0x1, 0x2, 0x3, 0x4 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffff, 0x0, 0x1, 0x2 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x0, 0x1 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++#include "vXXXl.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vXXXw.inc ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vXXXw.inc +@@ -0,0 +1,70 @@ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ /* Basic test: y=vaddw(x1,x2), then store the result. */ ++#define TEST_VADDW1(INSN, T1, T2, W, W2, N) \ ++ VECT_VAR(vector_res, T1, W2, N) = \ ++ INSN##_##T2##W(VECT_VAR(vector, T1, W2, N), \ ++ VECT_VAR(vector2, T1, W, N)); \ ++ vst1q_##T2##W2(VECT_VAR(result, T1, W2, N), VECT_VAR(vector_res, T1, W2, N)) ++ ++#define TEST_VADDW(INSN, T1, T2, W, W2, N) \ ++ TEST_VADDW1(INSN, T1, T2, W, W2, N) ++ ++ DECL_VARIABLE(vector, int, 16, 8); ++ DECL_VARIABLE(vector, int, 32, 4); ++ DECL_VARIABLE(vector, int, 64, 2); ++ DECL_VARIABLE(vector, uint, 16, 8); ++ DECL_VARIABLE(vector, uint, 32, 4); ++ DECL_VARIABLE(vector, uint, 64, 2); ++ ++ DECL_VARIABLE(vector2, int, 8, 8); ++ DECL_VARIABLE(vector2, int, 16, 4); ++ DECL_VARIABLE(vector2, int, 32, 2); ++ DECL_VARIABLE(vector2, uint, 8, 8); ++ DECL_VARIABLE(vector2, uint, 16, 4); ++ DECL_VARIABLE(vector2, uint, 32, 2); ++ ++ DECL_VARIABLE(vector_res, int, 16, 8); ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ DECL_VARIABLE(vector_res, int, 64, 2); ++ DECL_VARIABLE(vector_res, uint, 16, 8); ++ DECL_VARIABLE(vector_res, uint, 32, 4); ++ DECL_VARIABLE(vector_res, uint, 64, 2); ++ ++ clean_results (); ++ ++ /* Initialize input "vector" from "buffer". */ ++ VLOAD(vector, buffer, q, int, s, 16, 8); ++ VLOAD(vector, buffer, q, int, s, 32, 4); ++ VLOAD(vector, buffer, q, int, s, 64, 2); ++ VLOAD(vector, buffer, q, uint, u, 16, 8); ++ VLOAD(vector, buffer, q, uint, u, 32, 4); ++ VLOAD(vector, buffer, q, uint, u, 64, 2); ++ ++ /* Choose init value arbitrarily. */ ++ VDUP(vector2, , int, s, 8, 8, -13); ++ VDUP(vector2, , int, s, 16, 4, -14); ++ VDUP(vector2, , int, s, 32, 2, -16); ++ VDUP(vector2, , uint, u, 8, 8, 0xf3); ++ VDUP(vector2, , uint, u, 16, 4, 0xfff1); ++ VDUP(vector2, , uint, u, 32, 2, 0xfffffff0); ++ ++ /* Execute the tests. */ ++ TEST_VADDW(INSN_NAME, int, s, 8, 16, 8); ++ TEST_VADDW(INSN_NAME, int, s, 16, 32, 4); ++ TEST_VADDW(INSN_NAME, int, s, 32, 64, 2); ++ TEST_VADDW(INSN_NAME, uint, u, 8, 16, 8); ++ TEST_VADDW(INSN_NAME, uint, u, 16, 32, 4); ++ TEST_VADDW(INSN_NAME, uint, u, 32, 64, 2); ++ ++ CHECK_RESULTS (TEST_MSG, ""); ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl_n.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl_n.c +@@ -0,0 +1,29 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vqdmlsl_n ++#define TEST_MSG "VQDMLSL_N" ++ ++/* Expected values of cumulative_saturation flag. */ ++int VECT_VAR(expected_cumulative_sat,int,32,4) = 0; ++int VECT_VAR(expected_cumulative_sat,int,64,2) = 0; ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffe95c, 0xffffe95d, ++ 0xffffe95e, 0xffffe95f }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xffffffffffffde12, ++ 0xffffffffffffde13 }; ++ ++/* Expected values of cumulative_saturation flag when saturation ++ occurs. */ ++int VECT_VAR(expected_cumulative_sat2,int,32,4) = 1; ++int VECT_VAR(expected_cumulative_sat2,int,64,2) = 1; ++ ++/* Expected results when saturation occurs. */ ++VECT_VAR_DECL(expected2,int,32,4) [] = { 0x80000000, 0x80000000, ++ 0x80000000, 0x80000000 }; ++VECT_VAR_DECL(expected2,int,64,2) [] = { 0x8000000000000000, ++ 0x8000000000000000 }; ++ ++#include "vqdmlXl_n.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull.c +@@ -0,0 +1,75 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x100, 0xe1, 0xc4, 0xa9, ++ 0x90, 0x79, 0x64, 0x51 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x100, 0xe1, 0xc4, 0xa9 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x100, 0xe1 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xe100, 0xe2e1, 0xe4c4, 0xe6a9, ++ 0xe890, 0xea79, 0xec64, 0xee51 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffe00100, 0xffe200e1, ++ 0xffe400c4, 0xffe600a9 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffe000000100, ++ 0xffffffe2000000e1 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x5500, 0x5501, 0x5504, 0x5505, ++ 0x5510, 0x5511, 0x5514, 0x5515 }; ++ ++#define TEST_MSG "VMULL" ++void exec_vmull (void) ++{ ++ /* Basic test: y=vmull(x,x), then store the result. */ ++#define TEST_VMULL(T1, T2, W, W2, N) \ ++ VECT_VAR(vector_res, T1, W2, N) = \ ++ vmull_##T2##W(VECT_VAR(vector, T1, W, N), \ ++ VECT_VAR(vector, T1, W, N)); \ ++ vst1q_##T2##W2(VECT_VAR(result, T1, W2, N), VECT_VAR(vector_res, T1, W2, N)) ++ ++ DECL_VARIABLE(vector, int, 8, 8); ++ DECL_VARIABLE(vector, int, 16, 4); ++ DECL_VARIABLE(vector, int, 32, 2); ++ DECL_VARIABLE(vector, uint, 8, 8); ++ DECL_VARIABLE(vector, uint, 16, 4); ++ DECL_VARIABLE(vector, uint, 32, 2); ++ DECL_VARIABLE(vector, poly, 8, 8); ++ DECL_VARIABLE(vector_res, int, 16, 8); ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ DECL_VARIABLE(vector_res, int, 64, 2); ++ DECL_VARIABLE(vector_res, uint, 16, 8); ++ DECL_VARIABLE(vector_res, uint, 32, 4); ++ DECL_VARIABLE(vector_res, uint, 64, 2); ++ DECL_VARIABLE(vector_res, poly, 16, 8); ++ ++ clean_results (); ++ ++ VLOAD(vector, buffer, , int, s, 8, 8); ++ VLOAD(vector, buffer, , int, s, 16, 4); ++ VLOAD(vector, buffer, , int, s, 32, 2); ++ VLOAD(vector, buffer, , uint, u, 8, 8); ++ VLOAD(vector, buffer, , uint, u, 16, 4); ++ VLOAD(vector, buffer, , uint, u, 32, 2); ++ VLOAD(vector, buffer, , poly, p, 8, 8); ++ ++ TEST_VMULL(int, s, 8, 16, 8); ++ TEST_VMULL(int, s, 16, 32, 4); ++ TEST_VMULL(int, s, 32, 64, 2); ++ TEST_VMULL(uint, u, 8, 16, 8); ++ TEST_VMULL(uint, u, 16, 32, 4); ++ TEST_VMULL(uint, u, 32, 64, 2); ++ TEST_VMULL(poly, p, 8, 16, 8); ++ ++ CHECK(TEST_MSG, int, 16, 8, PRIx64, expected, ""); ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, int, 64, 2, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 8, PRIx64, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 64, 2, PRIx32, expected, ""); ++ CHECK(TEST_MSG, poly, 16, 8, PRIx16, expected, ""); ++} ++ ++int main (void) ++{ ++ exec_vmull (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal.c +@@ -0,0 +1,27 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vqdmlal ++#define TEST_MSG "VQDMLAL" ++ ++/* Expected values of cumulative_saturation flag. */ ++int VECT_VAR(expected_cumulative_sat,int,32,4) = 0; ++int VECT_VAR(expected_cumulative_sat,int,64,2) = 0; ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x7c1e, 0x7c1f, 0x7c20, 0x7c21 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x7c1e, 0x7c1f }; ++ ++/* Expected values of cumulative_saturation flag when saturation ++ occurs. */ ++int VECT_VAR(expected_cumulative_sat2,int,32,4) = 1; ++int VECT_VAR(expected_cumulative_sat2,int,64,2) = 1; ++ ++/* Expected results when saturation occurs. */ ++VECT_VAR_DECL(expected2,int,32,4) [] = { 0x7fffffef, 0x7ffffff0, ++ 0x7ffffff1, 0x7ffffff2 }; ++VECT_VAR_DECL(expected2,int,64,2) [] = { 0x7fffffffffffffef, ++ 0x7ffffffffffffff0 }; ++ ++#include "vqdmlXl.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmul_n.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmul_n.c +@@ -0,0 +1,96 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfef0, 0xff01, 0xff12, 0xff23 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffde0, 0xfffffe02 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfcd0, 0xfd03, 0xfd36, 0xfd69 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffffbc0, 0xfffffc04 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xc3b26666, 0xc3a74000 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xfab0, 0xfb05, 0xfb5a, 0xfbaf, ++ 0xfc04, 0xfc59, 0xfcae, 0xfd03 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffff9a0, 0xfffffa06, ++ 0xfffffa6c, 0xfffffad2 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xf890, 0xf907, 0xf97e, 0xf9f5, ++ 0xfa6c, 0xfae3, 0xfb5a, 0xfbd1 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfffff780, 0xfffff808, ++ 0xfffff890, 0xfffff918 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0xc4b1cccd, 0xc4a6b000, ++ 0xc49b9333, 0xc4907667 }; ++ ++#define INSN_NAME vmul_n ++#define TEST_MSG "VMUL_N" ++ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++#define DECL_VMUL(VAR) \ ++ DECL_VARIABLE(VAR, int, 16, 4); \ ++ DECL_VARIABLE(VAR, int, 32, 2); \ ++ DECL_VARIABLE(VAR, uint, 16, 4); \ ++ DECL_VARIABLE(VAR, uint, 32, 2); \ ++ DECL_VARIABLE(VAR, float, 32, 2); \ ++ DECL_VARIABLE(VAR, int, 16, 8); \ ++ DECL_VARIABLE(VAR, int, 32, 4); \ ++ DECL_VARIABLE(VAR, uint, 16, 8); \ ++ DECL_VARIABLE(VAR, uint, 32, 4); \ ++ DECL_VARIABLE(VAR, float, 32, 4) ++ ++ /* vector_res = vmul_n(vector,val), then store the result. */ ++#define TEST_VMUL_N(Q, T1, T2, W, N, L) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ vmul##Q##_n_##T2##W(VECT_VAR(vector, T1, W, N), \ ++ L); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \ ++ VECT_VAR(vector_res, T1, W, N)) ++ ++ DECL_VMUL(vector); ++ DECL_VMUL(vector_res); ++ ++ clean_results (); ++ ++ /* Initialize vector from pre-initialized values. */ ++ VLOAD(vector, buffer, , int, s, 16, 4); ++ VLOAD(vector, buffer, , int, s, 32, 2); ++ VLOAD(vector, buffer, , uint, u, 16, 4); ++ VLOAD(vector, buffer, , uint, u, 32, 2); ++ VLOAD(vector, buffer, , float, f, 32, 2); ++ VLOAD(vector, buffer, q, int, s, 16, 8); ++ VLOAD(vector, buffer, q, int, s, 32, 4); ++ VLOAD(vector, buffer, q, uint, u, 16, 8); ++ VLOAD(vector, buffer, q, uint, u, 32, 4); ++ VLOAD(vector, buffer, q, float, f, 32, 4); ++ ++ /* Choose multiplier arbitrarily. */ ++ TEST_VMUL_N(, int, s, 16, 4, 0x11); ++ TEST_VMUL_N(, int, s, 32, 2, 0x22); ++ TEST_VMUL_N(, uint, u, 16, 4, 0x33); ++ TEST_VMUL_N(, uint, u, 32, 2, 0x44); ++ TEST_VMUL_N(, float, f, 32, 2, 22.3f); ++ TEST_VMUL_N(q, int, s, 16, 8, 0x55); ++ TEST_VMUL_N(q, int, s, 32, 4, 0x66); ++ TEST_VMUL_N(q, uint, u, 16, 8, 0x77); ++ TEST_VMUL_N(q, uint, u, 32, 4, 0x88); ++ TEST_VMUL_N(q, float, f, 32, 4, 88.9f); ++ ++ CHECK(TEST_MSG, int, 16, 4, PRIx64, expected, ""); ++ CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 4, PRIx64, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, ""); ++ CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected, ""); ++ CHECK(TEST_MSG, int, 16, 8, PRIx64, expected, ""); ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 8, PRIx64, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, ""); ++ CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected, ""); ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdup-vmov.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdup-vmov.c +@@ -0,0 +1,253 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* We test vdup and vmov in the same place since they are aliases. */ ++ ++/* Expected results. */ ++/* Chunk 0. */ ++VECT_VAR_DECL(expected0,int,8,8) [] = { 0xf0, 0xf0, 0xf0, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xf0 }; ++VECT_VAR_DECL(expected0,int,16,4) [] = { 0xfff0, 0xfff0, 0xfff0, 0xfff0 }; ++VECT_VAR_DECL(expected0,int,32,2) [] = { 0xfffffff0, 0xfffffff0 }; ++VECT_VAR_DECL(expected0,int,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected0,uint,8,8) [] = { 0xf0, 0xf0, 0xf0, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xf0 }; ++VECT_VAR_DECL(expected0,uint,16,4) [] = { 0xfff0, 0xfff0, 0xfff0, 0xfff0 }; ++VECT_VAR_DECL(expected0,uint,32,2) [] = { 0xfffffff0, 0xfffffff0 }; ++VECT_VAR_DECL(expected0,uint,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected0,poly,8,8) [] = { 0xf0, 0xf0, 0xf0, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xf0 }; ++VECT_VAR_DECL(expected0,poly,16,4) [] = { 0xfff0, 0xfff0, 0xfff0, 0xfff0 }; ++VECT_VAR_DECL(expected0,hfloat,32,2) [] = { 0xc1800000, 0xc1800000 }; ++VECT_VAR_DECL(expected0,int,8,16) [] = { 0xf0, 0xf0, 0xf0, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xf0 }; ++VECT_VAR_DECL(expected0,int,16,8) [] = { 0xfff0, 0xfff0, 0xfff0, 0xfff0, ++ 0xfff0, 0xfff0, 0xfff0, 0xfff0 }; ++VECT_VAR_DECL(expected0,int,32,4) [] = { 0xfffffff0, 0xfffffff0, ++ 0xfffffff0, 0xfffffff0 }; ++VECT_VAR_DECL(expected0,int,64,2) [] = { 0xfffffffffffffff0, ++ 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected0,uint,8,16) [] = { 0xf0, 0xf0, 0xf0, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xf0 }; ++VECT_VAR_DECL(expected0,uint,16,8) [] = { 0xfff0, 0xfff0, 0xfff0, 0xfff0, ++ 0xfff0, 0xfff0, 0xfff0, 0xfff0 }; ++VECT_VAR_DECL(expected0,uint,32,4) [] = { 0xfffffff0, 0xfffffff0, ++ 0xfffffff0, 0xfffffff0 }; ++VECT_VAR_DECL(expected0,uint,64,2) [] = { 0xfffffffffffffff0, ++ 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected0,poly,8,16) [] = { 0xf0, 0xf0, 0xf0, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xf0 }; ++VECT_VAR_DECL(expected0,poly,16,8) [] = { 0xfff0, 0xfff0, 0xfff0, 0xfff0, ++ 0xfff0, 0xfff0, 0xfff0, 0xfff0 }; ++VECT_VAR_DECL(expected0,hfloat,32,4) [] = { 0xc1800000, 0xc1800000, ++ 0xc1800000, 0xc1800000 }; ++ ++/* Chunk 1. */ ++VECT_VAR_DECL(expected1,int,8,8) [] = { 0xf1, 0xf1, 0xf1, 0xf1, ++ 0xf1, 0xf1, 0xf1, 0xf1 }; ++VECT_VAR_DECL(expected1,int,16,4) [] = { 0xfff1, 0xfff1, 0xfff1, 0xfff1 }; ++VECT_VAR_DECL(expected1,int,32,2) [] = { 0xfffffff1, 0xfffffff1 }; ++VECT_VAR_DECL(expected1,int,64,1) [] = { 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected1,uint,8,8) [] = { 0xf1, 0xf1, 0xf1, 0xf1, ++ 0xf1, 0xf1, 0xf1, 0xf1 }; ++VECT_VAR_DECL(expected1,uint,16,4) [] = { 0xfff1, 0xfff1, 0xfff1, 0xfff1 }; ++VECT_VAR_DECL(expected1,uint,32,2) [] = { 0xfffffff1, 0xfffffff1 }; ++VECT_VAR_DECL(expected1,uint,64,1) [] = { 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected1,poly,8,8) [] = { 0xf1, 0xf1, 0xf1, 0xf1, ++ 0xf1, 0xf1, 0xf1, 0xf1 }; ++VECT_VAR_DECL(expected1,poly,16,4) [] = { 0xfff1, 0xfff1, 0xfff1, 0xfff1 }; ++VECT_VAR_DECL(expected1,hfloat,32,2) [] = { 0xc1700000, 0xc1700000 }; ++VECT_VAR_DECL(expected1,int,8,16) [] = { 0xf1, 0xf1, 0xf1, 0xf1, ++ 0xf1, 0xf1, 0xf1, 0xf1, ++ 0xf1, 0xf1, 0xf1, 0xf1, ++ 0xf1, 0xf1, 0xf1, 0xf1 }; ++VECT_VAR_DECL(expected1,int,16,8) [] = { 0xfff1, 0xfff1, 0xfff1, 0xfff1, ++ 0xfff1, 0xfff1, 0xfff1, 0xfff1 }; ++VECT_VAR_DECL(expected1,int,32,4) [] = { 0xfffffff1, 0xfffffff1, ++ 0xfffffff1, 0xfffffff1 }; ++VECT_VAR_DECL(expected1,int,64,2) [] = { 0xfffffffffffffff1, ++ 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected1,uint,8,16) [] = { 0xf1, 0xf1, 0xf1, 0xf1, ++ 0xf1, 0xf1, 0xf1, 0xf1, ++ 0xf1, 0xf1, 0xf1, 0xf1, ++ 0xf1, 0xf1, 0xf1, 0xf1 }; ++VECT_VAR_DECL(expected1,uint,16,8) [] = { 0xfff1, 0xfff1, 0xfff1, 0xfff1, ++ 0xfff1, 0xfff1, 0xfff1, 0xfff1 }; ++VECT_VAR_DECL(expected1,uint,32,4) [] = { 0xfffffff1, 0xfffffff1, ++ 0xfffffff1, 0xfffffff1 }; ++VECT_VAR_DECL(expected1,uint,64,2) [] = { 0xfffffffffffffff1, ++ 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected1,poly,8,16) [] = { 0xf1, 0xf1, 0xf1, 0xf1, ++ 0xf1, 0xf1, 0xf1, 0xf1, ++ 0xf1, 0xf1, 0xf1, 0xf1, ++ 0xf1, 0xf1, 0xf1, 0xf1 }; ++VECT_VAR_DECL(expected1,poly,16,8) [] = { 0xfff1, 0xfff1, 0xfff1, 0xfff1, ++ 0xfff1, 0xfff1, 0xfff1, 0xfff1 }; ++VECT_VAR_DECL(expected1,hfloat,32,4) [] = { 0xc1700000, 0xc1700000, ++ 0xc1700000, 0xc1700000 }; ++ ++/* Chunk 2. */ ++VECT_VAR_DECL(expected2,int,8,8) [] = { 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2 }; ++VECT_VAR_DECL(expected2,int,16,4) [] = { 0xfff2, 0xfff2, 0xfff2, 0xfff2 }; ++VECT_VAR_DECL(expected2,int,32,2) [] = { 0xfffffff2, 0xfffffff2 }; ++VECT_VAR_DECL(expected2,int,64,1) [] = { 0xfffffffffffffff2 }; ++VECT_VAR_DECL(expected2,uint,8,8) [] = { 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2 }; ++VECT_VAR_DECL(expected2,uint,16,4) [] = { 0xfff2, 0xfff2, 0xfff2, 0xfff2 }; ++VECT_VAR_DECL(expected2,uint,32,2) [] = { 0xfffffff2, 0xfffffff2 }; ++VECT_VAR_DECL(expected2,uint,64,1) [] = { 0xfffffffffffffff2 }; ++VECT_VAR_DECL(expected2,poly,8,8) [] = { 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2 }; ++VECT_VAR_DECL(expected2,poly,16,4) [] = { 0xfff2, 0xfff2, 0xfff2, 0xfff2 }; ++VECT_VAR_DECL(expected2,hfloat,32,2) [] = { 0xc1600000, 0xc1600000 }; ++VECT_VAR_DECL(expected2,int,8,16) [] = { 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2 }; ++VECT_VAR_DECL(expected2,int,16,8) [] = { 0xfff2, 0xfff2, 0xfff2, 0xfff2, ++ 0xfff2, 0xfff2, 0xfff2, 0xfff2 }; ++VECT_VAR_DECL(expected2,int,32,4) [] = { 0xfffffff2, 0xfffffff2, ++ 0xfffffff2, 0xfffffff2 }; ++VECT_VAR_DECL(expected2,int,64,2) [] = { 0xfffffffffffffff2, ++ 0xfffffffffffffff2 }; ++VECT_VAR_DECL(expected2,uint,8,16) [] = { 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2 }; ++VECT_VAR_DECL(expected2,uint,16,8) [] = { 0xfff2, 0xfff2, 0xfff2, 0xfff2, ++ 0xfff2, 0xfff2, 0xfff2, 0xfff2 }; ++VECT_VAR_DECL(expected2,uint,32,4) [] = { 0xfffffff2, 0xfffffff2, ++ 0xfffffff2, 0xfffffff2 }; ++VECT_VAR_DECL(expected2,uint,64,2) [] = { 0xfffffffffffffff2, ++ 0xfffffffffffffff2 }; ++VECT_VAR_DECL(expected2,poly,8,16) [] = { 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2 }; ++VECT_VAR_DECL(expected2,poly,16,8) [] = { 0xfff2, 0xfff2, 0xfff2, 0xfff2, ++ 0xfff2, 0xfff2, 0xfff2, 0xfff2 }; ++VECT_VAR_DECL(expected2,hfloat,32,4) [] = { 0xc1600000, 0xc1600000, ++ 0xc1600000, 0xc1600000 }; ++ ++#define TEST_MSG "VDUP/VDUPQ" ++void exec_vdup_vmov (void) ++{ ++ int i; ++ ++ /* Basic test: vec=vdup(x), then store the result. */ ++#undef TEST_VDUP ++#define TEST_VDUP(Q, T1, T2, W, N) \ ++ VECT_VAR(vector, T1, W, N) = \ ++ vdup##Q##_n_##T2##W(VECT_VAR(buffer_dup, T1, W, N)[i]); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector, T1, W, N)) ++ ++ /* Basic test: vec=vmov(x), then store the result. */ ++#define TEST_VMOV(Q, T1, T2, W, N) \ ++ VECT_VAR(vector, T1, W, N) = \ ++ vmov##Q##_n_##T2##W(VECT_VAR(buffer_dup, T1, W, N)[i]); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector, T1, W, N)) ++ ++ DECL_VARIABLE_ALL_VARIANTS(vector); ++ ++ /* Try to read different places from the input buffer. */ ++ for (i=0; i< 3; i++) { ++ clean_results (); ++ ++ TEST_VDUP(, int, s, 8, 8); ++ TEST_VDUP(, int, s, 16, 4); ++ TEST_VDUP(, int, s, 32, 2); ++ TEST_VDUP(, int, s, 64, 1); ++ TEST_VDUP(, uint, u, 8, 8); ++ TEST_VDUP(, uint, u, 16, 4); ++ TEST_VDUP(, uint, u, 32, 2); ++ TEST_VDUP(, uint, u, 64, 1); ++ TEST_VDUP(, poly, p, 8, 8); ++ TEST_VDUP(, poly, p, 16, 4); ++ TEST_VDUP(, float, f, 32, 2); ++ ++ TEST_VDUP(q, int, s, 8, 16); ++ TEST_VDUP(q, int, s, 16, 8); ++ TEST_VDUP(q, int, s, 32, 4); ++ TEST_VDUP(q, int, s, 64, 2); ++ TEST_VDUP(q, uint, u, 8, 16); ++ TEST_VDUP(q, uint, u, 16, 8); ++ TEST_VDUP(q, uint, u, 32, 4); ++ TEST_VDUP(q, uint, u, 64, 2); ++ TEST_VDUP(q, poly, p, 8, 16); ++ TEST_VDUP(q, poly, p, 16, 8); ++ TEST_VDUP(q, float, f, 32, 4); ++ ++ switch (i) { ++ case 0: ++ CHECK_RESULTS_NAMED (TEST_MSG, expected0, ""); ++ break; ++ case 1: ++ CHECK_RESULTS_NAMED (TEST_MSG, expected1, ""); ++ break; ++ case 2: ++ CHECK_RESULTS_NAMED (TEST_MSG, expected2, ""); ++ break; ++ default: ++ abort(); ++ } ++ } ++ ++ /* Do the same tests with vmov. Use the same expected results. */ ++#undef TEST_MSG ++#define TEST_MSG "VMOV/VMOVQ" ++ for (i=0; i< 3; i++) { ++ clean_results (); ++ ++ TEST_VMOV(, int, s, 8, 8); ++ TEST_VMOV(, int, s, 16, 4); ++ TEST_VMOV(, int, s, 32, 2); ++ TEST_VMOV(, int, s, 64, 1); ++ TEST_VMOV(, uint, u, 8, 8); ++ TEST_VMOV(, uint, u, 16, 4); ++ TEST_VMOV(, uint, u, 32, 2); ++ TEST_VMOV(, uint, u, 64, 1); ++ TEST_VMOV(, poly, p, 8, 8); ++ TEST_VMOV(, poly, p, 16, 4); ++ TEST_VMOV(, float, f, 32, 2); ++ ++ TEST_VMOV(q, int, s, 8, 16); ++ TEST_VMOV(q, int, s, 16, 8); ++ TEST_VMOV(q, int, s, 32, 4); ++ TEST_VMOV(q, int, s, 64, 2); ++ TEST_VMOV(q, uint, u, 8, 16); ++ TEST_VMOV(q, uint, u, 16, 8); ++ TEST_VMOV(q, uint, u, 32, 4); ++ TEST_VMOV(q, uint, u, 64, 2); ++ TEST_VMOV(q, poly, p, 8, 16); ++ TEST_VMOV(q, poly, p, 16, 8); ++ TEST_VMOV(q, float, f, 32, 4); ++ ++ switch (i) { ++ case 0: ++ CHECK_RESULTS_NAMED (TEST_MSG, expected0, ""); ++ break; ++ case 1: ++ CHECK_RESULTS_NAMED (TEST_MSG, expected1, ""); ++ break; ++ case 2: ++ CHECK_RESULTS_NAMED (TEST_MSG, expected2, ""); ++ break; ++ default: ++ abort(); ++ } ++ } ++} ++ ++int main (void) ++{ ++ exec_vdup_vmov (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vuzp.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vuzp.c +@@ -0,0 +1,105 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results splitted in several chunks. */ ++/* Chunk 0. */ ++VECT_VAR_DECL(expected0,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected0,int,16,4) [] = { 0xfff0, 0xfff1, ++ 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected0,int,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected0,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected0,uint,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected0,uint,16,4) [] = { 0xfff0, 0xfff1, ++ 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected0,uint,32,2) [] = { 0xfffffff0, ++ 0xfffffff1 }; ++VECT_VAR_DECL(expected0,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected0,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected0,poly,16,4) [] = { 0xfff0, 0xfff1, ++ 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected0,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 }; ++VECT_VAR_DECL(expected0,int,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7, ++ 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected0,int,16,8) [] = { 0xfff0, 0xfff1, ++ 0xfff2, 0xfff3, ++ 0xfff4, 0xfff5, ++ 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected0,int,32,4) [] = { 0xfffffff0, 0xfffffff1, ++ 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected0,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected0,uint,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7, ++ 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected0,uint,16,8) [] = { 0xfff0, 0xfff1, ++ 0xfff2, 0xfff3, ++ 0xfff4, 0xfff5, ++ 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected0,uint,32,4) [] = { 0xfffffff0, 0xfffffff1, ++ 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected0,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected0,poly,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7, ++ 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected0,poly,16,8) [] = { 0xfff0, 0xfff1, ++ 0xfff2, 0xfff3, ++ 0xfff4, 0xfff5, ++ 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected0,hfloat,32,4) [] = { 0xc1800000, 0xc1700000, ++ 0xc1600000, 0xc1500000 }; ++ ++/* Chunk 1. */ ++VECT_VAR_DECL(expected1,int,8,8) [] = { 0x11, 0x11, 0x11, 0x11, ++ 0x11, 0x11, 0x11, 0x11 }; ++VECT_VAR_DECL(expected1,int,16,4) [] = { 0x22, 0x22, 0x22, 0x22 }; ++VECT_VAR_DECL(expected1,int,32,2) [] = { 0x33, 0x33 }; ++VECT_VAR_DECL(expected1,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected1,uint,8,8) [] = { 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55 }; ++VECT_VAR_DECL(expected1,uint,16,4) [] = { 0x66, 0x66, 0x66, 0x66 }; ++VECT_VAR_DECL(expected1,uint,32,2) [] = { 0x77, 0x77 }; ++VECT_VAR_DECL(expected1,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected1,poly,8,8) [] = { 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55 }; ++VECT_VAR_DECL(expected1,poly,16,4) [] = { 0x66, 0x66, 0x66, 0x66 }; ++VECT_VAR_DECL(expected1,hfloat,32,2) [] = { 0x42066666, 0x42066666 }; ++VECT_VAR_DECL(expected1,int,8,16) [] = { 0x11, 0x11, 0x11, 0x11, ++ 0x11, 0x11, 0x11, 0x11, ++ 0x11, 0x11, 0x11, 0x11, ++ 0x11, 0x11, 0x11, 0x11 }; ++VECT_VAR_DECL(expected1,int,16,8) [] = { 0x22, 0x22, 0x22, 0x22, ++ 0x22, 0x22, 0x22, 0x22 }; ++VECT_VAR_DECL(expected1,int,32,4) [] = { 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected1,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected1,uint,8,16) [] = { 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55 }; ++VECT_VAR_DECL(expected1,uint,16,8) [] = { 0x66, 0x66, 0x66, 0x66, ++ 0x66, 0x66, 0x66, 0x66 }; ++VECT_VAR_DECL(expected1,uint,32,4) [] = { 0x77, 0x77, 0x77, 0x77 }; ++VECT_VAR_DECL(expected1,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected1,poly,8,16) [] = { 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55 }; ++VECT_VAR_DECL(expected1,poly,16,8) [] = { 0x66, 0x66, 0x66, 0x66, ++ 0x66, 0x66, 0x66, 0x66 }; ++VECT_VAR_DECL(expected1,hfloat,32,4) [] = { 0x42073333, 0x42073333, ++ 0x42073333, 0x42073333 }; ++ ++#define INSN_NAME vuzp ++#define TEST_MSG "VUZP/VUZPQ" ++ ++#include "vshuffle.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/cmp_op.inc ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/cmp_op.inc +@@ -0,0 +1,224 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++#include ++ ++/* Additional expected results declaration, they are initialized in ++ each test file. */ ++extern ARRAY(expected_uint, uint, 8, 8); ++extern ARRAY(expected_uint, uint, 16, 4); ++extern ARRAY(expected_uint, uint, 32, 2); ++extern ARRAY(expected_q_uint, uint, 8, 16); ++extern ARRAY(expected_q_uint, uint, 16, 8); ++extern ARRAY(expected_q_uint, uint, 32, 4); ++extern ARRAY(expected_float, uint, 32, 2); ++extern ARRAY(expected_q_float, uint, 32, 4); ++extern ARRAY(expected_uint2, uint, 32, 2); ++extern ARRAY(expected_uint3, uint, 32, 2); ++extern ARRAY(expected_uint4, uint, 32, 2); ++extern ARRAY(expected_nan, uint, 32, 2); ++extern ARRAY(expected_mnan, uint, 32, 2); ++extern ARRAY(expected_nan2, uint, 32, 2); ++extern ARRAY(expected_inf, uint, 32, 2); ++extern ARRAY(expected_minf, uint, 32, 2); ++extern ARRAY(expected_inf2, uint, 32, 2); ++extern ARRAY(expected_mzero, uint, 32, 2); ++extern ARRAY(expected_p8, uint, 8, 8); ++extern ARRAY(expected_q_p8, uint, 8, 16); ++ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ /* Basic test: y=vcomp(x1,x2), then store the result. */ ++#define TEST_VCOMP1(INSN, Q, T1, T2, T3, W, N) \ ++ VECT_VAR(vector_res, T3, W, N) = \ ++ INSN##Q##_##T2##W(VECT_VAR(vector, T1, W, N), \ ++ VECT_VAR(vector2, T1, W, N)); \ ++ vst1##Q##_u##W(VECT_VAR(result, T3, W, N), VECT_VAR(vector_res, T3, W, N)) ++ ++#define TEST_VCOMP(INSN, Q, T1, T2, T3, W, N) \ ++ TEST_VCOMP1(INSN, Q, T1, T2, T3, W, N) ++ ++ /* No need for 64 bits elements. */ ++ DECL_VARIABLE(vector, int, 8, 8); ++ DECL_VARIABLE(vector, int, 16, 4); ++ DECL_VARIABLE(vector, int, 32, 2); ++ DECL_VARIABLE(vector, uint, 8, 8); ++ DECL_VARIABLE(vector, uint, 16, 4); ++ DECL_VARIABLE(vector, uint, 32, 2); ++ DECL_VARIABLE(vector, float, 32, 2); ++ DECL_VARIABLE(vector, int, 8, 16); ++ DECL_VARIABLE(vector, int, 16, 8); ++ DECL_VARIABLE(vector, int, 32, 4); ++ DECL_VARIABLE(vector, uint, 8, 16); ++ DECL_VARIABLE(vector, uint, 16, 8); ++ DECL_VARIABLE(vector, uint, 32, 4); ++ DECL_VARIABLE(vector, float, 32, 4); ++ ++ DECL_VARIABLE(vector2, int, 8, 8); ++ DECL_VARIABLE(vector2, int, 16, 4); ++ DECL_VARIABLE(vector2, int, 32, 2); ++ DECL_VARIABLE(vector2, uint, 8, 8); ++ DECL_VARIABLE(vector2, uint, 16, 4); ++ DECL_VARIABLE(vector2, uint, 32, 2); ++ DECL_VARIABLE(vector2, float, 32, 2); ++ DECL_VARIABLE(vector2, int, 8, 16); ++ DECL_VARIABLE(vector2, int, 16, 8); ++ DECL_VARIABLE(vector2, int, 32, 4); ++ DECL_VARIABLE(vector2, uint, 8, 16); ++ DECL_VARIABLE(vector2, uint, 16, 8); ++ DECL_VARIABLE(vector2, uint, 32, 4); ++ DECL_VARIABLE(vector2, float, 32, 4); ++ ++ DECL_VARIABLE(vector_res, uint, 8, 8); ++ DECL_VARIABLE(vector_res, uint, 16, 4); ++ DECL_VARIABLE(vector_res, uint, 32, 2); ++ DECL_VARIABLE(vector_res, uint, 8, 16); ++ DECL_VARIABLE(vector_res, uint, 16, 8); ++ DECL_VARIABLE(vector_res, uint, 32, 4); ++ ++ clean_results (); ++ ++ /* There is no 64 bits variant, don't use the generic initializer. */ ++ VLOAD(vector, buffer, , int, s, 8, 8); ++ VLOAD(vector, buffer, , int, s, 16, 4); ++ VLOAD(vector, buffer, , int, s, 32, 2); ++ VLOAD(vector, buffer, , uint, u, 8, 8); ++ VLOAD(vector, buffer, , uint, u, 16, 4); ++ VLOAD(vector, buffer, , uint, u, 32, 2); ++ VLOAD(vector, buffer, , float, f, 32, 2); ++ ++ VLOAD(vector, buffer, q, int, s, 8, 16); ++ VLOAD(vector, buffer, q, int, s, 16, 8); ++ VLOAD(vector, buffer, q, int, s, 32, 4); ++ VLOAD(vector, buffer, q, uint, u, 8, 16); ++ VLOAD(vector, buffer, q, uint, u, 16, 8); ++ VLOAD(vector, buffer, q, uint, u, 32, 4); ++ VLOAD(vector, buffer, q, float, f, 32, 4); ++ ++ /* Choose init value arbitrarily, will be used for vector ++ comparison. */ ++ VDUP(vector2, , int, s, 8, 8, -10); ++ VDUP(vector2, , int, s, 16, 4, -14); ++ VDUP(vector2, , int, s, 32, 2, -16); ++ VDUP(vector2, , uint, u, 8, 8, 0xF3); ++ VDUP(vector2, , uint, u, 16, 4, 0xFFF2); ++ VDUP(vector2, , uint, u, 32, 2, 0xFFFFFFF1); ++ VDUP(vector2, , float, f, 32, 2, -15.0f); ++ ++ VDUP(vector2, q, int, s, 8, 16, -4); ++ VDUP(vector2, q, int, s, 16, 8, -10); ++ VDUP(vector2, q, int, s, 32, 4, -14); ++ VDUP(vector2, q, uint, u, 8, 16, 0xF4); ++ VDUP(vector2, q, uint, u, 16, 8, 0xFFF6); ++ VDUP(vector2, q, uint, u, 32, 4, 0xFFFFFFF2); ++ VDUP(vector2, q, float, f, 32, 4, -14.0f); ++ ++ /* The comparison operators produce only unsigned results, which ++ means that our tests with uint* inputs write their results in the ++ same vectors as the int* variants. As a consequence, we have to ++ execute and test the int* first, then the uint* ones. ++ Same thing for float and poly8. ++ */ ++ ++ /* Apply operator named INSN_NAME. */ ++ TEST_VCOMP(INSN_NAME, , int, s, uint, 8, 8); ++ TEST_VCOMP(INSN_NAME, , int, s, uint, 16, 4); ++ TEST_VCOMP(INSN_NAME, , int, s, uint, 32, 2); ++ TEST_VCOMP(INSN_NAME, q, int, s, uint, 8, 16); ++ TEST_VCOMP(INSN_NAME, q, int, s, uint, 16, 8); ++ TEST_VCOMP(INSN_NAME, q, int, s, uint, 32, 4); ++ ++ CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, ""); ++ ++ /* Now the uint* variants. */ ++ TEST_VCOMP(INSN_NAME, , uint, u, uint, 8, 8); ++ TEST_VCOMP(INSN_NAME, , uint, u, uint, 16, 4); ++ TEST_VCOMP(INSN_NAME, , uint, u, uint, 32, 2); ++ TEST_VCOMP(INSN_NAME, q, uint, u, uint, 8, 16); ++ TEST_VCOMP(INSN_NAME, q, uint, u, uint, 16, 8); ++ TEST_VCOMP(INSN_NAME, q, uint, u, uint, 32, 4); ++ ++ CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_uint, ""); ++ CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_uint, ""); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_uint, ""); ++ CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_q_uint, ""); ++ CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_q_uint, ""); ++ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_q_uint, ""); ++ ++ /* The float variants. */ ++ TEST_VCOMP(INSN_NAME, , float, f, uint, 32, 2); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_float, ""); ++ ++ TEST_VCOMP(INSN_NAME, q, float, f, uint, 32, 4); ++ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_q_float, ""); ++ ++ /* Some "special" input values to test some corner cases. */ ++ /* Extra tests to have 100% coverage on all the variants. */ ++ VDUP(vector2, , uint, u, 32, 2, 0xFFFFFFF0); ++ TEST_VCOMP(INSN_NAME, , uint, u, uint, 32, 2); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_uint2, "uint 0xfffffff0"); ++ ++ VDUP(vector2, , int, s, 32, 2, -15); ++ TEST_VCOMP(INSN_NAME, , int, s, uint, 32, 2); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_uint3, "int -15"); ++ ++ VDUP(vector2, , float, f, 32, 2, -16.0f); ++ TEST_VCOMP(INSN_NAME, , float, f, uint, 32, 2); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_uint4, "float -16.0f"); ++ ++ ++ /* Extra FP tests with special values (NaN, ....). */ ++ VDUP(vector, , float, f, 32, 2, 1.0); ++ VDUP(vector2, , float, f, 32, 2, NAN); ++ TEST_VCOMP(INSN_NAME, , float, f, uint, 32, 2); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_nan, "FP special (NaN)"); ++ ++ VDUP(vector, , float, f, 32, 2, 1.0); ++ VDUP(vector2, , float, f, 32, 2, -NAN); ++ TEST_VCOMP(INSN_NAME, , float, f, uint, 32, 2); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_mnan, " FP special (-NaN)"); ++ ++ VDUP(vector, , float, f, 32, 2, NAN); ++ VDUP(vector2, , float, f, 32, 2, 1.0); ++ TEST_VCOMP(INSN_NAME, , float, f, uint, 32, 2); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_nan2, " FP special (NaN)"); ++ ++ VDUP(vector, , float, f, 32, 2, 1.0); ++ VDUP(vector2, , float, f, 32, 2, HUGE_VALF); ++ TEST_VCOMP(INSN_NAME, , float, f, uint, 32, 2); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_inf, " FP special (inf)"); ++ ++ VDUP(vector, , float, f, 32, 2, 1.0); ++ VDUP(vector2, , float, f, 32, 2, -HUGE_VALF); ++ TEST_VCOMP(INSN_NAME, , float, f, uint, 32, 2); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_minf, " FP special (-inf)"); ++ ++ VDUP(vector, , float, f, 32, 2, HUGE_VALF); ++ VDUP(vector2, , float, f, 32, 2, 1.0); ++ TEST_VCOMP(INSN_NAME, , float, f, uint, 32, 2); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_inf2, " FP special (inf)"); ++ ++ VDUP(vector, , float, f, 32, 2, -0.0); ++ VDUP(vector2, , float, f, 32, 2, 0.0); ++ TEST_VCOMP(INSN_NAME, , float, f, uint, 32, 2); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_mzero, " FP special (-0.0)"); ++ ++#ifdef EXTRA_TESTS ++ EXTRA_TESTS(); ++#endif ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vaba.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vaba.c +@@ -0,0 +1,142 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf6, 0xf7, 0xf8, 0xf9, ++ 0xfa, 0xfb, 0xfc, 0xfd }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x16, 0x17, 0x18, 0x19 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x20, 0x21 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x53, 0x54, 0x55, 0x56, ++ 0x57, 0x58, 0x59, 0x5a }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x907, 0x908, 0x909, 0x90a }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffe7, 0xffffffe8 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x5e, 0x5f, 0x60, 0x61, ++ 0x62, 0x63, 0x64, 0x65, ++ 0x66, 0x67, 0x68, 0x69, ++ 0x6a, 0x6b, 0x6c, 0x6d }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xb9c, 0xb9d, 0xb9e, 0xb9f, ++ 0xba0, 0xba1, 0xba2, 0xba3 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x26e0, 0x26e1, 0x26e2, 0x26e3 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff, ++ 0x0, 0x1, 0x2, 0x3, ++ 0x4, 0x5, 0x6, 0x7 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfff9, 0xfffa, 0xfffb, 0xfffc, ++ 0xfffd, 0xfffe, 0xffff, 0x0 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xc, 0xd, 0xe, 0xf }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++#define TEST_MSG "VABA/VABAQ" ++void exec_vaba (void) ++{ ++ /* Basic test: v4=vaba(v1,v2,v3), then store the result. */ ++#define TEST_VABA(Q, T1, T2, W, N) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ vaba##Q##_##T2##W(VECT_VAR(vector1, T1, W, N), \ ++ VECT_VAR(vector2, T1, W, N), \ ++ VECT_VAR(vector3, T1, W, N)); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N)) ++ ++#define DECL_VABA_VAR(VAR) \ ++ DECL_VARIABLE(VAR, int, 8, 8); \ ++ DECL_VARIABLE(VAR, int, 16, 4); \ ++ DECL_VARIABLE(VAR, int, 32, 2); \ ++ DECL_VARIABLE(VAR, uint, 8, 8); \ ++ DECL_VARIABLE(VAR, uint, 16, 4); \ ++ DECL_VARIABLE(VAR, uint, 32, 2); \ ++ DECL_VARIABLE(VAR, int, 8, 16); \ ++ DECL_VARIABLE(VAR, int, 16, 8); \ ++ DECL_VARIABLE(VAR, int, 32, 4); \ ++ DECL_VARIABLE(VAR, uint, 8, 16); \ ++ DECL_VARIABLE(VAR, uint, 16, 8); \ ++ DECL_VARIABLE(VAR, uint, 32, 4) ++ ++ DECL_VABA_VAR(vector1); ++ DECL_VABA_VAR(vector2); ++ DECL_VABA_VAR(vector3); ++ DECL_VABA_VAR(vector_res); ++ ++ clean_results (); ++ ++ /* Initialize input "vector1" from "buffer". */ ++ VLOAD(vector1, buffer, , int, s, 8, 8); ++ VLOAD(vector1, buffer, , int, s, 16, 4); ++ VLOAD(vector1, buffer, , int, s, 32, 2); ++ VLOAD(vector1, buffer, , uint, u, 8, 8); ++ VLOAD(vector1, buffer, , uint, u, 16, 4); ++ VLOAD(vector1, buffer, , uint, u, 32, 2); ++ VLOAD(vector1, buffer, q, int, s, 8, 16); ++ VLOAD(vector1, buffer, q, int, s, 16, 8); ++ VLOAD(vector1, buffer, q, int, s, 32, 4); ++ VLOAD(vector1, buffer, q, uint, u, 8, 16); ++ VLOAD(vector1, buffer, q, uint, u, 16, 8); ++ VLOAD(vector1, buffer, q, uint, u, 32, 4); ++ ++ /* Choose init value arbitrarily. */ ++ VDUP(vector2, , int, s, 8, 8, 1); ++ VDUP(vector2, , int, s, 16, 4, -13); ++ VDUP(vector2, , int, s, 32, 2, 8); ++ VDUP(vector2, , uint, u, 8, 8, 1); ++ VDUP(vector2, , uint, u, 16, 4, 13); ++ VDUP(vector2, , uint, u, 32, 2, 8); ++ VDUP(vector2, q, int, s, 8, 16, 10); ++ VDUP(vector2, q, int, s, 16, 8, -12); ++ VDUP(vector2, q, int, s, 32, 4, 32); ++ VDUP(vector2, q, uint, u, 8, 16, 10); ++ VDUP(vector2, q, uint, u, 16, 8, 12); ++ VDUP(vector2, q, uint, u, 32, 4, 32); ++ ++ /* Choose init value arbitrarily. */ ++ VDUP(vector3, , int, s, 8, 8, -5); ++ VDUP(vector3, , int, s, 16, 4, 25); ++ VDUP(vector3, , int, s, 32, 2, -40); ++ VDUP(vector3, , uint, u, 8, 8, 100); ++ VDUP(vector3, , uint, u, 16, 4, 2340); ++ VDUP(vector3, , uint, u, 32, 2, 0xffffffff); ++ VDUP(vector3, q, int, s, 8, 16, -100); ++ VDUP(vector3, q, int, s, 16, 8, -3000); ++ VDUP(vector3, q, int, s, 32, 4, 10000); ++ VDUP(vector3, q, uint, u, 8, 16, 2); ++ VDUP(vector3, q, uint, u, 16, 8, 3); ++ VDUP(vector3, q, uint, u, 32, 4, 4); ++ ++ /* Execute the tests. */ ++ TEST_VABA(, int, s, 8, 8); ++ TEST_VABA(, int, s, 16, 4); ++ TEST_VABA(, int, s, 32, 2); ++ TEST_VABA(, uint, u, 8, 8); ++ TEST_VABA(, uint, u, 16, 4); ++ TEST_VABA(, uint, u, 32, 2); ++ TEST_VABA(q, int, s, 8, 16); ++ TEST_VABA(q, int, s, 16, 8); ++ TEST_VABA(q, int, s, 32, 4); ++ TEST_VABA(q, uint, u, 8, 16); ++ TEST_VABA(q, uint, u, 16, 8); ++ TEST_VABA(q, uint, u, 32, 4); ++ ++ CHECK_RESULTS (TEST_MSG, ""); ++} ++ ++int main (void) ++{ ++ exec_vaba (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmin.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmin.c +@@ -0,0 +1,52 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vmin ++#define TEST_MSG "VMIN/VMINQ" ++ ++#define HAS_FLOAT_VARIANT ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf3, 0xf3, 0xf3, 0xf3 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff2 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffff0, 0xfffffff0 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf3, 0xf3, 0xf3, 0xf3 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfff0, 0xfff1, 0xfff1, 0xfff1 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffffff0, 0xfffffff0 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xc1800000, 0xc1780000 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf4, 0xf4, 0xf4, ++ 0xf4, 0xf4, 0xf4, 0xf4, ++ 0xf4, 0xf4, 0xf4, 0xf4 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3, ++ 0xfff3, 0xfff3, 0xfff3, 0xfff3 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffff0, 0xfffffff1, ++ 0xfffffff1, 0xfffffff1 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7, ++ 0xf8, 0xf9, 0xf9, 0xf9, ++ 0xf9, 0xf9, 0xf9, 0xf9 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff2, ++ 0xfff2, 0xfff2, 0xfff2, 0xfff2 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfffffff0, 0xfffffff1, ++ 0xfffffff1, 0xfffffff1 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0xc1800000, 0xc1700000, ++ 0xc1680000, 0xc1680000 }; ++/* Expected results with special FP values. */ ++VECT_VAR_DECL(expected_nan,hfloat,32,4) [] = { 0x7fc00000, 0x7fc00000, ++ 0x7fc00000, 0x7fc00000 }; ++VECT_VAR_DECL(expected_mnan,hfloat,32,4) [] = { 0x7fc00000, 0x7fc00000, ++ 0x7fc00000, 0x7fc00000 }; ++VECT_VAR_DECL(expected_inf,hfloat,32,4) [] = { 0x3f800000, 0x3f800000, ++ 0x3f800000, 0x3f800000 }; ++VECT_VAR_DECL(expected_minf,hfloat,32,4) [] = { 0xff800000, 0xff800000, ++ 0xff800000, 0xff800000 }; ++VECT_VAR_DECL(expected_zero1,hfloat,32,4) [] = { 0x80000000, 0x80000000, ++ 0x80000000, 0x80000000 }; ++VECT_VAR_DECL(expected_zero2,hfloat,32,4) [] = { 0x80000000, 0x80000000, ++ 0x80000000, 0x80000000 }; ++ ++#include "binary_op_no64.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpaddl.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpaddl.c +@@ -0,0 +1,116 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xffe1, 0xffe5, 0xffe9, 0xffed }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xffffffe1, 0xffffffe5 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0xffffffffffffffe1 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x1e1, 0x1e5, 0x1e9, 0x1ed }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x1ffe1, 0x1ffe5 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x1ffffffe1 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xffe1, 0xffe5, 0xffe9, 0xffed, ++ 0xfff1, 0xfff5, 0xfff9, 0xfffd }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffffe1, 0xffffffe5, ++ 0xffffffe9, 0xffffffed }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xffffffffffffffe1, ++ 0xffffffffffffffe5 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x1e1, 0x1e5, 0x1e9, 0x1ed, ++ 0x1f1, 0x1f5, 0x1f9, 0x1fd }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x1ffe1, 0x1ffe5, 0x1ffe9, 0x1ffed }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x1ffffffe1, 0x1ffffffe5 }; ++ ++#define INSN_NAME vpaddl ++#define TEST_MSG "VPADDL/VPADDLQ" ++ ++#define FNNAME1(NAME) void exec_ ## NAME (void) ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++FNNAME (INSN_NAME) ++{ ++ /* Basic test: y=OP(x), then store the result. */ ++#define TEST_VPADDL1(INSN, Q, T1, T2, W, N, W2, N2) \ ++ VECT_VAR(vector_res, T1, W2, N2) = \ ++ INSN##Q##_##T2##W(VECT_VAR(vector, T1, W, N)); \ ++ vst1##Q##_##T2##W2(VECT_VAR(result, T1, W2, N2), \ ++ VECT_VAR(vector_res, T1, W2, N2)) ++ ++#define TEST_VPADDL(INSN, Q, T1, T2, W, N, W2, N2) \ ++ TEST_VPADDL1(INSN, Q, T1, T2, W, N, W2, N2) ++ ++ /* No need for 64 bits elements variants. */ ++ DECL_VARIABLE(vector, int, 8, 8); ++ DECL_VARIABLE(vector, int, 16, 4); ++ DECL_VARIABLE(vector, int, 32, 2); ++ DECL_VARIABLE(vector, uint, 8, 8); ++ DECL_VARIABLE(vector, uint, 16, 4); ++ DECL_VARIABLE(vector, uint, 32, 2); ++ DECL_VARIABLE(vector, int, 8, 16); ++ DECL_VARIABLE(vector, int, 16, 8); ++ DECL_VARIABLE(vector, int, 32, 4); ++ DECL_VARIABLE(vector, uint, 8, 16); ++ DECL_VARIABLE(vector, uint, 16, 8); ++ DECL_VARIABLE(vector, uint, 32, 4); ++ ++ DECL_VARIABLE(vector_res, int, 16, 4); ++ DECL_VARIABLE(vector_res, int, 32, 2); ++ DECL_VARIABLE(vector_res, int, 64, 1); ++ DECL_VARIABLE(vector_res, uint, 16, 4); ++ DECL_VARIABLE(vector_res, uint, 32, 2); ++ DECL_VARIABLE(vector_res, uint, 64, 1); ++ DECL_VARIABLE(vector_res, int, 16, 8); ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ DECL_VARIABLE(vector_res, int, 64, 2); ++ DECL_VARIABLE(vector_res, uint, 16, 8); ++ DECL_VARIABLE(vector_res, uint, 32, 4); ++ DECL_VARIABLE(vector_res, uint, 64, 2); ++ ++ clean_results (); ++ ++ /* Initialize input "vector" from "buffer". */ ++ VLOAD(vector, buffer, , int, s, 8, 8); ++ VLOAD(vector, buffer, , int, s, 16, 4); ++ VLOAD(vector, buffer, , int, s, 32, 2); ++ VLOAD(vector, buffer, , uint, u, 8, 8); ++ VLOAD(vector, buffer, , uint, u, 16, 4); ++ VLOAD(vector, buffer, , uint, u, 32, 2); ++ VLOAD(vector, buffer, q, int, s, 8, 16); ++ VLOAD(vector, buffer, q, int, s, 16, 8); ++ VLOAD(vector, buffer, q, int, s, 32, 4); ++ VLOAD(vector, buffer, q, uint, u, 8, 16); ++ VLOAD(vector, buffer, q, uint, u, 16, 8); ++ VLOAD(vector, buffer, q, uint, u, 32, 4); ++ ++ /* Apply a unary operator named INSN_NAME. */ ++ TEST_VPADDL(INSN_NAME, , int, s, 8, 8, 16, 4); ++ TEST_VPADDL(INSN_NAME, , int, s, 16, 4, 32, 2); ++ TEST_VPADDL(INSN_NAME, , int, s, 32, 2, 64, 1); ++ TEST_VPADDL(INSN_NAME, , uint, u, 8, 8, 16, 4); ++ TEST_VPADDL(INSN_NAME, , uint, u, 16, 4, 32, 2); ++ TEST_VPADDL(INSN_NAME, , uint, u, 32, 2, 64, 1); ++ TEST_VPADDL(INSN_NAME, q, int, s, 8, 16, 16, 8); ++ TEST_VPADDL(INSN_NAME, q, int, s, 16, 8, 32, 4); ++ TEST_VPADDL(INSN_NAME, q, int, s, 32, 4, 64, 2); ++ TEST_VPADDL(INSN_NAME, q, uint, u, 8, 16, 16, 8); ++ TEST_VPADDL(INSN_NAME, q, uint, u, 16, 8, 32, 4); ++ TEST_VPADDL(INSN_NAME, q, uint, u, 32, 4, 64, 2); ++ ++ CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, ""); ++ CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, ""); ++ CHECK(TEST_MSG, int, 64, 1, PRIx64, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected, ""); ++ CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, ""); ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, ""); ++} ++ ++int main (void) ++{ ++ exec_vpaddl (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_n.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_n.c +@@ -0,0 +1,18 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vmlsl_n ++#define TEST_MSG "VMLSL_N" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffa4b, 0xfffffa4c, ++ 0xfffffa4d, 0xfffffa4e }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xfffffffffffff4a6, ++ 0xfffffffffffff4a7 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffef01, 0xffffef02, ++ 0xffffef03, 0xffffef04 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffffffffef01, ++ 0xffffffffffffef02 }; ++ ++#include "vmlXl_n.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_lane.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_lane.c +@@ -0,0 +1,14 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vmlal_lane ++#define TEST_MSG "VMLAL_LANE" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x3e07, 0x3e08, 0x3e09, 0x3e0a }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x3e07, 0x3e08 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x3e07, 0x3e08, 0x3e09, 0x3e0a }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3e07, 0x3e08 }; ++ ++#include "vmlXl_lane.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmax.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmax.c +@@ -0,0 +1,51 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vmax ++#define TEST_MSG "VMAX/VMAXQ" ++ ++#define HAS_FLOAT_VARIANT ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf3, 0xf3, 0xf3, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff2, 0xfff2, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xf3, 0xf3, 0xf3, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfff1, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xc1780000, 0xc1700000 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0xf4, 0xf4, 0xf4, 0xf4, ++ 0xf4, 0xf5, 0xf6, 0xf7, ++ 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xfff3, 0xfff3, 0xfff3, 0xfff3, ++ 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffff1, 0xfffffff1, ++ 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xf9, 0xf9, 0xf9, 0xf9, ++ 0xf9, 0xf9, 0xf9, 0xf9, ++ 0xf9, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfff2, 0xfff2, 0xfff2, 0xfff3, ++ 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfffffff1, 0xfffffff1, ++ 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0xc1680000, 0xc1680000, ++ 0xc1600000, 0xc1500000 }; ++ ++/* Expected results with special FP values. */ ++VECT_VAR_DECL(expected_nan,hfloat,32,4) [] = { 0x7fc00000, 0x7fc00000, ++ 0x7fc00000, 0x7fc00000 }; ++VECT_VAR_DECL(expected_mnan,hfloat,32,4) [] = { 0x7fc00000, 0x7fc00000, ++ 0x7fc00000, 0x7fc00000 }; ++VECT_VAR_DECL(expected_inf,hfloat,32,4) [] = { 0x7f800000, 0x7f800000, ++ 0x7f800000, 0x7f800000 }; ++VECT_VAR_DECL(expected_minf,hfloat,32,4) [] = { 0x3f800000, 0x3f800000, ++ 0x3f800000, 0x3f800000 }; ++VECT_VAR_DECL(expected_zero1,hfloat,32,4) [] = { 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_zero2,hfloat,32,4) [] = { 0x0, 0x0, 0x0, 0x0 }; ++ ++#include "binary_op_no64.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vldX_lane.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vldX_lane.c +@@ -0,0 +1,610 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++ ++/* vld2/chunk 0. */ ++VECT_VAR_DECL(expected_vld2_0,int,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa }; ++VECT_VAR_DECL(expected_vld2_0,int,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld2_0,int,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected_vld2_0,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld2_0,uint,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa }; ++VECT_VAR_DECL(expected_vld2_0,uint,16,4) [] = { 0xaaaa, 0xaaaa, ++ 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld2_0,uint,32,2) [] = { 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld2_0,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld2_0,poly,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa }; ++VECT_VAR_DECL(expected_vld2_0,poly,16,4) [] = { 0xaaaa, 0xaaaa, ++ 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld2_0,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 }; ++VECT_VAR_DECL(expected_vld2_0,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld2_0,int,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, ++ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld2_0,int,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa, ++ 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld2_0,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld2_0,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld2_0,uint,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, ++ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld2_0,uint,32,4) [] = { 0xfffffff0, 0xfffffff1, ++ 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld2_0,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld2_0,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld2_0,poly,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, ++ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld2_0,hfloat,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa, ++ 0xaaaaaaaa, 0xaaaaaaaa }; ++ ++/* vld2/chunk 1. */ ++VECT_VAR_DECL(expected_vld2_1,int,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xf0, 0xf1 }; ++VECT_VAR_DECL(expected_vld2_1,int,16,4) [] = { 0xfff0, 0xfff1, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld2_1,int,32,2) [] = { 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld2_1,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld2_1,uint,8,8) [] = { 0xf0, 0xf1, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa }; ++VECT_VAR_DECL(expected_vld2_1,uint,16,4) [] = { 0xaaaa, 0xaaaa, 0xfff0, 0xfff1 }; ++VECT_VAR_DECL(expected_vld2_1,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected_vld2_1,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld2_1,poly,8,8) [] = { 0xf0, 0xf1, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa }; ++VECT_VAR_DECL(expected_vld2_1,poly,16,4) [] = { 0xaaaa, 0xaaaa, 0xfff0, 0xfff1 }; ++VECT_VAR_DECL(expected_vld2_1,hfloat,32,2) [] = { 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld2_1,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld2_1,int,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, ++ 0xfff0, 0xfff1, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld2_1,int,32,4) [] = { 0xfffffff0, 0xfffffff1, ++ 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld2_1,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld2_1,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld2_1,uint,16,8) [] = { 0xaaaa, 0xaaaa, 0xfff0, 0xfff1, ++ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld2_1,uint,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa, ++ 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld2_1,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld2_1,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld2_1,poly,16,8) [] = { 0xaaaa, 0xaaaa, 0xfff0, 0xfff1, ++ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld2_1,hfloat,32,4) [] = { 0xc1800000, 0xc1700000, ++ 0xaaaaaaaa, 0xaaaaaaaa }; ++ ++/* vld3/chunk 0. */ ++VECT_VAR_DECL(expected_vld3_0,int,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa }; ++VECT_VAR_DECL(expected_vld3_0,int,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld3_0,int,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected_vld3_0,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld3_0,uint,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa }; ++VECT_VAR_DECL(expected_vld3_0,uint,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld3_0,uint,32,2) [] = { 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld3_0,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld3_0,poly,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa }; ++VECT_VAR_DECL(expected_vld3_0,poly,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld3_0,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 }; ++VECT_VAR_DECL(expected_vld3_0,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld3_0,int,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, ++ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld3_0,int,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa, ++ 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld3_0,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld3_0,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld3_0,uint,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, ++ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld3_0,uint,32,4) [] = { 0xfffffff0, 0xfffffff1, ++ 0xfffffff2, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld3_0,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld3_0,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld3_0,poly,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, ++ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld3_0,hfloat,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa, ++ 0xaaaaaaaa, 0xaaaaaaaa }; ++ ++/* vld3/chunk 1. */ ++VECT_VAR_DECL(expected_vld3_1,int,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa }; ++VECT_VAR_DECL(expected_vld3_1,int,16,4) [] = { 0xaaaa, 0xaaaa, 0xfff0, 0xfff1 }; ++VECT_VAR_DECL(expected_vld3_1,int,32,2) [] = { 0xfffffff2, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld3_1,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld3_1,uint,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xf0, 0xf1, 0xf2, 0xaa }; ++VECT_VAR_DECL(expected_vld3_1,uint,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld3_1,uint,32,2) [] = { 0xaaaaaaaa, 0xfffffff0 }; ++VECT_VAR_DECL(expected_vld3_1,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld3_1,poly,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xf0, 0xf1, 0xf2, 0xaa }; ++VECT_VAR_DECL(expected_vld3_1,poly,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld3_1,hfloat,32,2) [] = { 0xc1600000, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld3_1,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld3_1,int,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, ++ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld3_1,int,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa, ++ 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected_vld3_1,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld3_1,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld3_1,uint,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, ++ 0xaaaa, 0xaaaa, 0xaaaa, 0xfff0 }; ++VECT_VAR_DECL(expected_vld3_1,uint,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa, ++ 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld3_1,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld3_1,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld3_1,poly,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, ++ 0xaaaa, 0xaaaa, 0xaaaa, 0xfff0 }; ++VECT_VAR_DECL(expected_vld3_1,hfloat,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa, ++ 0xc1800000, 0xc1700000 }; ++ ++/* vld3/chunk 2. */ ++VECT_VAR_DECL(expected_vld3_2,int,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xf0, 0xf1, 0xf2 }; ++VECT_VAR_DECL(expected_vld3_2,int,16,4) [] = { 0xfff2, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld3_2,int,32,2) [] = { 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld3_2,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld3_2,uint,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa }; ++VECT_VAR_DECL(expected_vld3_2,uint,16,4) [] = { 0xaaaa, 0xfff0, 0xfff1, 0xfff2 }; ++VECT_VAR_DECL(expected_vld3_2,uint,32,2) [] = { 0xfffffff1, 0xfffffff2 }; ++VECT_VAR_DECL(expected_vld3_2,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld3_2,poly,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa }; ++VECT_VAR_DECL(expected_vld3_2,poly,16,4) [] = { 0xaaaa, 0xfff0, 0xfff1, 0xfff2 }; ++VECT_VAR_DECL(expected_vld3_2,hfloat,32,2) [] = { 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld3_2,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld3_2,int,16,8) [] = { 0xaaaa, 0xaaaa, 0xfff0, 0xfff1, ++ 0xfff2, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld3_2,int,32,4) [] = { 0xfffffff2, 0xaaaaaaaa, ++ 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld3_2,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld3_2,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld3_2,uint,16,8) [] = { 0xfff1, 0xfff2, 0xaaaa, 0xaaaa, ++ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld3_2,uint,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa, ++ 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld3_2,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld3_2,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld3_2,poly,16,8) [] = { 0xfff1, 0xfff2, 0xaaaa, 0xaaaa, ++ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld3_2,hfloat,32,4) [] = { 0xc1600000, 0xaaaaaaaa, ++ 0xaaaaaaaa, 0xaaaaaaaa }; ++ ++/* vld4/chunk 0. */ ++VECT_VAR_DECL(expected_vld4_0,int,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa }; ++VECT_VAR_DECL(expected_vld4_0,int,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld4_0,int,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected_vld4_0,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_0,uint,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa }; ++VECT_VAR_DECL(expected_vld4_0,uint,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld4_0,uint,32,2) [] = { 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld4_0,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_0,poly,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa }; ++VECT_VAR_DECL(expected_vld4_0,poly,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld4_0,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 }; ++VECT_VAR_DECL(expected_vld4_0,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld4_0,int,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, ++ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld4_0,int,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa, ++ 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld4_0,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_0,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld4_0,uint,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, ++ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld4_0,uint,32,4) [] = { 0xfffffff0, 0xfffffff1, ++ 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected_vld4_0,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_0,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld4_0,poly,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, ++ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld4_0,hfloat,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa, ++ 0xaaaaaaaa, 0xaaaaaaaa }; ++ ++/* vld4/chunk 1. */ ++VECT_VAR_DECL(expected_vld4_1,int,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa }; ++VECT_VAR_DECL(expected_vld4_1,int,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld4_1,int,32,2) [] = { 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected_vld4_1,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_1,uint,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa }; ++VECT_VAR_DECL(expected_vld4_1,uint,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld4_1,uint,32,2) [] = { 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld4_1,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_1,poly,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa }; ++VECT_VAR_DECL(expected_vld4_1,poly,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld4_1,hfloat,32,2) [] = { 0xc1600000, 0xc1500000 }; ++VECT_VAR_DECL(expected_vld4_1,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld4_1,int,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, ++ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld4_1,int,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa, ++ 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld4_1,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_1,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld4_1,uint,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, ++ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld4_1,uint,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa, ++ 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld4_1,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_1,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld4_1,poly,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, ++ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld4_1,hfloat,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa, ++ 0xaaaaaaaa, 0xaaaaaaaa }; ++ ++/* vld4/chunk 2. */ ++VECT_VAR_DECL(expected_vld4_2,int,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa }; ++VECT_VAR_DECL(expected_vld4_2,int,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld4_2,int,32,2) [] = { 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld4_2,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_2,uint,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xaa, 0xaa, 0xaa, 0xaa }; ++VECT_VAR_DECL(expected_vld4_2,uint,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld4_2,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected_vld4_2,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_2,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xaa, 0xaa, 0xaa, 0xaa }; ++VECT_VAR_DECL(expected_vld4_2,poly,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld4_2,hfloat,32,2) [] = { 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld4_2,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld4_2,int,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, ++ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld4_2,int,32,4) [] = { 0xfffffff0, 0xfffffff1, ++ 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected_vld4_2,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_2,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld4_2,uint,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, ++ 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld4_2,uint,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa, ++ 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld4_2,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_2,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld4_2,poly,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, ++ 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld4_2,hfloat,32,4) [] = { 0xc1800000, 0xc1700000, ++ 0xc1600000, 0xc1500000 }; ++ ++/* vld4/chunk 3. */ ++VECT_VAR_DECL(expected_vld4_3,int,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xf0, 0xf1, 0xf2, 0xf3 }; ++VECT_VAR_DECL(expected_vld4_3,int,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld4_3,int,32,2) [] = { 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld4_3,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_3,uint,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa }; ++VECT_VAR_DECL(expected_vld4_3,uint,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld4_3,uint,32,2) [] = { 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected_vld4_3,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_3,poly,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa }; ++VECT_VAR_DECL(expected_vld4_3,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld4_3,hfloat,32,2) [] = { 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld4_3,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld4_3,int,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3, ++ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld4_3,int,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa, ++ 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld4_3,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_3,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld4_3,uint,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, ++ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld4_3,uint,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa, ++ 0xaaaaaaaa, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected_vld4_3,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_3,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_vld4_3,poly,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, ++ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected_vld4_3,hfloat,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa, ++ 0xaaaaaaaa, 0xaaaaaaaa }; ++ ++/* Declare additional input buffers as needed. */ ++/* Input buffers for vld2_lane */ ++VECT_VAR_DECL_INIT(buffer_vld2_lane, int, 8, 2); ++VECT_VAR_DECL_INIT(buffer_vld2_lane, int, 16, 2); ++VECT_VAR_DECL_INIT(buffer_vld2_lane, int, 32, 2); ++VECT_VAR_DECL_INIT(buffer_vld2_lane, int, 64, 2); ++VECT_VAR_DECL_INIT(buffer_vld2_lane, uint, 8, 2); ++VECT_VAR_DECL_INIT(buffer_vld2_lane, uint, 16, 2); ++VECT_VAR_DECL_INIT(buffer_vld2_lane, uint, 32, 2); ++VECT_VAR_DECL_INIT(buffer_vld2_lane, uint, 64, 2); ++VECT_VAR_DECL_INIT(buffer_vld2_lane, poly, 8, 2); ++VECT_VAR_DECL_INIT(buffer_vld2_lane, poly, 16, 2); ++VECT_VAR_DECL_INIT(buffer_vld2_lane, float, 32, 2); ++ ++/* Input buffers for vld3_lane */ ++VECT_VAR_DECL_INIT(buffer_vld3_lane, int, 8, 3); ++VECT_VAR_DECL_INIT(buffer_vld3_lane, int, 16, 3); ++VECT_VAR_DECL_INIT(buffer_vld3_lane, int, 32, 3); ++VECT_VAR_DECL_INIT(buffer_vld3_lane, int, 64, 3); ++VECT_VAR_DECL_INIT(buffer_vld3_lane, uint, 8, 3); ++VECT_VAR_DECL_INIT(buffer_vld3_lane, uint, 16, 3); ++VECT_VAR_DECL_INIT(buffer_vld3_lane, uint, 32, 3); ++VECT_VAR_DECL_INIT(buffer_vld3_lane, uint, 64, 3); ++VECT_VAR_DECL_INIT(buffer_vld3_lane, poly, 8, 3); ++VECT_VAR_DECL_INIT(buffer_vld3_lane, poly, 16, 3); ++VECT_VAR_DECL_INIT(buffer_vld3_lane, float, 32, 3); ++ ++/* Input buffers for vld4_lane */ ++VECT_VAR_DECL_INIT(buffer_vld4_lane, int, 8, 4); ++VECT_VAR_DECL_INIT(buffer_vld4_lane, int, 16, 4); ++VECT_VAR_DECL_INIT(buffer_vld4_lane, int, 32, 4); ++VECT_VAR_DECL_INIT(buffer_vld4_lane, int, 64, 4); ++VECT_VAR_DECL_INIT(buffer_vld4_lane, uint, 8, 4); ++VECT_VAR_DECL_INIT(buffer_vld4_lane, uint, 16, 4); ++VECT_VAR_DECL_INIT(buffer_vld4_lane, uint, 32, 4); ++VECT_VAR_DECL_INIT(buffer_vld4_lane, uint, 64, 4); ++VECT_VAR_DECL_INIT(buffer_vld4_lane, poly, 8, 4); ++VECT_VAR_DECL_INIT(buffer_vld4_lane, poly, 16, 4); ++VECT_VAR_DECL_INIT(buffer_vld4_lane, float, 32, 4); ++ ++void exec_vldX_lane (void) ++{ ++ /* In this case, input variables are arrays of vectors. */ ++#define DECL_VLDX_LANE(T1, W, N, X) \ ++ VECT_ARRAY_TYPE(T1, W, N, X) VECT_ARRAY_VAR(vector, T1, W, N, X); \ ++ VECT_ARRAY_TYPE(T1, W, N, X) VECT_ARRAY_VAR(vector_src, T1, W, N, X); \ ++ VECT_VAR_DECL(result_bis_##X, T1, W, N)[X * N] ++ ++ /* We need to use a temporary result buffer (result_bis), because ++ the one used for other tests is not large enough. A subset of the ++ result data is moved from result_bis to result, and it is this ++ subset which is used to check the actual behaviour. The next ++ macro enables to move another chunk of data from result_bis to ++ result. */ ++ /* We also use another extra input buffer (buffer_src), which we ++ fill with 0xAA, and which it used to load a vector from which we ++ read a given lane. */ ++#define TEST_VLDX_LANE(Q, T1, T2, W, N, X, L) \ ++ memset (VECT_VAR(buffer_src, T1, W, N), 0xAA, \ ++ sizeof(VECT_VAR(buffer_src, T1, W, N))); \ ++ \ ++ VECT_ARRAY_VAR(vector_src, T1, W, N, X) = \ ++ vld##X##Q##_##T2##W(VECT_VAR(buffer_src, T1, W, N)); \ ++ \ ++ VECT_ARRAY_VAR(vector, T1, W, N, X) = \ ++ /* Use dedicated init buffer, of size. X */ \ ++ vld##X##Q##_lane_##T2##W(VECT_VAR(buffer_vld##X##_lane, T1, W, X), \ ++ VECT_ARRAY_VAR(vector_src, T1, W, N, X), \ ++ L); \ ++ vst##X##Q##_##T2##W(VECT_VAR(result_bis_##X, T1, W, N), \ ++ VECT_ARRAY_VAR(vector, T1, W, N, X)); \ ++ memcpy(VECT_VAR(result, T1, W, N), VECT_VAR(result_bis_##X, T1, W, N), \ ++ sizeof(VECT_VAR(result, T1, W, N))) ++ ++ /* Overwrite "result" with the contents of "result_bis"[Y]. */ ++#define TEST_EXTRA_CHUNK(T1, W, N, X, Y) \ ++ memcpy(VECT_VAR(result, T1, W, N), \ ++ &(VECT_VAR(result_bis_##X, T1, W, N)[Y*N]), \ ++ sizeof(VECT_VAR(result, T1, W, N))); ++ ++ /* We need all variants in 64 bits, but there is no 64x2 variant. */ ++#define DECL_ALL_VLDX_LANE(X) \ ++ DECL_VLDX_LANE(int, 8, 8, X); \ ++ DECL_VLDX_LANE(int, 16, 4, X); \ ++ DECL_VLDX_LANE(int, 32, 2, X); \ ++ DECL_VLDX_LANE(uint, 8, 8, X); \ ++ DECL_VLDX_LANE(uint, 16, 4, X); \ ++ DECL_VLDX_LANE(uint, 32, 2, X); \ ++ DECL_VLDX_LANE(poly, 8, 8, X); \ ++ DECL_VLDX_LANE(poly, 16, 4, X); \ ++ DECL_VLDX_LANE(int, 16, 8, X); \ ++ DECL_VLDX_LANE(int, 32, 4, X); \ ++ DECL_VLDX_LANE(uint, 16, 8, X); \ ++ DECL_VLDX_LANE(uint, 32, 4, X); \ ++ DECL_VLDX_LANE(poly, 16, 8, X); \ ++ DECL_VLDX_LANE(float, 32, 2, X); \ ++ DECL_VLDX_LANE(float, 32, 4, X) ++ ++ /* Add some padding to try to catch out of bound accesses. */ ++#define ARRAY1(V, T, W, N) VECT_VAR_DECL(V,T,W,N)[1]={42} ++#define DUMMY_ARRAY(V, T, W, N, L) \ ++ VECT_VAR_DECL(V,T,W,N)[N*L]={0}; \ ++ ARRAY1(V##_pad,T,W,N) ++ ++ /* Use the same lanes regardless of the size of the array (X), for ++ simplicity. */ ++#define TEST_ALL_VLDX_LANE(X) \ ++ TEST_VLDX_LANE(, int, s, 8, 8, X, 7); \ ++ TEST_VLDX_LANE(, int, s, 16, 4, X, 2); \ ++ TEST_VLDX_LANE(, int, s, 32, 2, X, 0); \ ++ TEST_VLDX_LANE(, uint, u, 8, 8, X, 4); \ ++ TEST_VLDX_LANE(, uint, u, 16, 4, X, 3); \ ++ TEST_VLDX_LANE(, uint, u, 32, 2, X, 1); \ ++ TEST_VLDX_LANE(, poly, p, 8, 8, X, 4); \ ++ TEST_VLDX_LANE(, poly, p, 16, 4, X, 3); \ ++ TEST_VLDX_LANE(q, int, s, 16, 8, X, 6); \ ++ TEST_VLDX_LANE(q, int, s, 32, 4, X, 2); \ ++ TEST_VLDX_LANE(q, uint, u, 16, 8, X, 5); \ ++ TEST_VLDX_LANE(q, uint, u, 32, 4, X, 0); \ ++ TEST_VLDX_LANE(q, poly, p, 16, 8, X, 5); \ ++ TEST_VLDX_LANE(, float, f, 32, 2, X, 0); \ ++ TEST_VLDX_LANE(q, float, f, 32, 4, X, 2) ++ ++#define TEST_ALL_EXTRA_CHUNKS(X, Y) \ ++ TEST_EXTRA_CHUNK(int, 8, 8, X, Y); \ ++ TEST_EXTRA_CHUNK(int, 16, 4, X, Y); \ ++ TEST_EXTRA_CHUNK(int, 32, 2, X, Y); \ ++ TEST_EXTRA_CHUNK(uint, 8, 8, X, Y); \ ++ TEST_EXTRA_CHUNK(uint, 16, 4, X, Y); \ ++ TEST_EXTRA_CHUNK(uint, 32, 2, X, Y); \ ++ TEST_EXTRA_CHUNK(poly, 8, 8, X, Y); \ ++ TEST_EXTRA_CHUNK(poly, 16, 4, X, Y); \ ++ TEST_EXTRA_CHUNK(int, 16, 8, X, Y); \ ++ TEST_EXTRA_CHUNK(int, 32, 4, X, Y); \ ++ TEST_EXTRA_CHUNK(uint, 16, 8, X, Y); \ ++ TEST_EXTRA_CHUNK(uint, 32, 4, X, Y); \ ++ TEST_EXTRA_CHUNK(poly, 16, 8, X, Y); \ ++ TEST_EXTRA_CHUNK(float, 32, 2, X, Y); \ ++ TEST_EXTRA_CHUNK(float, 32, 4, X, Y) ++ ++ /* Declare the temporary buffers / variables. */ ++ DECL_ALL_VLDX_LANE(2); ++ DECL_ALL_VLDX_LANE(3); ++ DECL_ALL_VLDX_LANE(4); ++ ++ /* Define dummy input arrays, large enough for x4 vectors. */ ++ DUMMY_ARRAY(buffer_src, int, 8, 8, 4); ++ DUMMY_ARRAY(buffer_src, int, 16, 4, 4); ++ DUMMY_ARRAY(buffer_src, int, 32, 2, 4); ++ DUMMY_ARRAY(buffer_src, uint, 8, 8, 4); ++ DUMMY_ARRAY(buffer_src, uint, 16, 4, 4); ++ DUMMY_ARRAY(buffer_src, uint, 32, 2, 4); ++ DUMMY_ARRAY(buffer_src, poly, 8, 8, 4); ++ DUMMY_ARRAY(buffer_src, poly, 16, 4, 4); ++ DUMMY_ARRAY(buffer_src, int, 16, 8, 4); ++ DUMMY_ARRAY(buffer_src, int, 32, 4, 4); ++ DUMMY_ARRAY(buffer_src, uint, 16, 8, 4); ++ DUMMY_ARRAY(buffer_src, uint, 32, 4, 4); ++ DUMMY_ARRAY(buffer_src, poly, 16, 8, 4); ++ DUMMY_ARRAY(buffer_src, float, 32, 2, 4); ++ DUMMY_ARRAY(buffer_src, float, 32, 4, 4); ++ ++ /* Check vld2_lane/vld2q_lane. */ ++ clean_results (); ++#define TEST_MSG "VLD2_LANE/VLD2Q_LANE" ++ TEST_ALL_VLDX_LANE(2); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld2_0, " chunk 0"); ++ ++ TEST_ALL_EXTRA_CHUNKS(2, 1); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld2_1, " chunk 1"); ++ ++ /* Check vld3_lane/vld3q_lane. */ ++ clean_results (); ++#undef TEST_MSG ++#define TEST_MSG "VLD3_LANE/VLD3Q_LANE" ++ TEST_ALL_VLDX_LANE(3); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld3_0, " chunk 0"); ++ ++ TEST_ALL_EXTRA_CHUNKS(3, 1); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld3_1, " chunk 1"); ++ ++ TEST_ALL_EXTRA_CHUNKS(3, 2); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld3_2, " chunk 2"); ++ ++ /* Check vld4_lane/vld4q_lane. */ ++ clean_results (); ++#undef TEST_MSG ++#define TEST_MSG "VLD4_LANE/VLD4Q_LANE" ++ TEST_ALL_VLDX_LANE(4); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld4_0, " chunk 0"); ++ ++ TEST_ALL_EXTRA_CHUNKS(4, 1); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld4_1, " chunk 1"); ++ TEST_ALL_EXTRA_CHUNKS(4, 2); ++ ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld4_2, " chunk 2"); ++ ++ TEST_ALL_EXTRA_CHUNKS(4, 3); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld4_3, " chunk 3"); ++} ++ ++int main (void) ++{ ++ exec_vldX_lane (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlX_lane.inc ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlX_lane.inc +@@ -0,0 +1,100 @@ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++#define DECL_VMLX_LANE(VAR) \ ++ DECL_VARIABLE(VAR, int, 16, 4); \ ++ DECL_VARIABLE(VAR, int, 32, 2); \ ++ DECL_VARIABLE(VAR, uint, 16, 4); \ ++ DECL_VARIABLE(VAR, uint, 32, 2); \ ++ DECL_VARIABLE(VAR, float, 32, 2); \ ++ DECL_VARIABLE(VAR, int, 16, 8); \ ++ DECL_VARIABLE(VAR, int, 32, 4); \ ++ DECL_VARIABLE(VAR, uint, 16, 8); \ ++ DECL_VARIABLE(VAR, uint, 32, 4); \ ++ DECL_VARIABLE(VAR, float, 32, 4) ++ ++ /* vector_res = vmlx_lane(vector, vector2, vector3, lane), ++ then store the result. */ ++#define TEST_VMLX_LANE1(INSN, Q, T1, T2, W, N, N2, L) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ INSN##Q##_lane_##T2##W(VECT_VAR(vector, T1, W, N), \ ++ VECT_VAR(vector2, T1, W, N), \ ++ VECT_VAR(vector3, T1, W, N2), \ ++ L); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \ ++ VECT_VAR(vector_res, T1, W, N)) ++ ++#define TEST_VMLX_LANE(INSN, Q, T1, T2, W, N, N2, V) \ ++ TEST_VMLX_LANE1(INSN, Q, T1, T2, W, N, N2, V) ++ ++ DECL_VMLX_LANE(vector); ++ DECL_VMLX_LANE(vector2); ++ DECL_VMLX_LANE(vector_res); ++ ++ DECL_VARIABLE(vector3, int, 16, 4); ++ DECL_VARIABLE(vector3, int, 32, 2); ++ DECL_VARIABLE(vector3, uint, 16, 4); ++ DECL_VARIABLE(vector3, uint, 32, 2); ++ DECL_VARIABLE(vector3, float, 32, 2); ++ ++ clean_results (); ++ ++ VLOAD(vector, buffer, , int, s, 16, 4); ++ VLOAD(vector, buffer, , int, s, 32, 2); ++ VLOAD(vector, buffer, , uint, u, 16, 4); ++ VLOAD(vector, buffer, , uint, u, 32, 2); ++ VLOAD(vector, buffer, q, int, s, 16, 8); ++ VLOAD(vector, buffer, q, int, s, 32, 4); ++ VLOAD(vector, buffer, q, uint, u, 16, 8); ++ VLOAD(vector, buffer, q, uint, u, 32, 4); ++ VLOAD(vector, buffer, , float, f, 32, 2); ++ VLOAD(vector, buffer, q, float, f, 32, 4); ++ ++ VDUP(vector2, , int, s, 16, 4, 0x55); ++ VDUP(vector2, , int, s, 32, 2, 0x55); ++ VDUP(vector2, , uint, u, 16, 4, 0x55); ++ VDUP(vector2, , uint, u, 32, 2, 0x55); ++ VDUP(vector2, , float, f, 32, 2, 55.3f); ++ VDUP(vector2, q, int, s, 16, 8, 0x55); ++ VDUP(vector2, q, int, s, 32, 4, 0x55); ++ VDUP(vector2, q, uint, u, 16, 8, 0x55); ++ VDUP(vector2, q, uint, u, 32, 4, 0x55); ++ VDUP(vector2, q, float, f, 32, 4, 55.8f); ++ ++ VDUP(vector3, , int, s, 16, 4, 0xBB); ++ VDUP(vector3, , int, s, 32, 2, 0xBB); ++ VDUP(vector3, , uint, u, 16, 4, 0xBB); ++ VDUP(vector3, , uint, u, 32, 2, 0xBB); ++ VDUP(vector3, , float, f, 32, 2, 11.34f); ++ ++ /* Choose lane arbitrarily. */ ++ TEST_VMLX_LANE(INSN_NAME, , int, s, 16, 4, 4, 2); ++ TEST_VMLX_LANE(INSN_NAME, , int, s, 32, 2, 2, 1); ++ TEST_VMLX_LANE(INSN_NAME, , uint, u, 16, 4, 4, 2); ++ TEST_VMLX_LANE(INSN_NAME, , uint, u, 32, 2, 2, 1); ++ TEST_VMLX_LANE(INSN_NAME, , float, f, 32, 2, 2, 1); ++ TEST_VMLX_LANE(INSN_NAME, q, int, s, 16, 8, 4, 3); ++ TEST_VMLX_LANE(INSN_NAME, q, int, s, 32, 4, 2, 1); ++ TEST_VMLX_LANE(INSN_NAME, q, uint, u, 16, 8, 4, 2); ++ TEST_VMLX_LANE(INSN_NAME, q, uint, u, 32, 4, 2, 1); ++ TEST_VMLX_LANE(INSN_NAME, q, float, f, 32, 4, 2, 1); ++ ++ CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, ""); ++ CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, ""); ++ CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected, ""); ++ CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, ""); ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, ""); ++ CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected, ""); ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vldX.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vldX.c +@@ -0,0 +1,692 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++ ++/* vld2/chunk 0. */ ++VECT_VAR_DECL(expected_vld2_0,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected_vld2_0,int,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld2_0,int,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected_vld2_0,int,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected_vld2_0,uint,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected_vld2_0,uint,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld2_0,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected_vld2_0,uint,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected_vld2_0,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected_vld2_0,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld2_0,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 }; ++VECT_VAR_DECL(expected_vld2_0,int,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7, ++ 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected_vld2_0,int,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3, ++ 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected_vld2_0,int,32,4) [] = { 0xfffffff0, 0xfffffff1, ++ 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected_vld2_0,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld2_0,uint,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7, ++ 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected_vld2_0,uint,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3, ++ 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected_vld2_0,uint,32,4) [] = { 0xfffffff0, 0xfffffff1, ++ 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected_vld2_0,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld2_0,poly,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7, ++ 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected_vld2_0,poly,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3, ++ 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected_vld2_0,hfloat,32,4) [] = { 0xc1800000, 0xc1700000, ++ 0xc1600000, 0xc1500000 }; ++ ++/* vld2/chunk 1. */ ++VECT_VAR_DECL(expected_vld2_1,int,8,8) [] = { 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected_vld2_1,int,16,4) [] = { 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected_vld2_1,int,32,2) [] = { 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected_vld2_1,int,64,1) [] = { 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected_vld2_1,uint,8,8) [] = { 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected_vld2_1,uint,16,4) [] = { 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected_vld2_1,uint,32,2) [] = { 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected_vld2_1,uint,64,1) [] = { 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected_vld2_1,poly,8,8) [] = { 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected_vld2_1,poly,16,4) [] = { 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected_vld2_1,hfloat,32,2) [] = { 0xc1600000, 0xc1500000 }; ++VECT_VAR_DECL(expected_vld2_1,int,8,16) [] = { 0x0, 0x1, 0x2, 0x3, ++ 0x4, 0x5, 0x6, 0x7, ++ 0x8, 0x9, 0xa, 0xb, ++ 0xc, 0xd, 0xe, 0xf }; ++VECT_VAR_DECL(expected_vld2_1,int,16,8) [] = { 0xfff8, 0xfff9, 0xfffa, 0xfffb, ++ 0xfffc, 0xfffd, 0xfffe, 0xffff }; ++VECT_VAR_DECL(expected_vld2_1,int,32,4) [] = { 0xfffffff4, 0xfffffff5, ++ 0xfffffff6, 0xfffffff7 }; ++VECT_VAR_DECL(expected_vld2_1,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld2_1,uint,8,16) [] = { 0x0, 0x1, 0x2, 0x3, ++ 0x4, 0x5, 0x6, 0x7, ++ 0x8, 0x9, 0xa, 0xb, ++ 0xc, 0xd, 0xe, 0xf }; ++VECT_VAR_DECL(expected_vld2_1,uint,16,8) [] = { 0xfff8, 0xfff9, 0xfffa, 0xfffb, ++ 0xfffc, 0xfffd, 0xfffe, 0xffff }; ++VECT_VAR_DECL(expected_vld2_1,uint,32,4) [] = { 0xfffffff4, 0xfffffff5, ++ 0xfffffff6, 0xfffffff7 }; ++VECT_VAR_DECL(expected_vld2_1,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld2_1,poly,8,16) [] = { 0x0, 0x1, 0x2, 0x3, ++ 0x4, 0x5, 0x6, 0x7, ++ 0x8, 0x9, 0xa, 0xb, ++ 0xc, 0xd, 0xe, 0xf }; ++VECT_VAR_DECL(expected_vld2_1,poly,16,8) [] = { 0xfff8, 0xfff9, 0xfffa, 0xfffb, ++ 0xfffc, 0xfffd, 0xfffe, 0xffff }; ++VECT_VAR_DECL(expected_vld2_1,hfloat,32,4) [] = { 0xc1400000, 0xc1300000, ++ 0xc1200000, 0xc1100000 }; ++ ++/* vld3/chunk 0. */ ++VECT_VAR_DECL(expected_vld3_0,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected_vld3_0,int,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld3_0,int,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected_vld3_0,int,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected_vld3_0,uint,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected_vld3_0,uint,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld3_0,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected_vld3_0,uint,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected_vld3_0,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected_vld3_0,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld3_0,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 }; ++VECT_VAR_DECL(expected_vld3_0,int,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7, ++ 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected_vld3_0,int,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3, ++ 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected_vld3_0,int,32,4) [] = { 0xfffffff0, 0xfffffff1, ++ 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected_vld3_0,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld3_0,uint,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7, ++ 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected_vld3_0,uint,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3, ++ 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected_vld3_0,uint,32,4) [] = { 0xfffffff0, 0xfffffff1, ++ 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected_vld3_0,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld3_0,poly,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7, ++ 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected_vld3_0,poly,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3, ++ 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected_vld3_0,hfloat,32,4) [] = { 0xc1800000, 0xc1700000, ++ 0xc1600000, 0xc1500000 }; ++ ++/* vld3/chunk 1. */ ++VECT_VAR_DECL(expected_vld3_1,int,8,8) [] = { 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected_vld3_1,int,16,4) [] = { 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected_vld3_1,int,32,2) [] = { 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected_vld3_1,int,64,1) [] = { 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected_vld3_1,uint,8,8) [] = { 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected_vld3_1,uint,16,4) [] = { 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected_vld3_1,uint,32,2) [] = { 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected_vld3_1,uint,64,1) [] = { 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected_vld3_1,poly,8,8) [] = { 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected_vld3_1,poly,16,4) [] = { 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected_vld3_1,hfloat,32,2) [] = { 0xc1600000, 0xc1500000 }; ++VECT_VAR_DECL(expected_vld3_1,int,8,16) [] = { 0x0, 0x1, 0x2, 0x3, ++ 0x4, 0x5, 0x6, 0x7, ++ 0x8, 0x9, 0xa, 0xb, ++ 0xc, 0xd, 0xe, 0xf }; ++VECT_VAR_DECL(expected_vld3_1,int,16,8) [] = { 0xfff8, 0xfff9, 0xfffa, 0xfffb, ++ 0xfffc, 0xfffd, 0xfffe, 0xffff }; ++VECT_VAR_DECL(expected_vld3_1,int,32,4) [] = { 0xfffffff4, 0xfffffff5, ++ 0xfffffff6, 0xfffffff7 }; ++VECT_VAR_DECL(expected_vld3_1,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld3_1,uint,8,16) [] = { 0x0, 0x1, 0x2, 0x3, ++ 0x4, 0x5, 0x6, 0x7, ++ 0x8, 0x9, 0xa, 0xb, ++ 0xc, 0xd, 0xe, 0xf }; ++VECT_VAR_DECL(expected_vld3_1,uint,16,8) [] = { 0xfff8, 0xfff9, 0xfffa, 0xfffb, ++ 0xfffc, 0xfffd, 0xfffe, 0xffff }; ++VECT_VAR_DECL(expected_vld3_1,uint,32,4) [] = { 0xfffffff4, 0xfffffff5, ++ 0xfffffff6, 0xfffffff7 }; ++VECT_VAR_DECL(expected_vld3_1,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld3_1,poly,8,16) [] = { 0x0, 0x1, 0x2, 0x3, ++ 0x4, 0x5, 0x6, 0x7, ++ 0x8, 0x9, 0xa, 0xb, ++ 0xc, 0xd, 0xe, 0xf }; ++VECT_VAR_DECL(expected_vld3_1,poly,16,8) [] = { 0xfff8, 0xfff9, 0xfffa, 0xfffb, ++ 0xfffc, 0xfffd, 0xfffe, 0xffff }; ++VECT_VAR_DECL(expected_vld3_1,hfloat,32,4) [] = { 0xc1400000, 0xc1300000, ++ 0xc1200000, 0xc1100000 }; ++ ++/* vld3/chunk 2. */ ++VECT_VAR_DECL(expected_vld3_2,int,8,8) [] = { 0x0, 0x1, 0x2, 0x3, ++ 0x4, 0x5, 0x6, 0x7 }; ++VECT_VAR_DECL(expected_vld3_2,int,16,4) [] = { 0xfff8, 0xfff9, ++ 0xfffa, 0xfffb }; ++VECT_VAR_DECL(expected_vld3_2,int,32,2) [] = { 0xfffffff4, 0xfffffff5 }; ++VECT_VAR_DECL(expected_vld3_2,int,64,1) [] = { 0xfffffffffffffff2 }; ++VECT_VAR_DECL(expected_vld3_2,uint,8,8) [] = { 0x0, 0x1, 0x2, 0x3, ++ 0x4, 0x5, 0x6, 0x7 }; ++VECT_VAR_DECL(expected_vld3_2,uint,16,4) [] = { 0xfff8, 0xfff9, ++ 0xfffa, 0xfffb }; ++VECT_VAR_DECL(expected_vld3_2,uint,32,2) [] = { 0xfffffff4, 0xfffffff5 }; ++VECT_VAR_DECL(expected_vld3_2,uint,64,1) [] = { 0xfffffffffffffff2 }; ++VECT_VAR_DECL(expected_vld3_2,poly,8,8) [] = { 0x0, 0x1, 0x2, 0x3, ++ 0x4, 0x5, 0x6, 0x7 }; ++VECT_VAR_DECL(expected_vld3_2,poly,16,4) [] = { 0xfff8, 0xfff9, ++ 0xfffa, 0xfffb }; ++VECT_VAR_DECL(expected_vld3_2,hfloat,32,2) [] = { 0xc1400000, 0xc1300000 }; ++VECT_VAR_DECL(expected_vld3_2,int,8,16) [] = { 0x10, 0x11, 0x12, 0x13, ++ 0x14, 0x15, 0x16, 0x17, ++ 0x18, 0x19, 0x1a, 0x1b, ++ 0x1c, 0x1d, 0x1e, 0x1f }; ++VECT_VAR_DECL(expected_vld3_2,int,16,8) [] = { 0x0, 0x1, 0x2, 0x3, ++ 0x4, 0x5, 0x6, 0x7 }; ++VECT_VAR_DECL(expected_vld3_2,int,32,4) [] = { 0xfffffff8, 0xfffffff9, ++ 0xfffffffa, 0xfffffffb }; ++VECT_VAR_DECL(expected_vld3_2,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld3_2,uint,8,16) [] = { 0x10, 0x11, 0x12, 0x13, ++ 0x14, 0x15, 0x16, 0x17, ++ 0x18, 0x19, 0x1a, 0x1b, ++ 0x1c, 0x1d, 0x1e, 0x1f }; ++VECT_VAR_DECL(expected_vld3_2,uint,16,8) [] = { 0x0, 0x1, 0x2, 0x3, ++ 0x4, 0x5, 0x6, 0x7 }; ++VECT_VAR_DECL(expected_vld3_2,uint,32,4) [] = { 0xfffffff8, 0xfffffff9, ++ 0xfffffffa, 0xfffffffb }; ++VECT_VAR_DECL(expected_vld3_2,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld3_2,poly,8,16) [] = { 0x10, 0x11, 0x12, 0x13, ++ 0x14, 0x15, 0x16, 0x17, ++ 0x18, 0x19, 0x1a, 0x1b, ++ 0x1c, 0x1d, 0x1e, 0x1f }; ++VECT_VAR_DECL(expected_vld3_2,poly,16,8) [] = { 0x0, 0x1, 0x2, 0x3, ++ 0x4, 0x5, 0x6, 0x7 }; ++VECT_VAR_DECL(expected_vld3_2,hfloat,32,4) [] = { 0xc1000000, 0xc0e00000, ++ 0xc0c00000, 0xc0a00000 }; ++ ++/* vld4/chunk 0. */ ++VECT_VAR_DECL(expected_vld4_0,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected_vld4_0,int,16,4) [] = { 0xfff0, 0xfff1, ++ 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld4_0,int,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected_vld4_0,int,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected_vld4_0,uint,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected_vld4_0,uint,16,4) [] = { 0xfff0, 0xfff1, ++ 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld4_0,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected_vld4_0,uint,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected_vld4_0,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected_vld4_0,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_vld4_0,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 }; ++VECT_VAR_DECL(expected_vld4_0,int,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7, ++ 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected_vld4_0,int,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3, ++ 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected_vld4_0,int,32,4) [] = { 0xfffffff0, 0xfffffff1, ++ 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected_vld4_0,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_0,uint,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7, ++ 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected_vld4_0,uint,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3, ++ 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected_vld4_0,uint,32,4) [] = { 0xfffffff0, 0xfffffff1, ++ 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected_vld4_0,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_0,poly,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7, ++ 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected_vld4_0,poly,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3, ++ 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected_vld4_0,hfloat,32,4) [] = { 0xc1800000, 0xc1700000, ++ 0xc1600000, 0xc1500000 }; ++ ++/* vld4/chunk 1. */ ++VECT_VAR_DECL(expected_vld4_1,int,8,8) [] = { 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected_vld4_1,int,16,4) [] = { 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected_vld4_1,int,32,2) [] = { 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected_vld4_1,int,64,1) [] = { 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected_vld4_1,uint,8,8) [] = { 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected_vld4_1,uint,16,4) [] = { 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected_vld4_1,uint,32,2) [] = { 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected_vld4_1,uint,64,1) [] = { 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected_vld4_1,poly,8,8) [] = { 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected_vld4_1,poly,16,4) [] = { 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected_vld4_1,hfloat,32,2) [] = { 0xc1600000, 0xc1500000 }; ++VECT_VAR_DECL(expected_vld4_1,int,8,16) [] = { 0x0, 0x1, 0x2, 0x3, ++ 0x4, 0x5, 0x6, 0x7, ++ 0x8, 0x9, 0xa, 0xb, ++ 0xc, 0xd, 0xe, 0xf }; ++VECT_VAR_DECL(expected_vld4_1,int,16,8) [] = { 0xfff8, 0xfff9, 0xfffa, 0xfffb, ++ 0xfffc, 0xfffd, 0xfffe, 0xffff }; ++VECT_VAR_DECL(expected_vld4_1,int,32,4) [] = { 0xfffffff4, 0xfffffff5, ++ 0xfffffff6, 0xfffffff7 }; ++VECT_VAR_DECL(expected_vld4_1,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_1,uint,8,16) [] = { 0x0, 0x1, 0x2, 0x3, ++ 0x4, 0x5, 0x6, 0x7, ++ 0x8, 0x9, 0xa, 0xb, ++ 0xc, 0xd, 0xe, 0xf }; ++VECT_VAR_DECL(expected_vld4_1,uint,16,8) [] = { 0xfff8, 0xfff9, 0xfffa, 0xfffb, ++ 0xfffc, 0xfffd, 0xfffe, 0xffff }; ++VECT_VAR_DECL(expected_vld4_1,uint,32,4) [] = { 0xfffffff4, 0xfffffff5, ++ 0xfffffff6, 0xfffffff7 }; ++VECT_VAR_DECL(expected_vld4_1,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_1,poly,8,16) [] = { 0x0, 0x1, 0x2, 0x3, ++ 0x4, 0x5, 0x6, 0x7, ++ 0x8, 0x9, 0xa, 0xb, ++ 0xc, 0xd, 0xe, 0xf }; ++VECT_VAR_DECL(expected_vld4_1,poly,16,8) [] = { 0xfff8, 0xfff9, 0xfffa, 0xfffb, ++ 0xfffc, 0xfffd, 0xfffe, 0xffff }; ++VECT_VAR_DECL(expected_vld4_1,hfloat,32,4) [] = { 0xc1400000, 0xc1300000, ++ 0xc1200000, 0xc1100000 }; ++ ++/* vld4/chunk 2. */ ++VECT_VAR_DECL(expected_vld4_2,int,8,8) [] = { 0x0, 0x1, 0x2, 0x3, ++ 0x4, 0x5, 0x6, 0x7 }; ++VECT_VAR_DECL(expected_vld4_2,int,16,4) [] = { 0xfff8, 0xfff9, 0xfffa, 0xfffb }; ++VECT_VAR_DECL(expected_vld4_2,int,32,2) [] = { 0xfffffff4, 0xfffffff5 }; ++VECT_VAR_DECL(expected_vld4_2,int,64,1) [] = { 0xfffffffffffffff2 }; ++VECT_VAR_DECL(expected_vld4_2,uint,8,8) [] = { 0x0, 0x1, 0x2, 0x3, ++ 0x4, 0x5, 0x6, 0x7 }; ++VECT_VAR_DECL(expected_vld4_2,uint,16,4) [] = { 0xfff8, 0xfff9, 0xfffa, 0xfffb }; ++VECT_VAR_DECL(expected_vld4_2,uint,32,2) [] = { 0xfffffff4, 0xfffffff5 }; ++VECT_VAR_DECL(expected_vld4_2,uint,64,1) [] = { 0xfffffffffffffff2 }; ++VECT_VAR_DECL(expected_vld4_2,poly,8,8) [] = { 0x0, 0x1, 0x2, 0x3, ++ 0x4, 0x5, 0x6, 0x7 }; ++VECT_VAR_DECL(expected_vld4_2,poly,16,4) [] = { 0xfff8, 0xfff9, 0xfffa, 0xfffb }; ++VECT_VAR_DECL(expected_vld4_2,hfloat,32,2) [] = { 0xc1400000, 0xc1300000 }; ++VECT_VAR_DECL(expected_vld4_2,int,8,16) [] = { 0x10, 0x11, 0x12, 0x13, ++ 0x14, 0x15, 0x16, 0x17, ++ 0x18, 0x19, 0x1a, 0x1b, ++ 0x1c, 0x1d, 0x1e, 0x1f }; ++VECT_VAR_DECL(expected_vld4_2,int,16,8) [] = { 0x0, 0x1, 0x2, 0x3, ++ 0x4, 0x5, 0x6, 0x7 }; ++VECT_VAR_DECL(expected_vld4_2,int,32,4) [] = { 0xfffffff8, 0xfffffff9, ++ 0xfffffffa, 0xfffffffb }; ++VECT_VAR_DECL(expected_vld4_2,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_2,uint,8,16) [] = { 0x10, 0x11, 0x12, 0x13, ++ 0x14, 0x15, 0x16, 0x17, ++ 0x18, 0x19, 0x1a, 0x1b, ++ 0x1c, 0x1d, 0x1e, 0x1f }; ++VECT_VAR_DECL(expected_vld4_2,uint,16,8) [] = { 0x0, 0x1, 0x2, 0x3, ++ 0x4, 0x5, 0x6, 0x7 }; ++VECT_VAR_DECL(expected_vld4_2,uint,32,4) [] = { 0xfffffff8, 0xfffffff9, ++ 0xfffffffa, 0xfffffffb }; ++VECT_VAR_DECL(expected_vld4_2,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_2,poly,8,16) [] = { 0x10, 0x11, 0x12, 0x13, ++ 0x14, 0x15, 0x16, 0x17, ++ 0x18, 0x19, 0x1a, 0x1b, ++ 0x1c, 0x1d, 0x1e, 0x1f }; ++VECT_VAR_DECL(expected_vld4_2,poly,16,8) [] = { 0x0, 0x1, 0x2, 0x3, ++ 0x4, 0x5, 0x6, 0x7 }; ++VECT_VAR_DECL(expected_vld4_2,hfloat,32,4) [] = { 0xc1000000, 0xc0e00000, ++ 0xc0c00000, 0xc0a00000 }; ++ ++/* vld4/chunk 3. */ ++VECT_VAR_DECL(expected_vld4_3,int,8,8) [] = { 0x8, 0x9, 0xa, 0xb, ++ 0xc, 0xd, 0xe, 0xf }; ++VECT_VAR_DECL(expected_vld4_3,int,16,4) [] = { 0xfffc, 0xfffd, 0xfffe, 0xffff }; ++VECT_VAR_DECL(expected_vld4_3,int,32,2) [] = { 0xfffffff6, 0xfffffff7 }; ++VECT_VAR_DECL(expected_vld4_3,int,64,1) [] = { 0xfffffffffffffff3 }; ++VECT_VAR_DECL(expected_vld4_3,uint,8,8) [] = { 0x8, 0x9, 0xa, 0xb, ++ 0xc, 0xd, 0xe, 0xf }; ++VECT_VAR_DECL(expected_vld4_3,uint,16,4) [] = { 0xfffc, 0xfffd, 0xfffe, 0xffff }; ++VECT_VAR_DECL(expected_vld4_3,uint,32,2) [] = { 0xfffffff6, 0xfffffff7 }; ++VECT_VAR_DECL(expected_vld4_3,uint,64,1) [] = { 0xfffffffffffffff3 }; ++VECT_VAR_DECL(expected_vld4_3,poly,8,8) [] = { 0x8, 0x9, 0xa, 0xb, ++ 0xc, 0xd, 0xe, 0xf }; ++VECT_VAR_DECL(expected_vld4_3,poly,16,4) [] = { 0xfffc, 0xfffd, 0xfffe, 0xffff }; ++VECT_VAR_DECL(expected_vld4_3,hfloat,32,2) [] = { 0xc1200000, 0xc1100000 }; ++VECT_VAR_DECL(expected_vld4_3,int,8,16) [] = { 0x20, 0x21, 0x22, 0x23, ++ 0x24, 0x25, 0x26, 0x27, ++ 0x28, 0x29, 0x2a, 0x2b, ++ 0x2c, 0x2d, 0x2e, 0x2f }; ++VECT_VAR_DECL(expected_vld4_3,int,16,8) [] = { 0x8, 0x9, 0xa, 0xb, ++ 0xc, 0xd, 0xe, 0xf }; ++VECT_VAR_DECL(expected_vld4_3,int,32,4) [] = { 0xfffffffc, 0xfffffffd, ++ 0xfffffffe, 0xffffffff }; ++VECT_VAR_DECL(expected_vld4_3,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_3,uint,8,16) [] = { 0x20, 0x21, 0x22, 0x23, ++ 0x24, 0x25, 0x26, 0x27, ++ 0x28, 0x29, 0x2a, 0x2b, ++ 0x2c, 0x2d, 0x2e, 0x2f }; ++VECT_VAR_DECL(expected_vld4_3,uint,16,8) [] = { 0x8, 0x9, 0xa, 0xb, ++ 0xc, 0xd, 0xe, 0xf }; ++VECT_VAR_DECL(expected_vld4_3,uint,32,4) [] = { 0xfffffffc, 0xfffffffd, ++ 0xfffffffe, 0xffffffff }; ++VECT_VAR_DECL(expected_vld4_3,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_vld4_3,poly,8,16) [] = { 0x20, 0x21, 0x22, 0x23, ++ 0x24, 0x25, 0x26, 0x27, ++ 0x28, 0x29, 0x2a, 0x2b, ++ 0x2c, 0x2d, 0x2e, 0x2f }; ++VECT_VAR_DECL(expected_vld4_3,poly,16,8) [] = { 0x8, 0x9, 0xa, 0xb, ++ 0xc, 0xd, 0xe, 0xf }; ++VECT_VAR_DECL(expected_vld4_3,hfloat,32,4) [] = { 0xc0800000, 0xc0400000, ++ 0xc0000000, 0xbf800000 }; ++ ++void exec_vldX (void) ++{ ++ /* In this case, input variables are arrays of vectors. */ ++#define DECL_VLDX(T1, W, N, X) \ ++ VECT_ARRAY_TYPE(T1, W, N, X) VECT_ARRAY_VAR(vector, T1, W, N, X); \ ++ VECT_VAR_DECL(result_bis_##X, T1, W, N)[X * N] ++ ++ /* We need to use a temporary result buffer (result_bis), because ++ the one used for other tests is not large enough. A subset of the ++ result data is moved from result_bis to result, and it is this ++ subset which is used to check the actual behaviour. The next ++ macro enables to move another chunk of data from result_bis to ++ result. */ ++#define TEST_VLDX(Q, T1, T2, W, N, X) \ ++ VECT_ARRAY_VAR(vector, T1, W, N, X) = \ ++ /* Use dedicated init buffer, of size X */ \ ++ vld##X##Q##_##T2##W(VECT_ARRAY_VAR(buffer_vld##X, T1, W, N, X)); \ ++ vst##X##Q##_##T2##W(VECT_VAR(result_bis_##X, T1, W, N), \ ++ VECT_ARRAY_VAR(vector, T1, W, N, X)); \ ++ memcpy(VECT_VAR(result, T1, W, N), VECT_VAR(result_bis_##X, T1, W, N), \ ++ sizeof(VECT_VAR(result, T1, W, N))); ++ ++ /* Overwrite "result" with the contents of "result_bis"[Y]. */ ++#define TEST_EXTRA_CHUNK(T1, W, N, X,Y) \ ++ memcpy(VECT_VAR(result, T1, W, N), \ ++ &(VECT_VAR(result_bis_##X, T1, W, N)[Y*N]), \ ++ sizeof(VECT_VAR(result, T1, W, N))); ++ ++ /* We need all variants in 64 bits, but there is no 64x2 variant. */ ++#define DECL_ALL_VLDX(X) \ ++ DECL_VLDX(int, 8, 8, X); \ ++ DECL_VLDX(int, 16, 4, X); \ ++ DECL_VLDX(int, 32, 2, X); \ ++ DECL_VLDX(int, 64, 1, X); \ ++ DECL_VLDX(uint, 8, 8, X); \ ++ DECL_VLDX(uint, 16, 4, X); \ ++ DECL_VLDX(uint, 32, 2, X); \ ++ DECL_VLDX(uint, 64, 1, X); \ ++ DECL_VLDX(poly, 8, 8, X); \ ++ DECL_VLDX(poly, 16, 4, X); \ ++ DECL_VLDX(float, 32, 2, X); \ ++ DECL_VLDX(int, 8, 16, X); \ ++ DECL_VLDX(int, 16, 8, X); \ ++ DECL_VLDX(int, 32, 4, X); \ ++ DECL_VLDX(uint, 8, 16, X); \ ++ DECL_VLDX(uint, 16, 8, X); \ ++ DECL_VLDX(uint, 32, 4, X); \ ++ DECL_VLDX(poly, 8, 16, X); \ ++ DECL_VLDX(poly, 16, 8, X); \ ++ DECL_VLDX(float, 32, 4, X) ++ ++#define TEST_ALL_VLDX(X) \ ++ TEST_VLDX(, int, s, 8, 8, X); \ ++ TEST_VLDX(, int, s, 16, 4, X); \ ++ TEST_VLDX(, int, s, 32, 2, X); \ ++ TEST_VLDX(, int, s, 64, 1, X); \ ++ TEST_VLDX(, uint, u, 8, 8, X); \ ++ TEST_VLDX(, uint, u, 16, 4, X); \ ++ TEST_VLDX(, uint, u, 32, 2, X); \ ++ TEST_VLDX(, uint, u, 64, 1, X); \ ++ TEST_VLDX(, poly, p, 8, 8, X); \ ++ TEST_VLDX(, poly, p, 16, 4, X); \ ++ TEST_VLDX(, float, f, 32, 2, X); \ ++ TEST_VLDX(q, int, s, 8, 16, X); \ ++ TEST_VLDX(q, int, s, 16, 8, X); \ ++ TEST_VLDX(q, int, s, 32, 4, X); \ ++ TEST_VLDX(q, uint, u, 8, 16, X); \ ++ TEST_VLDX(q, uint, u, 16, 8, X); \ ++ TEST_VLDX(q, uint, u, 32, 4, X); \ ++ TEST_VLDX(q, poly, p, 8, 16, X); \ ++ TEST_VLDX(q, poly, p, 16, 8, X); \ ++ TEST_VLDX(q, float, f, 32, 4, X) ++ ++#define TEST_ALL_EXTRA_CHUNKS(X, Y) \ ++ TEST_EXTRA_CHUNK(int, 8, 8, X, Y); \ ++ TEST_EXTRA_CHUNK(int, 16, 4, X, Y); \ ++ TEST_EXTRA_CHUNK(int, 32, 2, X, Y); \ ++ TEST_EXTRA_CHUNK(int, 64, 1, X, Y); \ ++ TEST_EXTRA_CHUNK(uint, 8, 8, X, Y); \ ++ TEST_EXTRA_CHUNK(uint, 16, 4, X, Y); \ ++ TEST_EXTRA_CHUNK(uint, 32, 2, X, Y); \ ++ TEST_EXTRA_CHUNK(uint, 64, 1, X, Y); \ ++ TEST_EXTRA_CHUNK(poly, 8, 8, X, Y); \ ++ TEST_EXTRA_CHUNK(poly, 16, 4, X, Y); \ ++ TEST_EXTRA_CHUNK(float, 32, 2, X, Y); \ ++ TEST_EXTRA_CHUNK(int, 8, 16, X, Y); \ ++ TEST_EXTRA_CHUNK(int, 16, 8, X, Y); \ ++ TEST_EXTRA_CHUNK(int, 32, 4, X, Y); \ ++ TEST_EXTRA_CHUNK(uint, 8, 16, X, Y); \ ++ TEST_EXTRA_CHUNK(uint, 16, 8, X, Y); \ ++ TEST_EXTRA_CHUNK(uint, 32, 4, X, Y); \ ++ TEST_EXTRA_CHUNK(poly, 8, 16, X, Y); \ ++ TEST_EXTRA_CHUNK(poly, 16, 8, X, Y); \ ++ TEST_EXTRA_CHUNK(float, 32, 4, X, Y) ++ ++ DECL_ALL_VLDX(2); ++ DECL_ALL_VLDX(3); ++ DECL_ALL_VLDX(4); ++ ++ /* Special input buffers of suitable size are needed for vld2/vld3/vld4. */ ++ /* Input buffers for vld2, 1 of each size */ ++ VECT_ARRAY_INIT2(buffer_vld2, int, 8, 8); ++ PAD(buffer_vld2_pad, int, 8, 8); ++ VECT_ARRAY_INIT2(buffer_vld2, int, 16, 4); ++ PAD(buffer_vld2_pad, int, 16, 4); ++ VECT_ARRAY_INIT2(buffer_vld2, int, 32, 2); ++ PAD(buffer_vld2_pad, int, 32, 2); ++ VECT_ARRAY_INIT2(buffer_vld2, int, 64, 1); ++ PAD(buffer_vld2_pad, int, 64, 1); ++ VECT_ARRAY_INIT2(buffer_vld2, uint, 8, 8); ++ PAD(buffer_vld2_pad, uint, 8, 8); ++ VECT_ARRAY_INIT2(buffer_vld2, uint, 16, 4); ++ PAD(buffer_vld2_pad, uint, 16, 4); ++ VECT_ARRAY_INIT2(buffer_vld2, uint, 32, 2); ++ PAD(buffer_vld2_pad, uint, 32, 2); ++ VECT_ARRAY_INIT2(buffer_vld2, uint, 64, 1); ++ PAD(buffer_vld2_pad, uint, 64, 1); ++ VECT_ARRAY_INIT2(buffer_vld2, poly, 8, 8); ++ PAD(buffer_vld2_pad, poly, 8, 8); ++ VECT_ARRAY_INIT2(buffer_vld2, poly, 16, 4); ++ PAD(buffer_vld2_pad, poly, 16, 4); ++ VECT_ARRAY_INIT2(buffer_vld2, float, 32, 2); ++ PAD(buffer_vld2_pad, float, 32, 2); ++ ++ VECT_ARRAY_INIT2(buffer_vld2, int, 8, 16); ++ PAD(buffer_vld2_pad, int, 8, 16); ++ VECT_ARRAY_INIT2(buffer_vld2, int, 16, 8); ++ PAD(buffer_vld2_pad, int, 16, 8); ++ VECT_ARRAY_INIT2(buffer_vld2, int, 32, 4); ++ PAD(buffer_vld2_pad, int, 32, 4); ++ VECT_ARRAY_INIT2(buffer_vld2, int, 64, 2); ++ PAD(buffer_vld2_pad, int, 64, 2); ++ VECT_ARRAY_INIT2(buffer_vld2, uint, 8, 16); ++ PAD(buffer_vld2_pad, uint, 8, 16); ++ VECT_ARRAY_INIT2(buffer_vld2, uint, 16, 8); ++ PAD(buffer_vld2_pad, uint, 16, 8); ++ VECT_ARRAY_INIT2(buffer_vld2, uint, 32, 4); ++ PAD(buffer_vld2_pad, uint, 32, 4); ++ VECT_ARRAY_INIT2(buffer_vld2, uint, 64, 2); ++ PAD(buffer_vld2_pad, uint, 64, 2); ++ VECT_ARRAY_INIT2(buffer_vld2, poly, 8, 16); ++ PAD(buffer_vld2_pad, poly, 8, 16); ++ VECT_ARRAY_INIT2(buffer_vld2, poly, 16, 8); ++ PAD(buffer_vld2_pad, poly, 16, 8); ++ VECT_ARRAY_INIT2(buffer_vld2, float, 32, 4); ++ PAD(buffer_vld2_pad, float, 32, 4); ++ ++ /* Input buffers for vld3, 1 of each size */ ++ VECT_ARRAY_INIT3(buffer_vld3, int, 8, 8); ++ PAD(buffer_vld3_pad, int, 8, 8); ++ VECT_ARRAY_INIT3(buffer_vld3, int, 16, 4); ++ PAD(buffer_vld3_pad, int, 16, 4); ++ VECT_ARRAY_INIT3(buffer_vld3, int, 32, 2); ++ PAD(buffer_vld3_pad, int, 32, 2); ++ VECT_ARRAY_INIT3(buffer_vld3, int, 64, 1); ++ PAD(buffer_vld3_pad, int, 64, 1); ++ VECT_ARRAY_INIT3(buffer_vld3, uint, 8, 8); ++ PAD(buffer_vld3_pad, uint, 8, 8); ++ VECT_ARRAY_INIT3(buffer_vld3, uint, 16, 4); ++ PAD(buffer_vld3_pad, uint, 16, 4); ++ VECT_ARRAY_INIT3(buffer_vld3, uint, 32, 2); ++ PAD(buffer_vld3_pad, uint, 32, 2); ++ VECT_ARRAY_INIT3(buffer_vld3, uint, 64, 1); ++ PAD(buffer_vld3_pad, uint, 64, 1); ++ VECT_ARRAY_INIT3(buffer_vld3, poly, 8, 8); ++ PAD(buffer_vld3_pad, poly, 8, 8); ++ VECT_ARRAY_INIT3(buffer_vld3, poly, 16, 4); ++ PAD(buffer_vld3_pad, poly, 16, 4); ++ VECT_ARRAY_INIT3(buffer_vld3, float, 32, 2); ++ PAD(buffer_vld3_pad, float, 32, 2); ++ ++ VECT_ARRAY_INIT3(buffer_vld3, int, 8, 16); ++ PAD(buffer_vld3_pad, int, 8, 16); ++ VECT_ARRAY_INIT3(buffer_vld3, int, 16, 8); ++ PAD(buffer_vld3_pad, int, 16, 8); ++ VECT_ARRAY_INIT3(buffer_vld3, int, 32, 4); ++ PAD(buffer_vld3_pad, int, 32, 4); ++ VECT_ARRAY_INIT3(buffer_vld3, int, 64, 2); ++ PAD(buffer_vld3_pad, int, 64, 2); ++ VECT_ARRAY_INIT3(buffer_vld3, uint, 8, 16); ++ PAD(buffer_vld3_pad, uint, 8, 16); ++ VECT_ARRAY_INIT3(buffer_vld3, uint, 16, 8); ++ PAD(buffer_vld3_pad, uint, 16, 8); ++ VECT_ARRAY_INIT3(buffer_vld3, uint, 32, 4); ++ PAD(buffer_vld3_pad, uint, 32, 4); ++ VECT_ARRAY_INIT3(buffer_vld3, uint, 64, 2); ++ PAD(buffer_vld3_pad, uint, 64, 2); ++ VECT_ARRAY_INIT3(buffer_vld3, poly, 8, 16); ++ PAD(buffer_vld3_pad, poly, 8, 16); ++ VECT_ARRAY_INIT3(buffer_vld3, poly, 16, 8); ++ PAD(buffer_vld3_pad, poly, 16, 8); ++ VECT_ARRAY_INIT3(buffer_vld3, float, 32, 4); ++ PAD(buffer_vld3_pad, float, 32, 4); ++ ++ /* Input buffers for vld4, 1 of each size */ ++ VECT_ARRAY_INIT4(buffer_vld4, int, 8, 8); ++ PAD(buffer_vld4_pad, int, 8, 8); ++ VECT_ARRAY_INIT4(buffer_vld4, int, 16, 4); ++ PAD(buffer_vld4_pad, int, 16, 4); ++ VECT_ARRAY_INIT4(buffer_vld4, int, 32, 2); ++ PAD(buffer_vld4_pad, int, 32, 2); ++ VECT_ARRAY_INIT4(buffer_vld4, int, 64, 1); ++ PAD(buffer_vld4_pad, int, 64, 1); ++ VECT_ARRAY_INIT4(buffer_vld4, uint, 8, 8); ++ PAD(buffer_vld4_pad, uint, 8, 8); ++ VECT_ARRAY_INIT4(buffer_vld4, uint, 16, 4); ++ PAD(buffer_vld4_pad, uint, 16, 4); ++ VECT_ARRAY_INIT4(buffer_vld4, uint, 32, 2); ++ PAD(buffer_vld4_pad, uint, 32, 2); ++ VECT_ARRAY_INIT4(buffer_vld4, uint, 64, 1); ++ PAD(buffer_vld4_pad, uint, 64, 1); ++ VECT_ARRAY_INIT4(buffer_vld4, poly, 8, 8); ++ PAD(buffer_vld4_pad, poly, 8, 8); ++ VECT_ARRAY_INIT4(buffer_vld4, poly, 16, 4); ++ PAD(buffer_vld4_pad, poly, 16, 4); ++ VECT_ARRAY_INIT4(buffer_vld4, float, 32, 2); ++ PAD(buffer_vld4_pad, float, 32, 2); ++ ++ VECT_ARRAY_INIT4(buffer_vld4, int, 8, 16); ++ PAD(buffer_vld4_pad, int, 8, 16); ++ VECT_ARRAY_INIT4(buffer_vld4, int, 16, 8); ++ PAD(buffer_vld4_pad, int, 16, 8); ++ VECT_ARRAY_INIT4(buffer_vld4, int, 32, 4); ++ PAD(buffer_vld4_pad, int, 32, 4); ++ VECT_ARRAY_INIT4(buffer_vld4, int, 64, 2); ++ PAD(buffer_vld4_pad, int, 64, 2); ++ VECT_ARRAY_INIT4(buffer_vld4, uint, 8, 16); ++ PAD(buffer_vld4_pad, uint, 8, 16); ++ VECT_ARRAY_INIT4(buffer_vld4, uint, 16, 8); ++ PAD(buffer_vld4_pad, uint, 16, 8); ++ VECT_ARRAY_INIT4(buffer_vld4, uint, 32, 4); ++ PAD(buffer_vld4_pad, uint, 32, 4); ++ VECT_ARRAY_INIT4(buffer_vld4, uint, 64, 2); ++ PAD(buffer_vld4_pad, uint, 64, 2); ++ VECT_ARRAY_INIT4(buffer_vld4, poly, 8, 16); ++ PAD(buffer_vld4_pad, poly, 8, 16); ++ VECT_ARRAY_INIT4(buffer_vld4, poly, 16, 8); ++ PAD(buffer_vld4_pad, poly, 16, 8); ++ VECT_ARRAY_INIT4(buffer_vld4, float, 32, 4); ++ PAD(buffer_vld4_pad, float, 32, 4); ++ ++ /* Check vld2/vld2q. */ ++ clean_results (); ++#define TEST_MSG "VLD2/VLD2Q" ++ TEST_ALL_VLDX(2); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld2_0, "chunk 0"); ++ ++ TEST_ALL_EXTRA_CHUNKS(2, 1); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld2_1, "chunk 1"); ++ ++ /* Check vld3/vld3q. */ ++ clean_results (); ++#undef TEST_MSG ++#define TEST_MSG "VLD3/VLD3Q" ++ TEST_ALL_VLDX(3); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld3_0, "chunk 0"); ++ ++ TEST_ALL_EXTRA_CHUNKS(3, 1); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld3_1, "chunk 1"); ++ ++ TEST_ALL_EXTRA_CHUNKS(3, 2); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld3_2, "chunk 2"); ++ ++ /* Check vld4/vld4q. */ ++ clean_results (); ++#undef TEST_MSG ++#define TEST_MSG "VLD4/VLD4Q" ++ TEST_ALL_VLDX(4); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld4_0, "chunk 0"); ++ ++ TEST_ALL_EXTRA_CHUNKS(4, 1); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld4_1, "chunk 1"); ++ ++ TEST_ALL_EXTRA_CHUNKS(4, 2); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld4_2, "chunk 2"); ++ ++ TEST_ALL_EXTRA_CHUNKS(4, 3); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_vld4_3, "chunk 3"); ++} ++ ++int main (void) ++{ ++ exec_vldX (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vadd.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vadd.c +@@ -0,0 +1,81 @@ ++#define INSN_NAME vadd ++#define TEST_MSG "VADD/VADDQ" ++ ++/* Extra tests for functions requiring floating-point types. */ ++void exec_vadd_f32(void); ++#define EXTRA_TESTS exec_vadd_f32 ++ ++#include "binary_op.inc" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf2, 0xf3, 0xf4, 0xf5, ++ 0xf6, 0xf7, 0xf8, 0xf9 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xffec, 0xffed, 0xffee, 0xffef }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffff3, 0xfffffff4 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x54 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x4, 0x5, 0x6, 0x7, ++ 0x8, 0x9, 0xa, 0xb }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xe, 0xf, 0x10, 0x11 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x18, 0x19 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0xfffffffffffffff2 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0xe6, 0xe7, 0xe8, 0xe9, ++ 0xea, 0xeb, 0xec, 0xed, ++ 0xee, 0xef, 0xf0, 0xf1, ++ 0xf2, 0xf3, 0xf4, 0xf5 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xffdc, 0xffdd, 0xffde, 0xffdf, ++ 0xffe0, 0xffe1, 0xffe2, 0xffe3 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffffd2, 0xffffffd3, ++ 0xffffffd4, 0xffffffd5 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x8, 0x9 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xfc, 0xfd, 0xfe, 0xff, ++ 0x0, 0x1, 0x2, 0x3, ++ 0x4, 0x5, 0x6, 0x7, ++ 0x8, 0x9, 0xa, 0xb }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfff3, 0xfff4, 0xfff5, 0xfff6, ++ 0xfff7, 0xfff8, 0xfff9, 0xfffa }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x27, 0x28, 0x29, 0x2a }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xfffffffffffffff3, ++ 0xfffffffffffffff4 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++/* Expected results for float32 variants. Needs to be separated since ++ the generic test function does not test floating-point ++ versions. */ ++VECT_VAR_DECL(expected_float32,hfloat,32,2) [] = { 0x40d9999a, 0x40d9999a }; ++VECT_VAR_DECL(expected_float32,hfloat,32,4) [] = { 0x41100000, 0x41100000, ++ 0x41100000, 0x41100000 }; ++ ++void exec_vadd_f32(void) ++{ ++ DECL_VARIABLE(vector, float, 32, 2); ++ DECL_VARIABLE(vector, float, 32, 4); ++ ++ DECL_VARIABLE(vector2, float, 32, 2); ++ DECL_VARIABLE(vector2, float, 32, 4); ++ ++ DECL_VARIABLE(vector_res, float, 32, 2); ++ DECL_VARIABLE(vector_res, float, 32, 4); ++ ++ VDUP(vector, , float, f, 32, 2, 2.3f); ++ VDUP(vector, q, float, f, 32, 4, 3.4f); ++ ++ VDUP(vector2, , float, f, 32, 2, 4.5f); ++ VDUP(vector2, q, float, f, 32, 4, 5.6f); ++ ++ TEST_BINARY_OP(INSN_NAME, , float, f, 32, 2); ++ TEST_BINARY_OP(INSN_NAME, q, float, f, 32, 4); ++ ++ CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_float32, ""); ++ CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_float32, ""); ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1_dup.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1_dup.c +@@ -0,0 +1,180 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++/* Chunk 0. */ ++VECT_VAR_DECL(expected0,int,8,8) [] = { 0xf0, 0xf0, 0xf0, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xf0 }; ++VECT_VAR_DECL(expected0,int,16,4) [] = { 0xfff0, 0xfff0, 0xfff0, 0xfff0 }; ++VECT_VAR_DECL(expected0,int,32,2) [] = { 0xfffffff0, 0xfffffff0 }; ++VECT_VAR_DECL(expected0,int,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected0,uint,8,8) [] = { 0xf0, 0xf0, 0xf0, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xf0 }; ++VECT_VAR_DECL(expected0,uint,16,4) [] = { 0xfff0, 0xfff0, 0xfff0, 0xfff0 }; ++VECT_VAR_DECL(expected0,uint,32,2) [] = { 0xfffffff0, 0xfffffff0 }; ++VECT_VAR_DECL(expected0,uint,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected0,poly,8,8) [] = { 0xf0, 0xf0, 0xf0, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xf0 }; ++VECT_VAR_DECL(expected0,poly,16,4) [] = { 0xfff0, 0xfff0, 0xfff0, 0xfff0 }; ++VECT_VAR_DECL(expected0,hfloat,32,2) [] = { 0xc1800000, 0xc1800000 }; ++VECT_VAR_DECL(expected0,int,8,16) [] = { 0xf0, 0xf0, 0xf0, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xf0 }; ++VECT_VAR_DECL(expected0,int,16,8) [] = { 0xfff0, 0xfff0, 0xfff0, 0xfff0, ++ 0xfff0, 0xfff0, 0xfff0, 0xfff0 }; ++VECT_VAR_DECL(expected0,int,32,4) [] = { 0xfffffff0, 0xfffffff0, ++ 0xfffffff0, 0xfffffff0 }; ++VECT_VAR_DECL(expected0,int,64,2) [] = { 0xfffffffffffffff0, ++ 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected0,uint,8,16) [] = { 0xf0, 0xf0, 0xf0, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xf0 }; ++VECT_VAR_DECL(expected0,uint,16,8) [] = { 0xfff0, 0xfff0, 0xfff0, 0xfff0, ++ 0xfff0, 0xfff0, 0xfff0, 0xfff0 }; ++VECT_VAR_DECL(expected0,uint,32,4) [] = { 0xfffffff0, 0xfffffff0, ++ 0xfffffff0, 0xfffffff0 }; ++VECT_VAR_DECL(expected0,uint,64,2) [] = { 0xfffffffffffffff0, ++ 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected0,poly,8,16) [] = { 0xf0, 0xf0, 0xf0, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xf0 }; ++VECT_VAR_DECL(expected0,poly,16,8) [] = { 0xfff0, 0xfff0, 0xfff0, 0xfff0, ++ 0xfff0, 0xfff0, 0xfff0, 0xfff0 }; ++VECT_VAR_DECL(expected0,hfloat,32,4) [] = { 0xc1800000, 0xc1800000, ++ 0xc1800000, 0xc1800000 }; ++ ++/* Chunk 1. */ ++VECT_VAR_DECL(expected1,int,8,8) [] = { 0xf1, 0xf1, 0xf1, 0xf1, ++ 0xf1, 0xf1, 0xf1, 0xf1 }; ++VECT_VAR_DECL(expected1,int,16,4) [] = { 0xfff1, 0xfff1, 0xfff1, 0xfff1 }; ++VECT_VAR_DECL(expected1,int,32,2) [] = { 0xfffffff1, 0xfffffff1 }; ++VECT_VAR_DECL(expected1,int,64,1) [] = { 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected1,uint,8,8) [] = { 0xf1, 0xf1, 0xf1, 0xf1, ++ 0xf1, 0xf1, 0xf1, 0xf1 }; ++VECT_VAR_DECL(expected1,uint,16,4) [] = { 0xfff1, 0xfff1, 0xfff1, 0xfff1 }; ++VECT_VAR_DECL(expected1,uint,32,2) [] = { 0xfffffff1, 0xfffffff1 }; ++VECT_VAR_DECL(expected1,uint,64,1) [] = { 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected1,poly,8,8) [] = { 0xf1, 0xf1, 0xf1, 0xf1, ++ 0xf1, 0xf1, 0xf1, 0xf1 }; ++VECT_VAR_DECL(expected1,poly,16,4) [] = { 0xfff1, 0xfff1, 0xfff1, 0xfff1 }; ++VECT_VAR_DECL(expected1,hfloat,32,2) [] = { 0xc1700000, 0xc1700000 }; ++VECT_VAR_DECL(expected1,int,8,16) [] = { 0xf1, 0xf1, 0xf1, 0xf1, ++ 0xf1, 0xf1, 0xf1, 0xf1, ++ 0xf1, 0xf1, 0xf1, 0xf1, ++ 0xf1, 0xf1, 0xf1, 0xf1 }; ++VECT_VAR_DECL(expected1,int,16,8) [] = { 0xfff1, 0xfff1, 0xfff1, 0xfff1, ++ 0xfff1, 0xfff1, 0xfff1, 0xfff1 }; ++VECT_VAR_DECL(expected1,int,32,4) [] = { 0xfffffff1, 0xfffffff1, ++ 0xfffffff1, 0xfffffff1 }; ++VECT_VAR_DECL(expected1,int,64,2) [] = { 0xfffffffffffffff1, ++ 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected1,uint,8,16) [] = { 0xf1, 0xf1, 0xf1, 0xf1, ++ 0xf1, 0xf1, 0xf1, 0xf1, ++ 0xf1, 0xf1, 0xf1, 0xf1, ++ 0xf1, 0xf1, 0xf1, 0xf1 }; ++VECT_VAR_DECL(expected1,uint,16,8) [] = { 0xfff1, 0xfff1, 0xfff1, 0xfff1, ++ 0xfff1, 0xfff1, 0xfff1, 0xfff1 }; ++VECT_VAR_DECL(expected1,uint,32,4) [] = { 0xfffffff1, 0xfffffff1, ++ 0xfffffff1, 0xfffffff1 }; ++VECT_VAR_DECL(expected1,uint,64,2) [] = { 0xfffffffffffffff1, ++ 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected1,poly,8,16) [] = { 0xf1, 0xf1, 0xf1, 0xf1, ++ 0xf1, 0xf1, 0xf1, 0xf1, ++ 0xf1, 0xf1, 0xf1, 0xf1, ++ 0xf1, 0xf1, 0xf1, 0xf1 }; ++VECT_VAR_DECL(expected1,poly,16,8) [] = { 0xfff1, 0xfff1, 0xfff1, 0xfff1, ++ 0xfff1, 0xfff1, 0xfff1, 0xfff1 }; ++VECT_VAR_DECL(expected1,hfloat,32,4) [] = { 0xc1700000, 0xc1700000, ++ 0xc1700000, 0xc1700000 }; ++ ++/* Chunk 2. */ ++VECT_VAR_DECL(expected2,int,8,8) [] = { 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2 }; ++VECT_VAR_DECL(expected2,int,16,4) [] = { 0xfff2, 0xfff2, 0xfff2, 0xfff2 }; ++VECT_VAR_DECL(expected2,int,32,2) [] = { 0xfffffff2, 0xfffffff2 }; ++VECT_VAR_DECL(expected2,int,64,1) [] = { 0xfffffffffffffff2 }; ++VECT_VAR_DECL(expected2,uint,8,8) [] = { 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2 }; ++VECT_VAR_DECL(expected2,uint,16,4) [] = { 0xfff2, 0xfff2, 0xfff2, 0xfff2 }; ++VECT_VAR_DECL(expected2,uint,32,2) [] = { 0xfffffff2, 0xfffffff2 }; ++VECT_VAR_DECL(expected2,uint,64,1) [] = { 0xfffffffffffffff2 }; ++VECT_VAR_DECL(expected2,poly,8,8) [] = { 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2 }; ++VECT_VAR_DECL(expected2,poly,16,4) [] = { 0xfff2, 0xfff2, 0xfff2, 0xfff2 }; ++VECT_VAR_DECL(expected2,hfloat,32,2) [] = { 0xc1600000, 0xc1600000 }; ++VECT_VAR_DECL(expected2,int,8,16) [] = { 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2 }; ++VECT_VAR_DECL(expected2,int,16,8) [] = { 0xfff2, 0xfff2, 0xfff2, 0xfff2, ++ 0xfff2, 0xfff2, 0xfff2, 0xfff2 }; ++VECT_VAR_DECL(expected2,int,32,4) [] = { 0xfffffff2, 0xfffffff2, ++ 0xfffffff2, 0xfffffff2 }; ++VECT_VAR_DECL(expected2,int,64,2) [] = { 0xfffffffffffffff2, ++ 0xfffffffffffffff2 }; ++VECT_VAR_DECL(expected2,uint,8,16) [] = { 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2 }; ++VECT_VAR_DECL(expected2,uint,16,8) [] = { 0xfff2, 0xfff2, 0xfff2, 0xfff2, ++ 0xfff2, 0xfff2, 0xfff2, 0xfff2 }; ++VECT_VAR_DECL(expected2,uint,32,4) [] = { 0xfffffff2, 0xfffffff2, ++ 0xfffffff2, 0xfffffff2 }; ++VECT_VAR_DECL(expected2,uint,64,2) [] = { 0xfffffffffffffff2, ++ 0xfffffffffffffff2 }; ++VECT_VAR_DECL(expected2,poly,8,16) [] = { 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2 }; ++VECT_VAR_DECL(expected2,poly,16,8) [] = { 0xfff2, 0xfff2, 0xfff2, 0xfff2, ++ 0xfff2, 0xfff2, 0xfff2, 0xfff2 }; ++VECT_VAR_DECL(expected2,hfloat,32,4) [] = { 0xc1600000, 0xc1600000, ++ 0xc1600000, 0xc1600000 }; ++ ++#define TEST_MSG "VLD1_DUP/VLD1_DUPQ" ++void exec_vld1_dup (void) ++{ ++ int i; ++ ++ /* Fill vector with buffer item #i. */ ++#define TEST_VLD1_DUP(VAR, BUF, Q, T1, T2, W, N) \ ++ VECT_VAR(VAR, T1, W, N) = \ ++ vld1##Q##_dup_##T2##W(&VECT_VAR(BUF, T1, W, N)[i]); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(VAR, T1, W, N)) ++ ++ DECL_VARIABLE_ALL_VARIANTS(vector); ++ ++ /* Try to read different places from the input buffer. */ ++ for (i=0; i<3; i++) { ++ clean_results (); ++ ++ TEST_MACRO_ALL_VARIANTS_2_5(TEST_VLD1_DUP, vector, buffer_dup); ++ ++ TEST_VLD1_DUP(vector, buffer_dup, , float, f, 32, 2); ++ TEST_VLD1_DUP(vector, buffer_dup, q, float, f, 32, 4); ++ ++ switch (i) { ++ case 0: ++ CHECK_RESULTS_NAMED (TEST_MSG, expected0, ""); ++ break; ++ case 1: ++ CHECK_RESULTS_NAMED (TEST_MSG, expected1, ""); ++ break; ++ case 2: ++ CHECK_RESULTS_NAMED (TEST_MSG, expected2, ""); ++ break; ++ default: ++ abort(); ++ } ++ } ++} ++ ++int main (void) ++{ ++ exec_vld1_dup (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsub.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsub.c +@@ -0,0 +1,82 @@ ++#define INSN_NAME vsub ++#define TEST_MSG "VSUB/VSUBQ" ++ ++/* Extra tests for functions requiring floating-point types */ ++void exec_vsub_f32(void); ++#define EXTRA_TESTS exec_vsub_f32 ++ ++#include "binary_op.inc" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xee, 0xef, 0xf0, 0xf1, ++ 0xf2, 0xf3, 0xf4, 0xf5 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xffffffed, 0xffffffee }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0xffffffffffffff8c }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xdc, 0xdd, 0xde, 0xdf, ++ 0xe0, 0xe1, 0xe2, 0xe3 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xffd2, 0xffd3, 0xffd4, 0xffd5 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffc8, 0xffffffc9 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0xffffffffffffffee }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0xfa, 0xfb, 0xfc, 0xfd, ++ 0xfe, 0xff, 0x0, 0x1, ++ 0x2, 0x3, 0x4, 0x5, ++ 0x6, 0x7, 0x8, 0x9 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x4, 0x5, 0x6, 0x7, ++ 0x8, 0x9, 0xa, 0xb }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xe, 0xf, 0x10, 0x11 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xffffffffffffffd8, ++ 0xffffffffffffffd9 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xe4, 0xe5, 0xe6, 0xe7, ++ 0xe8, 0xe9, 0xea, 0xeb, ++ 0xec, 0xed, 0xee, 0xef, ++ 0xf0, 0xf1, 0xf2, 0xf3}; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xffed, 0xffee, 0xffef, 0xfff0, ++ 0xfff1, 0xfff2, 0xfff3, 0xfff4 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffb9, 0xffffffba, ++ 0xffffffbb, 0xffffffbc }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffffffffffed, ++ 0xffffffffffffffee }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++/* Expected results for float32 variants. Needs to be separated since ++ the generic test function does not test floating-point ++ versions. */ ++VECT_VAR_DECL(expected_float32,hfloat,32,2) [] = { 0xc00ccccd, 0xc00ccccd }; ++VECT_VAR_DECL(expected_float32,hfloat,32,4) [] = { 0xc00ccccc, 0xc00ccccc, ++ 0xc00ccccc, 0xc00ccccc }; ++ ++void exec_vsub_f32(void) ++{ ++ DECL_VARIABLE(vector, float, 32, 2); ++ DECL_VARIABLE(vector, float, 32, 4); ++ ++ DECL_VARIABLE(vector2, float, 32, 2); ++ DECL_VARIABLE(vector2, float, 32, 4); ++ ++ DECL_VARIABLE(vector_res, float, 32, 2); ++ DECL_VARIABLE(vector_res, float, 32, 4); ++ ++ VDUP(vector, , float, f, 32, 2, 2.3f); ++ VDUP(vector, q, float, f, 32, 4, 3.4f); ++ ++ VDUP(vector2, , float, f, 32, 2, 4.5f); ++ VDUP(vector2, q, float, f, 32, 4, 5.6f); ++ ++ TEST_BINARY_OP(INSN_NAME, , float, f, 32, 2); ++ TEST_BINARY_OP(INSN_NAME, q, float, f, 32, 4); ++ ++ CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_float32, ""); ++ CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_float32, ""); ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh_lane.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh_lane.c +@@ -0,0 +1,121 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected values of cumulative_saturation flag. */ ++int VECT_VAR(expected_cumulative_sat,int,16,4) = 0; ++int VECT_VAR(expected_cumulative_sat,int,32,2) = 0; ++int VECT_VAR(expected_cumulative_sat,int,16,8) = 0; ++int VECT_VAR(expected_cumulative_sat,int,32,4) = 0; ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xffff, 0xffff, 0xffff, 0xffff }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xffffffff, 0xffffffff }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xffff, 0xffff, 0xffff, 0xffff, ++ 0xffff, 0xffff, 0xffff, 0xffff }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffffff, 0xffffffff, ++ 0xffffffff, 0xffffffff }; ++ ++/* Expected values of cumulative_saturation flag when saturation ++ occurs. */ ++int VECT_VAR(expected_cumulative_sat2,int,16,4) = 1; ++int VECT_VAR(expected_cumulative_sat2,int,32,2) = 1; ++int VECT_VAR(expected_cumulative_sat2,int,16,8) = 1; ++int VECT_VAR(expected_cumulative_sat2,int,32,4) = 1; ++ ++/* Expected results when saturation occurs. */ ++VECT_VAR_DECL(expected2,int,16,4) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff }; ++VECT_VAR_DECL(expected2,int,32,2) [] = { 0x7fffffff, 0x7fffffff }; ++VECT_VAR_DECL(expected2,int,16,8) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff, ++ 0x7fff, 0x7fff, 0x7fff, 0x7fff }; ++VECT_VAR_DECL(expected2,int,32,4) [] = { 0x7fffffff, 0x7fffffff, ++ 0x7fffffff, 0x7fffffff }; ++ ++#define INSN_NAME vqdmulh ++#define TEST_MSG "VQDMULH_LANE" ++#define FNNAME1(NAME) exec_ ## NAME ## _lane ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ /* vector_res = vqdmulh_lane(vector,vector2,lane), then store the result. */ ++#define TEST_VQDMULH_LANE2(INSN, Q, T1, T2, W, N, N2, L, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N)); \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ INSN##Q##_lane_##T2##W(VECT_VAR(vector, T1, W, N), \ ++ VECT_VAR(vector2, T1, W, N2), \ ++ L); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \ ++ VECT_VAR(vector_res, T1, W, N)); \ ++ CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++ /* Two auxliary macros are necessary to expand INSN. */ ++#define TEST_VQDMULH_LANE1(INSN, Q, T1, T2, W, N, N2, L, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ TEST_VQDMULH_LANE2(INSN, Q, T1, T2, W, N, N2, L, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++#define TEST_VQDMULH_LANE(Q, T1, T2, W, N, N2, L, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ TEST_VQDMULH_LANE1(INSN_NAME, Q, T1, T2, W, N, N2, L, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++ DECL_VARIABLE(vector, int, 16, 4); ++ DECL_VARIABLE(vector, int, 32, 2); ++ DECL_VARIABLE(vector, int, 16, 8); ++ DECL_VARIABLE(vector, int, 32, 4); ++ ++ DECL_VARIABLE(vector_res, int, 16, 4); ++ DECL_VARIABLE(vector_res, int, 32, 2); ++ DECL_VARIABLE(vector_res, int, 16, 8); ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ ++ /* vector2: vqdmulh_lane and vqdmulhq_lane have a 2nd argument with ++ the same number of elements, so we need only one variable of each ++ type. */ ++ DECL_VARIABLE(vector2, int, 16, 4); ++ DECL_VARIABLE(vector2, int, 32, 2); ++ ++ clean_results (); ++ ++ VLOAD(vector, buffer, , int, s, 16, 4); ++ VLOAD(vector, buffer, , int, s, 32, 2); ++ VLOAD(vector, buffer, q, int, s, 16, 8); ++ VLOAD(vector, buffer, q, int, s, 32, 4); ++ ++ /* Initialize vector2. */ ++ VDUP(vector2, , int, s, 16, 4, 0x55); ++ VDUP(vector2, , int, s, 32, 2, 0xBB); ++ ++ /* Choose lane arbitrarily. */ ++ TEST_VQDMULH_LANE(, int, s, 16, 4, 4, 2, expected_cumulative_sat, ""); ++ TEST_VQDMULH_LANE(, int, s, 32, 2, 2, 1, expected_cumulative_sat, ""); ++ TEST_VQDMULH_LANE(q, int, s, 16, 8, 4, 3, expected_cumulative_sat, ""); ++ TEST_VQDMULH_LANE(q, int, s, 32, 4, 2, 0, expected_cumulative_sat, ""); ++ ++ CHECK (TEST_MSG, int, 16, 4, PRIx16, expected, ""); ++ CHECK (TEST_MSG, int, 32, 2, PRIx32, expected, ""); ++ CHECK (TEST_MSG, int, 16, 8, PRIx16, expected, ""); ++ CHECK (TEST_MSG, int, 32, 4, PRIx32, expected, ""); ++ ++ /* Choose input values to trigger saturation. */ ++ VDUP(vector, , int, s, 16, 4, 0x8000); ++ VDUP(vector, , int, s, 32, 2, 0x80000000); ++ VDUP(vector, q, int, s, 16, 8, 0x8000); ++ VDUP(vector, q, int, s, 32, 4, 0x80000000); ++ VDUP(vector2, , int, s, 16, 4, 0x8000); ++ VDUP(vector2, , int, s, 32, 2, 0x80000000); ++ ++#define TEST_MSG2 " (check mul cumulative saturation)" ++ TEST_VQDMULH_LANE(, int, s, 16, 4, 4, 3, expected_cumulative_sat2, TEST_MSG2); ++ TEST_VQDMULH_LANE(, int, s, 32, 2, 2, 1, expected_cumulative_sat2, TEST_MSG2); ++ TEST_VQDMULH_LANE(q, int, s, 16, 8, 4, 2, expected_cumulative_sat2, TEST_MSG2); ++ TEST_VQDMULH_LANE(q, int, s, 32, 4, 2, 1, expected_cumulative_sat2, TEST_MSG2); ++ ++ CHECK (TEST_MSG, int, 16, 4, PRIx16, expected2, TEST_MSG2); ++ CHECK (TEST_MSG, int, 32, 2, PRIx32, expected2, TEST_MSG2); ++ CHECK (TEST_MSG, int, 16, 8, PRIx16, expected2, TEST_MSG2); ++ CHECK (TEST_MSG, int, 32, 4, PRIx32, expected2, TEST_MSG2); ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_op_no64.inc ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_op_no64.inc +@@ -0,0 +1,134 @@ ++/* Can't use the standard binary_op.inc template because vmax has no ++ 64 bits variant. */ ++ ++#include ++ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ int i; ++ ++ /* Basic test: y=vmax(x,x), then store the result. */ ++#define TEST_BINARY_OP1(INSN, Q, T1, T2, W, N) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ INSN##Q##_##T2##W(VECT_VAR(vector, T1, W, N), \ ++ VECT_VAR(vector2, T1, W, N)); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N)) ++ ++#define TEST_BINARY_OP(INSN, Q, T1, T2, W, N) \ ++ TEST_BINARY_OP1(INSN, Q, T1, T2, W, N) \ ++ ++ DECL_VARIABLE_ALL_VARIANTS(vector); ++ DECL_VARIABLE_ALL_VARIANTS(vector2); ++ DECL_VARIABLE_ALL_VARIANTS(vector_res); ++ ++ clean_results (); ++ ++ /* Initialize input "vector" from "buffer". */ ++ TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector, buffer); ++#ifdef HAS_FLOAT_VARIANT ++ VLOAD(vector, buffer, , float, f, 32, 2); ++ VLOAD(vector, buffer, q, float, f, 32, 4); ++#endif ++ ++ /* Choose init value arbitrarily, will be used as comparison value. */ ++ VDUP(vector2, , int, s, 8, 8, -13); ++ VDUP(vector2, , int, s, 16, 4, -14); ++ VDUP(vector2, , int, s, 32, 2, -16); ++ VDUP(vector2, , uint, u, 8, 8, 0xf3); ++ VDUP(vector2, , uint, u, 16, 4, 0xfff1); ++ VDUP(vector2, , uint, u, 32, 2, 0xfffffff0); ++ VDUP(vector2, q, int, s, 8, 16, -12); ++ VDUP(vector2, q, int, s, 16, 8, -13); ++ VDUP(vector2, q, int, s, 32, 4, -15); ++ VDUP(vector2, q, uint, u, 8, 16, 0xf9); ++ VDUP(vector2, q, uint, u, 16, 8, 0xfff2); ++ VDUP(vector2, q, uint, u, 32, 4, 0xfffffff1); ++#ifdef HAS_FLOAT_VARIANT ++ VDUP(vector2, , float, f, 32, 2, -15.5f); ++ VDUP(vector2, q, float, f, 32, 4, -14.5f); ++#endif ++ ++#ifdef HAS_FLOAT_VARIANT ++#define FLOAT_VARIANT(MACRO, VAR) \ ++ MACRO(VAR, , float, f, 32, 2); \ ++ MACRO(VAR, q, float, f, 32, 4) ++#else ++#define FLOAT_VARIANT(MACRO, VAR) ++#endif ++ ++#define TEST_MACRO_NO64BIT_VARIANT_1_5(MACRO, VAR) \ ++ MACRO(VAR, , int, s, 8, 8); \ ++ MACRO(VAR, , int, s, 16, 4); \ ++ MACRO(VAR, , int, s, 32, 2); \ ++ MACRO(VAR, , uint, u, 8, 8); \ ++ MACRO(VAR, , uint, u, 16, 4); \ ++ MACRO(VAR, , uint, u, 32, 2); \ ++ MACRO(VAR, q, int, s, 8, 16); \ ++ MACRO(VAR, q, int, s, 16, 8); \ ++ MACRO(VAR, q, int, s, 32, 4); \ ++ MACRO(VAR, q, uint, u, 8, 16); \ ++ MACRO(VAR, q, uint, u, 16, 8); \ ++ MACRO(VAR, q, uint, u, 32, 4); \ ++ FLOAT_VARIANT(MACRO, VAR) ++ ++ /* Apply a binary operator named INSN_NAME. */ ++ TEST_MACRO_NO64BIT_VARIANT_1_5(TEST_BINARY_OP, INSN_NAME); ++ ++ CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, ""); ++ CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, ""); ++ CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, ""); ++ CHECK(TEST_MSG, int, 8, 16, PRIx8, expected, ""); ++ CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, ""); ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, ""); ++ ++#ifdef HAS_FLOAT_VARIANT ++ CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected, ""); ++ CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected, ""); ++ ++ /* Extra FP tests with special values (NaN, ....) */ ++ VDUP(vector, q, float, f, 32, 4, 1.0f); ++ VDUP(vector2, q, float, f, 32, 4, NAN); ++ TEST_BINARY_OP(INSN_NAME, q, float, f, 32, 4); ++ CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_nan, " FP special (NaN)"); ++ ++ VDUP(vector, q, float, f, 32, 4, -NAN); ++ VDUP(vector2, q, float, f, 32, 4, 1.0f); ++ TEST_BINARY_OP(INSN_NAME, q, float, f, 32, 4); ++ CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_mnan, " FP special (-NaN)"); ++ ++ VDUP(vector, q, float, f, 32, 4, 1.0f); ++ VDUP(vector2, q, float, f, 32, 4, HUGE_VALF); ++ TEST_BINARY_OP(INSN_NAME, q, float, f, 32, 4); ++ CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_inf, " FP special (inf)"); ++ ++ VDUP(vector, q, float, f, 32, 4, -HUGE_VALF); ++ VDUP(vector2, q, float, f, 32, 4, 1.0f); ++ TEST_BINARY_OP(INSN_NAME, q, float, f, 32, 4); ++ CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_minf, " FP special (-inf)"); ++ ++ VDUP(vector, q, float, f, 32, 4, 0.0f); ++ VDUP(vector2, q, float, f, 32, 4, -0.0f); ++ TEST_BINARY_OP(INSN_NAME, q, float, f, 32, 4); ++ CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_zero1, " FP special (-0.0)"); ++ ++ VDUP(vector, q, float, f, 32, 4, -0.0f); ++ VDUP(vector2, q, float, f, 32, 4, 0.0f); ++ TEST_BINARY_OP(INSN_NAME, q, float, f, 32, 4); ++ CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_zero2, " FP special (-0.0)"); ++#endif ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqneg.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqneg.c +@@ -0,0 +1,127 @@ ++#define INSN_NAME vqneg ++#define TEST_MSG "VQNEG/VQNEGQ" ++ ++/* Extra tests for functions requiring corner cases tests */ ++void vqneg_extra(void); ++#define EXTRA_TESTS vqneg_extra ++ ++#include "unary_sat_op.inc" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x10, 0xf, 0xe, 0xd, 0xc, 0xb, 0xa, 0x9 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x10, 0xf, 0xe, 0xd }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x10, 0xf }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x10, 0xf, 0xe, 0xd, ++ 0xc, 0xb, 0xa, 0x9, ++ 0x8, 0x7, 0x6, 0x5, ++ 0x4, 0x3, 0x2, 0x1 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x10, 0xf, 0xe, 0xd, ++ 0xc, 0xb, 0xa, 0x9 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x10, 0xf, 0xe, 0xd }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333, 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++/* Expected values of cumulative_saturation flag. */ ++int VECT_VAR(expected_cumulative_sat,int,8,8) = 0; ++int VECT_VAR(expected_cumulative_sat,int,16,4) = 0; ++int VECT_VAR(expected_cumulative_sat,int,32,2) = 0; ++int VECT_VAR(expected_cumulative_sat,int,8,16) = 0; ++int VECT_VAR(expected_cumulative_sat,int,16,8) = 0; ++int VECT_VAR(expected_cumulative_sat,int,32,4) = 0; ++ ++/* Expected results when input is the min negative value of the type. */ ++VECT_VAR_DECL(expected_min_neg,int,8,8) [] = { 0x7f, 0x7f, 0x7f, 0x7f, ++ 0x7f, 0x7f, 0x7f, 0x7f }; ++VECT_VAR_DECL(expected_min_neg,int,16,4) [] = { 0x7fff, 0x7fff, ++ 0x7fff, 0x7fff }; ++VECT_VAR_DECL(expected_min_neg,int,32,2) [] = { 0x7fffffff, 0x7fffffff }; ++VECT_VAR_DECL(expected_min_neg,int,8,16) [] = { 0x7f, 0x7f, 0x7f, 0x7f, ++ 0x7f, 0x7f, 0x7f, 0x7f, ++ 0x7f, 0x7f, 0x7f, 0x7f, ++ 0x7f, 0x7f, 0x7f, 0x7f }; ++VECT_VAR_DECL(expected_min_neg,int,16,8) [] = { 0x7fff, 0x7fff, ++ 0x7fff, 0x7fff, ++ 0x7fff, 0x7fff, ++ 0x7fff, 0x7fff }; ++VECT_VAR_DECL(expected_min_neg,int,32,4) [] = { 0x7fffffff, 0x7fffffff, ++ 0x7fffffff, 0x7fffffff }; ++ ++/* Expected values of cumulative_saturation flag when input is the min ++ negative value of the type. */ ++int VECT_VAR(expected_cumulative_sat_min_neg,int,8,8) = 1; ++int VECT_VAR(expected_cumulative_sat_min_neg,int,16,4) = 1; ++int VECT_VAR(expected_cumulative_sat_min_neg,int,32,2) = 1; ++int VECT_VAR(expected_cumulative_sat_min_neg,int,8,16) = 1; ++int VECT_VAR(expected_cumulative_sat_min_neg,int,16,8) = 1; ++int VECT_VAR(expected_cumulative_sat_min_neg,int,32,4) = 1; ++ ++void vqneg_extra() ++{ ++ /* No need for 64 bits variants. */ ++ DECL_VARIABLE(vector, int, 8, 8); ++ DECL_VARIABLE(vector, int, 16, 4); ++ DECL_VARIABLE(vector, int, 32, 2); ++ DECL_VARIABLE(vector, int, 8, 16); ++ DECL_VARIABLE(vector, int, 16, 8); ++ DECL_VARIABLE(vector, int, 32, 4); ++ ++ DECL_VARIABLE(vector_res, int, 8, 8); ++ DECL_VARIABLE(vector_res, int, 16, 4); ++ DECL_VARIABLE(vector_res, int, 32, 2); ++ DECL_VARIABLE(vector_res, int, 8, 16); ++ DECL_VARIABLE(vector_res, int, 16, 8); ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ ++ clean_results (); ++ ++ /* Initialize input "vector" with min negative values to check ++ saturation. */ ++ VDUP(vector, , int, s, 8, 8, 0x80); ++ VDUP(vector, , int, s, 16, 4, 0x8000); ++ VDUP(vector, , int, s, 32, 2, 0x80000000); ++ VDUP(vector, q, int, s, 8, 16, 0x80); ++ VDUP(vector, q, int, s, 16, 8, 0x8000); ++ VDUP(vector, q, int, s, 32, 4, 0x80000000); ++ ++#define MSG "min negative input" ++ TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 8, 8, expected_cumulative_sat_min_neg, MSG); ++ TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 16, 4, expected_cumulative_sat_min_neg, MSG); ++ TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 32, 2, expected_cumulative_sat_min_neg, MSG); ++ TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 8, 16, expected_cumulative_sat_min_neg, MSG); ++ TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 16, 8, expected_cumulative_sat_min_neg, MSG); ++ TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 32, 4, expected_cumulative_sat_min_neg, MSG); ++ ++ CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_min_neg, MSG); ++ CHECK(TEST_MSG, int, 16, 4, PRIx8, expected_min_neg, MSG); ++ CHECK(TEST_MSG, int, 32, 2, PRIx8, expected_min_neg, MSG); ++ CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_min_neg, MSG); ++ CHECK(TEST_MSG, int, 16, 8, PRIx8, expected_min_neg, MSG); ++ CHECK(TEST_MSG, int, 32, 4, PRIx8, expected_min_neg, MSG); ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_sat_op.inc ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_sat_op.inc +@@ -0,0 +1,91 @@ ++/* Template file for saturating binary operator validation. ++ ++ This file is meant to be included by the relevant test files, which ++ have to define the intrinsic family to test. If a given intrinsic ++ supports variants which are not supported by all the other ++ saturating binary operators, these can be tested by providing a ++ definition for EXTRA_TESTS. */ ++ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ /* vector_res = OP(vector1,vector2), then store the result. */ ++ ++#define TEST_BINARY_SAT_OP1(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N)); \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ INSN##Q##_##T2##W(VECT_VAR(vector1, T1, W, N), \ ++ VECT_VAR(vector2, T1, W, N)); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \ ++ VECT_VAR(vector_res, T1, W, N)); \ ++ CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++#define TEST_BINARY_SAT_OP(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ TEST_BINARY_SAT_OP1(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++ DECL_VARIABLE_ALL_VARIANTS(vector1); ++ DECL_VARIABLE_ALL_VARIANTS(vector2); ++ DECL_VARIABLE_ALL_VARIANTS(vector_res); ++ ++ clean_results (); ++ ++ /* Initialize input "vector1" from "buffer". */ ++ TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector1, buffer); ++ ++ /* Choose arbitrary initialization values. */ ++ VDUP(vector2, , int, s, 8, 8, 0x11); ++ VDUP(vector2, , int, s, 16, 4, 0x22); ++ VDUP(vector2, , int, s, 32, 2, 0x33); ++ VDUP(vector2, , int, s, 64, 1, 0x44); ++ VDUP(vector2, , uint, u, 8, 8, 0x55); ++ VDUP(vector2, , uint, u, 16, 4, 0x66); ++ VDUP(vector2, , uint, u, 32, 2, 0x77); ++ VDUP(vector2, , uint, u, 64, 1, 0x88); ++ ++ VDUP(vector2, q, int, s, 8, 16, 0x11); ++ VDUP(vector2, q, int, s, 16, 8, 0x22); ++ VDUP(vector2, q, int, s, 32, 4, 0x33); ++ VDUP(vector2, q, int, s, 64, 2, 0x44); ++ VDUP(vector2, q, uint, u, 8, 16, 0x55); ++ VDUP(vector2, q, uint, u, 16, 8, 0x66); ++ VDUP(vector2, q, uint, u, 32, 4, 0x77); ++ VDUP(vector2, q, uint, u, 64, 2, 0x88); ++ ++ /* Apply a saturating binary operator named INSN_NAME. */ ++ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 8, 8, expected_cumulative_sat, ""); ++ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 16, 4, expected_cumulative_sat, ""); ++ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 32, 2, expected_cumulative_sat, ""); ++ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 64, 1, expected_cumulative_sat, ""); ++ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 8, 8, expected_cumulative_sat, ""); ++ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 16, 4, expected_cumulative_sat, ""); ++ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 32, 2, expected_cumulative_sat, ""); ++ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 64, 1, expected_cumulative_sat, ""); ++ ++ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 8, 16, expected_cumulative_sat, ""); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 16, 8, expected_cumulative_sat, ""); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 32, 4, expected_cumulative_sat, ""); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 64, 2, expected_cumulative_sat, ""); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 8, 16, expected_cumulative_sat, ""); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 16, 8, expected_cumulative_sat, ""); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 32, 4, expected_cumulative_sat, ""); ++ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 64, 2, expected_cumulative_sat, ""); ++ ++ CHECK_RESULTS (TEST_MSG, ""); ++ ++#ifdef EXTRA_TESTS ++ EXTRA_TESTS(); ++#endif ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull_lane.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull_lane.c +@@ -0,0 +1,94 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected values of cumulative_saturation flag. */ ++int VECT_VAR(expected_cumulative_sat,int,16,4) = 0; ++int VECT_VAR(expected_cumulative_sat,int,32,2) = 0; ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x8000, 0x8000, 0x8000, 0x8000 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x4000, 0x4000 }; ++ ++/* Expected values of cumulative_saturation flag when saturation ++ occurs. */ ++int VECT_VAR(expected_cumulative_sat2,int,16,4) = 1; ++int VECT_VAR(expected_cumulative_sat2,int,32,2) = 1; ++ ++/* Expected results when saturation occurs. */ ++VECT_VAR_DECL(expected2,int,32,4) [] = { 0x7fffffff, 0x7fffffff, ++ 0x7fffffff, 0x7fffffff }; ++VECT_VAR_DECL(expected2,int,64,2) [] = { 0x7fffffffffffffff, ++ 0x7fffffffffffffff }; ++ ++#define INSN_NAME vqdmull ++#define TEST_MSG "VQDMULL_LANE" ++ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ int i; ++ ++ /* vector_res = vqdmull_lane(vector,vector2,lane), then store the result. */ ++#define TEST_VQDMULL_LANE2(INSN, T1, T2, W, W2, N, L, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W2, N)); \ ++ VECT_VAR(vector_res, T1, W2, N) = \ ++ INSN##_lane_##T2##W(VECT_VAR(vector, T1, W, N), \ ++ VECT_VAR(vector2, T1, W, N), \ ++ L); \ ++ vst1q_##T2##W2(VECT_VAR(result, T1, W2, N), \ ++ VECT_VAR(vector_res, T1, W2, N)); \ ++ CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++ /* Two auxliary macros are necessary to expand INSN. */ ++#define TEST_VQDMULL_LANE1(INSN, T1, T2, W, W2, N, L, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ TEST_VQDMULL_LANE2(INSN, T1, T2, W, W2, N, L, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++#define TEST_VQDMULL_LANE(T1, T2, W, W2, N, L, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ TEST_VQDMULL_LANE1(INSN_NAME, T1, T2, W, W2, N, L, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++ DECL_VARIABLE(vector, int, 16, 4); ++ DECL_VARIABLE(vector, int, 32, 2); ++ DECL_VARIABLE(vector2, int, 16, 4); ++ DECL_VARIABLE(vector2, int, 32, 2); ++ ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ DECL_VARIABLE(vector_res, int, 64, 2); ++ ++ clean_results (); ++ ++ /* Initialize vector. */ ++ VDUP(vector, , int, s, 16, 4, 0x1000); ++ VDUP(vector, , int, s, 32, 2, 0x1000); ++ ++ /* Initialize vector2. */ ++ VDUP(vector2, , int, s, 16, 4, 0x4); ++ VDUP(vector2, , int, s, 32, 2, 0x2); ++ ++ /* Choose lane arbitrarily. */ ++ TEST_VQDMULL_LANE(int, s, 16, 32, 4, 2, expected_cumulative_sat, ""); ++ TEST_VQDMULL_LANE(int, s, 32, 64, 2, 1, expected_cumulative_sat, ""); ++ ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, ""); ++ ++ VDUP(vector, , int, s, 16, 4, 0x8000); ++ VDUP(vector2, , int, s, 16, 4, 0x8000); ++ VDUP(vector, , int, s, 32, 2, 0x80000000); ++ VDUP(vector2, , int, s, 32, 2, 0x80000000); ++ ++#define TEST_MSG2 "with saturation" ++ TEST_VQDMULL_LANE(int, s, 16, 32, 4, 2, expected_cumulative_sat2, TEST_MSG2); ++ TEST_VQDMULL_LANE(int, s, 32, 64, 2, 1, expected_cumulative_sat2, TEST_MSG2); ++ ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected2, TEST_MSG2); ++ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected2, TEST_MSG2); ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmul.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmul.c +@@ -0,0 +1,156 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf0, 0x1, 0x12, 0x23, ++ 0x34, 0x45, 0x56, 0x67 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfde0, 0xfe02, 0xfe24, 0xfe46 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffcd0, 0xfffffd03 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xc0, 0x4, 0x48, 0x8c, ++ 0xd0, 0x14, 0x58, 0x9c }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfab0, 0xfb05, 0xfb5a, 0xfbaf }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffff9a0, 0xfffffa06 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0xc0, 0x84, 0x48, 0xc, ++ 0xd0, 0x94, 0x58, 0x1c }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xc4053333, 0xc3f9c000 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x90, 0x7, 0x7e, 0xf5, ++ 0x6c, 0xe3, 0x5a, 0xd1, ++ 0x48, 0xbf, 0x36, 0xad, ++ 0x24, 0x9b, 0x12, 0x89 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xf780, 0xf808, 0xf890, 0xf918, ++ 0xf9a0, 0xfa28, 0xfab0, 0xfb38 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffff670, 0xfffff709, ++ 0xfffff7a2, 0xfffff83b }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x60, 0xa, 0xb4, 0x5e, ++ 0x8, 0xb2, 0x5c, 0x6, ++ 0xb0, 0x5a, 0x4, 0xae, ++ 0x58, 0x2, 0xac, 0x56 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xf450, 0xf50b, 0xf5c6, 0xf681, ++ 0xf73c, 0xf7f7, 0xf8b2, 0xf96d }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfffff340, 0xfffff40c, ++ 0xfffff4d8, 0xfffff5a4 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x60, 0xca, 0x34, 0x9e, ++ 0xc8, 0x62, 0x9c, 0x36, ++ 0x30, 0x9a, 0x64, 0xce, ++ 0x98, 0x32, 0xcc, 0x66 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0xc4c73333, 0xc4bac000, ++ 0xc4ae4ccd, 0xc4a1d999 }; ++ ++#ifndef INSN_NAME ++#define INSN_NAME vmul ++#define TEST_MSG "VMUL" ++#endif ++ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++#define DECL_VMUL(T, W, N) \ ++ DECL_VARIABLE(vector1, T, W, N); \ ++ DECL_VARIABLE(vector2, T, W, N); \ ++ DECL_VARIABLE(vector_res, T, W, N) ++ ++ /* vector_res = OP(vector1, vector2), then store the result. */ ++#define TEST_VMUL1(INSN, Q, T1, T2, W, N) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ INSN##Q##_##T2##W(VECT_VAR(vector1, T1, W, N), \ ++ VECT_VAR(vector2, T1, W, N)); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \ ++ VECT_VAR(vector_res, T1, W, N)) ++ ++#define TEST_VMUL(INSN, Q, T1, T2, W, N) \ ++ TEST_VMUL1(INSN, Q, T1, T2, W, N) ++ ++ DECL_VMUL(int, 8, 8); ++ DECL_VMUL(int, 16, 4); ++ DECL_VMUL(int, 32, 2); ++ DECL_VMUL(uint, 8, 8); ++ DECL_VMUL(uint, 16, 4); ++ DECL_VMUL(uint, 32, 2); ++ DECL_VMUL(poly, 8, 8); ++ DECL_VMUL(float, 32, 2); ++ DECL_VMUL(int, 8, 16); ++ DECL_VMUL(int, 16, 8); ++ DECL_VMUL(int, 32, 4); ++ DECL_VMUL(uint, 8, 16); ++ DECL_VMUL(uint, 16, 8); ++ DECL_VMUL(uint, 32, 4); ++ DECL_VMUL(poly, 8, 16); ++ DECL_VMUL(float, 32, 4); ++ ++ clean_results (); ++ ++ /* Initialize input "vector1" from "buffer". */ ++ VLOAD(vector1, buffer, , int, s, 8, 8); ++ VLOAD(vector1, buffer, , int, s, 16, 4); ++ VLOAD(vector1, buffer, , int, s, 32, 2); ++ VLOAD(vector1, buffer, , uint, u, 8, 8); ++ VLOAD(vector1, buffer, , uint, u, 16, 4); ++ VLOAD(vector1, buffer, , uint, u, 32, 2); ++ VLOAD(vector1, buffer, , poly, p, 8, 8); ++ VLOAD(vector1, buffer, , float, f, 32, 2); ++ VLOAD(vector1, buffer, q, int, s, 8, 16); ++ VLOAD(vector1, buffer, q, int, s, 16, 8); ++ VLOAD(vector1, buffer, q, int, s, 32, 4); ++ VLOAD(vector1, buffer, q, uint, u, 8, 16); ++ VLOAD(vector1, buffer, q, uint, u, 16, 8); ++ VLOAD(vector1, buffer, q, uint, u, 32, 4); ++ VLOAD(vector1, buffer, q, poly, p, 8, 16); ++ VLOAD(vector1, buffer, q, float, f, 32, 4); ++ ++ /* Choose init value arbitrarily. */ ++ VDUP(vector2, , int, s, 8, 8, 0x11); ++ VDUP(vector2, , int, s, 16, 4, 0x22); ++ VDUP(vector2, , int, s, 32, 2, 0x33); ++ VDUP(vector2, , uint, u, 8, 8, 0x44); ++ VDUP(vector2, , uint, u, 16, 4, 0x55); ++ VDUP(vector2, , uint, u, 32, 2, 0x66); ++ VDUP(vector2, , poly, p, 8, 8, 0x44); ++ VDUP(vector2, , float, f, 32, 2, 33.3f); ++ VDUP(vector2, q, int, s, 8, 16, 0x77); ++ VDUP(vector2, q, int, s, 16, 8, 0x88); ++ VDUP(vector2, q, int, s, 32, 4, 0x99); ++ VDUP(vector2, q, uint, u, 8, 16, 0xAA); ++ VDUP(vector2, q, uint, u, 16, 8, 0xBB); ++ VDUP(vector2, q, uint, u, 32, 4, 0xCC); ++ VDUP(vector2, q, poly, p, 8, 16, 0xAA); ++ VDUP(vector2, q, float, f, 32, 4, 99.6f); ++ ++ /* Execute the tests. */ ++ TEST_VMUL(INSN_NAME, , int, s, 8, 8); ++ TEST_VMUL(INSN_NAME, , int, s, 16, 4); ++ TEST_VMUL(INSN_NAME, , int, s, 32, 2); ++ TEST_VMUL(INSN_NAME, , uint, u, 8, 8); ++ TEST_VMUL(INSN_NAME, , uint, u, 16, 4); ++ TEST_VMUL(INSN_NAME, , uint, u, 32, 2); ++ TEST_VMUL(INSN_NAME, , poly, p, 8, 8); ++ TEST_VMUL(INSN_NAME, , float, f, 32, 2); ++ TEST_VMUL(INSN_NAME, q, int, s, 8, 16); ++ TEST_VMUL(INSN_NAME, q, int, s, 16, 8); ++ TEST_VMUL(INSN_NAME, q, int, s, 32, 4); ++ TEST_VMUL(INSN_NAME, q, uint, u, 8, 16); ++ TEST_VMUL(INSN_NAME, q, uint, u, 16, 8); ++ TEST_VMUL(INSN_NAME, q, uint, u, 32, 4); ++ TEST_VMUL(INSN_NAME, q, poly, p, 8, 16); ++ TEST_VMUL(INSN_NAME, q, float, f, 32, 4); ++ ++ CHECK_RESULTS (TEST_MSG, ""); ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vraddhn.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vraddhn.c +@@ -0,0 +1,24 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#if defined(__cplusplus) ++#include ++#else ++#include ++#endif ++ ++#define INSN_NAME vraddhn ++#define TEST_MSG "VRADDHN" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x19, 0x19 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x4, 0x4, 0x4, 0x4, ++ 0x4, 0x4, 0x4, 0x4 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x38, 0x38, 0x38, 0x38 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x4, 0x4 }; ++ ++#include "vXXXhn.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vzip.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vzip.c +@@ -0,0 +1,103 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results splitted in several chunks. */ ++/* Chunk 0. */ ++VECT_VAR_DECL(expected0,int,8,8) [] = { 0xf0, 0xf4, 0x11, 0x11, ++ 0xf1, 0xf5, 0x11, 0x11 }; ++VECT_VAR_DECL(expected0,int,16,4) [] = { 0xfff0, 0xfff2, ++ 0x22, 0x22 }; ++VECT_VAR_DECL(expected0,int,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected0,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected0,uint,8,8) [] = { 0xf0, 0xf4, 0x55, 0x55, ++ 0xf1, 0xf5, 0x55, 0x55 }; ++VECT_VAR_DECL(expected0,uint,16,4) [] = { 0xfff0, 0xfff2, ++ 0x66, 0x66 }; ++VECT_VAR_DECL(expected0,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected0,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected0,poly,8,8) [] = { 0xf0, 0xf4, 0x55, 0x55, ++ 0xf1, 0xf5, 0x55, 0x55 }; ++VECT_VAR_DECL(expected0,poly,16,4) [] = { 0xfff0, 0xfff2, ++ 0x66, 0x66 }; ++VECT_VAR_DECL(expected0,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 }; ++VECT_VAR_DECL(expected0,int,8,16) [] = { 0xf0, 0xf8, 0x11, 0x11, ++ 0xf1, 0xf9, 0x11, 0x11, ++ 0xf2, 0xfa, 0x11, 0x11, ++ 0xf3, 0xfb, 0x11, 0x11 }; ++VECT_VAR_DECL(expected0,int,16,8) [] = { 0xfff0, 0xfff4, 0x22, 0x22, ++ 0xfff1, 0xfff5, 0x22, 0x22 }; ++VECT_VAR_DECL(expected0,int,32,4) [] = { 0xfffffff0, 0xfffffff2, ++ 0x33, 0x33 }; ++VECT_VAR_DECL(expected0,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected0,uint,8,16) [] = { 0xf0, 0xf8, 0x55, 0x55, ++ 0xf1, 0xf9, 0x55, 0x55, ++ 0xf2, 0xfa, 0x55, 0x55, ++ 0xf3, 0xfb, 0x55, 0x55 }; ++VECT_VAR_DECL(expected0,uint,16,8) [] = { 0xfff0, 0xfff4, 0x66, 0x66, ++ 0xfff1, 0xfff5, 0x66, 0x66 }; ++VECT_VAR_DECL(expected0,uint,32,4) [] = { 0xfffffff0, 0xfffffff2, ++ 0x77, 0x77 }; ++VECT_VAR_DECL(expected0,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected0,poly,8,16) [] = { 0xf0, 0xf8, 0x55, 0x55, ++ 0xf1, 0xf9, 0x55, 0x55, ++ 0xf2, 0xfa, 0x55, 0x55, ++ 0xf3, 0xfb, 0x55, 0x55 }; ++VECT_VAR_DECL(expected0,poly,16,8) [] = { 0xfff0, 0xfff4, 0x66, 0x66, ++ 0xfff1, 0xfff5, 0x66, 0x66 }; ++VECT_VAR_DECL(expected0,hfloat,32,4) [] = { 0xc1800000, 0xc1600000, ++ 0x42073333, 0x42073333 }; ++ ++/* Chunk 1. */ ++VECT_VAR_DECL(expected1,int,8,8) [] = { 0xf2, 0xf6, 0x11, 0x11, ++ 0xf3, 0xf7, 0x11, 0x11 }; ++VECT_VAR_DECL(expected1,int,16,4) [] = { 0xfff1, 0xfff3, ++ 0x22, 0x22 }; ++VECT_VAR_DECL(expected1,int,32,2) [] = { 0x33, 0x33 }; ++VECT_VAR_DECL(expected1,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected1,uint,8,8) [] = { 0xf2, 0xf6, 0x55, 0x55, ++ 0xf3, 0xf7, 0x55, 0x55 }; ++VECT_VAR_DECL(expected1,uint,16,4) [] = { 0xfff1, 0xfff3, ++ 0x66, 0x66 }; ++VECT_VAR_DECL(expected1,uint,32,2) [] = { 0x77, 0x77 }; ++VECT_VAR_DECL(expected1,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected1,poly,8,8) [] = { 0xf2, 0xf6, 0x55, 0x55, ++ 0xf3, 0xf7, 0x55, 0x55 }; ++VECT_VAR_DECL(expected1,poly,16,4) [] = { 0xfff1, 0xfff3, ++ 0x66, 0x66 }; ++VECT_VAR_DECL(expected1,hfloat,32,2) [] = { 0x42066666, 0x42066666 }; ++VECT_VAR_DECL(expected1,int,8,16) [] = { 0xf4, 0xfc, 0x11, 0x11, ++ 0xf5, 0xfd, 0x11, 0x11, ++ 0xf6, 0xfe, 0x11, 0x11, ++ 0xf7, 0xff, 0x11, 0x11 }; ++VECT_VAR_DECL(expected1,int,16,8) [] = { 0xfff2, 0xfff6, 0x22, 0x22, ++ 0xfff3, 0xfff7, 0x22, 0x22 }; ++VECT_VAR_DECL(expected1,int,32,4) [] = { 0xfffffff1, 0xfffffff3, ++ 0x33, 0x33 }; ++VECT_VAR_DECL(expected1,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected1,uint,8,16) [] = { 0xf4, 0xfc, 0x55, 0x55, ++ 0xf5, 0xfd, 0x55, 0x55, ++ 0xf6, 0xfe, 0x55, 0x55, ++ 0xf7, 0xff, 0x55, 0x55 }; ++VECT_VAR_DECL(expected1,uint,16,8) [] = { 0xfff2, 0xfff6, 0x66, 0x66, ++ 0xfff3, 0xfff7, 0x66, 0x66 }; ++VECT_VAR_DECL(expected1,uint,32,4) [] = { 0xfffffff1, 0xfffffff3, ++ 0x77, 0x77 }; ++VECT_VAR_DECL(expected1,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected1,poly,8,16) [] = { 0xf4, 0xfc, 0x55, 0x55, ++ 0xf5, 0xfd, 0x55, 0x55, ++ 0xf6, 0xfe, 0x55, 0x55, ++ 0xf7, 0xff, 0x55, 0x55 }; ++VECT_VAR_DECL(expected1,poly,16,8) [] = { 0xfff2, 0xfff6, 0x66, 0x66, ++ 0xfff3, 0xfff7, 0x66, 0x66 }; ++VECT_VAR_DECL(expected1,hfloat,32,4) [] = { 0xc1700000, 0xc1500000, ++ 0x42073333, 0x42073333 }; ++ ++#define INSN_NAME vzip ++#define TEST_MSG "VZIP/VZIPQ" ++ ++#include "vshuffle.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcreate.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcreate.c +@@ -0,0 +1,123 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf0, 0xde, 0xbc, 0x9a, ++ 0x78, 0x56, 0x34, 0x12 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xdef0, 0x9abc, 0x5678, 0x1234 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x9abcdef0, 0x12345678 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x123456789abcdef0 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xf0, 0xde, 0xbc, 0x9a, ++ 0x78, 0x56, 0x34, 0x12 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xdef0, 0x9abc, 0x5678, 0x1234 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x9abcdef0, 0x12345678 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x123456789abcdef0 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0xf0, 0xde, 0xbc, 0x9a, ++ 0x78, 0x56, 0x34, 0x12 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0xdef0, 0x9abc, 0x5678, 0x1234 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x9abcdef0, 0x12345678 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++#define INSN_NAME vcreate ++#define TEST_MSG "VCREATE" ++ ++#define FNNAME1(NAME) void exec_ ## NAME (void) ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++FNNAME (INSN_NAME) ++{ ++ /* Basic test: y=vcreate(x), then store the result. */ ++#define TEST_VCREATE(T1, T2, W, N) \ ++ VECT_VAR(vector_res, T1, W, N) = vcreate_##T2##W(VECT_VAR(val, T1, W, N)); \ ++ vst1_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N)) ++ ++#define DECL_VAL(VAR, T1, W, N) \ ++ uint64_t VECT_VAR(VAR, T1, W, N) ++ ++ DECL_VAL(val, int, 8, 8); ++ DECL_VAL(val, int, 16, 4); ++ DECL_VAL(val, int, 32, 2); ++ DECL_VAL(val, int, 64, 1); ++ DECL_VAL(val, float, 32, 2); ++ DECL_VAL(val, uint, 8, 8); ++ DECL_VAL(val, uint, 16, 4); ++ DECL_VAL(val, uint, 32, 2); ++ DECL_VAL(val, uint, 64, 1); ++ DECL_VAL(val, poly, 8, 8); ++ DECL_VAL(val, poly, 16, 4); ++ ++ DECL_VARIABLE(vector_res, int, 8, 8); ++ DECL_VARIABLE(vector_res, int, 16, 4); ++ DECL_VARIABLE(vector_res, int, 32, 2); ++ DECL_VARIABLE(vector_res, int, 64, 1); ++ DECL_VARIABLE(vector_res, float, 32, 2); ++ DECL_VARIABLE(vector_res, uint, 8, 8); ++ DECL_VARIABLE(vector_res, uint, 16, 4); ++ DECL_VARIABLE(vector_res, uint, 32, 2); ++ DECL_VARIABLE(vector_res, uint, 64, 1); ++ DECL_VARIABLE(vector_res, poly, 8, 8); ++ DECL_VARIABLE(vector_res, poly, 16, 4); ++ ++ clean_results (); ++ ++ /* Initialize input values arbitrarily. */ ++ VECT_VAR(val, int, 8, 8) = 0x123456789abcdef0LL; ++ VECT_VAR(val, int, 16, 4) = 0x123456789abcdef0LL; ++ VECT_VAR(val, int, 32, 2) = 0x123456789abcdef0LL; ++ VECT_VAR(val, int, 64, 1) = 0x123456789abcdef0LL; ++ VECT_VAR(val, float, 32, 2) = 0x123456789abcdef0LL; ++ VECT_VAR(val, uint, 8, 8) = 0x123456789abcdef0ULL; ++ VECT_VAR(val, uint, 16, 4) = 0x123456789abcdef0ULL; ++ VECT_VAR(val, uint, 32, 2) = 0x123456789abcdef0ULL; ++ VECT_VAR(val, uint, 64, 1) = 0x123456789abcdef0ULL; ++ VECT_VAR(val, poly, 8, 8) = 0x123456789abcdef0ULL; ++ VECT_VAR(val, poly, 16, 4) = 0x123456789abcdef0ULL; ++ ++ TEST_VCREATE(int, s, 8, 8); ++ TEST_VCREATE(int, s, 16, 4); ++ TEST_VCREATE(int, s, 32, 2); ++ TEST_VCREATE(float, f, 32, 2); ++ TEST_VCREATE(int, s, 64, 1); ++ TEST_VCREATE(uint, u, 8, 8); ++ TEST_VCREATE(uint, u, 16, 4); ++ TEST_VCREATE(uint, u, 32, 2); ++ TEST_VCREATE(uint, u, 64, 1); ++ TEST_VCREATE(poly, p, 8, 8); ++ TEST_VCREATE(poly, p, 16, 4); ++ ++ CHECK_RESULTS (TEST_MSG, ""); ++} ++ ++int main (void) ++{ ++ exec_vcreate (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/cmp_fp_op.inc ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/cmp_fp_op.inc +@@ -0,0 +1,75 @@ ++/* Template file for the validation of comparison operator with ++ floating-point support. ++ ++ This file is meant to be included by the relevant test files, which ++ have to define the intrinsic family to test. If a given intrinsic ++ supports variants which are not supported by all the other ++ operators, these can be tested by providing a definition for ++ EXTRA_TESTS. */ ++ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Additional expected results declaration, they are initialized in ++ each test file. */ ++extern ARRAY(expected2, uint, 32, 2); ++extern ARRAY(expected2, uint, 32, 4); ++ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ /* Basic test: y=vcomp(x1,x2), then store the result. */ ++#define TEST_VCOMP1(INSN, Q, T1, T2, T3, W, N) \ ++ VECT_VAR(vector_res, T3, W, N) = \ ++ INSN##Q##_##T2##W(VECT_VAR(vector, T1, W, N), \ ++ VECT_VAR(vector2, T1, W, N)); \ ++ vst1##Q##_u##W(VECT_VAR(result, T3, W, N), VECT_VAR(vector_res, T3, W, N)) ++ ++#define TEST_VCOMP(INSN, Q, T1, T2, T3, W, N) \ ++ TEST_VCOMP1(INSN, Q, T1, T2, T3, W, N) ++ ++ DECL_VARIABLE(vector, float, 32, 2); ++ DECL_VARIABLE(vector, float, 32, 4); ++ DECL_VARIABLE(vector2, float, 32, 2); ++ DECL_VARIABLE(vector2, float, 32, 4); ++ DECL_VARIABLE(vector_res, uint, 32, 2); ++ DECL_VARIABLE(vector_res, uint, 32, 4); ++ ++ clean_results (); ++ ++ /* Initialize input "vector" from "buffer". */ ++ VLOAD(vector, buffer, , float, f, 32, 2); ++ VLOAD(vector, buffer, q, float, f, 32, 4); ++ ++ /* Choose init value arbitrarily, will be used for vector ++ comparison. */ ++ VDUP(vector2, , float, f, 32, 2, -16.0f); ++ VDUP(vector2, q, float, f, 32, 4, -14.0f); ++ ++ /* Apply operator named INSN_NAME. */ ++ TEST_VCOMP(INSN_NAME, , float, f, uint, 32, 2); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, ""); ++ ++ TEST_VCOMP(INSN_NAME, q, float, f, uint, 32, 4); ++ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, ""); ++ ++ /* Test again, with different input values. */ ++ VDUP(vector2, , float, f, 32, 2, -10.0f); ++ VDUP(vector2, q, float, f, 32, 4, 10.0f); ++ ++ TEST_VCOMP(INSN_NAME, , float, f, uint, 32, 2); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected2, ""); ++ ++ TEST_VCOMP(INSN_NAME, q, float, f, uint, 32, 4); ++ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected2,""); ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlX_n.inc ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlX_n.inc +@@ -0,0 +1,87 @@ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++#define DECL_VMLX_N(VAR) \ ++ DECL_VARIABLE(VAR, int, 16, 4); \ ++ DECL_VARIABLE(VAR, int, 32, 2); \ ++ DECL_VARIABLE(VAR, uint, 16, 4); \ ++ DECL_VARIABLE(VAR, uint, 32, 2); \ ++ DECL_VARIABLE(VAR, float, 32, 2); \ ++ DECL_VARIABLE(VAR, int, 16, 8); \ ++ DECL_VARIABLE(VAR, int, 32, 4); \ ++ DECL_VARIABLE(VAR, uint, 16, 8); \ ++ DECL_VARIABLE(VAR, float, 32, 4); \ ++ DECL_VARIABLE(VAR, uint, 32, 4) ++ ++ /* vector_res = vmlx_n(vector, vector2, val), ++ then store the result. */ ++#define TEST_VMLX_N1(INSN, Q, T1, T2, W, N, V) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ INSN##Q##_n_##T2##W(VECT_VAR(vector, T1, W, N), \ ++ VECT_VAR(vector2, T1, W, N), \ ++ V); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \ ++ VECT_VAR(vector_res, T1, W, N)) ++ ++#define TEST_VMLX_N(INSN, Q, T1, T2, W, N, V) \ ++ TEST_VMLX_N1(INSN, Q, T1, T2, W, N, V) ++ ++ DECL_VMLX_N(vector); ++ DECL_VMLX_N(vector2); ++ DECL_VMLX_N(vector_res); ++ ++ clean_results (); ++ ++ VLOAD(vector, buffer, , int, s, 16, 4); ++ VLOAD(vector, buffer, , int, s, 32, 2); ++ VLOAD(vector, buffer, , uint, u, 16, 4); ++ VLOAD(vector, buffer, , uint, u, 32, 2); ++ VLOAD(vector, buffer, , float, f, 32, 2); ++ VLOAD(vector, buffer, q, int, s, 16, 8); ++ VLOAD(vector, buffer, q, int, s, 32, 4); ++ VLOAD(vector, buffer, q, uint, u, 16, 8); ++ VLOAD(vector, buffer, q, uint, u, 32, 4); ++ VLOAD(vector, buffer, q, float, f, 32, 4); ++ ++ VDUP(vector2, , int, s, 16, 4, 0x55); ++ VDUP(vector2, , int, s, 32, 2, 0x55); ++ VDUP(vector2, , uint, u, 16, 4, 0x55); ++ VDUP(vector2, , uint, u, 32, 2, 0x55); ++ VDUP(vector2, , float, f, 32, 2, 55.2f); ++ VDUP(vector2, q, int, s, 16, 8, 0x55); ++ VDUP(vector2, q, int, s, 32, 4, 0x55); ++ VDUP(vector2, q, uint, u, 16, 8, 0x55); ++ VDUP(vector2, q, uint, u, 32, 4, 0x55); ++ VDUP(vector2, q, float, f, 32, 4, 55.9f); ++ ++ /* Choose multiplier arbitrarily. */ ++ TEST_VMLX_N(INSN_NAME, , int, s, 16, 4, 0x11); ++ TEST_VMLX_N(INSN_NAME, , int, s, 32, 2, 0x22); ++ TEST_VMLX_N(INSN_NAME, , uint, u, 16, 4, 0x33); ++ TEST_VMLX_N(INSN_NAME, , uint, u, 32, 2, 0x44); ++ TEST_VMLX_N(INSN_NAME, , float, f, 32, 2, 22.3f); ++ TEST_VMLX_N(INSN_NAME, q, int, s, 16, 8, 0x55); ++ TEST_VMLX_N(INSN_NAME, q, int, s, 32, 4, 0x66); ++ TEST_VMLX_N(INSN_NAME, q, uint, u, 16, 8, 0x77); ++ TEST_VMLX_N(INSN_NAME, q, uint, u, 32, 4, 0x88); ++ TEST_VMLX_N(INSN_NAME, q, float, f, 32, 4, 66.7f); ++ ++ CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, ""); ++ CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, ""); ++ CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected, ""); ++ CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, ""); ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, ""); ++ CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected, ""); ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vXXXhn.inc ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vXXXhn.inc +@@ -0,0 +1,55 @@ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ /* Basic test: vec64=vXXXhn(vec128_a, vec128_b), then store the result. */ ++#define TEST_VXXXHN1(INSN, T1, T2, W, W2, N) \ ++ VECT_VAR(vector64, T1, W2, N) = INSN##_##T2##W(VECT_VAR(vector1, T1, W, N), \ ++ VECT_VAR(vector2, T1, W, N)); \ ++ vst1_##T2##W2(VECT_VAR(result, T1, W2, N), VECT_VAR(vector64, T1, W2, N)) ++ ++#define TEST_VXXXHN(INSN, T1, T2, W, W2, N) \ ++ TEST_VXXXHN1(INSN, T1, T2, W, W2, N) ++ ++ DECL_VARIABLE_64BITS_VARIANTS(vector64); ++ DECL_VARIABLE_128BITS_VARIANTS(vector1); ++ DECL_VARIABLE_128BITS_VARIANTS(vector2); ++ ++ clean_results (); ++ ++ /* Fill input vector1 and vector2 with arbitrary values */ ++ VDUP(vector1, q, int, s, 16, 8, 50*(UINT8_MAX+1)); ++ VDUP(vector1, q, int, s, 32, 4, 50*(UINT16_MAX+1)); ++ VDUP(vector1, q, int, s, 64, 2, 24*((uint64_t)UINT32_MAX+1)); ++ VDUP(vector1, q, uint, u, 16, 8, 3*(UINT8_MAX+1)); ++ VDUP(vector1, q, uint, u, 32, 4, 55*(UINT16_MAX+1)); ++ VDUP(vector1, q, uint, u, 64, 2, 3*((uint64_t)UINT32_MAX+1)); ++ ++ VDUP(vector2, q, int, s, 16, 8, (uint16_t)UINT8_MAX); ++ VDUP(vector2, q, int, s, 32, 4, (uint32_t)UINT16_MAX); ++ VDUP(vector2, q, int, s, 64, 2, (uint64_t)UINT32_MAX); ++ VDUP(vector2, q, uint, u, 16, 8, (uint16_t)UINT8_MAX); ++ VDUP(vector2, q, uint, u, 32, 4, (uint32_t)UINT16_MAX); ++ VDUP(vector2, q, uint, u, 64, 2, (uint64_t)UINT32_MAX); ++ ++ TEST_VXXXHN(INSN_NAME, int, s, 16, 8, 8); ++ TEST_VXXXHN(INSN_NAME, int, s, 32, 16, 4); ++ TEST_VXXXHN(INSN_NAME, int, s, 64, 32, 2); ++ TEST_VXXXHN(INSN_NAME, uint, u, 16, 8, 8); ++ TEST_VXXXHN(INSN_NAME, uint, u, 32, 16, 4); ++ TEST_VXXXHN(INSN_NAME, uint, u, 64, 32, 2); ++ ++ CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, ""); ++ CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, ""); ++ CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, ""); ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vabs.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vabs.c +@@ -0,0 +1,74 @@ ++#define INSN_NAME vabs ++#define TEST_MSG "VABS/VABSQ" ++ ++/* Extra tests for functions requiring floating-point types. */ ++void exec_vabs_f32(void); ++#define EXTRA_TESTS exec_vabs_f32 ++ ++#include "unary_op.inc" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x10, 0xf, 0xe, 0xd, ++ 0xc, 0xb, 0xa, 0x9 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x10, 0xf, 0xe, 0xd }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x10, 0xf }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x10, 0xf, 0xe, 0xd, 0xc, 0xb, 0xa, 0x9, ++ 0x8, 0x7, 0x6, 0x5, 0x4, 0x3, 0x2, 0x1 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x10, 0xf, 0xe, 0xd, ++ 0xc, 0xb, 0xa, 0x9 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x10, 0xf, 0xe, 0xd }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++/* Expected results for float32 variants. Needs to be separated since ++ the generic test function does not test floating-point ++ versions. */ ++VECT_VAR_DECL(expected_float32,hfloat,32,2) [] = { 0x40133333, 0x40133333 }; ++VECT_VAR_DECL(expected_float32,hfloat,32,4) [] = { 0x4059999a, 0x4059999a, ++ 0x4059999a, 0x4059999a }; ++ ++void exec_vabs_f32(void) ++{ ++ DECL_VARIABLE(vector, float, 32, 2); ++ DECL_VARIABLE(vector, float, 32, 4); ++ ++ DECL_VARIABLE(vector_res, float, 32, 2); ++ DECL_VARIABLE(vector_res, float, 32, 4); ++ ++ VDUP(vector, , float, f, 32, 2, -2.3f); ++ VDUP(vector, q, float, f, 32, 4, 3.4f); ++ ++ TEST_UNARY_OP(INSN_NAME, , float, f, 32, 2); ++ TEST_UNARY_OP(INSN_NAME, q, float, f, 32, 4); ++ ++ CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_float32, ""); ++ CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_float32, ""); ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl_n.inc ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl_n.inc +@@ -0,0 +1,59 @@ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ /* vector_res = vqdmlxl_n(vector, vector3, val), ++ then store the result. */ ++#define TEST_VQDMLXL_N1(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N)); \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ INSN##_##T2##W2(VECT_VAR(vector, T1, W, N), \ ++ VECT_VAR(vector3, T1, W2, N), \ ++ V); \ ++ vst1q_##T2##W(VECT_VAR(result, T1, W, N), \ ++ VECT_VAR(vector_res, T1, W, N)); \ ++ CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++#define TEST_VQDMLXL_N(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ TEST_VQDMLXL_N1(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++ DECL_VARIABLE(vector, int, 32, 4); ++ DECL_VARIABLE(vector3, int, 16, 4); ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ ++ DECL_VARIABLE(vector, int, 64, 2); ++ DECL_VARIABLE(vector3, int, 32, 2); ++ DECL_VARIABLE(vector_res, int, 64, 2); ++ ++ clean_results (); ++ ++ VLOAD(vector, buffer, q, int, s, 32, 4); ++ VLOAD(vector, buffer, q, int, s, 64, 2); ++ ++ VDUP(vector3, , int, s, 16, 4, 0x55); ++ VDUP(vector3, , int, s, 32, 2, 0x55); ++ ++ /* Choose val arbitrarily. */ ++ TEST_VQDMLXL_N(INSN_NAME, int, s, 32, 16, 4, 0x22, expected_cumulative_sat, ""); ++ TEST_VQDMLXL_N(INSN_NAME, int, s, 64, 32, 2, 0x33, expected_cumulative_sat, ""); ++ ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, ""); ++ ++#define TEST_MSG2 "(check mul cumulative saturation)" ++ VDUP(vector3, , int, s, 16, 4, 0x8000); ++ VDUP(vector3, , int, s, 32, 2, 0x80000000); ++ ++ TEST_VQDMLXL_N(INSN_NAME, int, s, 32, 16, 4, 0x8000, expected_cumulative_sat2, TEST_MSG2); ++ TEST_VQDMLXL_N(INSN_NAME, int, s, 64, 32, 2, 0x80000000, expected_cumulative_sat2, TEST_MSG2); ++ ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected2, TEST_MSG2); ++ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected2, TEST_MSG2); ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_lane.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_lane.c +@@ -0,0 +1,18 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vmlsl_lane ++#define TEST_MSG "VMLSL_LANE" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffc1d9, 0xffffc1da, ++ 0xffffc1db, 0xffffc1dc }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xffffffffffffc1d9, ++ 0xffffffffffffc1da }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffc1d9, 0xffffc1da, ++ 0xffffc1db, 0xffffc1dc }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffffffffc1d9, ++ 0xffffffffffffc1da }; ++ ++#include "vmlXl_lane.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl.c +@@ -0,0 +1,22 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vmlsl ++#define TEST_MSG "VMLSL" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x16d9, 0x16da, 0x16db, 0x16dc, ++ 0x16dd, 0x16de, 0x16df, 0x16e0 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffc1d9, 0xffffc1da, ++ 0xffffc1db, 0xffffc1dc }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xffffffffffffc1d9, ++ 0xffffffffffffc1da }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xc1d9, 0xc1da, 0xc1db, 0xc1dc, ++ 0xc1dd, 0xc1de, 0xc1df, 0xc1e0 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffc1d9, 0xffffc1da, ++ 0xffffc1db, 0xffffc1dc }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffffffffc1d9, ++ 0xffffffffffffc1da }; ++ ++#include "vmlXl.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmla_lane.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmla_lane.c +@@ -0,0 +1,23 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vmla ++#define TEST_MSG "VMLA_LANE" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x3e07, 0x3e08, 0x3e09, 0x3e0a }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x3e07, 0x3e08 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3e07, 0x3e08, 0x3e09, 0x3e0a }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x3e07, 0x3e08 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x4418c687, 0x44190687 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x3e07, 0x3e08, 0x3e09, 0x3e0a, ++ 0x3e0b, 0x3e0c, 0x3e0d, 0x3e0e }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x3e07, 0x3e08, 0x3e09, 0x3e0a }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x3e07, 0x3e08, 0x3e09, 0x3e0a, ++ 0x3e0b, 0x3e0c, 0x3e0d, 0x3e0e }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x3e07, 0x3e08, 0x3e09, 0x3e0a }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x441a3168, 0x441a7168, ++ 0x441ab168, 0x441af168 }; ++ ++#include "vmlX_lane.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsri_n.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsri_n.c +@@ -0,0 +1,164 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vsri ++#define TEST_MSG "VSRI_N" ++ ++/* Extra tests for functions requiring corner cases tests. */ ++void vsri_extra(void); ++#define EXTRA_TESTS vsri_extra ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf0, 0xf0, 0xf0, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xf0 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xffff, 0xffff, 0xffff, 0xffff }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x80000001, 0x80000001 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0xffffffff00000000 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xc5, 0xc5, 0xc5, 0xc5, ++ 0xc5, 0xc5, 0xc5, 0xc5 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xffc0, 0xffc0, 0xffc0, 0xffc0 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffffff0, 0xfffffff0 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0xe000000000000000 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0xc5, 0xc5, 0xc5, 0xc5, ++ 0xc5, 0xc5, 0xc5, 0xc5 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0xffc0, 0xffc0, 0xffc0, 0xffc0 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0xf7, 0xf7, 0xf7, 0xf7, ++ 0xf7, 0xf7, 0xf7, 0xf7, ++ 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xff, 0xff }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xfffd, 0xfffd, 0xfffd, 0xfffd, ++ 0xfffd, 0xfffd, 0xfffd, 0xfffd }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffffff, 0xffffffff, ++ 0xffffffff, 0xffffffff }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xffff000000000000, ++ 0xffff000000000000 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xe1, 0xe1, 0xe1, 0xe1, ++ 0xe1, 0xe1, 0xe1, 0xe1, ++ 0xe1, 0xe1, 0xe1, 0xe1, ++ 0xe1, 0xe1, 0xe1, 0xe1 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfff0, 0xfff0, 0xfff0, 0xfff0, ++ 0xfff0, 0xfff0, 0xfff0, 0xfff0 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfffffe00, 0xfffffe00, ++ 0xfffffe00, 0xfffffe00 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xfffffffffffff800, ++ 0xfffffffffffff800 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0xe1, 0xe1, 0xe1, 0xe1, ++ 0xe1, 0xe1, 0xe1, 0xe1, ++ 0xe1, 0xe1, 0xe1, 0xe1, ++ 0xe1, 0xe1, 0xe1, 0xe1 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0xfff0, 0xfff0, 0xfff0, 0xfff0, ++ 0xfff0, 0xfff0, 0xfff0, 0xfff0 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++/* Expected results with max shift amount. */ ++VECT_VAR_DECL(expected_max_shift,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected_max_shift,int,16,4) [] = { 0xfff0, 0xfff1, ++ 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_max_shift,int,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected_max_shift,int,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected_max_shift,uint,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected_max_shift,uint,16,4) [] = { 0xfff0, 0xfff1, ++ 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_max_shift,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected_max_shift,uint,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected_max_shift,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected_max_shift,poly,16,4) [] = { 0xfff0, 0xfff1, ++ 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected_max_shift,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected_max_shift,int,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7, ++ 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected_max_shift,int,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3, ++ 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected_max_shift,int,32,4) [] = { 0xfffffff0, 0xfffffff1, ++ 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected_max_shift,int,64,2) [] = { 0xfffffffffffffff0, ++ 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected_max_shift,uint,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7, ++ 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected_max_shift,uint,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3, ++ 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected_max_shift,uint,32,4) [] = { 0xfffffff0, 0xfffffff1, ++ 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected_max_shift,uint,64,2) [] = { 0xfffffffffffffff0, ++ 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected_max_shift,poly,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7, ++ 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected_max_shift,poly,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3, ++ 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected_max_shift,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++#include "vsXi_n.inc" ++ ++void vsri_extra(void) ++{ ++ /* Test cases with maximum shift amount (this amount is different ++ from vsli). */ ++ ++ DECL_VARIABLE_ALL_VARIANTS(vector); ++ DECL_VARIABLE_ALL_VARIANTS(vector2); ++ DECL_VARIABLE_ALL_VARIANTS(vector_res); ++ ++ clean_results (); ++ ++ /* Initialize input "vector" from "buffer". */ ++ TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector, buffer); ++ ++ /* Fill input vector2 with arbitrary values. */ ++ VDUP(vector2, , int, s, 8, 8, 2); ++ VDUP(vector2, , int, s, 16, 4, -4); ++ VDUP(vector2, , int, s, 32, 2, 3); ++ VDUP(vector2, , int, s, 64, 1, 100); ++ VDUP(vector2, , uint, u, 8, 8, 20); ++ VDUP(vector2, , uint, u, 16, 4, 30); ++ VDUP(vector2, , uint, u, 32, 2, 40); ++ VDUP(vector2, , uint, u, 64, 1, 2); ++ VDUP(vector2, , poly, p, 8, 8, 20); ++ VDUP(vector2, , poly, p, 16, 4, 30); ++ VDUP(vector2, q, int, s, 8, 16, -10); ++ VDUP(vector2, q, int, s, 16, 8, -20); ++ VDUP(vector2, q, int, s, 32, 4, -30); ++ VDUP(vector2, q, int, s, 64, 2, 24); ++ VDUP(vector2, q, uint, u, 8, 16, 12); ++ VDUP(vector2, q, uint, u, 16, 8, 3); ++ VDUP(vector2, q, uint, u, 32, 4, 55); ++ VDUP(vector2, q, uint, u, 64, 2, 3); ++ VDUP(vector2, q, poly, p, 8, 16, 12); ++ VDUP(vector2, q, poly, p, 16, 8, 3); ++ ++ /* Use maximum allowed shift amount. */ ++ TEST_VSXI_N(INSN_NAME, , int, s, 8, 8, 8); ++ TEST_VSXI_N(INSN_NAME, , int, s, 16, 4, 16); ++ TEST_VSXI_N(INSN_NAME, , int, s, 32, 2, 32); ++ TEST_VSXI_N(INSN_NAME, , int, s, 64, 1, 64); ++ TEST_VSXI_N(INSN_NAME, , uint, u, 8, 8, 8); ++ TEST_VSXI_N(INSN_NAME, , uint, u, 16, 4, 16); ++ TEST_VSXI_N(INSN_NAME, , uint, u, 32, 2, 32); ++ TEST_VSXI_N(INSN_NAME, , uint, u, 64, 1, 64); ++ TEST_VSXI_N(INSN_NAME, , poly, p, 8, 8, 8); ++ TEST_VSXI_N(INSN_NAME, , poly, p, 16, 4, 16); ++ TEST_VSXI_N(INSN_NAME, q, int, s, 8, 16, 8); ++ TEST_VSXI_N(INSN_NAME, q, int, s, 16, 8, 16); ++ TEST_VSXI_N(INSN_NAME, q, int, s, 32, 4, 32); ++ TEST_VSXI_N(INSN_NAME, q, int, s, 64, 2, 64); ++ TEST_VSXI_N(INSN_NAME, q, uint, u, 8, 16, 8); ++ TEST_VSXI_N(INSN_NAME, q, uint, u, 16, 8, 16); ++ TEST_VSXI_N(INSN_NAME, q, uint, u, 32, 4, 32); ++ TEST_VSXI_N(INSN_NAME, q, uint, u, 64, 2, 64); ++ TEST_VSXI_N(INSN_NAME, q, poly, p, 8, 16, 8); ++ TEST_VSXI_N(INSN_NAME, q, poly, p, 16, 8, 16); ++ ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_max_shift, "(max shift amount)"); ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vget_high.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vget_high.c +@@ -0,0 +1,86 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xc1600000, 0xc1500000 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++#define TEST_MSG "VGET_HIGH" ++void exec_vget_high (void) ++{ ++ /* Basic test: vec64=vget_high(vec128), then store the result. */ ++#define TEST_VGET_HIGH(T1, T2, W, N, N2) \ ++ VECT_VAR(vector64, T1, W, N) = \ ++ vget_high_##T2##W(VECT_VAR(vector128, T1, W, N2)); \ ++ vst1_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector64, T1, W, N)) ++ ++ DECL_VARIABLE_64BITS_VARIANTS(vector64); ++ DECL_VARIABLE_128BITS_VARIANTS(vector128); ++ ++ TEST_MACRO_128BITS_VARIANTS_2_5(VLOAD, vector128, buffer); ++ VLOAD(vector128, buffer, q, float, f, 32, 4); ++ ++ clean_results (); ++ ++ /* Execute the tests. */ ++ TEST_VGET_HIGH(int, s, 8, 8, 16); ++ TEST_VGET_HIGH(int, s, 16, 4, 8); ++ TEST_VGET_HIGH(int, s, 32, 2, 4); ++ TEST_VGET_HIGH(int, s, 64, 1, 2); ++ TEST_VGET_HIGH(uint, u, 8, 8, 16); ++ TEST_VGET_HIGH(uint, u, 16, 4, 8); ++ TEST_VGET_HIGH(uint, u, 32, 2, 4); ++ TEST_VGET_HIGH(uint, u, 64, 1, 2); ++ TEST_VGET_HIGH(poly, p, 8, 8, 16); ++ TEST_VGET_HIGH(poly, p, 16, 4, 8); ++ TEST_VGET_HIGH(float, f, 32, 2, 4); ++ ++ CHECK_RESULTS (TEST_MSG, ""); ++} ++ ++int main (void) ++{ ++ exec_vget_high (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vaddhn.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vaddhn.c +@@ -0,0 +1,24 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#if defined(__cplusplus) ++#include ++#else ++#include ++#endif ++ ++#define INSN_NAME vaddhn ++#define TEST_MSG "VADDHN" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x32, 0x32, 0x32, 0x32, ++ 0x32, 0x32, 0x32, 0x32 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x32, 0x32, 0x32, 0x32 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x18, 0x18 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x3, 0x3, 0x3, 0x3, ++ 0x3, 0x3, 0x3, 0x3 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x37, 0x37, 0x37, 0x37 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x3, 0x3 }; ++ ++#include "vXXXhn.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vaddw.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vaddw.c +@@ -0,0 +1,51 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vaddw ++#define TEST_MSG "VADDW" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xffe3, 0xffe4, 0xffe5, 0xffe6, ++ 0xffe7, 0xffe8, 0xffe9, 0xffea }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffffe2, 0xffffffe3, ++ 0xffffffe4, 0xffffffe5 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xffffffffffffffe0, ++ 0xffffffffffffffe1 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xe3, 0xe4, 0xe5, 0xe6, ++ 0xe7, 0xe8, 0xe9, 0xea }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffe1, 0xffe2, ++ 0xffe3, 0xffe4 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffe0, 0xffffffe1 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++#include "vXXXw.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1.c +@@ -0,0 +1,75 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7, ++ 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3, ++ 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffff0, 0xfffffff1, ++ 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xfffffffffffffff0, ++ 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7, ++ 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, ++ 0xfff3, 0xfff4, 0xfff5, ++ 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfffffff0, 0xfffffff1, ++ 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xfffffffffffffff0, ++ 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7, ++ 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xfc, 0xfd, 0xfe, 0xff }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3, ++ 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0xc1800000, 0xc1700000, ++ 0xc1600000, 0xc1500000 }; ++ ++#define TEST_MSG "VLD1/VLD1Q" ++void exec_vld1 (void) ++{ ++ /* Basic test vec=vld1(buffer); then store vec: vst1(result, vector). */ ++ /* This test actually tests vdl1 and vst1 at the same time. */ ++#define TEST_VLD1(VAR, BUF, Q, T1, T2, W, N) \ ++ VECT_VAR(VAR, T1, W, N) = vld1##Q##_##T2##W(VECT_VAR(BUF, T1, W, N)); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(VAR, T1, W, N)) ++ ++ DECL_VARIABLE_ALL_VARIANTS(vector); ++ ++ clean_results (); ++ ++ TEST_MACRO_ALL_VARIANTS_2_5(TEST_VLD1, vector, buffer); ++ ++ TEST_VLD1(vector, buffer, , float, f, 32, 2); ++ TEST_VLD1(vector, buffer, q, float, f, 32, 4); ++ ++ CHECK_RESULTS (TEST_MSG, ""); ++} ++ ++int main (void) ++{ ++ exec_vld1 (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vclt.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vclt.c +@@ -0,0 +1,79 @@ ++#define INSN_NAME vclt ++#define TEST_MSG "VCLT/VCLTQ" ++ ++#include "cmp_op.inc" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0x0, 0x0 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xffff, 0xffff, 0x0, 0x0 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333, ++ 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xff, 0xff, ++ 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xffff, 0xffff, 0xffff, 0xffff, ++ 0xffff, 0xffff, 0x0, 0x0 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffff, 0xffffffff, 0x0, 0x0 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++VECT_VAR_DECL(expected_uint,uint,8,8) [] = { 0xff, 0xff, 0xff, 0x0, ++ 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_uint,uint,16,4) [] = { 0xffff, 0xffff, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_uint,uint,32,2) [] = { 0xffffffff, 0x0 }; ++ ++VECT_VAR_DECL(expected_q_uint,uint,8,16) [] = { 0xff, 0xff, 0xff, 0xff, ++ 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_q_uint,uint,16,8) [] = { 0xffff, 0xffff, 0xffff, 0xffff, ++ 0xffff, 0xffff, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_q_uint,uint,32,4) [] = { 0xffffffff, 0xffffffff, ++ 0x0, 0x0 }; ++ ++VECT_VAR_DECL(expected_float,uint,32,2) [] = { 0xffffffff, 0x0 }; ++VECT_VAR_DECL(expected_q_float,uint,32,4) [] = { 0xffffffff, 0xffffffff, ++ 0x0, 0x0 }; ++ ++VECT_VAR_DECL(expected_uint2,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected_uint3,uint,32,2) [] = { 0xffffffff, 0x0 }; ++VECT_VAR_DECL(expected_uint4,uint,32,2) [] = { 0x0, 0x0 }; ++ ++VECT_VAR_DECL(expected_nan,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected_mnan,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected_nan2,uint,32,2) [] = { 0x0, 0x0 }; ++ ++VECT_VAR_DECL(expected_inf,uint,32,2) [] = { 0xffffffff, 0xffffffff }; ++VECT_VAR_DECL(expected_minf,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected_inf2,uint,32,2) [] = { 0x0, 0x0 }; ++ ++VECT_VAR_DECL(expected_mzero,uint,32,2) [] = { 0x0, 0x0 }; +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcalt.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcalt.c +@@ -0,0 +1,49 @@ ++#define INSN_NAME vcalt ++#define TEST_MSG "VCALT/VCALTQ" ++ ++#include "cmp_fp_op.inc" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x0, 0xffffffff }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333, ++ 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffffff, 0xffffffff, 0x0, 0x0 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333, ++ 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x0, 0x0, 0x0, 0xffffffff }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++VECT_VAR_DECL(expected2,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected2,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 }; +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vshuffle.inc ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vshuffle.inc +@@ -0,0 +1,139 @@ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ /* In this case, output variables are arrays of vectors. */ ++#define DECL_VSHUFFLE(T1, W, N) \ ++ VECT_ARRAY_TYPE(T1, W, N, 2) VECT_ARRAY_VAR(result_vec, T1, W, N, 2); \ ++ VECT_VAR_DECL(result_bis, T1, W, N)[2 * N] ++ ++ /* We need to use a temporary result buffer (result_bis), because ++ the one used for other tests is not large enough. A subset of the ++ result data is moved from result_bis to result, and it is this ++ subset which is used to check the actual behaviour. The next ++ macro enables to move another chunk of data from result_bis to ++ result. */ ++#define TEST_VSHUFFLE(INSN, Q, T1, T2, W, N) \ ++ VECT_ARRAY_VAR(result_vec, T1, W, N, 2) = \ ++ INSN##Q##_##T2##W(VECT_VAR(vector1, T1, W, N), \ ++ VECT_VAR(vector2, T1, W, N)); \ ++ vst2##Q##_##T2##W(VECT_VAR(result_bis, T1, W, N), \ ++ VECT_ARRAY_VAR(result_vec, T1, W, N, 2)); \ ++ memcpy(VECT_VAR(result, T1, W, N), VECT_VAR(result_bis, T1, W, N), \ ++ sizeof(VECT_VAR(result, T1, W, N))); ++ ++ /* Overwrite "result" with the contents of "result_bis"[X]. */ ++#define TEST_EXTRA_CHUNK(T1, W, N, X) \ ++ memcpy(VECT_VAR(result, T1, W, N), &(VECT_VAR(result_bis, T1, W, N)[X*N]), \ ++ sizeof(VECT_VAR(result, T1, W, N))); ++ ++ DECL_VARIABLE_ALL_VARIANTS(vector1); ++ DECL_VARIABLE_ALL_VARIANTS(vector2); ++ ++ /* We don't need 64 bits variants. */ ++#define DECL_ALL_VSHUFFLE() \ ++ DECL_VSHUFFLE(int, 8, 8); \ ++ DECL_VSHUFFLE(int, 16, 4); \ ++ DECL_VSHUFFLE(int, 32, 2); \ ++ DECL_VSHUFFLE(uint, 8, 8); \ ++ DECL_VSHUFFLE(uint, 16, 4); \ ++ DECL_VSHUFFLE(uint, 32, 2); \ ++ DECL_VSHUFFLE(poly, 8, 8); \ ++ DECL_VSHUFFLE(poly, 16, 4); \ ++ DECL_VSHUFFLE(float, 32, 2); \ ++ DECL_VSHUFFLE(int, 8, 16); \ ++ DECL_VSHUFFLE(int, 16, 8); \ ++ DECL_VSHUFFLE(int, 32, 4); \ ++ DECL_VSHUFFLE(uint, 8, 16); \ ++ DECL_VSHUFFLE(uint, 16, 8); \ ++ DECL_VSHUFFLE(uint, 32, 4); \ ++ DECL_VSHUFFLE(poly, 8, 16); \ ++ DECL_VSHUFFLE(poly, 16, 8); \ ++ DECL_VSHUFFLE(float, 32, 4) ++ ++ DECL_ALL_VSHUFFLE(); ++ ++ /* Initialize input "vector" from "buffer". */ ++ TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector1, buffer); ++ VLOAD(vector1, buffer, , float, f, 32, 2); ++ VLOAD(vector1, buffer, q, float, f, 32, 4); ++ ++ /* Choose arbitrary initialization values. */ ++ VDUP(vector2, , int, s, 8, 8, 0x11); ++ VDUP(vector2, , int, s, 16, 4, 0x22); ++ VDUP(vector2, , int, s, 32, 2, 0x33); ++ VDUP(vector2, , uint, u, 8, 8, 0x55); ++ VDUP(vector2, , uint, u, 16, 4, 0x66); ++ VDUP(vector2, , uint, u, 32, 2, 0x77); ++ VDUP(vector2, , poly, p, 8, 8, 0x55); ++ VDUP(vector2, , poly, p, 16, 4, 0x66); ++ VDUP(vector2, , float, f, 32, 2, 33.6f); ++ ++ VDUP(vector2, q, int, s, 8, 16, 0x11); ++ VDUP(vector2, q, int, s, 16, 8, 0x22); ++ VDUP(vector2, q, int, s, 32, 4, 0x33); ++ VDUP(vector2, q, uint, u, 8, 16, 0x55); ++ VDUP(vector2, q, uint, u, 16, 8, 0x66); ++ VDUP(vector2, q, uint, u, 32, 4, 0x77); ++ VDUP(vector2, q, poly, p, 8, 16, 0x55); ++ VDUP(vector2, q, poly, p, 16, 8, 0x66); ++ VDUP(vector2, q, float, f, 32, 4, 33.8f); ++ ++#define TEST_ALL_VSHUFFLE(INSN) \ ++ TEST_VSHUFFLE(INSN, , int, s, 8, 8); \ ++ TEST_VSHUFFLE(INSN, , int, s, 16, 4); \ ++ TEST_VSHUFFLE(INSN, , int, s, 32, 2); \ ++ TEST_VSHUFFLE(INSN, , uint, u, 8, 8); \ ++ TEST_VSHUFFLE(INSN, , uint, u, 16, 4); \ ++ TEST_VSHUFFLE(INSN, , uint, u, 32, 2); \ ++ TEST_VSHUFFLE(INSN, , poly, p, 8, 8); \ ++ TEST_VSHUFFLE(INSN, , poly, p, 16, 4); \ ++ TEST_VSHUFFLE(INSN, , float, f, 32, 2); \ ++ TEST_VSHUFFLE(INSN, q, int, s, 8, 16); \ ++ TEST_VSHUFFLE(INSN, q, int, s, 16, 8); \ ++ TEST_VSHUFFLE(INSN, q, int, s, 32, 4); \ ++ TEST_VSHUFFLE(INSN, q, uint, u, 8, 16); \ ++ TEST_VSHUFFLE(INSN, q, uint, u, 16, 8); \ ++ TEST_VSHUFFLE(INSN, q, uint, u, 32, 4); \ ++ TEST_VSHUFFLE(INSN, q, poly, p, 8, 16); \ ++ TEST_VSHUFFLE(INSN, q, poly, p, 16, 8); \ ++ TEST_VSHUFFLE(INSN, q, float, f, 32, 4) ++ ++#define TEST_ALL_EXTRA_CHUNKS() \ ++ TEST_EXTRA_CHUNK(int, 8, 8, 1); \ ++ TEST_EXTRA_CHUNK(int, 16, 4, 1); \ ++ TEST_EXTRA_CHUNK(int, 32, 2, 1); \ ++ TEST_EXTRA_CHUNK(uint, 8, 8, 1); \ ++ TEST_EXTRA_CHUNK(uint, 16, 4, 1); \ ++ TEST_EXTRA_CHUNK(uint, 32, 2, 1); \ ++ TEST_EXTRA_CHUNK(poly, 8, 8, 1); \ ++ TEST_EXTRA_CHUNK(poly, 16, 4, 1); \ ++ TEST_EXTRA_CHUNK(float, 32, 2, 1); \ ++ TEST_EXTRA_CHUNK(int, 8, 16, 1); \ ++ TEST_EXTRA_CHUNK(int, 16, 8, 1); \ ++ TEST_EXTRA_CHUNK(int, 32, 4, 1); \ ++ TEST_EXTRA_CHUNK(uint, 8, 16, 1); \ ++ TEST_EXTRA_CHUNK(uint, 16, 8, 1); \ ++ TEST_EXTRA_CHUNK(uint, 32, 4, 1); \ ++ TEST_EXTRA_CHUNK(poly, 8, 16, 1); \ ++ TEST_EXTRA_CHUNK(poly, 16, 8, 1); \ ++ TEST_EXTRA_CHUNK(float, 32, 4, 1) ++ ++ clean_results (); ++ ++ /* Execute the tests. */ ++ TEST_ALL_VSHUFFLE(INSN_NAME); ++ ++ CHECK_RESULTS_NAMED (TEST_MSG, expected0, "(chunk 0)"); ++ ++ TEST_ALL_EXTRA_CHUNKS(); ++ CHECK_RESULTS_NAMED (TEST_MSG, expected1, "(chunk 1)"); ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vshl.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vshl.c +@@ -0,0 +1,230 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xe0, 0xe2, 0xe4, 0xe6, ++ 0xe8, 0xea, 0xec, 0xee }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xff80, 0xff88, 0xff90, 0xff98 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffff000, 0xfffff100 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0xffffffffffffff80 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xe0, 0xe2, 0xe4, 0xe6, ++ 0xe8, 0xea, 0xec, 0xee }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xff80, 0xff88, 0xff90, 0xff98 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffff000, 0xfffff100 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0xffffffffffffff80 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, ++ 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x0, 0x20, 0x40, 0x60, ++ 0x80, 0xa0, 0xc0, 0xe0, ++ 0x0, 0x20, 0x40, 0x60, ++ 0x80, 0xa0, 0xc0, 0xe0 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x0, 0x1000, 0x2000, 0x3000, ++ 0x4000, 0x5000, 0x6000, 0x7000 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x0, 0x40000000, ++ 0x80000000, 0xc0000000 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x0, 0x8000000000000000 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x0, 0x20, 0x40, 0x60, ++ 0x80, 0xa0, 0xc0, 0xe0, ++ 0x0, 0x20, 0x40, 0x60, ++ 0x80, 0xa0, 0xc0, 0xe0 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x0, 0x1000, 0x2000, 0x3000, ++ 0x4000, 0x5000, 0x6000, 0x7000 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x0, 0x40000000, ++ 0x80000000, 0xc0000000 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x0, 0x8000000000000000 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++/* Expected results with large shift amount. */ ++VECT_VAR_DECL(expected_large_shift,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_large_shift,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_large_shift,int,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected_large_shift,int,64,1) [] = { 0x0 }; ++VECT_VAR_DECL(expected_large_shift,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_large_shift,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_large_shift,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected_large_shift,uint,64,1) [] = { 0x0 }; ++VECT_VAR_DECL(expected_large_shift,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_large_shift,poly,16,4) [] = { 0x3333, 0x3333, ++ 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_large_shift,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected_large_shift,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_large_shift,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_large_shift,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_large_shift,int,64,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected_large_shift,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_large_shift,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_large_shift,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_large_shift,uint,64,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected_large_shift,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_large_shift,poly,16,8) [] = { 0x3333, 0x3333, ++ 0x3333, 0x3333, ++ 0x3333, 0x3333, ++ 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_large_shift,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++ ++/* Expected results with negative shift amount. */ ++VECT_VAR_DECL(expected_negative_shift,int,8,8) [] = { 0xf8, 0xf8, 0xf9, 0xf9, ++ 0xfa, 0xfa, 0xfb, 0xfb }; ++VECT_VAR_DECL(expected_negative_shift,int,16,4) [] = { 0xfff8, 0xfff8, ++ 0xfff9, 0xfff9 }; ++VECT_VAR_DECL(expected_negative_shift,int,32,2) [] = { 0xfffffffc, 0xfffffffc }; ++VECT_VAR_DECL(expected_negative_shift,int,64,1) [] = { 0xffffffffffffffff }; ++VECT_VAR_DECL(expected_negative_shift,uint,8,8) [] = { 0x78, 0x78, 0x79, 0x79, ++ 0x7a, 0x7a, 0x7b, 0x7b }; ++VECT_VAR_DECL(expected_negative_shift,uint,16,4) [] = { 0x7ff8, 0x7ff8, ++ 0x7ff9, 0x7ff9 }; ++VECT_VAR_DECL(expected_negative_shift,uint,32,2) [] = { 0x3ffffffc, ++ 0x3ffffffc }; ++VECT_VAR_DECL(expected_negative_shift,uint,64,1) [] = { 0xfffffffffffffff }; ++VECT_VAR_DECL(expected_negative_shift,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_negative_shift,poly,16,4) [] = { 0x3333, 0x3333, ++ 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_negative_shift,hfloat,32,2) [] = { 0x33333333, ++ 0x33333333 }; ++VECT_VAR_DECL(expected_negative_shift,int,8,16) [] = { 0xfc, 0xfc, 0xfc, 0xfc, ++ 0xfd, 0xfd, 0xfd, 0xfd, ++ 0xfe, 0xfe, 0xfe, 0xfe, ++ 0xff, 0xff, 0xff, 0xff }; ++VECT_VAR_DECL(expected_negative_shift,int,16,8) [] = { 0xffff, 0xffff, ++ 0xffff, 0xffff, ++ 0xffff, 0xffff, ++ 0xffff, 0xffff }; ++VECT_VAR_DECL(expected_negative_shift,int,32,4) [] = { 0xfffffffe, 0xfffffffe, ++ 0xfffffffe, 0xfffffffe }; ++VECT_VAR_DECL(expected_negative_shift,int,64,2) [] = { 0xffffffffffffffff, ++ 0xffffffffffffffff }; ++VECT_VAR_DECL(expected_negative_shift,uint,8,16) [] = { 0x3c, 0x3c, 0x3c, 0x3c, ++ 0x3d, 0x3d, 0x3d, 0x3d, ++ 0x3e, 0x3e, 0x3e, 0x3e, ++ 0x3f, 0x3f, 0x3f, 0x3f }; ++VECT_VAR_DECL(expected_negative_shift,uint,16,8) [] = { 0x7ff, 0x7ff, ++ 0x7ff, 0x7ff, ++ 0x7ff, 0x7ff, ++ 0x7ff, 0x7ff }; ++VECT_VAR_DECL(expected_negative_shift,uint,32,4) [] = { 0x1ffffffe, 0x1ffffffe, ++ 0x1ffffffe, 0x1ffffffe }; ++VECT_VAR_DECL(expected_negative_shift,uint,64,2) [] = { 0x7ffffffffffffff, ++ 0x7ffffffffffffff }; ++VECT_VAR_DECL(expected_negative_shift,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_negative_shift,poly,16,8) [] = { 0x3333, 0x3333, ++ 0x3333, 0x3333, ++ 0x3333, 0x3333, ++ 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_negative_shift,hfloat,32,4) [] = { 0x33333333, ++ 0x33333333, ++ 0x33333333, ++ 0x33333333 }; ++ ++ ++#ifndef INSN_NAME ++#define INSN_NAME vshl ++#define TEST_MSG "VSHL/VSHLQ" ++#endif ++ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ /* Basic test: v3=vshl(v1,v2), then store the result. */ ++#define TEST_VSHL(T3, Q, T1, T2, W, N) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ vshl##Q##_##T2##W(VECT_VAR(vector, T1, W, N), \ ++ VECT_VAR(vector_shift, T3, W, N)); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N)) ++ ++ DECL_VARIABLE_ALL_VARIANTS(vector); ++ DECL_VARIABLE_ALL_VARIANTS(vector_res); ++ ++ DECL_VARIABLE_SIGNED_VARIANTS(vector_shift); ++ ++ clean_results (); ++ ++ /* Initialize input "vector" from "buffer". */ ++ TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector, buffer); ++ ++ /* Choose init value arbitrarily, will be used as shift amount. */ ++ VDUP(vector_shift, , int, s, 8, 8, 1); ++ VDUP(vector_shift, , int, s, 16, 4, 3); ++ VDUP(vector_shift, , int, s, 32, 2, 8); ++ VDUP(vector_shift, , int, s, 64, 1, 3); ++ VDUP(vector_shift, q, int, s, 8, 16, 5); ++ VDUP(vector_shift, q, int, s, 16, 8, 12); ++ VDUP(vector_shift, q, int, s, 32, 4, 30); ++ VDUP(vector_shift, q, int, s, 64, 2, 63); ++ ++ /* Execute the tests. */ ++ TEST_MACRO_ALL_VARIANTS_1_5(TEST_VSHL, int); ++ ++ CHECK_RESULTS (TEST_MSG, ""); ++ ++ ++ /* Test large shift amount (larger or equal to the type width. */ ++ VDUP(vector_shift, , int, s, 8, 8, 8); ++ VDUP(vector_shift, , int, s, 16, 4, 16); ++ VDUP(vector_shift, , int, s, 32, 2, 32); ++ VDUP(vector_shift, , int, s, 64, 1, 64); ++ VDUP(vector_shift, q, int, s, 8, 16, 8); ++ VDUP(vector_shift, q, int, s, 16, 8, 17); ++ VDUP(vector_shift, q, int, s, 32, 4, 33); ++ VDUP(vector_shift, q, int, s, 64, 2, 65); ++ ++ /* Execute the tests. */ ++ TEST_MACRO_ALL_VARIANTS_1_5(TEST_VSHL, int); ++ ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_large_shift, "(large shift amount)"); ++ ++ ++ /* Test negative shift amount. */ ++ VDUP(vector_shift, , int, s, 8, 8, -1); ++ VDUP(vector_shift, , int, s, 16, 4, -1); ++ VDUP(vector_shift, , int, s, 32, 2, -2); ++ VDUP(vector_shift, , int, s, 64, 1, -4); ++ VDUP(vector_shift, q, int, s, 8, 16, -2); ++ VDUP(vector_shift, q, int, s, 16, 8, -5); ++ VDUP(vector_shift, q, int, s, 32, 4, -3); ++ VDUP(vector_shift, q, int, s, 64, 2, -5); ++ ++ /* Execute the tests. */ ++ TEST_MACRO_ALL_VARIANTS_1_5(TEST_VSHL, int); ++ ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_negative_shift, "(negative shift amount)"); ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlX.inc ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlX.inc +@@ -0,0 +1,123 @@ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++#define DECL_VMLX(T, W, N) \ ++ DECL_VARIABLE(vector1, T, W, N); \ ++ DECL_VARIABLE(vector2, T, W, N); \ ++ DECL_VARIABLE(vector3, T, W, N); \ ++ DECL_VARIABLE(vector_res, T, W, N) ++ ++ /* vector_res = vmla(vector, vector3, vector4), ++ then store the result. */ ++#define TEST_VMLX1(INSN, Q, T1, T2, W, N) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ INSN##Q##_##T2##W(VECT_VAR(vector1, T1, W, N), \ ++ VECT_VAR(vector2, T1, W, N), \ ++ VECT_VAR(vector3, T1, W, N)); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \ ++ VECT_VAR(vector_res, T1, W, N)) ++ ++#define TEST_VMLX(INSN, Q, T1, T2, W, N) \ ++ TEST_VMLX1(INSN, Q, T1, T2, W, N) ++ ++ DECL_VMLX(int, 8, 8); ++ DECL_VMLX(int, 16, 4); ++ DECL_VMLX(int, 32, 2); ++ DECL_VMLX(uint, 8, 8); ++ DECL_VMLX(uint, 16, 4); ++ DECL_VMLX(uint, 32, 2); ++ DECL_VMLX(float, 32, 2); ++ DECL_VMLX(int, 8, 16); ++ DECL_VMLX(int, 16, 8); ++ DECL_VMLX(int, 32, 4); ++ DECL_VMLX(uint, 8, 16); ++ DECL_VMLX(uint, 16, 8); ++ DECL_VMLX(uint, 32, 4); ++ DECL_VMLX(float, 32, 4); ++ ++ clean_results (); ++ ++ VLOAD(vector1, buffer, , int, s, 8, 8); ++ VLOAD(vector1, buffer, , int, s, 16, 4); ++ VLOAD(vector1, buffer, , int, s, 32, 2); ++ VLOAD(vector1, buffer, , uint, u, 8, 8); ++ VLOAD(vector1, buffer, , uint, u, 16, 4); ++ VLOAD(vector1, buffer, , uint, u, 32, 2); ++ VLOAD(vector1, buffer, , float, f, 32, 2); ++ VLOAD(vector1, buffer, q, int, s, 8, 16); ++ VLOAD(vector1, buffer, q, int, s, 16, 8); ++ VLOAD(vector1, buffer, q, int, s, 32, 4); ++ VLOAD(vector1, buffer, q, uint, u, 8, 16); ++ VLOAD(vector1, buffer, q, uint, u, 16, 8); ++ VLOAD(vector1, buffer, q, uint, u, 32, 4); ++ VLOAD(vector1, buffer, q, float, f, 32, 4); ++ ++ VDUP(vector2, , int, s, 8, 8, 0x11); ++ VDUP(vector2, , int, s, 16, 4, 0x22); ++ VDUP(vector2, , int, s, 32, 2, 0x33); ++ VDUP(vector2, , uint, u, 8, 8, 0x44); ++ VDUP(vector2, , uint, u, 16, 4, 0x55); ++ VDUP(vector2, , uint, u, 32, 2, 0x66); ++ VDUP(vector2, , float, f, 32, 2, 33.1f); ++ VDUP(vector2, q, int, s, 8, 16, 0x77); ++ VDUP(vector2, q, int, s, 16, 8, 0x88); ++ VDUP(vector2, q, int, s, 32, 4, 0x99); ++ VDUP(vector2, q, uint, u, 8, 16, 0xAA); ++ VDUP(vector2, q, uint, u, 16, 8, 0xBB); ++ VDUP(vector2, q, uint, u, 32, 4, 0xCC); ++ VDUP(vector2, q, float, f, 32, 4, 99.2f); ++ ++ VDUP(vector3, , int, s, 8, 8, 0xFF); ++ VDUP(vector3, , int, s, 16, 4, 0xEE); ++ VDUP(vector3, , int, s, 32, 2, 0xDD); ++ VDUP(vector3, , uint, u, 8, 8, 0xCC); ++ VDUP(vector3, , uint, u, 16, 4, 0xBB); ++ VDUP(vector3, , uint, u, 32, 2, 0xAA); ++ VDUP(vector3, , float, f, 32, 2, 10.23f); ++ VDUP(vector3, q, int, s, 8, 16, 0x99); ++ VDUP(vector3, q, int, s, 16, 8, 0x88); ++ VDUP(vector3, q, int, s, 32, 4, 0x77); ++ VDUP(vector3, q, uint, u, 8, 16, 0x66); ++ VDUP(vector3, q, uint, u, 16, 8, 0x55); ++ VDUP(vector3, q, uint, u, 32, 4, 0x44); ++ VDUP(vector3, q, float, f, 32, 4, 77.8f); ++ ++ TEST_VMLX(INSN_NAME, , int, s, 8, 8); ++ TEST_VMLX(INSN_NAME, , int, s, 16, 4); ++ TEST_VMLX(INSN_NAME, , int, s, 32, 2); ++ TEST_VMLX(INSN_NAME, , uint, u, 8, 8); ++ TEST_VMLX(INSN_NAME, , uint, u, 16, 4); ++ TEST_VMLX(INSN_NAME, , uint, u, 32, 2); ++ TEST_VMLX(INSN_NAME, , float, f, 32, 2); ++ TEST_VMLX(INSN_NAME, q, int, s, 8, 16); ++ TEST_VMLX(INSN_NAME, q, int, s, 16, 8); ++ TEST_VMLX(INSN_NAME, q, int, s, 32, 4); ++ TEST_VMLX(INSN_NAME, q, uint, u, 8, 16); ++ TEST_VMLX(INSN_NAME, q, uint, u, 16, 8); ++ TEST_VMLX(INSN_NAME, q, uint, u, 32, 4); ++ TEST_VMLX(INSN_NAME, q, float, f, 32, 4); ++ ++ CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, ""); ++ CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, ""); ++ CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, ""); ++ CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected, ""); ++ CHECK(TEST_MSG, int, 8, 16, PRIx8, expected, ""); ++ CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, ""); ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, ""); ++ CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected, ""); ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdup_lane.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdup_lane.c +@@ -0,0 +1,100 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf1, 0xf1, 0xf1, 0xf1, ++ 0xf1, 0xf1, 0xf1, 0xf1 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff2, 0xfff2, 0xfff2, 0xfff2 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffff1, 0xfffffff1 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xf7, 0xf7, 0xf7, 0xf7, ++ 0xf7, 0xf7, 0xf7, 0xf7 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfff3, 0xfff3, 0xfff3, 0xfff3 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffffff1, 0xfffffff1 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0xf7, 0xf7, 0xf7, 0xf7, ++ 0xf7, 0xf7, 0xf7, 0xf7 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0xfff3, 0xfff3, 0xfff3, 0xfff3 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xc1700000, 0xc1700000 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf2, 0xf2, 0xf2, 0xf2 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xfff3, 0xfff3, 0xfff3, 0xfff3, ++ 0xfff3, 0xfff3, 0xfff3, 0xfff3 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffff1, 0xfffffff1, ++ 0xfffffff1, 0xfffffff1 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xfffffffffffffff0, ++ 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xf5, 0xf5, 0xf5, 0xf5, ++ 0xf5, 0xf5, 0xf5, 0xf5, ++ 0xf5, 0xf5, 0xf5, 0xf5, ++ 0xf5, 0xf5, 0xf5, 0xf5 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfff1, 0xfff1, 0xfff1, 0xfff1, ++ 0xfff1, 0xfff1, 0xfff1, 0xfff1 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfffffff0, 0xfffffff0, ++ 0xfffffff0, 0xfffffff0 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xfffffffffffffff0, ++ 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0xf5, 0xf5, 0xf5, 0xf5, ++ 0xf5, 0xf5, 0xf5, 0xf5, ++ 0xf5, 0xf5, 0xf5, 0xf5, ++ 0xf5, 0xf5, 0xf5, 0xf5 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0xfff1, 0xfff1, 0xfff1, 0xfff1, ++ 0xfff1, 0xfff1, 0xfff1, 0xfff1 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0xc1700000, 0xc1700000, ++ 0xc1700000, 0xc1700000 }; ++ ++#define TEST_MSG "VDUP_LANE/VDUP_LANEQ" ++void exec_vdup_lane (void) ++{ ++ /* Basic test: vec1=vdup_lane(vec2, lane), then store the result. */ ++#define TEST_VDUP_LANE(Q, T1, T2, W, N, N2, L) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ vdup##Q##_lane_##T2##W(VECT_VAR(vector, T1, W, N2), L); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N)) ++ ++ /* Input vector can only have 64 bits. */ ++ DECL_VARIABLE_64BITS_VARIANTS(vector); ++ ++ DECL_VARIABLE_ALL_VARIANTS(vector_res); ++ ++ clean_results (); ++ ++ TEST_MACRO_64BITS_VARIANTS_2_5(VLOAD, vector, buffer); ++ VLOAD(vector, buffer, , float, f, 32, 2); ++ ++ /* Choose lane arbitrarily. */ ++ TEST_VDUP_LANE(, int, s, 8, 8, 8, 1); ++ TEST_VDUP_LANE(, int, s, 16, 4, 4, 2); ++ TEST_VDUP_LANE(, int, s, 32, 2, 2, 1); ++ TEST_VDUP_LANE(, int, s, 64, 1, 1, 0); ++ TEST_VDUP_LANE(, uint, u, 8, 8, 8, 7); ++ TEST_VDUP_LANE(, uint, u, 16, 4, 4, 3); ++ TEST_VDUP_LANE(, uint, u, 32, 2, 2, 1); ++ TEST_VDUP_LANE(, uint, u, 64, 1, 1, 0); ++ TEST_VDUP_LANE(, poly, p, 8, 8, 8, 7); ++ TEST_VDUP_LANE(, poly, p, 16, 4, 4, 3); ++ TEST_VDUP_LANE(, float, f, 32, 2, 2, 1); ++ ++ TEST_VDUP_LANE(q, int, s, 8, 16, 8, 2); ++ TEST_VDUP_LANE(q, int, s, 16, 8, 4, 3); ++ TEST_VDUP_LANE(q, int, s, 32, 4, 2, 1); ++ TEST_VDUP_LANE(q, int, s, 64, 2, 1, 0); ++ TEST_VDUP_LANE(q, uint, u, 8, 16, 8, 5); ++ TEST_VDUP_LANE(q, uint, u, 16, 8, 4, 1); ++ TEST_VDUP_LANE(q, uint, u, 32, 4, 2, 0); ++ TEST_VDUP_LANE(q, uint, u, 64, 2, 1, 0); ++ TEST_VDUP_LANE(q, poly, p, 8, 16, 8, 5); ++ TEST_VDUP_LANE(q, poly, p, 16, 8, 4, 1); ++ TEST_VDUP_LANE(q, float, f, 32, 4, 2, 1); ++ ++ CHECK_RESULTS (TEST_MSG, ""); ++} ++ ++int main (void) ++{ ++ exec_vdup_lane (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal_n.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal_n.c +@@ -0,0 +1,27 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vqdmlal_n ++#define TEST_MSG "VQDMLAL_N" ++ ++/* Expected values of cumulative_saturation flag. */ ++int VECT_VAR(expected_cumulative_sat,int,32,4) = 0; ++int VECT_VAR(expected_cumulative_sat,int,64,2) = 0; ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x1684, 0x1685, 0x1686, 0x1687 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x21ce, 0x21cf }; ++ ++/* Expected values of cumulative_saturation flag when saturation ++ occurs. */ ++int VECT_VAR(expected_cumulative_sat2,int,32,4) = 1; ++int VECT_VAR(expected_cumulative_sat2,int,64,2) = 1; ++ ++/* Expected results when saturation occurs. */ ++VECT_VAR_DECL(expected2,int,32,4) [] = { 0x7fffffef, 0x7ffffff0, ++ 0x7ffffff1, 0x7ffffff2 }; ++VECT_VAR_DECL(expected2,int,64,2) [] = { 0x7fffffffffffffef, ++ 0x7ffffffffffffff0 }; ++ ++#include "vqdmlXl_n.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vclz.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vclz.c +@@ -0,0 +1,194 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x3, 0x3, 0x3, 0x3 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x11, 0x11 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x5, 0x5 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, ++ 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x3, 0x3, 0x3, 0x3 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, ++ 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xd, 0xd, 0xd, 0xd, ++ 0xd, 0xd, 0xd, 0xd }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x1f, 0x1f, 0x1f, 0x1f }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++ ++/* Expected results with input=0. */ ++VECT_VAR_DECL(expected_with_0,int,8,8) [] = { 0x8, 0x8, 0x8, 0x8, ++ 0x8, 0x8, 0x8, 0x8 }; ++VECT_VAR_DECL(expected_with_0,int,16,4) [] = { 0x10, 0x10, 0x10, 0x10 }; ++VECT_VAR_DECL(expected_with_0,int,32,2) [] = { 0x20, 0x20 }; ++VECT_VAR_DECL(expected_with_0,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected_with_0,uint,8,8) [] = { 0x8, 0x8, 0x8, 0x8, ++ 0x8, 0x8, 0x8, 0x8 }; ++VECT_VAR_DECL(expected_with_0,uint,16,4) [] = { 0x10, 0x10, 0x10, 0x10 }; ++VECT_VAR_DECL(expected_with_0,uint,32,2) [] = { 0x20, 0x20 }; ++VECT_VAR_DECL(expected_with_0,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected_with_0,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_with_0,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_with_0,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected_with_0,int,8,16) [] = { 0x8, 0x8, 0x8, 0x8, ++ 0x8, 0x8, 0x8, 0x8, ++ 0x8, 0x8, 0x8, 0x8, ++ 0x8, 0x8, 0x8, 0x8 }; ++VECT_VAR_DECL(expected_with_0,int,16,8) [] = { 0x10, 0x10, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x10 }; ++VECT_VAR_DECL(expected_with_0,int,32,4) [] = { 0x20, 0x20, 0x20, 0x20 }; ++VECT_VAR_DECL(expected_with_0,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_with_0,uint,8,16) [] = { 0x8, 0x8, 0x8, 0x8, ++ 0x8, 0x8, 0x8, 0x8, ++ 0x8, 0x8, 0x8, 0x8, ++ 0x8, 0x8, 0x8, 0x8 }; ++VECT_VAR_DECL(expected_with_0,uint,16,8) [] = { 0x10, 0x10, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x10 }; ++VECT_VAR_DECL(expected_with_0,uint,32,4) [] = { 0x20, 0x20, 0x20, 0x20 }; ++VECT_VAR_DECL(expected_with_0,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected_with_0,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected_with_0,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected_with_0,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++#define INSN_NAME vclz ++#define TEST_MSG "VCLZ/VCLZQ" ++ ++#define FNNAME1(NAME) void exec_ ## NAME (void) ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++FNNAME (INSN_NAME) ++{ ++ /* Basic test: y=vclz(x), then store the result. */ ++#define TEST_UNARY_OP1(INSN, Q, T1, T2, W, N) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ INSN##Q##_##T2##W(VECT_VAR(vector, T1, W, N)); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N)) ++ ++#define TEST_UNARY_OP(INSN, Q, T1, T2, W, N) \ ++ TEST_UNARY_OP1(INSN, Q, T1, T2, W, N) \ ++ ++ /* No need for 64 bits variants */ ++ DECL_VARIABLE(vector, int, 8, 8); ++ DECL_VARIABLE(vector, int, 16, 4); ++ DECL_VARIABLE(vector, int, 32, 2); ++ DECL_VARIABLE(vector, uint, 8, 8); ++ DECL_VARIABLE(vector, uint, 16, 4); ++ DECL_VARIABLE(vector, uint, 32, 2); ++ DECL_VARIABLE(vector, int, 8, 16); ++ DECL_VARIABLE(vector, int, 16, 8); ++ DECL_VARIABLE(vector, int, 32, 4); ++ DECL_VARIABLE(vector, uint, 8, 16); ++ DECL_VARIABLE(vector, uint, 16, 8); ++ DECL_VARIABLE(vector, uint, 32, 4); ++ ++ DECL_VARIABLE(vector_res, int, 8, 8); ++ DECL_VARIABLE(vector_res, int, 16, 4); ++ DECL_VARIABLE(vector_res, int, 32, 2); ++ DECL_VARIABLE(vector_res, uint, 8, 8); ++ DECL_VARIABLE(vector_res, uint, 16, 4); ++ DECL_VARIABLE(vector_res, uint, 32, 2); ++ DECL_VARIABLE(vector_res, int, 8, 16); ++ DECL_VARIABLE(vector_res, int, 16, 8); ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ DECL_VARIABLE(vector_res, uint, 8, 16); ++ DECL_VARIABLE(vector_res, uint, 16, 8); ++ DECL_VARIABLE(vector_res, uint, 32, 4); ++ ++ clean_results (); ++ ++ /* Fill input vector with arbitrary values. */ ++ VDUP(vector, , int, s, 8, 8, 0x84); ++ VDUP(vector, , int, s, 16, 4, 0x1234); ++ VDUP(vector, , int, s, 32, 2, 0x5678); ++ VDUP(vector, , uint, u, 8, 8, 0x34); ++ VDUP(vector, , uint, u, 16, 4, 0x8234); ++ VDUP(vector, , uint, u, 32, 2, 0x7654321); ++ VDUP(vector, q, int, s, 8, 16, 0x34); ++ VDUP(vector, q, int, s, 16, 8, 0x1234); ++ VDUP(vector, q, int, s, 32, 4, 0x12345678); ++ VDUP(vector, q, uint, u, 8, 16, 0x13); ++ VDUP(vector, q, uint, u, 16, 8, 0x4); ++ VDUP(vector, q, uint, u, 32, 4, 0x1); ++ ++ /* Apply a unary operator named INSN_NAME. */ ++ TEST_UNARY_OP(INSN_NAME, , int, s, 8, 8); ++ TEST_UNARY_OP(INSN_NAME, , int, s, 16, 4); ++ TEST_UNARY_OP(INSN_NAME, , int, s, 32, 2); ++ TEST_UNARY_OP(INSN_NAME, , uint, u, 8, 8); ++ TEST_UNARY_OP(INSN_NAME, , uint, u, 16, 4); ++ TEST_UNARY_OP(INSN_NAME, , uint, u, 32, 2); ++ TEST_UNARY_OP(INSN_NAME, q, int, s, 8, 16); ++ TEST_UNARY_OP(INSN_NAME, q, int, s, 16, 8); ++ TEST_UNARY_OP(INSN_NAME, q, int, s, 32, 4); ++ TEST_UNARY_OP(INSN_NAME, q, uint, u, 8, 16); ++ TEST_UNARY_OP(INSN_NAME, q, uint, u, 16, 8); ++ TEST_UNARY_OP(INSN_NAME, q, uint, u, 32, 4); ++ ++ CHECK_RESULTS (TEST_MSG, ""); ++ ++ /* Test with zero as input. */ ++ VDUP(vector, , int, s, 8, 8, 0); ++ VDUP(vector, , int, s, 16, 4, 0); ++ VDUP(vector, , int, s, 32, 2, 0); ++ VDUP(vector, , uint, u, 8, 8, 0); ++ VDUP(vector, , uint, u, 16, 4, 0); ++ VDUP(vector, , uint, u, 32, 2, 0); ++ VDUP(vector, q, int, s, 8, 16, 0); ++ VDUP(vector, q, int, s, 16, 8, 0); ++ VDUP(vector, q, int, s, 32, 4, 0); ++ VDUP(vector, q, uint, u, 8, 16, 0); ++ VDUP(vector, q, uint, u, 16, 8, 0); ++ VDUP(vector, q, uint, u, 32, 4, 0); ++ ++ /* Apply a unary operator named INSN_NAME. */ ++ TEST_UNARY_OP(INSN_NAME, , int, s, 8, 8); ++ TEST_UNARY_OP(INSN_NAME, , int, s, 16, 4); ++ TEST_UNARY_OP(INSN_NAME, , int, s, 32, 2); ++ TEST_UNARY_OP(INSN_NAME, , uint, u, 8, 8); ++ TEST_UNARY_OP(INSN_NAME, , uint, u, 16, 4); ++ TEST_UNARY_OP(INSN_NAME, , uint, u, 32, 2); ++ TEST_UNARY_OP(INSN_NAME, q, int, s, 8, 16); ++ TEST_UNARY_OP(INSN_NAME, q, int, s, 16, 8); ++ TEST_UNARY_OP(INSN_NAME, q, int, s, 32, 4); ++ TEST_UNARY_OP(INSN_NAME, q, uint, u, 8, 16); ++ TEST_UNARY_OP(INSN_NAME, q, uint, u, 16, 8); ++ TEST_UNARY_OP(INSN_NAME, q, uint, u, 32, 4); ++ ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_with_0, " (input=0)"); ++} ++ ++int main (void) ++{ ++ exec_vclz (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh.c +@@ -0,0 +1,122 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected values of cumulative_saturation flag. */ ++int VECT_VAR(expected_cumulative_sat,int,16,4) = 0; ++int VECT_VAR(expected_cumulative_sat,int,32,2) = 0; ++int VECT_VAR(expected_cumulative_sat,int,16,8) = 0; ++int VECT_VAR(expected_cumulative_sat,int,32,4) = 0; ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xffff, 0xffff, 0xffff, 0xffff }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xffffffff, 0xffffffff }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xffff, 0xffff, 0xffff, 0xffff, ++ 0xffff, 0xffff, 0xffff, 0xffff }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffffff, 0xffffffff, ++ 0xffffffff, 0xffffffff }; ++ ++/* Expected values of cumulative_saturation flag when saturation ++ occurs. */ ++int VECT_VAR(expected_cumulative_sat2,int,16,4) = 1; ++int VECT_VAR(expected_cumulative_sat2,int,32,2) = 1; ++int VECT_VAR(expected_cumulative_sat2,int,16,8) = 1; ++int VECT_VAR(expected_cumulative_sat2,int,32,4) = 1; ++ ++/* Expected results when saturation occurs. */ ++VECT_VAR_DECL(expected2,int,16,4) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff }; ++VECT_VAR_DECL(expected2,int,32,2) [] = { 0x7fffffff, 0x7fffffff }; ++VECT_VAR_DECL(expected2,int,16,8) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff, ++ 0x7fff, 0x7fff, 0x7fff, 0x7fff }; ++VECT_VAR_DECL(expected2,int,32,4) [] = { 0x7fffffff, 0x7fffffff, ++ 0x7fffffff, 0x7fffffff }; ++ ++#define INSN_NAME vqdmulh ++#define TEST_MSG "VQDMULH" ++ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ /* vector_res = vqdmulh(vector,vector2,lane), then store the result. */ ++#define TEST_VQDMULH2(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N)); \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ INSN##Q##_##T2##W(VECT_VAR(vector, T1, W, N), \ ++ VECT_VAR(vector2, T1, W, N)); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \ ++ VECT_VAR(vector_res, T1, W, N)); \ ++ CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++ /* Two auxliary macros are necessary to expand INSN. */ ++#define TEST_VQDMULH1(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ TEST_VQDMULH2(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++#define TEST_VQDMULH(Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ TEST_VQDMULH1(INSN_NAME, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++ DECL_VARIABLE(vector, int, 16, 4); ++ DECL_VARIABLE(vector, int, 32, 2); ++ DECL_VARIABLE(vector, int, 16, 8); ++ DECL_VARIABLE(vector, int, 32, 4); ++ ++ DECL_VARIABLE(vector_res, int, 16, 4); ++ DECL_VARIABLE(vector_res, int, 32, 2); ++ DECL_VARIABLE(vector_res, int, 16, 8); ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ ++ DECL_VARIABLE(vector2, int, 16, 4); ++ DECL_VARIABLE(vector2, int, 32, 2); ++ DECL_VARIABLE(vector2, int, 16, 8); ++ DECL_VARIABLE(vector2, int, 32, 4); ++ ++ clean_results (); ++ ++ VLOAD(vector, buffer, , int, s, 16, 4); ++ VLOAD(vector, buffer, , int, s, 32, 2); ++ VLOAD(vector, buffer, q, int, s, 16, 8); ++ VLOAD(vector, buffer, q, int, s, 32, 4); ++ ++ /* Initialize vector2. */ ++ VDUP(vector2, , int, s, 16, 4, 0x55); ++ VDUP(vector2, , int, s, 32, 2, 0xBB); ++ VDUP(vector2, q, int, s, 16, 8, 0x33); ++ VDUP(vector2, q, int, s, 32, 4, 0x22); ++ ++ TEST_VQDMULH(, int, s, 16, 4, expected_cumulative_sat, ""); ++ TEST_VQDMULH(, int, s, 32, 2, expected_cumulative_sat, ""); ++ TEST_VQDMULH(q, int, s, 16, 8, expected_cumulative_sat, ""); ++ TEST_VQDMULH(q, int, s, 32, 4, expected_cumulative_sat, ""); ++ ++ CHECK (TEST_MSG, int, 16, 4, PRIx16, expected, ""); ++ CHECK (TEST_MSG, int, 32, 2, PRIx32, expected, ""); ++ CHECK (TEST_MSG, int, 16, 8, PRIx16, expected, ""); ++ CHECK (TEST_MSG, int, 32, 4, PRIx32, expected, ""); ++ ++ VDUP(vector, , int, s, 16, 4, 0x8000); ++ VDUP(vector2, , int, s, 16, 4, 0x8000); ++ VDUP(vector, , int, s, 32, 2, 0x80000000); ++ VDUP(vector2, , int, s, 32, 2, 0x80000000); ++ VDUP(vector, q, int, s, 16, 8, 0x8000); ++ VDUP(vector2, q, int, s, 16, 8, 0x8000); ++ VDUP(vector, q, int, s, 32, 4, 0x80000000); ++ VDUP(vector2, q, int, s, 32, 4, 0x80000000); ++ ++#define TEST_MSG2 "with saturation" ++ TEST_VQDMULH(, int, s, 16, 4, expected_cumulative_sat2, TEST_MSG2); ++ TEST_VQDMULH(, int, s, 32, 2, expected_cumulative_sat2, TEST_MSG2); ++ TEST_VQDMULH(q, int, s, 16, 8, expected_cumulative_sat2, TEST_MSG2); ++ TEST_VQDMULH(q, int, s, 32, 4, expected_cumulative_sat2, TEST_MSG2); ++ ++ CHECK (TEST_MSG, int, 16, 4, PRIx16, expected2, TEST_MSG2); ++ CHECK (TEST_MSG, int, 32, 2, PRIx32, expected2, TEST_MSG2); ++ CHECK (TEST_MSG, int, 16, 8, PRIx16, expected2, TEST_MSG2); ++ CHECK (TEST_MSG, int, 32, 4, PRIx32, expected2, TEST_MSG2); ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vbic.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vbic.c +@@ -0,0 +1,46 @@ ++#define INSN_NAME vbic ++#define TEST_MSG "VBIC/VBICQ" ++ ++#include "binary_op.inc" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf0, 0xf1, 0xf0, 0xf1, ++ 0xf4, 0xf5, 0xf4, 0xf5 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x0, 0x1, 0x2, 0x3 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffff0, 0xfffffff0 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0xffffffffffffff90 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xe0, 0xe1, 0xe2, 0xe3, ++ 0xe0, 0xe1, 0xe2, 0xe3 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xffe0, 0xffe1, 0xffe0, 0xffe1 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffd0, 0xffffffd1 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x0, 0x1, 0x0, 0x1, ++ 0x0, 0x1, 0x0, 0x1, ++ 0x8, 0x9, 0x8, 0x9, ++ 0x8, 0x9, 0x8, 0x9 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x10, 0x11, 0x12, 0x13, ++ 0x10, 0x11, 0x12, 0x13 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x10, 0x11, 0x10, 0x11 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xffffffffffffffe0, 0xffffffffffffffe1 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf0, 0xf1, 0xf2, 0xf3 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfff0, 0xfff0, 0xfff0, 0xfff0, ++ 0xfff4, 0xfff4, 0xfff4, 0xfff4 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffc0, 0xffffffc0, ++ 0xffffffc0, 0xffffffc0 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xfffffffffffffff0, ++ 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/advsimd-intrinsics.exp ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/advsimd-intrinsics.exp +@@ -0,0 +1,54 @@ ++# Copyright (C) 2014 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# GCC testsuite that uses the `dg.exp' driver. ++ ++# Exit immediately if this isn't an ARM or AArch64 target. ++if {![istarget arm*-*-*] ++ && ![istarget aarch64*-*-*]} then { ++ return ++} ++ ++# Load support procs. ++load_lib gcc-dg.exp ++ ++# Initialize `dg'. ++load_lib c-torture.exp ++load_lib target-supports.exp ++load_lib torture-options.exp ++ ++dg-init ++ ++torture-init ++set-torture-options $C_TORTURE_OPTIONS {{}} $LTO_TORTURE_OPTIONS ++ ++# Make sure Neon flags are provided, if necessary. ++set additional_flags [add_options_for_arm_neon ""] ++ ++# Main loop. ++foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.c]] { ++ # If we're only testing specific files and this isn't one of them, skip it. ++ if ![runtest_file_p $runtests $src] then { ++ continue ++ } ++ ++ c-torture-execute $src $additional_flags ++ gcc-dg-runtest $src $additional_flags ++} ++ ++# All done. ++torture-finish ++dg-finish +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull.c +@@ -0,0 +1,86 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected values of cumulative_saturation flag. */ ++int VECT_VAR(expected_cumulative_sat,int,16,4) = 0; ++int VECT_VAR(expected_cumulative_sat,int,32,2) = 0; ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x200, 0x1c2, 0x188, 0x152 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x200, 0x1c2 }; ++ ++/* Expected values of cumulative_saturation flag when saturation ++ occurs. */ ++int VECT_VAR(expected_cumulative_sat2,int,16,4) = 1; ++int VECT_VAR(expected_cumulative_sat2,int,32,2) = 1; ++ ++/* Expected results when saturation occurs. */ ++VECT_VAR_DECL(expected2,int,32,4) [] = { 0x7fffffff, 0x7fffffff, ++ 0x7fffffff, 0x7fffffff }; ++VECT_VAR_DECL(expected2,int,64,2) [] = { 0x7fffffffffffffff, ++ 0x7fffffffffffffff }; ++ ++#define INSN_NAME vqdmull ++#define TEST_MSG "VQDMULL" ++ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ /* Basic test: y=vqdmull(x,x), then store the result. */ ++#define TEST_VQDMULL2(INSN, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W2, N)); \ ++ VECT_VAR(vector_res, T1, W2, N) = \ ++ INSN##_##T2##W(VECT_VAR(vector, T1, W, N), \ ++ VECT_VAR(vector2, T1, W, N)); \ ++ vst1q_##T2##W2(VECT_VAR(result, T1, W2, N), \ ++ VECT_VAR(vector_res, T1, W2, N)); \ ++ CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++ /* Two auxliary macros are necessary to expand INSN. */ ++#define TEST_VQDMULL1(INSN, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ TEST_VQDMULL2(INSN, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++#define TEST_VQDMULL(T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ TEST_VQDMULL1(INSN_NAME, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++ DECL_VARIABLE(vector, int, 16, 4); ++ DECL_VARIABLE(vector, int, 32, 2); ++ DECL_VARIABLE(vector2, int, 16, 4); ++ DECL_VARIABLE(vector2, int, 32, 2); ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ DECL_VARIABLE(vector_res, int, 64, 2); ++ ++ clean_results (); ++ ++ VLOAD(vector, buffer, , int, s, 16, 4); ++ VLOAD(vector, buffer, , int, s, 32, 2); ++ VLOAD(vector2, buffer, , int, s, 16, 4); ++ VLOAD(vector2, buffer, , int, s, 32, 2); ++ ++ TEST_VQDMULL(int, s, 16, 32, 4, expected_cumulative_sat, ""); ++ TEST_VQDMULL(int, s, 32, 64, 2, expected_cumulative_sat, ""); ++ ++ CHECK (TEST_MSG, int, 32, 4, PRIx16, expected, ""); ++ CHECK (TEST_MSG, int, 64, 2, PRIx32, expected, ""); ++ ++ VDUP(vector, , int, s, 16, 4, 0x8000); ++ VDUP(vector2, , int, s, 16, 4, 0x8000); ++ VDUP(vector, , int, s, 32, 2, 0x80000000); ++ VDUP(vector2, , int, s, 32, 2, 0x80000000); ++ ++#define TEST_MSG2 "with saturation" ++ TEST_VQDMULL(int, s, 16, 32, 4, expected_cumulative_sat2, TEST_MSG2); ++ TEST_VQDMULL(int, s, 32, 64, 2, expected_cumulative_sat2, TEST_MSG2); ++ ++ CHECK (TEST_MSG, int, 32, 4, PRIx16, expected2, TEST_MSG2); ++ CHECK (TEST_MSG, int, 64, 2, PRIx32, expected2, TEST_MSG2); ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vabal.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vabal.c +@@ -0,0 +1,161 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xfff6, 0xfff7, 0xfff8, 0xfff9, ++ 0xfffa, 0xfffb, 0xfffc, 0xfffd }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x16, 0x17, 0x18, 0x19 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x20, 0x21 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x53, 0x54, 0x55, 0x56, ++ 0x57, 0x58, 0x59, 0x5a }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x907, 0x908, 0x909, 0x90a }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffe7, ++ 0xffffffe8 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++/* Expected results for cases with input values chosen to test ++ possible intermediate overflow. */ ++VECT_VAR_DECL(expected2,int,16,8) [] = { 0xef, 0xf0, 0xf1, 0xf2, ++ 0xf3, 0xf4, 0xf5, 0xf6 }; ++VECT_VAR_DECL(expected2,int,32,4) [] = { 0xffef, 0xfff0, 0xfff1, 0xfff2 }; ++VECT_VAR_DECL(expected2,int,64,2) [] = { 0xffffffef, 0xfffffff0 }; ++VECT_VAR_DECL(expected2,uint,16,8) [] = { 0xee, 0xef, 0xf0, 0xf1, ++ 0xf2, 0xf3, 0xf4, 0xf5 }; ++VECT_VAR_DECL(expected2,uint,32,4) [] = { 0xffe2, 0xffe3, 0xffe4, 0xffe5 }; ++VECT_VAR_DECL(expected2,uint,64,2) [] = { 0xffffffe7, 0xffffffe8 }; ++ ++#define TEST_MSG "VABAL" ++void exec_vabal (void) ++{ ++ /* Basic test: v4=vabal(v1,v2,v3), then store the result. */ ++#define TEST_VABAL(T1, T2, W, W2, N) \ ++ VECT_VAR(vector_res, T1, W2, N) = \ ++ vabal_##T2##W(VECT_VAR(vector1, T1, W2, N), \ ++ VECT_VAR(vector2, T1, W, N), \ ++ VECT_VAR(vector3, T1, W, N)); \ ++ vst1q_##T2##W2(VECT_VAR(result, T1, W2, N), VECT_VAR(vector_res, T1, W2, N)) ++ ++#define DECL_VABAL_VAR_LONG(VAR) \ ++ DECL_VARIABLE(VAR, int, 16, 8); \ ++ DECL_VARIABLE(VAR, int, 32, 4); \ ++ DECL_VARIABLE(VAR, int, 64, 2); \ ++ DECL_VARIABLE(VAR, uint, 16, 8); \ ++ DECL_VARIABLE(VAR, uint, 32, 4); \ ++ DECL_VARIABLE(VAR, uint, 64, 2) ++ ++#define DECL_VABAL_VAR_SHORT(VAR) \ ++ DECL_VARIABLE(VAR, int, 8, 8); \ ++ DECL_VARIABLE(VAR, int, 16, 4); \ ++ DECL_VARIABLE(VAR, int, 32, 2); \ ++ DECL_VARIABLE(VAR, uint, 8, 8); \ ++ DECL_VARIABLE(VAR, uint, 16, 4); \ ++ DECL_VARIABLE(VAR, uint, 32, 2) ++ ++ DECL_VABAL_VAR_LONG(vector1); ++ DECL_VABAL_VAR_SHORT(vector2); ++ DECL_VABAL_VAR_SHORT(vector3); ++ DECL_VABAL_VAR_LONG(vector_res); ++ ++ clean_results (); ++ ++ /* Initialize input "vector1" from "buffer". */ ++ VLOAD(vector1, buffer, q, int, s, 16, 8); ++ VLOAD(vector1, buffer, q, int, s, 32, 4); ++ VLOAD(vector1, buffer, q, int, s, 64, 2); ++ VLOAD(vector1, buffer, q, uint, u, 16, 8); ++ VLOAD(vector1, buffer, q, uint, u, 32, 4); ++ VLOAD(vector1, buffer, q, uint, u, 64, 2); ++ ++ ++ /* Choose init value arbitrarily. */ ++ VDUP(vector2, , int, s, 8, 8, 1); ++ VDUP(vector2, , int, s, 16, 4, -13); ++ VDUP(vector2, , int, s, 32, 2, 8); ++ VDUP(vector2, , uint, u, 8, 8, 1); ++ VDUP(vector2, , uint, u, 16, 4, 13); ++ VDUP(vector2, , uint, u, 32, 2, 8); ++ ++ /* Choose init value arbitrarily. */ ++ VDUP(vector3, , int, s, 8, 8, -5); ++ VDUP(vector3, , int, s, 16, 4, 25); ++ VDUP(vector3, , int, s, 32, 2, -40); ++ VDUP(vector3, , uint, u, 8, 8, 100); ++ VDUP(vector3, , uint, u, 16, 4, 2340); ++ VDUP(vector3, , uint, u, 32, 2, 0xffffffff); ++ ++ /* Execute the tests. */ ++ TEST_VABAL(int, s, 8, 16, 8); ++ TEST_VABAL(int, s, 16, 32, 4); ++ TEST_VABAL(int, s, 32, 64, 2); ++ TEST_VABAL(uint, u, 8, 16, 8); ++ TEST_VABAL(uint, u, 16, 32, 4); ++ TEST_VABAL(uint, u, 32, 64, 2); ++ ++ CHECK_RESULTS (TEST_MSG, ""); ++ ++ /* Use values that could lead to overflow intermediate ++ * calculations. */ ++ VDUP(vector2, , int, s, 8, 8, 0x80); ++ VDUP(vector2, , int, s, 16, 4, 0x8000); ++ VDUP(vector2, , int, s, 32, 2, 0x80000000); ++ VDUP(vector2, , uint, u, 8, 8, 1); ++ VDUP(vector2, , uint, u, 16, 4, 13); ++ VDUP(vector2, , uint, u, 32, 2, 8); ++ ++ VDUP(vector3, , int, s, 8, 8, 0x7f); ++ VDUP(vector3, , int, s, 16, 4, 0x7fff); ++ VDUP(vector3, , int, s, 32, 2, 0x7fffffff); ++ VDUP(vector3, , uint, u, 8, 8, 0xff); ++ VDUP(vector3, , uint, u, 16, 4, 0xffff); ++ VDUP(vector3, , uint, u, 32, 2, 0xffffffff); ++ ++ TEST_VABAL(int, s, 8, 16, 8); ++ TEST_VABAL(int, s, 16, 32, 4); ++ TEST_VABAL(int, s, 32, 64, 2); ++ TEST_VABAL(uint, u, 8, 16, 8); ++ TEST_VABAL(uint, u, 16, 32, 4); ++ TEST_VABAL(uint, u, 32, 64, 2); ++ ++ CHECK(TEST_MSG, int, 16, 8, PRIx16, expected2, " test intermediate overflow"); ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected2, " test intermediate overflow"); ++ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected2, " test intermediate overflow"); ++ CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected2, " test intermediate overflow"); ++ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected2, " test intermediate overflow"); ++ CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected2, " test intermediate overflow"); ++} ++ ++int main (void) ++{ ++ exec_vabal (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vhadd.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vhadd.c +@@ -0,0 +1,34 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vhadd ++#define TEST_MSG "VHADD/VHADDQ" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf1, 0xf2, 0xf2, 0xf3, ++ 0xf3, 0xf4, 0xf4, 0xf5 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff1, 0xfff1, 0xfff2, 0xfff2 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffff0, 0xfffffff0 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xf1, 0xf2, 0xf2, 0xf3, ++ 0xf3, 0xf4, 0xf4, 0xf5 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfff0, 0xfff1, 0xfff1, 0xfff2 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffffff0, 0xfffffff0 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0xf2, 0xf2, 0xf3, 0xf3, ++ 0xf4, 0xf4, 0xf5, 0xf5, ++ 0xf6, 0xf6, 0xf7, 0xf7, ++ 0xf8, 0xf8, 0xf9, 0xf9 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xfff1, 0xfff2, 0xfff2, 0xfff3, ++ 0xfff3, 0xfff4, 0xfff4, 0xfff5 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffff0, 0xfffffff1, ++ 0xfffffff1, 0xfffffff2 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xf4, 0xf5, 0xf5, 0xf6, ++ 0xf6, 0xf7, 0xf7, 0xf8, ++ 0xf8, 0xf9, 0xf9, 0xfa, ++ 0xfa, 0xfb, 0xfb, 0xfc }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfff1, 0xfff1, 0xfff2, 0xfff2, ++ 0xfff3, 0xfff3, 0xfff4, 0xfff4 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfffffff0, 0xfffffff1, ++ 0xfffffff1, 0xfffffff2 }; ++ ++#include "binary_op_no64.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vext.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vext.c +@@ -0,0 +1,123 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf7, 0x11, 0x11, 0x11, ++ 0x11, 0x11, 0x11, 0x11 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff3, 0x22, 0x22, 0x22 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffff1, 0x33 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xf6, 0xf7, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfff2, 0xfff3, 0x66, 0x66 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffffff1, 0x77 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0xf6, 0xf7, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0xfff2, 0xfff3, 0x66, 0x66 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xc1700000, 0x42066666 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0xfe, 0xff, 0x11, 0x11, ++ 0x11, 0x11, 0x11, 0x11, ++ 0x11, 0x11, 0x11, 0x11, ++ 0x11, 0x11, 0x11, 0x11 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xfff7, 0x22, 0x22, 0x22, ++ 0x22, 0x22, 0x22, 0x22 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffff3, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xfffffffffffffff1, 0x44 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xfc, 0xfd, 0xfe, 0xff, ++ 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfff6, 0xfff7, 0x66, 0x66, ++ 0x66, 0x66, 0x66, 0x66 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfffffff3, 0x77, 0x77, 0x77 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xfffffffffffffff1, 0x88 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0xfc, 0xfd, 0xfe, 0xff, ++ 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0xfff6, 0xfff7, 0x66, 0x66, ++ 0x66, 0x66, 0x66, 0x66 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0xc1500000, 0x4204cccd, ++ 0x4204cccd, 0x4204cccd }; ++ ++#define TEST_MSG "VEXT/VEXTQ" ++void exec_vext (void) ++{ ++ /* vector_res = vext(vector1,vector2,offset), then store the result. */ ++#define TEST_VEXT(Q, T1, T2, W, N, V) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ vext##Q##_##T2##W(VECT_VAR(vector1, T1, W, N), \ ++ VECT_VAR(vector2, T1, W, N), \ ++ V); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N)) ++ ++ DECL_VARIABLE_ALL_VARIANTS(vector1); ++ DECL_VARIABLE_ALL_VARIANTS(vector2); ++ DECL_VARIABLE_ALL_VARIANTS(vector_res); ++ ++ clean_results (); ++ ++ TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector1, buffer); ++ VLOAD(vector1, buffer, , float, f, 32, 2); ++ VLOAD(vector1, buffer, q, float, f, 32, 4); ++ ++ /* Choose arbitrary initialization values. */ ++ VDUP(vector2, , int, s, 8, 8, 0x11); ++ VDUP(vector2, , int, s, 16, 4, 0x22); ++ VDUP(vector2, , int, s, 32, 2, 0x33); ++ VDUP(vector2, , int, s, 64, 1, 0x44); ++ VDUP(vector2, , uint, u, 8, 8, 0x55); ++ VDUP(vector2, , uint, u, 16, 4, 0x66); ++ VDUP(vector2, , uint, u, 32, 2, 0x77); ++ VDUP(vector2, , uint, u, 64, 1, 0x88); ++ VDUP(vector2, , poly, p, 8, 8, 0x55); ++ VDUP(vector2, , poly, p, 16, 4, 0x66); ++ VDUP(vector2, , float, f, 32, 2, 33.6f); ++ ++ VDUP(vector2, q, int, s, 8, 16, 0x11); ++ VDUP(vector2, q, int, s, 16, 8, 0x22); ++ VDUP(vector2, q, int, s, 32, 4, 0x33); ++ VDUP(vector2, q, int, s, 64, 2, 0x44); ++ VDUP(vector2, q, uint, u, 8, 16, 0x55); ++ VDUP(vector2, q, uint, u, 16, 8, 0x66); ++ VDUP(vector2, q, uint, u, 32, 4, 0x77); ++ VDUP(vector2, q, uint, u, 64, 2, 0x88); ++ VDUP(vector2, q, poly, p, 8, 16, 0x55); ++ VDUP(vector2, q, poly, p, 16, 8, 0x66); ++ VDUP(vector2, q, float, f, 32, 4, 33.2f); ++ ++ /* Choose arbitrary extract offsets. */ ++ TEST_VEXT(, int, s, 8, 8, 7); ++ TEST_VEXT(, int, s, 16, 4, 3); ++ TEST_VEXT(, int, s, 32, 2, 1); ++ TEST_VEXT(, int, s, 64, 1, 0); ++ TEST_VEXT(, uint, u, 8, 8, 6); ++ TEST_VEXT(, uint, u, 16, 4, 2); ++ TEST_VEXT(, uint, u, 32, 2, 1); ++ TEST_VEXT(, uint, u, 64, 1, 0); ++ TEST_VEXT(, poly, p, 8, 8, 6); ++ TEST_VEXT(, poly, p, 16, 4, 2); ++ TEST_VEXT(, float, f, 32, 2, 1); ++ ++ TEST_VEXT(q, int, s, 8, 16, 14); ++ TEST_VEXT(q, int, s, 16, 8, 7); ++ TEST_VEXT(q, int, s, 32, 4, 3); ++ TEST_VEXT(q, int, s, 64, 2, 1); ++ TEST_VEXT(q, uint, u, 8, 16, 12); ++ TEST_VEXT(q, uint, u, 16, 8, 6); ++ TEST_VEXT(q, uint, u, 32, 4, 3); ++ TEST_VEXT(q, uint, u, 64, 2, 1); ++ TEST_VEXT(q, poly, p, 8, 16, 12); ++ TEST_VEXT(q, poly, p, 16, 8, 6); ++ TEST_VEXT(q, float, f, 32, 4, 3); ++ ++ CHECK_RESULTS (TEST_MSG, ""); ++} ++ ++int main (void) ++{ ++ exec_vext (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vhsub.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vhsub.c +@@ -0,0 +1,32 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vhsub ++#define TEST_MSG "VHSUB/VHSUBQ" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xfe, 0xff, 0xff, 0x0, ++ 0x0, 0x1, 0x1, 0x2 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xffff, 0xffff, 0x0, 0x0 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xfe, 0xff, 0xff, 0x0, ++ 0x0, 0x1, 0x1, 0x2 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xffff, 0x0, 0x0, 0x1 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0xfe, 0xfe, 0xff, 0xff, ++ 0x0, 0x0, 0x1, 0x1, ++ 0x2, 0x2, 0x3, 0x3, ++ 0x4, 0x4, 0x5, 0x5 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xfffe, 0xffff, 0xffff, 0x0, ++ 0x0, 0x1, 0x1, 0x2 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffffff, 0x0, 0x0, 0x1 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xfb, 0xfc, 0xfc, 0xfd, ++ 0xfd, 0xfe, 0xfe, 0xff, ++ 0xff, 0x0, 0x0, 0x1, ++ 0x1, 0x2, 0x2, 0x3 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xffff, 0xffff, 0x0, 0x0, ++ 0x1, 0x1, 0x2, 0x2 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffff, 0x0, 0x0, 0x1 }; ++ ++#include "binary_op_no64.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_n.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_n.c +@@ -0,0 +1,14 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vmlal_n ++#define TEST_MSG "VMLAL_N" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x595, 0x596, 0x597, 0x598 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xb3a, 0xb3b }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x10df, 0x10e0, 0x10e1, 0x10e2 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x10df, 0x10e0 }; ++ ++#include "vmlXl_n.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpmin.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpmin.c +@@ -0,0 +1,20 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++ ++#define INSN_NAME vpmin ++#define TEST_MSG "VPMIN" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf0, 0xf2, 0xf4, 0xf6, ++ 0xf0, 0xf2, 0xf4, 0xf6 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff0, 0xfff2, 0xfff0, 0xfff2 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffff0, 0xfffffff0 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xf0, 0xf2, 0xf4, 0xf6, ++ 0xf0, 0xf2, 0xf4, 0xf6 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfff0, 0xfff2, 0xfff0, 0xfff2 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffffff0, 0xfffffff0 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xc1800000, 0xc1800000 }; ++ ++#include "vpXXX.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/unary_sat_op.inc ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/unary_sat_op.inc +@@ -0,0 +1,80 @@ ++/* Template file for saturating unary operator validation. ++ ++ This file is meant to be included by the relevant test files, which ++ have to define the intrinsic family to test. If a given intrinsic ++ supports variants which are not supported by all the other ++ saturating unary operators, these can be tested by providing a ++ definition for EXTRA_TESTS. */ ++ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ /* y=OP(x), then store the result. */ ++#define TEST_UNARY_SAT_OP1(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N)); \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ INSN##Q##_##T2##W(VECT_VAR(vector, T1, W, N)); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \ ++ VECT_VAR(vector_res, T1, W, N)); \ ++ CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++#define TEST_UNARY_SAT_OP(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ TEST_UNARY_SAT_OP1(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++ /* No need for 64 bits variants. */ ++ DECL_VARIABLE(vector, int, 8, 8); ++ DECL_VARIABLE(vector, int, 16, 4); ++ DECL_VARIABLE(vector, int, 32, 2); ++ DECL_VARIABLE(vector, int, 8, 16); ++ DECL_VARIABLE(vector, int, 16, 8); ++ DECL_VARIABLE(vector, int, 32, 4); ++ ++ DECL_VARIABLE(vector_res, int, 8, 8); ++ DECL_VARIABLE(vector_res, int, 16, 4); ++ DECL_VARIABLE(vector_res, int, 32, 2); ++ DECL_VARIABLE(vector_res, int, 8, 16); ++ DECL_VARIABLE(vector_res, int, 16, 8); ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ ++ clean_results (); ++ ++ /* Initialize input "vector" from "buffer". */ ++ VLOAD(vector, buffer, , int, s, 8, 8); ++ VLOAD(vector, buffer, , int, s, 16, 4); ++ VLOAD(vector, buffer, , int, s, 32, 2); ++ VLOAD(vector, buffer, q, int, s, 8, 16); ++ VLOAD(vector, buffer, q, int, s, 16, 8); ++ VLOAD(vector, buffer, q, int, s, 32, 4); ++ ++ /* Apply a saturating unary operator named INSN_NAME. */ ++ TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 8, 8, expected_cumulative_sat, ""); ++ TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 16, 4, expected_cumulative_sat, ""); ++ TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 32, 2, expected_cumulative_sat, ""); ++ TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 8, 16, expected_cumulative_sat, ""); ++ TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 16, 8, expected_cumulative_sat, ""); ++ TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 32, 4, expected_cumulative_sat, ""); ++ ++ CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, ""); ++ CHECK(TEST_MSG, int, 16, 4, PRIx8, expected, ""); ++ CHECK(TEST_MSG, int, 32, 2, PRIx8, expected, ""); ++ CHECK(TEST_MSG, int, 8, 16, PRIx8, expected, ""); ++ CHECK(TEST_MSG, int, 16, 8, PRIx8, expected, ""); ++ CHECK(TEST_MSG, int, 32, 4, PRIx8, expected, ""); ++ ++#ifdef EXTRA_TESTS ++ EXTRA_TESTS(); ++#endif ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpmax.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpmax.c +@@ -0,0 +1,20 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++ ++#define INSN_NAME vpmax ++#define TEST_MSG "VPMAX" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf1, 0xf3, 0xf5, 0xf7, ++ 0xf1, 0xf3, 0xf5, 0xf7 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff1, 0xfff3, 0xfff1, 0xfff3 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffff1, 0xfffffff1 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xf1, 0xf3, 0xf5, 0xf7, ++ 0xf1, 0xf3, 0xf5, 0xf7 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfff1, 0xfff3, 0xfff1, 0xfff3 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffffff1, 0xfffffff1 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xc1700000, 0xc1700000 }; ++ ++#include "vpXXX.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vceq.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vceq.c +@@ -0,0 +1,113 @@ ++#define INSN_NAME vceq ++#define TEST_MSG "VCEQ/VCEQQ" ++ ++/* Extra tests for _p8 variants, which exist only for vceq. */ ++void exec_vceq_p8(void); ++#define EXTRA_TESTS exec_vceq_p8 ++ ++#include "cmp_op.inc" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x0, 0x0, 0xffff, 0x0 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffff, 0x0 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333, ++ 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0, ++ 0xff, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0xffff, 0x0 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x0, 0x0, 0xffffffff, 0x0 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++VECT_VAR_DECL(expected_uint,uint,8,8) [] = { 0x0, 0x0, 0x0, 0xff, ++ 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_uint,uint,16,4) [] = { 0x0, 0x0, 0xffff, 0x0 }; ++VECT_VAR_DECL(expected_uint,uint,32,2) [] = { 0x0, 0xffffffff }; ++ ++VECT_VAR_DECL(expected_q_uint,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0, ++ 0xff, 0x0, 0x0, 0x0, ++ 0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_q_uint,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0xffff, 0x0 }; ++VECT_VAR_DECL(expected_q_uint,uint,32,4) [] = { 0x0, 0x0, 0xffffffff, 0x0 }; ++ ++VECT_VAR_DECL(expected_float,uint,32,2) [] = { 0x0, 0xffffffff }; ++VECT_VAR_DECL(expected_q_float,uint,32,4) [] = { 0x0, 0x0, 0xffffffff, 0x0 }; ++ ++VECT_VAR_DECL(expected_uint2,uint,32,2) [] = { 0xffffffff, 0x0 }; ++VECT_VAR_DECL(expected_uint3,uint,32,2) [] = { 0x0, 0xffffffff }; ++VECT_VAR_DECL(expected_uint4,uint,32,2) [] = { 0xffffffff, 0x0 }; ++ ++VECT_VAR_DECL(expected_nan,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected_mnan,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected_nan2,uint,32,2) [] = { 0x0, 0x0 }; ++ ++VECT_VAR_DECL(expected_inf,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected_minf,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected_inf2,uint,32,2) [] = { 0x0, 0x0 }; ++ ++VECT_VAR_DECL(expected_mzero,uint,32,2) [] = { 0xffffffff, 0xffffffff }; ++ ++VECT_VAR_DECL(expected_p8,uint,8,8) [] = { 0x0, 0x0, 0x0, 0xff, ++ 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_q_p8,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0, ++ 0xff, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0 }; ++ ++void exec_vceq_p8(void) ++{ ++ DECL_VARIABLE(vector, poly, 8, 8); ++ DECL_VARIABLE(vector, poly, 8, 16); ++ ++ DECL_VARIABLE(vector2, poly, 8, 8); ++ DECL_VARIABLE(vector2, poly, 8, 16); ++ ++ DECL_VARIABLE(vector_res, uint, 8, 8); ++ DECL_VARIABLE(vector_res, uint, 8, 16); ++ ++ clean_results (); ++ ++ VLOAD(vector, buffer, , poly, p, 8, 8); ++ VLOAD(vector, buffer, q, poly, p, 8, 16); ++ ++ VDUP(vector2, , poly, p, 8, 8, 0xF3); ++ VDUP(vector2, q, poly, p, 8, 16, 0xF4); ++ ++ TEST_VCOMP(INSN_NAME, , poly, p, uint, 8, 8); ++ TEST_VCOMP(INSN_NAME, q, poly, p, uint, 8, 16); ++ ++ CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_p8, "p8"); ++ CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_q_p8, "p8"); ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_lane.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_lane.c +@@ -0,0 +1,66 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x4000, 0x4000, 0x4000, 0x4000 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x2000, 0x2000 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x4000, 0x4000, 0x4000, 0x4000 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x2000, 0x2000 }; ++ ++#define TEST_MSG "VMULL_LANE" ++void exec_vmull_lane (void) ++{ ++ /* vector_res = vmull_lane(vector,vector2,lane), then store the result. */ ++#define TEST_VMULL_LANE(T1, T2, W, W2, N, L) \ ++ VECT_VAR(vector_res, T1, W2, N) = \ ++ vmull##_lane_##T2##W(VECT_VAR(vector, T1, W, N), \ ++ VECT_VAR(vector2, T1, W, N), \ ++ L); \ ++ vst1q_##T2##W2(VECT_VAR(result, T1, W2, N), VECT_VAR(vector_res, T1, W2, N)) ++ ++ DECL_VARIABLE(vector, int, 16, 4); ++ DECL_VARIABLE(vector, int, 32, 2); ++ DECL_VARIABLE(vector, uint, 16, 4); ++ DECL_VARIABLE(vector, uint, 32, 2); ++ DECL_VARIABLE(vector2, int, 16, 4); ++ DECL_VARIABLE(vector2, int, 32, 2); ++ DECL_VARIABLE(vector2, uint, 16, 4); ++ DECL_VARIABLE(vector2, uint, 32, 2); ++ ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ DECL_VARIABLE(vector_res, int, 64, 2); ++ DECL_VARIABLE(vector_res, uint, 32, 4); ++ DECL_VARIABLE(vector_res, uint, 64, 2); ++ ++ clean_results (); ++ ++ /* Initialize vector. */ ++ VDUP(vector, , int, s, 16, 4, 0x1000); ++ VDUP(vector, , int, s, 32, 2, 0x1000); ++ VDUP(vector, , uint, u, 16, 4, 0x1000); ++ VDUP(vector, , uint, u, 32, 2, 0x1000); ++ ++ /* Initialize vector2. */ ++ VDUP(vector2, , int, s, 16, 4, 0x4); ++ VDUP(vector2, , int, s, 32, 2, 0x2); ++ VDUP(vector2, , uint, u, 16, 4, 0x4); ++ VDUP(vector2, , uint, u, 32, 2, 0x2); ++ ++ /* Choose lane arbitrarily. */ ++ TEST_VMULL_LANE(int, s, 16, 32, 4, 2); ++ TEST_VMULL_LANE(int, s, 32, 64, 2, 1); ++ TEST_VMULL_LANE(uint, u, 16, 32, 4, 2); ++ TEST_VMULL_LANE(uint, u, 32, 64, 2, 1); ++ ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, int, 64, 2, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 64, 2, PRIx32, expected, ""); ++} ++ ++int main (void) ++{ ++ exec_vmull_lane (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpadd.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpadd.c +@@ -0,0 +1,19 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vpadd ++#define TEST_MSG "VPADD" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xe1, 0xe5, 0xe9, 0xed, ++ 0xe1, 0xe5, 0xe9, 0xed }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xffe1, 0xffe5, 0xffe1, 0xffe5 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xffffffe1, 0xffffffe1 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xe1, 0xe5, 0xe9, 0xed, ++ 0xe1, 0xe5, 0xe9, 0xed }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xffe1, 0xffe5, 0xffe1, 0xffe5 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffe1, 0xffffffe1 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xc1f80000, 0xc1f80000 }; ++ ++#include "vpXXX.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vneg.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vneg.c +@@ -0,0 +1,74 @@ ++#define INSN_NAME vneg ++#define TEST_MSG "VNEG/VNEGQ" ++ ++/* Extra tests for functions requiring floating-point types. */ ++void exec_vneg_f32(void); ++#define EXTRA_TESTS exec_vneg_f32 ++ ++#include "unary_op.inc" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x10, 0xf, 0xe, 0xd, ++ 0xc, 0xb, 0xa, 0x9 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x10, 0xf, 0xe, 0xd }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x10, 0xf }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x10, 0xf, 0xe, 0xd, 0xc, 0xb, 0xa, 0x9, ++ 0x8, 0x7, 0x6, 0x5, 0x4, 0x3, 0x2, 0x1 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x10, 0xf, 0xe, 0xd, ++ 0xc, 0xb, 0xa, 0x9 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x10, 0xf, 0xe, 0xd }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++/* Expected results for float32 variants. Needs to be separated since ++ the generic test function does not test floating-point ++ versions. */ ++VECT_VAR_DECL(expected_float32,hfloat,32,2) [] = { 0xc0133333, 0xc0133333 }; ++VECT_VAR_DECL(expected_float32,hfloat,32,4) [] = { 0xc059999a, 0xc059999a, ++ 0xc059999a, 0xc059999a }; ++ ++void exec_vneg_f32(void) ++{ ++ DECL_VARIABLE(vector, float, 32, 2); ++ DECL_VARIABLE(vector, float, 32, 4); ++ ++ DECL_VARIABLE(vector_res, float, 32, 2); ++ DECL_VARIABLE(vector_res, float, 32, 4); ++ ++ VDUP(vector, , float, f, 32, 2, 2.3f); ++ VDUP(vector, q, float, f, 32, 4, 3.4f); ++ ++ TEST_UNARY_OP(INSN_NAME, , float, f, 32, 2); ++ TEST_UNARY_OP(INSN_NAME, q, float, f, 32, 4); ++ ++ CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_float32, ""); ++ CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_float32, ""); ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcgt.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcgt.c +@@ -0,0 +1,76 @@ ++#define INSN_NAME vcgt ++#define TEST_MSG "VCGT/VCGTQ" ++ ++#include "cmp_op.inc" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x0, 0x0, 0x0, 0xffff }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x0, 0xffffffff }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333, ++ 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0xff, 0xff, 0xff }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0xffff }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x0, 0x0, 0x0, 0xffffffff }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++VECT_VAR_DECL(expected_uint,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0, ++ 0xff, 0xff, 0xff, 0xff }; ++VECT_VAR_DECL(expected_uint,uint,16,4) [] = { 0x0, 0x0, 0x0, 0xffff }; ++VECT_VAR_DECL(expected_uint,uint,32,2) [] = { 0x0, 0x0 }; ++ ++VECT_VAR_DECL(expected_q_uint,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xff, 0xff }; ++VECT_VAR_DECL(expected_q_uint,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0xffff }; ++VECT_VAR_DECL(expected_q_uint,uint,32,4) [] = { 0x0, 0x0, 0x0, 0xffffffff }; ++ ++VECT_VAR_DECL(expected_float,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected_q_float,uint,32,4) [] = { 0x0, 0x0, 0x0, 0xffffffff }; ++ ++VECT_VAR_DECL(expected_uint2,uint,32,2) [] = { 0x0, 0xffffffff }; ++VECT_VAR_DECL(expected_uint3,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected_uint4,uint,32,2) [] = { 0x0, 0xffffffff }; ++ ++VECT_VAR_DECL(expected_nan,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected_mnan,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected_nan2,uint,32,2) [] = { 0x0, 0x0 }; ++ ++VECT_VAR_DECL(expected_inf,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected_minf,uint,32,2) [] = { 0xffffffff, 0xffffffff }; ++VECT_VAR_DECL(expected_inf2,uint,32,2) [] = { 0xffffffff, 0xffffffff }; ++ ++VECT_VAR_DECL(expected_mzero,uint,32,2) [] = { 0x0, 0x0 }; +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmovl.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmovl.c +@@ -0,0 +1,52 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3, ++ 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffff0, 0xfffffff1, ++ 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xfffffffffffffff0, ++ 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xfffffff0, 0xfffffff1 }; ++ ++#define TEST_MSG "VMOVL" ++void exec_vmovl (void) ++{ ++ /* Basic test: vec128=vmovl(vec64), then store the result. */ ++#define TEST_VMOVL(T1, T2, W, W2, N) \ ++ VECT_VAR(vector128, T1, W2, N) = \ ++ vmovl_##T2##W(VECT_VAR(vector64, T1, W, N)); \ ++ vst1q_##T2##W2(VECT_VAR(result, T1, W2, N), VECT_VAR(vector128, T1, W2, N)) ++ ++ DECL_VARIABLE_64BITS_VARIANTS(vector64); ++ DECL_VARIABLE_128BITS_VARIANTS(vector128); ++ ++ TEST_MACRO_64BITS_VARIANTS_2_5(VLOAD, vector64, buffer); ++ ++ clean_results (); ++ ++ TEST_VMOVL(int, s, 8, 16, 8); ++ TEST_VMOVL(int, s, 16, 32, 4); ++ TEST_VMOVL(int, s, 32, 64, 2); ++ TEST_VMOVL(uint, u, 8, 16, 8); ++ TEST_VMOVL(uint, u, 16, 32, 4); ++ TEST_VMOVL(uint, u, 32, 64, 2); ++ ++ CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, ""); ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, ""); ++} ++ ++int main (void) ++{ ++ exec_vmovl (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcagt.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcagt.c +@@ -0,0 +1,51 @@ ++#define INSN_NAME vcagt ++#define TEST_MSG "VCAGT/VCAGTQ" ++ ++#include "cmp_fp_op.inc" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333, ++ 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffffff, 0xffffffff, 0x0, 0x0 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333, ++ 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffff, 0xffffffff, ++ 0x0, 0x0 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++VECT_VAR_DECL(expected2,uint,32,2) [] = { 0xffffffff, 0xffffffff }; ++VECT_VAR_DECL(expected2,uint,32,4) [] = { 0xffffffff, 0xffffffff, ++ 0xffffffff, 0xffffffff }; +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1_lane.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1_lane.c +@@ -0,0 +1,123 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xf0, 0xaa }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xfff0 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xaaaaaaaa, 0xfffffff0 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xf0 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xfff0 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xaaaaaaaa, 0xfffffff0 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xf0 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xfff0 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xaaaaaaaa, 0xc1800000 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xf0 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, ++ 0xaaaa, 0xfff0, 0xaaaa, 0xaaaa }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa, ++ 0xfffffff0, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xaaaaaaaaaaaaaaaa, ++ 0xfffffffffffffff0 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xf0, 0xaa, 0xaa, 0xaa }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, ++ 0xaaaa, 0xaaaa, 0xfff0, 0xaaaa }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa, ++ 0xfffffff0, 0xaaaaaaaa }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xfffffffffffffff0, ++ 0xaaaaaaaaaaaaaaaa }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xaa, 0xaa, 0xaa, 0xaa, ++ 0xf0, 0xaa, 0xaa, 0xaa }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, ++ 0xaaaa, 0xaaaa, 0xfff0, 0xaaaa }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa, ++ 0xc1800000, 0xaaaaaaaa }; ++ ++#define TEST_MSG "VLD1_LANE/VLD1_LANEQ" ++void exec_vld1_lane (void) ++{ ++ /* Fill vector_src with 0xAA, then load 1 lane. */ ++#define TEST_VLD1_LANE(Q, T1, T2, W, N, L) \ ++ memset (VECT_VAR(buffer_src, T1, W, N), 0xAA, W/8*N); \ ++ VECT_VAR(vector_src, T1, W, N) = \ ++ vld1##Q##_##T2##W(VECT_VAR(buffer_src, T1, W, N)); \ ++ VECT_VAR(vector, T1, W, N) = \ ++ vld1##Q##_lane_##T2##W(VECT_VAR(buffer, T1, W, N), \ ++ VECT_VAR(vector_src, T1, W, N), L); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector, T1, W, N)) ++ ++ DECL_VARIABLE_ALL_VARIANTS(vector); ++ DECL_VARIABLE_ALL_VARIANTS(vector_src); ++ ++ ARRAY(buffer_src, int, 8, 8); ++ ARRAY(buffer_src, int, 16, 4); ++ ARRAY(buffer_src, int, 32, 2); ++ ARRAY(buffer_src, int, 64, 1); ++ ARRAY(buffer_src, uint, 8, 8); ++ ARRAY(buffer_src, uint, 16, 4); ++ ARRAY(buffer_src, uint, 32, 2); ++ ARRAY(buffer_src, uint, 64, 1); ++ ARRAY(buffer_src, poly, 8, 8); ++ ARRAY(buffer_src, poly, 16, 4); ++ ARRAY(buffer_src, float, 32, 2); ++ ++ ARRAY(buffer_src, int, 8, 16); ++ ARRAY(buffer_src, int, 16, 8); ++ ARRAY(buffer_src, int, 32, 4); ++ ARRAY(buffer_src, int, 64, 2); ++ ARRAY(buffer_src, uint, 8, 16); ++ ARRAY(buffer_src, uint, 16, 8); ++ ARRAY(buffer_src, uint, 32, 4); ++ ARRAY(buffer_src, uint, 64, 2); ++ ARRAY(buffer_src, poly, 8, 16); ++ ARRAY(buffer_src, poly, 16, 8); ++ ARRAY(buffer_src, float, 32, 4); ++ ++ clean_results (); ++ ++ /* Choose lane arbitrarily. */ ++ TEST_VLD1_LANE(, int, s, 8, 8, 6); ++ TEST_VLD1_LANE(, int, s, 16, 4, 3); ++ TEST_VLD1_LANE(, int, s, 32, 2, 1); ++ TEST_VLD1_LANE(, int, s, 64, 1, 0); ++ TEST_VLD1_LANE(, uint, u, 8, 8, 7); ++ TEST_VLD1_LANE(, uint, u, 16, 4, 3); ++ TEST_VLD1_LANE(, uint, u, 32, 2, 1); ++ TEST_VLD1_LANE(, uint, u, 64, 1, 0); ++ TEST_VLD1_LANE(, poly, p, 8, 8, 7); ++ TEST_VLD1_LANE(, poly, p, 16, 4, 3); ++ TEST_VLD1_LANE(, float, f, 32, 2, 1); ++ ++ TEST_VLD1_LANE(q, int, s, 8, 16, 15); ++ TEST_VLD1_LANE(q, int, s, 16, 8, 5); ++ TEST_VLD1_LANE(q, int, s, 32, 4, 2); ++ TEST_VLD1_LANE(q, int, s, 64, 2, 1); ++ TEST_VLD1_LANE(q, uint, u, 8, 16, 12); ++ TEST_VLD1_LANE(q, uint, u, 16, 8, 6); ++ TEST_VLD1_LANE(q, uint, u, 32, 4, 2); ++ TEST_VLD1_LANE(q, uint, u, 64, 2, 0); ++ TEST_VLD1_LANE(q, poly, p, 8, 16, 12); ++ TEST_VLD1_LANE(q, poly, p, 16, 8, 6); ++ TEST_VLD1_LANE(q, float, f, 32, 4, 2); ++ ++ CHECK_RESULTS (TEST_MSG, ""); ++} ++ ++int main (void) ++{ ++ exec_vld1_lane (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmovn.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmovn.c +@@ -0,0 +1,50 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3, ++ 0xf4, 0xf5, 0xf6, 0xf7 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++ ++#define TEST_MSG "VMOVN" ++void exec_vmovn (void) ++{ ++ /* Basic test: vec64=vmovn(vec128), then store the result. */ ++#define TEST_VMOVN(T1, T2, W, W2, N) \ ++ VECT_VAR(vector64, T1, W2, N) = \ ++ vmovn_##T2##W(VECT_VAR(vector128, T1, W, N)); \ ++ vst1_##T2##W2(VECT_VAR(result, T1, W2, N), VECT_VAR(vector64, T1, W2, N)) ++ ++ DECL_VARIABLE_64BITS_VARIANTS(vector64); ++ DECL_VARIABLE_128BITS_VARIANTS(vector128); ++ ++ TEST_MACRO_128BITS_VARIANTS_2_5(VLOAD, vector128, buffer); ++ ++ clean_results (); ++ ++ TEST_VMOVN(int, s, 16, 8, 8); ++ TEST_VMOVN(int, s, 32, 16, 4); ++ TEST_VMOVN(int, s, 64, 32, 2); ++ TEST_VMOVN(uint, u, 16, 8, 8); ++ TEST_VMOVN(uint, u, 32, 16, 4); ++ TEST_VMOVN(uint, u, 64, 32, 2); ++ ++ CHECK(TEST_MSG, int, 8, 8, PRIx32, expected, ""); ++ CHECK(TEST_MSG, int, 16, 4, PRIx64, expected, ""); ++ CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 8, 8, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 4, PRIx64, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, ""); ++} ++ ++int main (void) ++{ ++ exec_vmovn (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vbsl.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vbsl.c +@@ -0,0 +1,124 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf6, 0xf6, 0xf6, 0xf6 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff0, 0xfff0, 0xfff2, 0xfff2 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffff0, 0xfffffff0 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0xfffffffffffffffd }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xf3, 0xf3, 0xf3, 0xf3, ++ 0xf7, 0xf7, 0xf7, 0xf7 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfff0, 0xfff0, 0xfff2, 0xfff2 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffffff0, 0xfffffff0 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0xfffffff1 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0xf3, 0xf3, 0xf3, 0xf3, ++ 0xf7, 0xf7, 0xf7, 0xf7 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0xfff0, 0xfff0, 0xfff2, 0xfff2 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xc1800004, 0xc1700004 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf6, 0xf6, 0xf6, 0xf6, ++ 0xf2, 0xf2, 0xf2, 0xf2, ++ 0xf6, 0xf6, 0xf6, 0xf6 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xfff0, 0xfff0, 0xfff2, 0xfff2, ++ 0xfff4, 0xfff4, 0xfff6, 0xfff6 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffff0, 0xfffffff0, ++ 0xfffffff2, 0xfffffff2 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xfffffffffffffffd, ++ 0xfffffffffffffffd }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xf3, 0xf3, 0xf3, 0xf3, ++ 0xf7, 0xf7, 0xf7, 0xf7, ++ 0xf3, 0xf3, 0xf3, 0xf3, ++ 0xf7, 0xf7, 0xf7, 0xf7 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfff0, 0xfff0, 0xfff2, 0xfff2, ++ 0xfff4, 0xfff4, 0xfff6, 0xfff6 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfffffff0, 0xfffffff0, ++ 0xfffffff2, 0xfffffff2 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xfffffff1, ++ 0xfffffff1 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0xf3, 0xf3, 0xf3, 0xf3, ++ 0xf7, 0xf7, 0xf7, 0xf7, ++ 0xf3, 0xf3, 0xf3, 0xf3, ++ 0xf7, 0xf7, 0xf7, 0xf7 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0xfff0, 0xfff0, 0xfff2, 0xfff2, ++ 0xfff4, 0xfff4, 0xfff6, 0xfff6 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0xc1800001, 0xc1700001, ++ 0xc1600001, 0xc1500001 }; ++ ++#define TEST_MSG "VBSL/VBSLQ" ++void exec_vbsl (void) ++{ ++ /* Basic test: y=vbsl(unsigned_vec,x1,x2), then store the result. */ ++#define TEST_VBSL(T3, Q, T1, T2, W, N) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ vbsl##Q##_##T2##W(VECT_VAR(vector_first, T3, W, N), \ ++ VECT_VAR(vector, T1, W, N), \ ++ VECT_VAR(vector2, T1, W, N)); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N)) ++ ++ DECL_VARIABLE_ALL_VARIANTS(vector); ++ DECL_VARIABLE_ALL_VARIANTS(vector2); ++ DECL_VARIABLE_ALL_VARIANTS(vector_res); ++ ++ DECL_VARIABLE_UNSIGNED_VARIANTS(vector_first); ++ ++ clean_results (); ++ ++ TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector, buffer); ++ VLOAD(vector, buffer, , float, f, 32, 2); ++ VLOAD(vector, buffer, q, float, f, 32, 4); ++ ++ /* Choose init value arbitrarily, will be used for vector ++ comparison. As we want different values for each type variant, we ++ can't use generic initialization macros. */ ++ VDUP(vector2, , int, s, 8, 8, -10); ++ VDUP(vector2, , int, s, 16, 4, -14); ++ VDUP(vector2, , int, s, 32, 2, -30); ++ VDUP(vector2, , int, s, 64, 1, -33); ++ VDUP(vector2, , uint, u, 8, 8, 0xF3); ++ VDUP(vector2, , uint, u, 16, 4, 0xFFF2); ++ VDUP(vector2, , uint, u, 32, 2, 0xFFFFFFF0); ++ VDUP(vector2, , uint, u, 64, 1, 0xFFFFFFF3); ++ VDUP(vector2, , float, f, 32, 2, -30.3f); ++ VDUP(vector2, , poly, p, 8, 8, 0xF3); ++ VDUP(vector2, , poly, p, 16, 4, 0xFFF2); ++ ++ VDUP(vector2, q, int, s, 8, 16, -10); ++ VDUP(vector2, q, int, s, 16, 8, -14); ++ VDUP(vector2, q, int, s, 32, 4, -30); ++ VDUP(vector2, q, int, s, 64, 2, -33); ++ VDUP(vector2, q, uint, u, 8, 16, 0xF3); ++ VDUP(vector2, q, uint, u, 16, 8, 0xFFF2); ++ VDUP(vector2, q, uint, u, 32, 4, 0xFFFFFFF0); ++ VDUP(vector2, q, uint, u, 64, 2, 0xFFFFFFF3); ++ VDUP(vector2, q, poly, p, 8, 16, 0xF3); ++ VDUP(vector2, q, poly, p, 16, 8, 0xFFF2); ++ VDUP(vector2, q, float, f, 32, 4, -30.4f); ++ ++ VDUP(vector_first, , uint, u, 8, 8, 0xF4); ++ VDUP(vector_first, , uint, u, 16, 4, 0xFFF6); ++ VDUP(vector_first, , uint, u, 32, 2, 0xFFFFFFF2); ++ VDUP(vector_first, , uint, u, 64, 1, 0xFFFFFFF2); ++ VDUP(vector_first, q, uint, u, 8, 16, 0xF4); ++ VDUP(vector_first, q, uint, u, 16, 8, 0xFFF6); ++ VDUP(vector_first, q, uint, u, 32, 4, 0xFFFFFFF2); ++ VDUP(vector_first, q, uint, u, 64, 2, 0xFFFFFFF2); ++ ++ /* Execute the tests. */ ++ TEST_MACRO_ALL_VARIANTS_1_5(TEST_VBSL, uint); ++ TEST_VBSL(uint, , poly, p, 8, 8); ++ TEST_VBSL(uint, , poly, p, 16, 4); ++ TEST_VBSL(uint, q, poly, p, 8, 16); ++ TEST_VBSL(uint, q, poly, p, 16, 8); ++ TEST_VBSL(uint, , float, f, 32, 2); ++ TEST_VBSL(uint, q, float, f, 32, 4); ++ ++ CHECK_RESULTS (TEST_MSG, ""); ++} ++ ++int main (void) ++{ ++ exec_vbsl (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsubw.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsubw.c +@@ -0,0 +1,50 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vsubw ++#define TEST_MSG "VSUBW" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xfffd, 0xfffe, 0xffff, 0x0, ++ 0x1, 0x2, 0x3, 0x4 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffffe, 0xffffffff, 0x0, 0x1 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x0, 0x1 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfefd, 0xfefe, 0xfeff, 0xff00, ++ 0xff01, 0xff02, 0xff03, 0xff04 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfffeffff, 0xffff0000, ++ 0xffff0001, 0xffff0002 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffff00000000, ++ 0xffffffff00000001 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++#include "vXXXw.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_op.inc ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_op.inc +@@ -0,0 +1,70 @@ ++/* Template file for binary operator validation. ++ ++ This file is meant to be included by the relevant test files, which ++ have to define the intrinsic family to test. If a given intrinsic ++ supports variants which are not supported by all the other binary ++ operators, these can be tested by providing a definition for ++ EXTRA_TESTS. */ ++ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ /* Basic test: y=OP(x1,x2), then store the result. */ ++#define TEST_BINARY_OP1(INSN, Q, T1, T2, W, N) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ INSN##Q##_##T2##W(VECT_VAR(vector, T1, W, N), \ ++ VECT_VAR(vector2, T1, W, N)); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N)) ++ ++#define TEST_BINARY_OP(INSN, Q, T1, T2, W, N) \ ++ TEST_BINARY_OP1(INSN, Q, T1, T2, W, N) \ ++ ++ DECL_VARIABLE_ALL_VARIANTS(vector); ++ DECL_VARIABLE_ALL_VARIANTS(vector2); ++ DECL_VARIABLE_ALL_VARIANTS(vector_res); ++ ++ clean_results (); ++ ++ /* Initialize input "vector" from "buffer". */ ++ TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector, buffer); ++ ++ /* Fill input vector2 with arbitrary values. */ ++ VDUP(vector2, , int, s, 8, 8, 2); ++ VDUP(vector2, , int, s, 16, 4, -4); ++ VDUP(vector2, , int, s, 32, 2, 3); ++ VDUP(vector2, , int, s, 64, 1, 100); ++ VDUP(vector2, , uint, u, 8, 8, 20); ++ VDUP(vector2, , uint, u, 16, 4, 30); ++ VDUP(vector2, , uint, u, 32, 2, 40); ++ VDUP(vector2, , uint, u, 64, 1, 2); ++ VDUP(vector2, q, int, s, 8, 16, -10); ++ VDUP(vector2, q, int, s, 16, 8, -20); ++ VDUP(vector2, q, int, s, 32, 4, -30); ++ VDUP(vector2, q, int, s, 64, 2, 24); ++ VDUP(vector2, q, uint, u, 8, 16, 12); ++ VDUP(vector2, q, uint, u, 16, 8, 3); ++ VDUP(vector2, q, uint, u, 32, 4, 55); ++ VDUP(vector2, q, uint, u, 64, 2, 3); ++ ++ /* Apply a binary operator named INSN_NAME. */ ++ TEST_MACRO_ALL_VARIANTS_1_5(TEST_BINARY_OP, INSN_NAME); ++ ++ CHECK_RESULTS (TEST_MSG, ""); ++ ++#ifdef EXTRA_TESTS ++ EXTRA_TESTS(); ++#endif ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/veor.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/veor.c +@@ -0,0 +1,47 @@ ++#define INSN_NAME veor ++#define TEST_MSG "VEOR/VEORQ" ++ ++#include "binary_op.inc" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf2, 0xf3, 0xf0, 0xf1, ++ 0xf6, 0xf7, 0xf4, 0xf5 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xc, 0xd, 0xe, 0xf }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffff3, 0xfffffff2 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0xffffffffffffff94 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xe4, 0xe5, 0xe6, 0xe7, ++ 0xe0, 0xe1, 0xe2, 0xe3 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xffee, 0xffef, 0xffec, 0xffed }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffd8, 0xffffffd9 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0xfffffffffffffff2 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x6, 0x7, 0x4, 0x5, ++ 0x2, 0x3, 0x0, 0x1, ++ 0xe, 0xf, 0xc, 0xd, ++ 0xa, 0xb, 0x8, 0x9 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x1c, 0x1d, 0x1e, 0x1f, ++ 0x18, 0x19, 0x1a, 0x1b }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x12, 0x13, 0x10, 0x11 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xffffffffffffffe8, ++ 0xffffffffffffffe9 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xfc, 0xfd, 0xfe, 0xff, ++ 0xf8, 0xf9, 0xfa, 0xfb, ++ 0xf4, 0xf5, 0xf6, 0xf7, ++ 0xf0, 0xf1, 0xf2, 0xf3 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfff3, 0xfff2, 0xfff1, 0xfff0, ++ 0xfff7, 0xfff6, 0xfff5, 0xfff4 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffc7, 0xffffffc6, ++ 0xffffffc5, 0xffffffc4 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xfffffffffffffff3, ++ 0xfffffffffffffff2 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal.c +@@ -0,0 +1,18 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vmlal ++#define TEST_MSG "VMLAL" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xe907, 0xe908, 0xe909, 0xe90a, ++ 0xe90b, 0xe90c, 0xe90d, 0xe90e }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x3e07, 0x3e08, 0x3e09, 0x3e0a }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x3e07, 0x3e08 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x3e07, 0x3e08, 0x3e09, 0x3e0a, ++ 0x3e0b, 0x3e0c, 0x3e0d, 0x3e0e }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x3e07, 0x3e08, 0x3e09, 0x3e0a }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3e07, 0x3e08 }; ++ ++#include "vmlXl.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/README ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/README +@@ -0,0 +1,132 @@ ++This directory contains executable tests for ARM/AArch64 Advanced SIMD ++(Neon) intrinsics. ++ ++It is meant to cover execution cases of all the Advanced SIMD ++intrinsics, but does not scan the generated assembler code. ++ ++The general framework is composed as follows: ++- advsimd-intrinsics.exp: main dejagnu driver ++- *.c: actual tests, generally one per intrinsinc family ++- arm-neon-ref.h: contains macro definitions to save typing in actual ++ test files ++- compute-ref-data.h: contains input vectors definitions ++- *.inc: generic tests, shared by several families of intrinsics. For ++ instance, unary or binary operators ++ ++A typical .c test file starts with the following contents (look at ++vld1.c and vaba.c for sample cases): ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++Then, definitions of expected results, based on common input values, ++as defined in compute-ref-data.h. ++For example: ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x16, 0x17, 0x18, 0x19 }; ++defines the expected results of an operator generating int16x4 values. ++ ++The common input values defined in compute-ref-data.h have been chosen ++to avoid corner-case values for most operators, yet exposing negative ++values for signed operators. For this reason, their range is also ++limited. For instance, the initialization of buffer_int16x4 will be ++{ -16, -15, -14, -13 }. ++ ++The initialization of floating-point values is done via hex notation, ++to avoid potential rounding problems. ++ ++To test special values and corner cases, specific initialization ++values should be used in dedicated tests, to ensure proper coverage. ++An example of this is vshl. ++ ++When a variant of an intrinsic is not available, its expected result ++should be defined to the value of CLEAN_PATTERN_8 as defined in ++arm-neon-ref.h. For example: ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++if the given intrinsic has no variant producing an int64x1 result, ++like the vcmp family (eg. vclt). ++ ++This is because the helper function (check_results(), defined in ++arm-neon-ref.h), iterates over all the possible variants, to save ++typing in each individual test file. Alternatively, one can directly ++call the CHECK/CHECK_FP macros to check only a few expected results ++(see vabs.c for an example). ++ ++Then, define the TEST_MSG string, which will be used when reporting errors. ++ ++Next, define the function performing the actual tests, in general ++relying on the helpers provided by arm-neon-ref.h, which means: ++ ++* declare necessary vectors of suitable types: using ++ DECL_VARIABLE_ALL_VARIANTS when all variants are supported, or the ++ relevant of subset calls to DECL_VARIABLE. ++ ++* call clean_results() to initialize the 'results' buffers. ++ ++* initialize the input vectors, using VLOAD, VDUP or VSET_LANE (vld* ++ tests do not need this step, since their actual purpose is to ++ initialize vectors). ++ ++* execute the intrinsic on relevant variants, for instance using ++ TEST_MACRO_ALL_VARIANTS_2_5. ++ ++* call check_results() to check that the results match the expected ++ values. ++ ++A template test file could be: ++================================================================= ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf6, 0xf7, 0xf8, 0xf9, ++ 0xfa, 0xfb, 0xfc, 0xfd }; ++/* and as many others as necessary. */ ++ ++#define TEST_MSG "VMYINTRINSIC" ++void exec_myintrinsic (void) ++{ ++ /* my test: v4=vmyintrinsic(v1,v2,v3), then store the result. */ ++#define TEST_VMYINTR(Q, T1, T2, W, N) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ vmyintr##Q##_##T2##W(VECT_VAR(vector1, T1, W, N), \ ++ VECT_VAR(vector2, T1, W, N), \ ++ VECT_VAR(vector3, T1, W, N)); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N)) ++ ++#define DECL_VMYINTR_VAR(VAR) \ ++ DECL_VARIABLE(VAR, int, 8, 8); ++/* And as many others as necessary. */ ++ ++ DECL_VMYINTR_VAR(vector1); ++ DECL_VMYINTR_VAR(vector2); ++ DECL_VMYINTR_VAR(vector3); ++ DECL_VMYINTR_VAR(vector_res); ++ ++ clean_results (); ++ ++ /* Initialize input "vector1" from "buffer". */ ++ VLOAD(vector1, buffer, , int, s, 8, 8); ++/* And as many others as necessary. */ ++ ++ /* Choose init value arbitrarily. */ ++ VDUP(vector2, , int, s, 8, 8, 1); ++/* And as many others as necessary. */ ++ ++ /* Choose init value arbitrarily. */ ++ VDUP(vector3, , int, s, 8, 8, -5); ++/* And as many others as necessary. */ ++ ++ /* Execute the tests. */ ++ TEST_VMYINTR(, int, s, 8, 8); ++/* And as many others as necessary. */ ++ ++ check_results (TEST_MSG, ""); ++} ++ ++int main (void) ++{ ++ exec_vmyintrinsic (); ++ return 0; ++} ++================================================================= +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vabd.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vabd.c +@@ -0,0 +1,153 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++#include ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x11, 0x10, 0xf, 0xe, ++ 0xd, 0xc, 0xb, 0xa }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x3, 0x2, 0x1, 0x0 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x18, 0x17 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xef, 0xf0, 0xf1, 0xf2, ++ 0xf3, 0xf4, 0xf5, 0xf6 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xffe3, 0xffe4, 0xffe5, 0xffe6 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffe8, 0xffffffe9 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x41c26666, 0x41ba6666 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x1a, 0x19, 0x18, 0x17, ++ 0x16, 0x15, 0x14, 0x13, ++ 0x12, 0x11, 0x10, 0xf, ++ 0xe, 0xd, 0xc, 0xb }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x4, 0x3, 0x2, 0x1, ++ 0x0, 0x1, 0x2, 0x3 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x30, 0x2f, 0x2e, 0x2d }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xe6, 0xe7, 0xe8, 0xe9, ++ 0xea, 0xeb, 0xec, 0xed, ++ 0xee, 0xef, 0xf0, 0xf1, ++ 0xf2, 0xf3, 0xf4, 0xf5 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xffe4, 0xffe5, 0xffe6, 0xffe7, ++ 0xffe8, 0xffe9, 0xffea, 0xffeb }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffd0, 0xffffffd1, ++ 0xffffffd2, 0xffffffd3 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x42407ae1, 0x423c7ae1, ++ 0x42387ae1, 0x42347ae1 }; ++ ++/* Additional expected results for float32 variants with specially ++ chosen input values. */ ++VECT_VAR_DECL(expected_float32,hfloat,32,4) [] = { 0x0, 0x0, 0x0, 0x0 }; ++ ++#define TEST_MSG "VABD/VABDQ" ++void exec_vabd (void) ++{ ++ /* Basic test: v4=vabd(v1,v2), then store the result. */ ++#define TEST_VABD(Q, T1, T2, W, N) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ vabd##Q##_##T2##W(VECT_VAR(vector1, T1, W, N), \ ++ VECT_VAR(vector2, T1, W, N)); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N)) ++ ++#define DECL_VABD_VAR(VAR) \ ++ DECL_VARIABLE(VAR, int, 8, 8); \ ++ DECL_VARIABLE(VAR, int, 16, 4); \ ++ DECL_VARIABLE(VAR, int, 32, 2); \ ++ DECL_VARIABLE(VAR, uint, 8, 8); \ ++ DECL_VARIABLE(VAR, uint, 16, 4); \ ++ DECL_VARIABLE(VAR, uint, 32, 2); \ ++ DECL_VARIABLE(VAR, float, 32, 2); \ ++ DECL_VARIABLE(VAR, int, 8, 16); \ ++ DECL_VARIABLE(VAR, int, 16, 8); \ ++ DECL_VARIABLE(VAR, int, 32, 4); \ ++ DECL_VARIABLE(VAR, uint, 8, 16); \ ++ DECL_VARIABLE(VAR, uint, 16, 8); \ ++ DECL_VARIABLE(VAR, uint, 32, 4); \ ++ DECL_VARIABLE(VAR, float, 32, 4) ++ ++ DECL_VABD_VAR(vector1); ++ DECL_VABD_VAR(vector2); ++ DECL_VABD_VAR(vector_res); ++ ++ clean_results (); ++ ++ /* Initialize input "vector1" from "buffer". */ ++ VLOAD(vector1, buffer, , int, s, 8, 8); ++ VLOAD(vector1, buffer, , int, s, 16, 4); ++ VLOAD(vector1, buffer, , int, s, 32, 2); ++ VLOAD(vector1, buffer, , uint, u, 8, 8); ++ VLOAD(vector1, buffer, , uint, u, 16, 4); ++ VLOAD(vector1, buffer, , uint, u, 32, 2); ++ VLOAD(vector1, buffer, , float, f, 32, 2); ++ VLOAD(vector1, buffer, q, int, s, 8, 16); ++ VLOAD(vector1, buffer, q, int, s, 16, 8); ++ VLOAD(vector1, buffer, q, int, s, 32, 4); ++ VLOAD(vector1, buffer, q, uint, u, 8, 16); ++ VLOAD(vector1, buffer, q, uint, u, 16, 8); ++ VLOAD(vector1, buffer, q, uint, u, 32, 4); ++ VLOAD(vector1, buffer, q, float, f, 32, 4); ++ ++ /* Choose init value arbitrarily. */ ++ VDUP(vector2, , int, s, 8, 8, 1); ++ VDUP(vector2, , int, s, 16, 4, -13); ++ VDUP(vector2, , int, s, 32, 2, 8); ++ VDUP(vector2, , uint, u, 8, 8, 1); ++ VDUP(vector2, , uint, u, 16, 4, 13); ++ VDUP(vector2, , uint, u, 32, 2, 8); ++ VDUP(vector2, , float, f, 32, 2, 8.3f); ++ VDUP(vector2, q, int, s, 8, 16, 10); ++ VDUP(vector2, q, int, s, 16, 8, -12); ++ VDUP(vector2, q, int, s, 32, 4, 32); ++ VDUP(vector2, q, uint, u, 8, 16, 10); ++ VDUP(vector2, q, uint, u, 16, 8, 12); ++ VDUP(vector2, q, uint, u, 32, 4, 32); ++ VDUP(vector2, q, float, f, 32, 4, 32.12f); ++ ++ /* Execute the tests. */ ++ TEST_VABD(, int, s, 8, 8); ++ TEST_VABD(, int, s, 16, 4); ++ TEST_VABD(, int, s, 32, 2); ++ TEST_VABD(, uint, u, 8, 8); ++ TEST_VABD(, uint, u, 16, 4); ++ TEST_VABD(, uint, u, 32, 2); ++ TEST_VABD(, float, f, 32, 2); ++ TEST_VABD(q, int, s, 8, 16); ++ TEST_VABD(q, int, s, 16, 8); ++ TEST_VABD(q, int, s, 32, 4); ++ TEST_VABD(q, uint, u, 8, 16); ++ TEST_VABD(q, uint, u, 16, 8); ++ TEST_VABD(q, uint, u, 32, 4); ++ TEST_VABD(q, float, f, 32, 4); ++ ++ CHECK_RESULTS (TEST_MSG, ""); ++ ++ ++ /* Extra FP tests with special values (-0.0, ....) */ ++ VDUP(vector1, q, float, f, 32, 4, -0.0f); ++ VDUP(vector2, q, float, f, 32, 4, 0.0); ++ TEST_VABD(q, float, f, 32, 4); ++ CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_float32, " FP special (-0.0)"); ++ ++ /* Extra FP tests with special values (-0.0, ....) */ ++ VDUP(vector1, q, float, f, 32, 4, 0.0f); ++ VDUP(vector2, q, float, f, 32, 4, -0.0); ++ TEST_VABD(q, float, f, 32, 4); ++ CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_float32, " FP special (-0.0)"); ++} ++ ++int main (void) ++{ ++ exec_vabd (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmla_n.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmla_n.c +@@ -0,0 +1,23 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vmla ++#define TEST_MSG "VMLA_N" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x595, 0x596, 0x597, 0x598 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xb3a, 0xb3b }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x10df, 0x10e0, 0x10e1, 0x10e2 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x1684, 0x1685 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x4497deb8, 0x4497feb8 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x1c29, 0x1c2a, 0x1c2b, 0x1c2c, ++ 0x1c2d, 0x1c2e, 0x1c2f, 0x1c30 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x21ce, 0x21cf, 0x21d0, 0x21d1 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x2773, 0x2774, 0x2775, 0x2776, ++ 0x2777, 0x2778, 0x2779, 0x277a }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x2d18, 0x2d19, 0x2d1a, 0x2d1b }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x4568087b, 0x4568187b, ++ 0x4568287b, 0x4568387b }; ++ ++#include "vmlX_n.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmul_lane.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmul_lane.c +@@ -0,0 +1,104 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xffc0, 0xffc4, 0xffc8, 0xffcc }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffde0, 0xfffffe02 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xbbc0, 0xc004, 0xc448, 0xc88c }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffface0, 0xffffb212 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xc3b66666, 0xc3ab0000 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xffc0, 0xffc4, 0xffc8, 0xffcc, ++ 0xffd0, 0xffd4, 0xffd8, 0xffdc }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffde0, 0xfffffe02, ++ 0xfffffe24, 0xfffffe46 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xbbc0, 0xc004, 0xc448, 0xc88c, ++ 0xccd0, 0xd114, 0xd558, 0xd99c }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfffface0, 0xffffb212, ++ 0xffffb744, 0xffffbc76 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0xc3b66666, 0xc3ab0000, ++ 0xc39f9999, 0xc3943333 }; ++ ++#define TEST_MSG "VMUL_LANE" ++void exec_vmul_lane (void) ++{ ++#define DECL_VMUL(VAR) \ ++ DECL_VARIABLE(VAR, int, 16, 4); \ ++ DECL_VARIABLE(VAR, int, 32, 2); \ ++ DECL_VARIABLE(VAR, uint, 16, 4); \ ++ DECL_VARIABLE(VAR, uint, 32, 2); \ ++ DECL_VARIABLE(VAR, float, 32, 2); \ ++ DECL_VARIABLE(VAR, int, 16, 8); \ ++ DECL_VARIABLE(VAR, int, 32, 4); \ ++ DECL_VARIABLE(VAR, uint, 16, 8); \ ++ DECL_VARIABLE(VAR, uint, 32, 4); \ ++ DECL_VARIABLE(VAR, float, 32, 4) ++ ++ /* vector_res = vmul_lane(vector,vector2,lane), then store the result. */ ++#define TEST_VMUL_LANE(Q, T1, T2, W, N, N2, L) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ vmul##Q##_lane_##T2##W(VECT_VAR(vector, T1, W, N), \ ++ VECT_VAR(vector2, T1, W, N2), \ ++ L); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \ ++ VECT_VAR(vector_res, T1, W, N)) ++ ++ DECL_VMUL(vector); ++ DECL_VMUL(vector_res); ++ ++ DECL_VARIABLE(vector2, int, 16, 4); ++ DECL_VARIABLE(vector2, int, 32, 2); ++ DECL_VARIABLE(vector2, uint, 16, 4); ++ DECL_VARIABLE(vector2, uint, 32, 2); ++ DECL_VARIABLE(vector2, float, 32, 2); ++ ++ clean_results (); ++ ++ /* Initialize vector from pre-initialized values. */ ++ VLOAD(vector, buffer, , int, s, 16, 4); ++ VLOAD(vector, buffer, , int, s, 32, 2); ++ VLOAD(vector, buffer, , uint, u, 16, 4); ++ VLOAD(vector, buffer, , uint, u, 32, 2); ++ VLOAD(vector, buffer, , float, f, 32, 2); ++ VLOAD(vector, buffer, q, int, s, 16, 8); ++ VLOAD(vector, buffer, q, int, s, 32, 4); ++ VLOAD(vector, buffer, q, uint, u, 16, 8); ++ VLOAD(vector, buffer, q, uint, u, 32, 4); ++ VLOAD(vector, buffer, q, float, f, 32, 4); ++ ++ /* Initialize vector2. */ ++ VDUP(vector2, , int, s, 16, 4, 0x4); ++ VDUP(vector2, , int, s, 32, 2, 0x22); ++ VDUP(vector2, , uint, u, 16, 4, 0x444); ++ VDUP(vector2, , uint, u, 32, 2, 0x532); ++ VDUP(vector2, , float, f, 32, 2, 22.8f); ++ ++ /* Choose lane arbitrarily. */ ++ TEST_VMUL_LANE(, int, s, 16, 4, 4, 2); ++ TEST_VMUL_LANE(, int, s, 32, 2, 2, 1); ++ TEST_VMUL_LANE(, uint, u, 16, 4, 4, 2); ++ TEST_VMUL_LANE(, uint, u, 32, 2, 2, 1); ++ TEST_VMUL_LANE(, float, f, 32, 2, 2, 1); ++ TEST_VMUL_LANE(q, int, s, 16, 8, 4, 2); ++ TEST_VMUL_LANE(q, int, s, 32, 4, 2, 0); ++ TEST_VMUL_LANE(q, uint, u, 16, 8, 4, 2); ++ TEST_VMUL_LANE(q, uint, u, 32, 4, 2, 1); ++ TEST_VMUL_LANE(q, float, f, 32, 4, 2, 0); ++ ++ CHECK(TEST_MSG, int, 16, 4, PRIx64, expected, ""); ++ CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 4, PRIx64, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, ""); ++ CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected, ""); ++ CHECK(TEST_MSG, int, 16, 8, PRIx64, expected, ""); ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 16, 8, PRIx64, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, ""); ++ CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected, ""); ++} ++ ++int main (void) ++{ ++ exec_vmul_lane (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl.c +@@ -0,0 +1,29 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vqdmlsl ++#define TEST_MSG "VQDMLSL" ++ ++/* Expected values of cumulative_saturation flag. */ ++int VECT_VAR(expected_cumulative_sat,int,32,4) = 0; ++int VECT_VAR(expected_cumulative_sat,int,64,2) = 0; ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xffff83c2, 0xffff83c3, ++ 0xffff83c4, 0xffff83c5 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xffffffffffff83c2, ++ 0xffffffffffff83c3 }; ++ ++/* Expected values of cumulative_saturation flag when saturation ++ occurs. */ ++int VECT_VAR(expected_cumulative_sat2,int,32,4) = 1; ++int VECT_VAR(expected_cumulative_sat2,int,64,2) = 1; ++ ++/* Expected results when saturation occurs. */ ++VECT_VAR_DECL(expected2,int,32,4) [] = { 0x80000000, 0x80000000, ++ 0x80000000, 0x80000000 }; ++VECT_VAR_DECL(expected2,int,64,2) [] = { 0x8000000000000000, ++ 0x8000000000000000 }; ++ ++#include "vqdmlXl.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrsubhn.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrsubhn.c +@@ -0,0 +1,24 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#if defined(__cplusplus) ++#include ++#else ++#include ++#endif ++ ++#define INSN_NAME vrsubhn ++#define TEST_MSG "VRSUBHN" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x31, 0x31, 0x31, 0x31, ++ 0x31, 0x31, 0x31, 0x31 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x31, 0x31, 0x31, 0x31 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x17, 0x17 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x2, 0x2, 0x2, 0x2, ++ 0x2, 0x2, 0x2, 0x2 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x36, 0x36, 0x36, 0x36 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x2, 0x2 }; ++ ++#include "vXXXhn.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_lane.inc ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_lane.inc +@@ -0,0 +1,70 @@ ++#define FNNAME1(NAME) exec_ ## NAME ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ /* vector_res = vmlxl_lane(vector, vector3, vector4, lane), ++ then store the result. */ ++#define TEST_VMLXL_LANE1(INSN, T1, T2, W, W2, N, V) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ INSN##_##T2##W2(VECT_VAR(vector, T1, W, N), \ ++ VECT_VAR(vector3, T1, W2, N), \ ++ VECT_VAR(vector4, T1, W2, N), \ ++ V); \ ++ vst1q_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N)) ++ ++#define TEST_VMLXL_LANE(INSN, T1, T2, W, W2, N, V) \ ++ TEST_VMLXL_LANE1(INSN, T1, T2, W, W2, N, V) ++ ++ DECL_VARIABLE(vector, int, 32, 4); ++ DECL_VARIABLE(vector3, int, 16, 4); ++ DECL_VARIABLE(vector4, int, 16, 4); ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ ++ DECL_VARIABLE(vector, int, 64, 2); ++ DECL_VARIABLE(vector3, int, 32, 2); ++ DECL_VARIABLE(vector4, int, 32, 2); ++ DECL_VARIABLE(vector_res, int, 64, 2); ++ ++ DECL_VARIABLE(vector, uint, 32, 4); ++ DECL_VARIABLE(vector3, uint, 16, 4); ++ DECL_VARIABLE(vector4, uint, 16, 4); ++ DECL_VARIABLE(vector_res, uint, 32, 4); ++ ++ DECL_VARIABLE(vector, uint, 64, 2); ++ DECL_VARIABLE(vector3, uint, 32, 2); ++ DECL_VARIABLE(vector4, uint, 32, 2); ++ DECL_VARIABLE(vector_res, uint, 64, 2); ++ ++ clean_results (); ++ ++ VLOAD(vector, buffer, q, int, s, 32, 4); ++ VLOAD(vector, buffer, q, int, s, 64, 2); ++ VLOAD(vector, buffer, q, uint, u, 32, 4); ++ VLOAD(vector, buffer, q, uint, u, 64, 2); ++ ++ VDUP(vector3, , int, s, 16, 4, 0x55); ++ VDUP(vector4, , int, s, 16, 4, 0xBB); ++ VDUP(vector3, , int, s, 32, 2, 0x55); ++ VDUP(vector4, , int, s, 32, 2, 0xBB); ++ VDUP(vector3, , uint, u, 16, 4, 0x55); ++ VDUP(vector4, , uint, u, 16, 4, 0xBB); ++ VDUP(vector3, , uint, u, 32, 2, 0x55); ++ VDUP(vector4, , uint, u, 32, 2, 0xBB); ++ ++ TEST_VMLXL_LANE(INSN_NAME, int, s, 32, 16, 4, 2); ++ TEST_VMLXL_LANE(INSN_NAME, int, s, 64, 32, 2, 1); ++ TEST_VMLXL_LANE(INSN_NAME, uint, u, 32, 16, 4, 2); ++ TEST_VMLXL_LANE(INSN_NAME, uint, u, 64, 32, 2, 1); ++ ++ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, ""); ++ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, ""); ++ CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, ""); ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vabdl.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vabdl.c +@@ -0,0 +1,109 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x11, 0x10, 0xf, 0xe, ++ 0xd, 0xc, 0xb, 0xa }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x3, 0x2, 0x1, 0x0 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x18, 0x17 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xef, 0xf0, 0xf1, 0xf2, ++ 0xf3, 0xf4, 0xf5, 0xf6 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffe3, 0xffe4, 0xffe5, 0xffe6 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffe8, ++ 0xffffffe9 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++#define TEST_MSG "VABDL" ++void exec_vabdl (void) ++{ ++ /* Basic test: v4=vabdl(v1,v2), then store the result. */ ++#define TEST_VABDL(T1, T2, W, W2, N) \ ++ VECT_VAR(vector_res, T1, W2, N) = \ ++ vabdl_##T2##W(VECT_VAR(vector1, T1, W, N), \ ++ VECT_VAR(vector2, T1, W, N)); \ ++ vst1q_##T2##W2(VECT_VAR(result, T1, W2, N), VECT_VAR(vector_res, T1, W2, N)) ++ ++#define DECL_VABDL_VAR_LONG(VAR) \ ++ DECL_VARIABLE(VAR, int, 16, 8); \ ++ DECL_VARIABLE(VAR, int, 32, 4); \ ++ DECL_VARIABLE(VAR, int, 64, 2); \ ++ DECL_VARIABLE(VAR, uint, 16, 8); \ ++ DECL_VARIABLE(VAR, uint, 32, 4); \ ++ DECL_VARIABLE(VAR, uint, 64, 2) ++ ++#define DECL_VABDL_VAR_SHORT(VAR) \ ++ DECL_VARIABLE(VAR, int, 8, 8); \ ++ DECL_VARIABLE(VAR, int, 16, 4); \ ++ DECL_VARIABLE(VAR, int, 32, 2); \ ++ DECL_VARIABLE(VAR, uint, 8, 8); \ ++ DECL_VARIABLE(VAR, uint, 16, 4); \ ++ DECL_VARIABLE(VAR, uint, 32, 2) ++ ++ DECL_VABDL_VAR_SHORT(vector1); ++ DECL_VABDL_VAR_SHORT(vector2); ++ DECL_VABDL_VAR_LONG(vector_res); ++ ++ clean_results (); ++ ++ /* Initialize input "vector1" from "buffer". */ ++ VLOAD(vector1, buffer, , int, s, 8, 8); ++ VLOAD(vector1, buffer, , int, s, 16, 4); ++ VLOAD(vector1, buffer, , int, s, 32, 2); ++ VLOAD(vector1, buffer, , uint, u, 8, 8); ++ VLOAD(vector1, buffer, , uint, u, 16, 4); ++ VLOAD(vector1, buffer, , uint, u, 32, 2); ++ ++ /* Choose init value arbitrarily. */ ++ VDUP(vector2, , int, s, 8, 8, 1); ++ VDUP(vector2, , int, s, 16, 4, -13); ++ VDUP(vector2, , int, s, 32, 2, 8); ++ VDUP(vector2, , uint, u, 8, 8, 1); ++ VDUP(vector2, , uint, u, 16, 4, 13); ++ VDUP(vector2, , uint, u, 32, 2, 8); ++ ++ /* Execute the tests. */ ++ TEST_VABDL(int, s, 8, 16, 8); ++ TEST_VABDL(int, s, 16, 32, 4); ++ TEST_VABDL(int, s, 32, 64, 2); ++ TEST_VABDL(uint, u, 8, 16, 8); ++ TEST_VABDL(uint, u, 16, 32, 4); ++ TEST_VABDL(uint, u, 32, 64, 2); ++ ++ CHECK_RESULTS (TEST_MSG, ""); ++} ++ ++int main (void) ++{ ++ exec_vabdl (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vand.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vand.c +@@ -0,0 +1,45 @@ ++#define INSN_NAME vand ++#define TEST_MSG "VAND/VANDQ" ++ ++#include "binary_op.inc" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x0, 0x0, 0x2, 0x2, ++ 0x0, 0x0, 0x2, 0x2 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff0, 0xfff0, 0xfff0, 0xfff0 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x0, 0x1 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x60 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x10, 0x10, 0x10, 0x10, ++ 0x14, 0x14, 0x14, 0x14 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x10, 0x10, 0x12, 0x12 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x20, 0x20 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x0 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0xf0, 0xf0, 0xf2, 0xf2, ++ 0xf4, 0xf4, 0xf6, 0xf6, ++ 0xf0, 0xf0, 0xf2, 0xf2, ++ 0xf4, 0xf4, 0xf6, 0xf6 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xffe0, 0xffe0, 0xffe0, 0xffe0, ++ 0xffe4, 0xffe4, 0xffe4, 0xffe4 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffffe0, 0xffffffe0, ++ 0xffffffe2, 0xffffffe2 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x10, 0x10 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0, ++ 0x4, 0x4, 0x4, 0x4, ++ 0x8, 0x8, 0x8, 0x8, ++ 0xc, 0xc, 0xc, 0xc }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x0, 0x1, 0x2, 0x3, ++ 0x0, 0x1, 0x2, 0x3 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x30, 0x31, 0x32, 0x33 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x0, 0x1 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcle.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcle.c +@@ -0,0 +1,80 @@ ++#define INSN_NAME vcle ++#define TEST_MSG "VCLE/VCLEQ" ++ ++#include "cmp_op.inc" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xff, 0x0 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xffff, 0xffff, 0xffff, 0x0 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffff, 0x0 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333, ++ 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xffff, 0xffff, 0xffff, 0xffff, ++ 0xffff, 0xffff, 0xffff, 0x0 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffff, 0xffffffff, ++ 0xffffffff, 0x0 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++VECT_VAR_DECL(expected_uint,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff, ++ 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_uint,uint,16,4) [] = { 0xffff, 0xffff, 0xffff, 0x0 }; ++VECT_VAR_DECL(expected_uint,uint,32,2) [] = { 0xffffffff, 0xffffffff }; ++ ++VECT_VAR_DECL(expected_q_uint,uint,8,16) [] = { 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0 }; ++VECT_VAR_DECL(expected_q_uint,uint,16,8) [] = { 0xffff, 0xffff, 0xffff, 0xffff, ++ 0xffff, 0xffff, 0xffff, 0x0 }; ++VECT_VAR_DECL(expected_q_uint,uint,32,4) [] = { 0xffffffff, 0xffffffff, ++ 0xffffffff, 0x0 }; ++ ++VECT_VAR_DECL(expected_float,uint,32,2) [] = { 0xffffffff, 0xffffffff }; ++VECT_VAR_DECL(expected_q_float,uint,32,4) [] = { 0xffffffff, 0xffffffff, ++ 0xffffffff, 0x0 }; ++ ++VECT_VAR_DECL(expected_uint2,uint,32,2) [] = { 0xffffffff, 0x0 }; ++VECT_VAR_DECL(expected_uint3,uint,32,2) [] = { 0xffffffff, 0xffffffff }; ++VECT_VAR_DECL(expected_uint4,uint,32,2) [] = { 0xffffffff, 0x0 }; ++ ++VECT_VAR_DECL(expected_nan,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected_mnan,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected_nan2,uint,32,2) [] = { 0x0, 0x0 }; ++ ++VECT_VAR_DECL(expected_inf,uint,32,2) [] = { 0xffffffff, 0xffffffff }; ++VECT_VAR_DECL(expected_minf,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected_inf2,uint,32,2) [] = { 0x0, 0x0 }; ++ ++VECT_VAR_DECL(expected_mzero,uint,32,2) [] = { 0xffffffff, 0xffffffff }; +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vaddl.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vaddl.c +@@ -0,0 +1,51 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vaddl ++#define TEST_MSG "VADDL" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xffe3, 0xffe4, 0xffe5, 0xffe6, ++ 0xffe7, 0xffe8, 0xffe9, 0xffea }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffffe2, 0xffffffe3, ++ 0xffffffe4, 0xffffffe5 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0xffffffffffffffe0, ++ 0xffffffffffffffe1 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x1e3, 0x1e4, 0x1e5, 0x1e6, ++ 0x1e7, 0x1e8, 0x1e9, 0x1ea }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x1ffe1, 0x1ffe2, ++ 0x1ffe3, 0x1ffe4 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x1ffffffe0, 0x1ffffffe1 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++#include "vXXXl.inc" +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcale.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcale.c +@@ -0,0 +1,49 @@ ++#define INSN_NAME vcale ++#define TEST_MSG "VCALE/VCALEQ" ++ ++#include "cmp_fp_op.inc" ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffff, 0xffffffff }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333, ++ 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffffff, 0xffffffff, 0x0, 0x0 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333, ++ 0x333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x0, 0x0, 0xffffffff, 0xffffffff }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333, ++ 0x3333333333333333 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333, ++ 0x3333, 0x3333, 0x3333, 0x3333 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++VECT_VAR_DECL(expected2,uint,32,2) [] = { 0x0, 0x0 }; ++VECT_VAR_DECL(expected2,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 }; +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsli_n.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsli_n.c +@@ -0,0 +1,162 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++#define INSN_NAME vsli ++#define TEST_MSG "VSLI_N" ++ ++/* Extra tests for functions requiring corner cases tests. */ ++void vsli_extra(void); ++#define EXTRA_TESTS vsli_extra ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,8,8) [] = { 0x20, 0x21, 0x22, 0x23, ++ 0x24, 0x25, 0x26, 0x27 }; ++VECT_VAR_DECL(expected,int,16,4) [] = { 0xffe0, 0xffe1, 0xffe2, 0xffe3 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x6, 0x7 }; ++VECT_VAR_DECL(expected,int,64,1) [] = { 0x64fffffff0 }; ++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x50, 0x51, 0x52, 0x53, ++ 0x50, 0x51, 0x52, 0x53 }; ++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x7bf0, 0x7bf1, 0x7bf2, 0x7bf3 }; ++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x3ffffff0, 0x3ffffff1 }; ++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x10 }; ++VECT_VAR_DECL(expected,poly,8,8) [] = { 0x50, 0x51, 0x52, 0x53, ++ 0x50, 0x51, 0x52, 0x53 }; ++VECT_VAR_DECL(expected,poly,16,4) [] = { 0x7bf0, 0x7bf1, 0x7bf2, 0x7bf3 }; ++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected,int,8,16) [] = { 0xd0, 0xd1, 0xd2, 0xd3, ++ 0xd4, 0xd5, 0xd6, 0xd7, ++ 0xd8, 0xd9, 0xda, 0xdb, ++ 0xdc, 0xdd, 0xde, 0xdf }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0xff60, 0xff61, 0xff62, 0xff63, ++ 0xff64, 0xff65, 0xff66, 0xff67 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfe2ffff0, 0xfe2ffff1, ++ 0xfe2ffff2, 0xfe2ffff3 }; ++VECT_VAR_DECL(expected,int,64,2) [] = { 0x18fff0, 0x18fff1 }; ++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x60, 0x61, 0x62, 0x63, ++ 0x64, 0x65, 0x66, 0x67, ++ 0x60, 0x61, 0x62, 0x63, ++ 0x64, 0x65, 0x66, 0x67 }; ++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x3ff0, 0x3ff1, 0x3ff2, 0x3ff3, ++ 0x3ff4, 0x3ff5, 0x3ff6, 0x3ff7 }; ++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x1bfffff0, 0x1bfffff1, ++ 0x1bfffff2, 0x1bfffff3 }; ++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x7ffffffffffff0, 0x7ffffffffffff1 }; ++VECT_VAR_DECL(expected,poly,8,16) [] = { 0x60, 0x61, 0x62, 0x63, ++ 0x64, 0x65, 0x66, 0x67, ++ 0x60, 0x61, 0x62, 0x63, ++ 0x64, 0x65, 0x66, 0x67 }; ++VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3ff0, 0x3ff1, 0x3ff2, 0x3ff3, ++ 0x3ff4, 0x3ff5, 0x3ff6, 0x3ff7 }; ++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++/* Expected results with max shift amount. */ ++VECT_VAR_DECL(expected_max_shift,int,8,8) [] = { 0x70, 0x71, 0x72, 0x73, ++ 0x74, 0x75, 0x76, 0x77 }; ++VECT_VAR_DECL(expected_max_shift,int,16,4) [] = { 0x7ff0, 0x7ff1, ++ 0x7ff2, 0x7ff3 }; ++VECT_VAR_DECL(expected_max_shift,int,32,2) [] = { 0xfffffff0, 0xfffffff1 }; ++VECT_VAR_DECL(expected_max_shift,int,64,1) [] = { 0x7ffffffffffffff0 }; ++VECT_VAR_DECL(expected_max_shift,uint,8,8) [] = { 0x70, 0x71, 0x72, 0x73, ++ 0x74, 0x75, 0x76, 0x77 }; ++VECT_VAR_DECL(expected_max_shift,uint,16,4) [] = { 0x7ff0, 0x7ff1, ++ 0x7ff2, 0x7ff3 }; ++VECT_VAR_DECL(expected_max_shift,uint,32,2) [] = { 0x7ffffff0, 0x7ffffff1 }; ++VECT_VAR_DECL(expected_max_shift,uint,64,1) [] = { 0x7ffffffffffffff0 }; ++VECT_VAR_DECL(expected_max_shift,poly,8,8) [] = { 0x70, 0x71, 0x72, 0x73, ++ 0x74, 0x75, 0x76, 0x77 }; ++VECT_VAR_DECL(expected_max_shift,poly,16,4) [] = { 0x7ff0, 0x7ff1, ++ 0x7ff2, 0x7ff3 }; ++VECT_VAR_DECL(expected_max_shift,hfloat,32,2) [] = { 0x33333333, 0x33333333 }; ++VECT_VAR_DECL(expected_max_shift,int,8,16) [] = { 0x70, 0x71, 0x72, 0x73, ++ 0x74, 0x75, 0x76, 0x77, ++ 0x78, 0x79, 0x7a, 0x7b, ++ 0x7c, 0x7d, 0x7e, 0x7f }; ++VECT_VAR_DECL(expected_max_shift,int,16,8) [] = { 0x7ff0, 0x7ff1, 0x7ff2, 0x7ff3, ++ 0x7ff4, 0x7ff5, 0x7ff6, 0x7ff7 }; ++VECT_VAR_DECL(expected_max_shift,int,32,4) [] = { 0x7ffffff0, 0x7ffffff1, ++ 0x7ffffff2, 0x7ffffff3 }; ++VECT_VAR_DECL(expected_max_shift,int,64,2) [] = { 0x7ffffffffffffff0, ++ 0x7ffffffffffffff1 }; ++VECT_VAR_DECL(expected_max_shift,uint,8,16) [] = { 0x70, 0x71, 0x72, 0x73, ++ 0x74, 0x75, 0x76, 0x77, ++ 0x78, 0x79, 0x7a, 0x7b, ++ 0x7c, 0x7d, 0x7e, 0x7f }; ++VECT_VAR_DECL(expected_max_shift,uint,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3, ++ 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected_max_shift,uint,32,4) [] = { 0xfffffff0, 0xfffffff1, ++ 0xfffffff2, 0xfffffff3 }; ++VECT_VAR_DECL(expected_max_shift,uint,64,2) [] = { 0xfffffffffffffff0, ++ 0xfffffffffffffff1 }; ++VECT_VAR_DECL(expected_max_shift,poly,8,16) [] = { 0x70, 0x71, 0x72, 0x73, ++ 0x74, 0x75, 0x76, 0x77, ++ 0x78, 0x79, 0x7a, 0x7b, ++ 0x7c, 0x7d, 0x7e, 0x7f }; ++VECT_VAR_DECL(expected_max_shift,poly,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3, ++ 0xfff4, 0xfff5, 0xfff6, 0xfff7 }; ++VECT_VAR_DECL(expected_max_shift,hfloat,32,4) [] = { 0x33333333, 0x33333333, ++ 0x33333333, 0x33333333 }; ++ ++#include "vsXi_n.inc" ++ ++void vsli_extra(void) ++{ ++ /* Test cases with maximum shift amount (this amount is different ++ from vsri). */ ++ ++ DECL_VARIABLE_ALL_VARIANTS(vector); ++ DECL_VARIABLE_ALL_VARIANTS(vector2); ++ DECL_VARIABLE_ALL_VARIANTS(vector_res); ++ ++ clean_results (); ++ ++ /* Initialize input "vector" from "buffer". */ ++ TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector, buffer); ++ ++ /* Fill input vector2 with arbitrary values. */ ++ VDUP(vector2, , int, s, 8, 8, 2); ++ VDUP(vector2, , int, s, 16, 4, -4); ++ VDUP(vector2, , int, s, 32, 2, 3); ++ VDUP(vector2, , int, s, 64, 1, 100); ++ VDUP(vector2, , uint, u, 8, 8, 20); ++ VDUP(vector2, , uint, u, 16, 4, 30); ++ VDUP(vector2, , uint, u, 32, 2, 40); ++ VDUP(vector2, , uint, u, 64, 1, 2); ++ VDUP(vector2, , poly, p, 8, 8, 20); ++ VDUP(vector2, , poly, p, 16, 4, 30); ++ VDUP(vector2, q, int, s, 8, 16, -10); ++ VDUP(vector2, q, int, s, 16, 8, -20); ++ VDUP(vector2, q, int, s, 32, 4, -30); ++ VDUP(vector2, q, int, s, 64, 2, 24); ++ VDUP(vector2, q, uint, u, 8, 16, 12); ++ VDUP(vector2, q, uint, u, 16, 8, 3); ++ VDUP(vector2, q, uint, u, 32, 4, 55); ++ VDUP(vector2, q, uint, u, 64, 2, 3); ++ VDUP(vector2, q, poly, p, 8, 16, 12); ++ VDUP(vector2, q, poly, p, 16, 8, 3); ++ ++ /* Use maximum allowed shift amount. */ ++ TEST_VSXI_N(INSN_NAME, , int, s, 8, 8, 7); ++ TEST_VSXI_N(INSN_NAME, , int, s, 16, 4, 15); ++ TEST_VSXI_N(INSN_NAME, , int, s, 32, 2, 31); ++ TEST_VSXI_N(INSN_NAME, , int, s, 64, 1, 63); ++ TEST_VSXI_N(INSN_NAME, , uint, u, 8, 8, 7); ++ TEST_VSXI_N(INSN_NAME, , uint, u, 16, 4, 15); ++ TEST_VSXI_N(INSN_NAME, , uint, u, 32, 2, 31); ++ TEST_VSXI_N(INSN_NAME, , uint, u, 64, 1, 63); ++ TEST_VSXI_N(INSN_NAME, , poly, p, 8, 8, 7); ++ TEST_VSXI_N(INSN_NAME, , poly, p, 16, 4, 15); ++ TEST_VSXI_N(INSN_NAME, q, int, s, 8, 16, 7); ++ TEST_VSXI_N(INSN_NAME, q, int, s, 16, 8, 15); ++ TEST_VSXI_N(INSN_NAME, q, int, s, 32, 4, 31); ++ TEST_VSXI_N(INSN_NAME, q, int, s, 64, 2, 63); ++ TEST_VSXI_N(INSN_NAME, q, uint, u, 8, 16, 7); ++ TEST_VSXI_N(INSN_NAME, q, uint, u, 16, 8, 15); ++ TEST_VSXI_N(INSN_NAME, q, uint, u, 32, 4, 31); ++ TEST_VSXI_N(INSN_NAME, q, uint, u, 64, 2, 63); ++ TEST_VSXI_N(INSN_NAME, q, poly, p, 8, 16, 7); ++ TEST_VSXI_N(INSN_NAME, q, poly, p, 16, 8, 15); ++ ++ CHECK_RESULTS_NAMED (TEST_MSG, expected_max_shift, "(max shift amount)"); ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h +@@ -0,0 +1,565 @@ ++/* This file defines helper operations shared by all the tests. */ ++ ++#ifndef _ARM_NEON_REF_H_ ++#define _ARM_NEON_REF_H_ ++ ++#include ++#include ++ ++/* helper type, to help write floating point results in integer form. */ ++typedef uint32_t hfloat32_t; ++ ++extern void abort(void); ++extern void *memset(void *, int, size_t); ++extern void *memcpy(void *, const void *, size_t); ++extern size_t strlen(const char *); ++ ++/* Various string construction helpers. */ ++ ++/* ++ The most useful at user-level are VECT_VAR and VECT_VAR_DECL, which ++ construct variable names or declarations, such as: ++ VECT_VAR(expected, int, 16, 4) -> expected_int16x4 ++ VECT_VAR_DECL(expected, int, 16, 4) -> int16x4_t expected_int16x4 ++*/ ++ ++#define xSTR(X) #X ++#define STR(X) xSTR(X) ++ ++#define xNAME1(V,T) V ## _ ## T ++#define xNAME(V,T) xNAME1(V,T) ++ ++/* VAR(foo,int,16) -> foo_int16 */ ++#define VAR(V,T,W) xNAME(V,T##W) ++/* VAR_DECL(foo,int,16) -> int16_t foo_int16 */ ++#define VAR_DECL(V, T, W) T##W##_t VAR(V,T,W) ++ ++/* VECT_NAME(int,16,4) -> int16x4 */ ++#define VECT_NAME(T, W, N) T##W##x##N ++/* VECT_ARRAY_NAME(int,16,4,2) -> int16x4x2 */ ++#define VECT_ARRAY_NAME(T, W, N, L) T##W##x##N##x##L ++/* VECT_TYPE(int,16,4) -> int16x4_t */ ++#define VECT_TYPE(T, W, N) xNAME(VECT_NAME(T,W,N),t) ++/* VECT_ARRAY_TYPE(int,16,4,2) -> int16x4x2_t */ ++#define VECT_ARRAY_TYPE(T, W, N, L) xNAME(VECT_ARRAY_NAME(T,W,N,L),t) ++ ++/* VECT_VAR(foo,int,16,4) -> foo_int16x4 */ ++#define VECT_VAR(V,T,W,N) xNAME(V,VECT_NAME(T,W,N)) ++/* VECT_VAR_DECL(foo,int,16,4) -> int16_t foo_int16x4 */ ++#define VECT_VAR_DECL(V, T, W, N) T##W##_t VECT_VAR(V,T,W,N) ++ ++/* Array declarations. */ ++/* ARRAY(foo,int,16,4) -> int16_t foo_int16x4[4] */ ++#define ARRAY(V, T, W, N) VECT_VAR_DECL(V,T,W,N)[N] ++ ++/* Arrays of vectors. */ ++/* VECT_ARRAY_VAR(foo,int,16,4,2) -> foo_int16x4x2 */ ++#define VECT_ARRAY_VAR(V,T,W,N,L) xNAME(V,VECT_ARRAY_NAME(T,W,N,L)) ++/* VECT_ARRAY(foo,int,16,4,2) -> int16_t foo_int16x4x2[4*2] */ ++#define VECT_ARRAY(V, T, W, N, L) T##W##_t VECT_ARRAY_VAR(V,T,W,N,L)[N*L] ++ ++/* Check results vs expected values. Operates on one vector. */ ++#define CHECK(MSG,T,W,N,FMT,EXPECTED,COMMENT) \ ++ { \ ++ int i; \ ++ for(i=0; i 0 ? COMMENT : ""); \ ++ abort(); \ ++ } \ ++ } \ ++ fprintf(stderr, "CHECKED %s\n", MSG); \ ++ } ++ ++/* Floating-point variant. */ ++#define CHECK_FP(MSG,T,W,N,FMT,EXPECTED,COMMENT) \ ++ { \ ++ int i; \ ++ for(i=0; i 0 ? COMMENT : ""); \ ++ abort(); \ ++ } \ ++ } \ ++ fprintf(stderr, "CHECKED %s\n", MSG); \ ++ } ++ ++/* Clean buffer with a non-zero pattern to help diagnose buffer ++ overflows. */ ++#define CLEAN_PATTERN_8 0x33 ++ ++#define CLEAN(VAR,T,W,N) \ ++ memset(VECT_VAR(VAR, T, W, N), \ ++ CLEAN_PATTERN_8, \ ++ sizeof(VECT_VAR(VAR, T, W, N))); ++ ++/* Define output buffers, one of each size. */ ++static ARRAY(result, int, 8, 8); ++static ARRAY(result, int, 16, 4); ++static ARRAY(result, int, 32, 2); ++static ARRAY(result, int, 64, 1); ++static ARRAY(result, uint, 8, 8); ++static ARRAY(result, uint, 16, 4); ++static ARRAY(result, uint, 32, 2); ++static ARRAY(result, uint, 64, 1); ++static ARRAY(result, poly, 8, 8); ++static ARRAY(result, poly, 16, 4); ++static ARRAY(result, float, 32, 2); ++static ARRAY(result, int, 8, 16); ++static ARRAY(result, int, 16, 8); ++static ARRAY(result, int, 32, 4); ++static ARRAY(result, int, 64, 2); ++static ARRAY(result, uint, 8, 16); ++static ARRAY(result, uint, 16, 8); ++static ARRAY(result, uint, 32, 4); ++static ARRAY(result, uint, 64, 2); ++static ARRAY(result, poly, 8, 16); ++static ARRAY(result, poly, 16, 8); ++static ARRAY(result, float, 32, 4); ++ ++/* Declare expected results, one of each size. They are defined and ++ initialized in each test file. */ ++extern ARRAY(expected, int, 8, 8); ++extern ARRAY(expected, int, 16, 4); ++extern ARRAY(expected, int, 32, 2); ++extern ARRAY(expected, int, 64, 1); ++extern ARRAY(expected, uint, 8, 8); ++extern ARRAY(expected, uint, 16, 4); ++extern ARRAY(expected, uint, 32, 2); ++extern ARRAY(expected, uint, 64, 1); ++extern ARRAY(expected, poly, 8, 8); ++extern ARRAY(expected, poly, 16, 4); ++extern ARRAY(expected, hfloat, 32, 2); ++extern ARRAY(expected, int, 8, 16); ++extern ARRAY(expected, int, 16, 8); ++extern ARRAY(expected, int, 32, 4); ++extern ARRAY(expected, int, 64, 2); ++extern ARRAY(expected, uint, 8, 16); ++extern ARRAY(expected, uint, 16, 8); ++extern ARRAY(expected, uint, 32, 4); ++extern ARRAY(expected, uint, 64, 2); ++extern ARRAY(expected, poly, 8, 16); ++extern ARRAY(expected, poly, 16, 8); ++extern ARRAY(expected, hfloat, 32, 4); ++ ++/* Check results. Operates on all possible vector types. */ ++#define CHECK_RESULTS(test_name,comment) \ ++ { \ ++ CHECK(test_name, int, 8, 8, PRIx8, expected, comment); \ ++ CHECK(test_name, int, 16, 4, PRIx16, expected, comment); \ ++ CHECK(test_name, int, 32, 2, PRIx32, expected, comment); \ ++ CHECK(test_name, int, 64, 1, PRIx64, expected, comment); \ ++ CHECK(test_name, uint, 8, 8, PRIx8, expected, comment); \ ++ CHECK(test_name, uint, 16, 4, PRIx16, expected, comment); \ ++ CHECK(test_name, uint, 32, 2, PRIx32, expected, comment); \ ++ CHECK(test_name, uint, 64, 1, PRIx64, expected, comment); \ ++ CHECK(test_name, poly, 8, 8, PRIx8, expected, comment); \ ++ CHECK(test_name, poly, 16, 4, PRIx16, expected, comment); \ ++ CHECK_FP(test_name, float, 32, 2, PRIx32, expected, comment); \ ++ \ ++ CHECK(test_name, int, 8, 16, PRIx8, expected, comment); \ ++ CHECK(test_name, int, 16, 8, PRIx16, expected, comment); \ ++ CHECK(test_name, int, 32, 4, PRIx32, expected, comment); \ ++ CHECK(test_name, int, 64, 2, PRIx64, expected, comment); \ ++ CHECK(test_name, uint, 8, 16, PRIx8, expected, comment); \ ++ CHECK(test_name, uint, 16, 8, PRIx16, expected, comment); \ ++ CHECK(test_name, uint, 32, 4, PRIx32, expected, comment); \ ++ CHECK(test_name, uint, 64, 2, PRIx64, expected, comment); \ ++ CHECK(test_name, poly, 8, 16, PRIx8, expected, comment); \ ++ CHECK(test_name, poly, 16, 8, PRIx16, expected, comment); \ ++ CHECK_FP(test_name, float, 32, 4, PRIx32, expected, comment); \ ++ } \ ++ ++#define CHECK_RESULTS_NAMED(test_name,EXPECTED,comment) \ ++ { \ ++ CHECK(test_name, int, 8, 8, PRIx8, EXPECTED, comment); \ ++ CHECK(test_name, int, 16, 4, PRIx16, EXPECTED, comment); \ ++ CHECK(test_name, int, 32, 2, PRIx32, EXPECTED, comment); \ ++ CHECK(test_name, int, 64, 1, PRIx64, EXPECTED, comment); \ ++ CHECK(test_name, uint, 8, 8, PRIx8, EXPECTED, comment); \ ++ CHECK(test_name, uint, 16, 4, PRIx16, EXPECTED, comment); \ ++ CHECK(test_name, uint, 32, 2, PRIx32, EXPECTED, comment); \ ++ CHECK(test_name, uint, 64, 1, PRIx64, EXPECTED, comment); \ ++ CHECK(test_name, poly, 8, 8, PRIx8, EXPECTED, comment); \ ++ CHECK(test_name, poly, 16, 4, PRIx16, EXPECTED, comment); \ ++ CHECK_FP(test_name, float, 32, 2, PRIx32, EXPECTED, comment); \ ++ \ ++ CHECK(test_name, int, 8, 16, PRIx8, EXPECTED, comment); \ ++ CHECK(test_name, int, 16, 8, PRIx16, EXPECTED, comment); \ ++ CHECK(test_name, int, 32, 4, PRIx32, EXPECTED, comment); \ ++ CHECK(test_name, int, 64, 2, PRIx64, EXPECTED, comment); \ ++ CHECK(test_name, uint, 8, 16, PRIx8, EXPECTED, comment); \ ++ CHECK(test_name, uint, 16, 8, PRIx16, EXPECTED, comment); \ ++ CHECK(test_name, uint, 32, 4, PRIx32, EXPECTED, comment); \ ++ CHECK(test_name, uint, 64, 2, PRIx64, EXPECTED, comment); \ ++ CHECK(test_name, poly, 8, 16, PRIx8, EXPECTED, comment); \ ++ CHECK(test_name, poly, 16, 8, PRIx16, EXPECTED, comment); \ ++ CHECK_FP(test_name, float, 32, 4, PRIx32, EXPECTED, comment); \ ++ } \ ++ ++ ++ ++#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ ++ ++typedef union { ++ struct { ++ int _xxx:25; ++ unsigned int DN:1; ++ unsigned int AHP:1; ++ unsigned int QC:1; ++ int V:1; ++ int C:1; ++ int Z:1; ++ int N:1; ++ } b; ++ unsigned int word; ++} _ARM_FPSCR; ++ ++#else /* __ORDER_BIG_ENDIAN__ */ ++ ++typedef union { ++ struct { ++ int N:1; ++ int Z:1; ++ int C:1; ++ int V:1; ++ unsigned int QC:1; ++ unsigned int AHP:1; ++ unsigned int DN:1; ++ int _dnm:25; ++ } b; ++ unsigned int word; ++} _ARM_FPSCR; ++ ++#endif /* __ORDER_BIG_ENDIAN__ */ ++ ++#define Neon_Cumulative_Sat __read_neon_cumulative_sat() ++/* We need a fake dependency to ensure correct ordering of asm ++ statements to preset the QC flag value, and Neon operators writing ++ to QC. */ ++#define Set_Neon_Cumulative_Sat(x, depend) \ ++ __set_neon_cumulative_sat((x), (depend)) ++ ++#if defined(__aarch64__) ++static volatile int __read_neon_cumulative_sat (void) { ++ _ARM_FPSCR _afpscr_for_qc; ++ asm volatile ("mrs %0,fpsr" : "=r" (_afpscr_for_qc)); ++ return _afpscr_for_qc.b.QC; ++} ++#define __set_neon_cumulative_sat(x, depend) { \ ++ _ARM_FPSCR _afpscr_for_qc; \ ++ asm volatile ("mrs %0,fpsr" : "=r" (_afpscr_for_qc)); \ ++ _afpscr_for_qc.b.QC = x; \ ++ asm volatile ("msr fpsr,%1" : "=X" (depend) : "r" (_afpscr_for_qc)); \ ++ } ++#else ++static volatile int __read_neon_cumulative_sat (void) { ++ _ARM_FPSCR _afpscr_for_qc; ++ asm volatile ("vmrs %0,fpscr" : "=r" (_afpscr_for_qc)); ++ return _afpscr_for_qc.b.QC; ++} ++ ++#define __set_neon_cumulative_sat(x, depend) { \ ++ _ARM_FPSCR _afpscr_for_qc; \ ++ asm volatile ("vmrs %0,fpscr" : "=r" (_afpscr_for_qc)); \ ++ _afpscr_for_qc.b.QC = x; \ ++ asm volatile ("vmsr fpscr,%1" : "=X" (depend) : "r" (_afpscr_for_qc)); \ ++ } ++#endif ++ ++/* Declare expected cumulative saturation results, one for each ++ size. They are defined and initialized in relevant test files. */ ++extern int VECT_VAR(expected_cumulative_sat, int, 8, 8); ++extern int VECT_VAR(expected_cumulative_sat, int, 16, 4); ++extern int VECT_VAR(expected_cumulative_sat, int, 32, 2); ++extern int VECT_VAR(expected_cumulative_sat, int, 64, 1); ++extern int VECT_VAR(expected_cumulative_sat, uint, 8, 8); ++extern int VECT_VAR(expected_cumulative_sat, uint, 16, 4); ++extern int VECT_VAR(expected_cumulative_sat, uint, 32, 2); ++extern int VECT_VAR(expected_cumulative_sat, uint, 64, 1); ++extern int VECT_VAR(expected_cumulative_sat, int, 8, 16); ++extern int VECT_VAR(expected_cumulative_sat, int, 16, 8); ++extern int VECT_VAR(expected_cumulative_sat, int, 32, 4); ++extern int VECT_VAR(expected_cumulative_sat, int, 64, 2); ++extern int VECT_VAR(expected_cumulative_sat, uint, 8, 16); ++extern int VECT_VAR(expected_cumulative_sat, uint, 16, 8); ++extern int VECT_VAR(expected_cumulative_sat, uint, 32, 4); ++extern int VECT_VAR(expected_cumulative_sat, uint, 64, 2); ++ ++/* Check cumulative saturation flag vs expected value. */ ++#define CHECK_CUMULATIVE_SAT(MSG,T,W,N,EXPECTED,COMMENT) \ ++ { \ ++ if (Neon_Cumulative_Sat != \ ++ VECT_VAR(EXPECTED, T, W, N)) { \ ++ fprintf(stderr, \ ++ "ERROR in %s (%s line %d in cumulative_sat '%s') at type %s: " \ ++ "got %d expected %d%s\n", \ ++ MSG, __FILE__, __LINE__, \ ++ STR(EXPECTED), \ ++ STR(VECT_NAME(T, W, N)), \ ++ Neon_Cumulative_Sat, \ ++ VECT_VAR(EXPECTED, T, W, N), \ ++ strlen(COMMENT) > 0 ? " " COMMENT : ""); \ ++ abort(); \ ++ } \ ++ fprintf(stderr, "CHECKED CUMULATIVE SAT %s\n", MSG); \ ++ } ++ ++#define CHECK_CUMULATIVE_SAT_NAMED(test_name,EXPECTED,comment) \ ++ { \ ++ CHECK_CUMULATIVE_SAT(test_name, int, 8, 8, PRIx8, EXPECTED, comment); \ ++ CHECK_CUMULATIVE_SAT(test_name, int, 16, 4, PRIx16, EXPECTED, comment); \ ++ CHECK_CUMULATIVE_SAT(test_name, int, 32, 2, PRIx32, EXPECTED, comment); \ ++ CHECK_CUMULATIVE_SAT(test_name, int, 64, 1, PRIx64, EXPECTED, comment); \ ++ CHECK_CUMULATIVE_SAT(test_name, uint, 8, 8, PRIx8, EXPECTED, comment); \ ++ CHECK_CUMULATIVE_SAT(test_name, uint, 16, 4, PRIx16, EXPECTED, comment); \ ++ CHECK_CUMULATIVE_SAT(test_name, uint, 32, 2, PRIx32, EXPECTED, comment); \ ++ CHECK_CUMULATIVE_SAT(test_name, uint, 64, 1, PRIx64, EXPECTED, comment); \ ++ CHECK_CUMULATIVE_SAT(test_name, poly, 8, 8, PRIx8, EXPECTED, comment); \ ++ CHECK_CUMULATIVE_SAT(test_name, poly, 16, 4, PRIx16, EXPECTED, comment); \ ++ CHECK_CUMULATIVE_SAT_FP(test_name, float, 32, 2, PRIx32, EXPECTED, comment); \ ++ \ ++ CHECK_CUMULATIVE_SAT(test_name, int, 8, 16, PRIx8, EXPECTED, comment); \ ++ CHECK_CUMULATIVE_SAT(test_name, int, 16, 8, PRIx16, EXPECTED, comment); \ ++ CHECK_CUMULATIVE_SAT(test_name, int, 32, 4, PRIx32, EXPECTED, comment); \ ++ CHECK_CUMULATIVE_SAT(test_name, int, 64, 2, PRIx64, EXPECTED, comment); \ ++ CHECK_CUMULATIVE_SAT(test_name, uint, 8, 16, PRIx8, EXPECTED, comment); \ ++ CHECK_CUMULATIVE_SAT(test_name, uint, 16, 8, PRIx16, EXPECTED, comment); \ ++ CHECK_CUMULATIVE_SAT(test_name, uint, 32, 4, PRIx32, EXPECTED, comment); \ ++ CHECK_CUMULATIVE_SAT(test_name, uint, 64, 2, PRIx64, EXPECTED, comment); \ ++ CHECK_CUMULATIVE_SAT(test_name, poly, 8, 16, PRIx8, EXPECTED, comment); \ ++ CHECK_CUMULATIVE_SAT(test_name, poly, 16, 8, PRIx16, EXPECTED, comment); \ ++ CHECK_CUMULATIVE_SAT_FP(test_name, float, 32, 4, PRIx32, EXPECTED, comment); \ ++ } \ ++ ++ ++/* Clean output buffers before execution. */ ++static void clean_results (void) ++{ ++ CLEAN(result, int, 8, 8); ++ CLEAN(result, int, 16, 4); ++ CLEAN(result, int, 32, 2); ++ CLEAN(result, int, 64, 1); ++ CLEAN(result, uint, 8, 8); ++ CLEAN(result, uint, 16, 4); ++ CLEAN(result, uint, 32, 2); ++ CLEAN(result, uint, 64, 1); ++ CLEAN(result, poly, 8, 8); ++ CLEAN(result, poly, 16, 4); ++ CLEAN(result, float, 32, 2); ++ ++ CLEAN(result, int, 8, 16); ++ CLEAN(result, int, 16, 8); ++ CLEAN(result, int, 32, 4); ++ CLEAN(result, int, 64, 2); ++ CLEAN(result, uint, 8, 16); ++ CLEAN(result, uint, 16, 8); ++ CLEAN(result, uint, 32, 4); ++ CLEAN(result, uint, 64, 2); ++ CLEAN(result, poly, 8, 16); ++ CLEAN(result, poly, 16, 8); ++ CLEAN(result, float, 32, 4); ++ ++#if defined(__aarch64__) ++ /* On AArch64, make sure to return DefaultNaN to have the same ++ results as on AArch32. */ ++ _ARM_FPSCR _afpscr_for_dn; ++ asm volatile ("mrs %0,fpcr" : "=r" (_afpscr_for_dn)); ++ _afpscr_for_dn.b.DN = 1; ++ asm volatile ("msr fpcr,%0" : : "r" (_afpscr_for_dn)); ++#endif ++} ++ ++ ++/* Helpers to declare variables of various types. */ ++#define DECL_VARIABLE(VAR, T1, W, N) \ ++ VECT_TYPE(T1, W, N) VECT_VAR(VAR, T1, W, N) ++ ++/* Declare only 64 bits signed variants. */ ++#define DECL_VARIABLE_64BITS_SIGNED_VARIANTS(VAR) \ ++ DECL_VARIABLE(VAR, int, 8, 8); \ ++ DECL_VARIABLE(VAR, int, 16, 4); \ ++ DECL_VARIABLE(VAR, int, 32, 2); \ ++ DECL_VARIABLE(VAR, int, 64, 1) ++ ++/* Declare only 64 bits unsigned variants. */ ++#define DECL_VARIABLE_64BITS_UNSIGNED_VARIANTS(VAR) \ ++ DECL_VARIABLE(VAR, uint, 8, 8); \ ++ DECL_VARIABLE(VAR, uint, 16, 4); \ ++ DECL_VARIABLE(VAR, uint, 32, 2); \ ++ DECL_VARIABLE(VAR, uint, 64, 1) ++ ++/* Declare only 128 bits signed variants. */ ++#define DECL_VARIABLE_128BITS_SIGNED_VARIANTS(VAR) \ ++ DECL_VARIABLE(VAR, int, 8, 16); \ ++ DECL_VARIABLE(VAR, int, 16, 8); \ ++ DECL_VARIABLE(VAR, int, 32, 4); \ ++ DECL_VARIABLE(VAR, int, 64, 2) ++ ++/* Declare only 128 bits unsigned variants. */ ++#define DECL_VARIABLE_128BITS_UNSIGNED_VARIANTS(VAR) \ ++ DECL_VARIABLE(VAR, uint, 8, 16); \ ++ DECL_VARIABLE(VAR, uint, 16, 8); \ ++ DECL_VARIABLE(VAR, uint, 32, 4); \ ++ DECL_VARIABLE(VAR, uint, 64, 2) ++ ++/* Declare all 64 bits variants. */ ++#define DECL_VARIABLE_64BITS_VARIANTS(VAR) \ ++ DECL_VARIABLE_64BITS_SIGNED_VARIANTS(VAR); \ ++ DECL_VARIABLE_64BITS_UNSIGNED_VARIANTS(VAR); \ ++ DECL_VARIABLE(VAR, poly, 8, 8); \ ++ DECL_VARIABLE(VAR, poly, 16, 4); \ ++ DECL_VARIABLE(VAR, float, 32, 2) ++ ++/* Declare all 128 bits variants. */ ++#define DECL_VARIABLE_128BITS_VARIANTS(VAR) \ ++ DECL_VARIABLE_128BITS_SIGNED_VARIANTS(VAR); \ ++ DECL_VARIABLE_128BITS_UNSIGNED_VARIANTS(VAR); \ ++ DECL_VARIABLE(VAR, poly, 8, 16); \ ++ DECL_VARIABLE(VAR, poly, 16, 8); \ ++ DECL_VARIABLE(VAR, float, 32, 4) ++ ++/* Declare all variants. */ ++#define DECL_VARIABLE_ALL_VARIANTS(VAR) \ ++ DECL_VARIABLE_64BITS_VARIANTS(VAR); \ ++ DECL_VARIABLE_128BITS_VARIANTS(VAR) ++ ++/* Declare all signed variants. */ ++#define DECL_VARIABLE_SIGNED_VARIANTS(VAR) \ ++ DECL_VARIABLE_64BITS_SIGNED_VARIANTS(VAR); \ ++ DECL_VARIABLE_128BITS_SIGNED_VARIANTS(VAR) ++ ++/* Declare all unsigned variants. */ ++#define DECL_VARIABLE_UNSIGNED_VARIANTS(VAR) \ ++ DECL_VARIABLE_64BITS_UNSIGNED_VARIANTS(VAR); \ ++ DECL_VARIABLE_128BITS_UNSIGNED_VARIANTS(VAR) ++ ++/* Helpers to initialize vectors. */ ++#define VDUP(VAR, Q, T1, T2, W, N, V) \ ++ VECT_VAR(VAR, T1, W, N) = vdup##Q##_n_##T2##W(V) ++ ++#define VSET_LANE(VAR, Q, T1, T2, W, N, L, V) \ ++ VECT_VAR(VAR, T1, W, N) = vset##Q##_lane_##T2##W(V, \ ++ VECT_VAR(VAR, T1, W, N), \ ++ L) ++ ++/* We need to load initial values first, so rely on VLD1. */ ++#define VLOAD(VAR, BUF, Q, T1, T2, W, N) \ ++ VECT_VAR(VAR, T1, W, N) = vld1##Q##_##T2##W(VECT_VAR(BUF, T1, W, N)) ++ ++/* Helpers to call macros with 1 constant and 5 variable ++ arguments. */ ++#define TEST_MACRO_64BITS_SIGNED_VARIANTS_1_5(MACRO, VAR) \ ++ MACRO(VAR, , int, s, 8, 8); \ ++ MACRO(VAR, , int, s, 16, 4); \ ++ MACRO(VAR, , int, s, 32, 2); \ ++ MACRO(VAR, , int, s, 64, 1) ++ ++#define TEST_MACRO_64BITS_UNSIGNED_VARIANTS_1_5(MACRO, VAR) \ ++ MACRO(VAR, , uint, u, 8, 8); \ ++ MACRO(VAR, , uint, u, 16, 4); \ ++ MACRO(VAR, , uint, u, 32, 2); \ ++ MACRO(VAR, , uint, u, 64, 1) ++ ++#define TEST_MACRO_128BITS_SIGNED_VARIANTS_1_5(MACRO, VAR) \ ++ MACRO(VAR, q, int, s, 8, 16); \ ++ MACRO(VAR, q, int, s, 16, 8); \ ++ MACRO(VAR, q, int, s, 32, 4); \ ++ MACRO(VAR, q, int, s, 64, 2) ++ ++#define TEST_MACRO_128BITS_UNSIGNED_VARIANTS_1_5(MACRO,VAR) \ ++ MACRO(VAR, q, uint, u, 8, 16); \ ++ MACRO(VAR, q, uint, u, 16, 8); \ ++ MACRO(VAR, q, uint, u, 32, 4); \ ++ MACRO(VAR, q, uint, u, 64, 2) ++ ++#define TEST_MACRO_64BITS_VARIANTS_1_5(MACRO, VAR) \ ++ TEST_MACRO_64BITS_SIGNED_VARIANTS_1_5(MACRO, VAR); \ ++ TEST_MACRO_64BITS_UNSIGNED_VARIANTS_1_5(MACRO, VAR) ++ ++#define TEST_MACRO_128BITS_VARIANTS_1_5(MACRO, VAR) \ ++ TEST_MACRO_128BITS_SIGNED_VARIANTS_1_5(MACRO, VAR); \ ++ TEST_MACRO_128BITS_UNSIGNED_VARIANTS_1_5(MACRO, VAR) ++ ++#define TEST_MACRO_ALL_VARIANTS_1_5(MACRO, VAR) \ ++ TEST_MACRO_64BITS_VARIANTS_1_5(MACRO, VAR); \ ++ TEST_MACRO_128BITS_VARIANTS_1_5(MACRO, VAR) ++ ++#define TEST_MACRO_SIGNED_VARIANTS_1_5(MACRO, VAR) \ ++ TEST_MACRO_64BITS_SIGNED_VARIANTS_1_5(MACRO, VAR); \ ++ TEST_MACRO_128BITS_SIGNED_VARIANTS_1_5(MACRO, VAR) ++ ++/* Helpers to call macros with 2 constant and 5 variable ++ arguments. */ ++#define TEST_MACRO_64BITS_SIGNED_VARIANTS_2_5(MACRO, VAR1, VAR2) \ ++ MACRO(VAR1, VAR2, , int, s, 8, 8); \ ++ MACRO(VAR1, VAR2, , int, s, 16, 4); \ ++ MACRO(VAR1, VAR2, , int, s, 32, 2); \ ++ MACRO(VAR1, VAR2 , , int, s, 64, 1) ++ ++#define TEST_MACRO_64BITS_UNSIGNED_VARIANTS_2_5(MACRO, VAR1, VAR2) \ ++ MACRO(VAR1, VAR2, , uint, u, 8, 8); \ ++ MACRO(VAR1, VAR2, , uint, u, 16, 4); \ ++ MACRO(VAR1, VAR2, , uint, u, 32, 2); \ ++ MACRO(VAR1, VAR2, , uint, u, 64, 1) ++ ++#define TEST_MACRO_128BITS_SIGNED_VARIANTS_2_5(MACRO, VAR1, VAR2) \ ++ MACRO(VAR1, VAR2, q, int, s, 8, 16); \ ++ MACRO(VAR1, VAR2, q, int, s, 16, 8); \ ++ MACRO(VAR1, VAR2, q, int, s, 32, 4); \ ++ MACRO(VAR1, VAR2, q, int, s, 64, 2) ++ ++#define TEST_MACRO_128BITS_UNSIGNED_VARIANTS_2_5(MACRO, VAR1, VAR2) \ ++ MACRO(VAR1, VAR2, q, uint, u, 8, 16); \ ++ MACRO(VAR1, VAR2, q, uint, u, 16, 8); \ ++ MACRO(VAR1, VAR2, q, uint, u, 32, 4); \ ++ MACRO(VAR1, VAR2, q, uint, u, 64, 2) ++ ++#define TEST_MACRO_64BITS_VARIANTS_2_5(MACRO, VAR1, VAR2) \ ++ TEST_MACRO_64BITS_SIGNED_VARIANTS_2_5(MACRO, VAR1, VAR2); \ ++ TEST_MACRO_64BITS_UNSIGNED_VARIANTS_2_5(MACRO, VAR1, VAR2); \ ++ MACRO(VAR1, VAR2, , poly, p, 8, 8); \ ++ MACRO(VAR1, VAR2, , poly, p, 16, 4) ++ ++#define TEST_MACRO_128BITS_VARIANTS_2_5(MACRO, VAR1, VAR2) \ ++ TEST_MACRO_128BITS_SIGNED_VARIANTS_2_5(MACRO, VAR1, VAR2); \ ++ TEST_MACRO_128BITS_UNSIGNED_VARIANTS_2_5(MACRO, VAR1, VAR2); \ ++ MACRO(VAR1, VAR2, q, poly, p, 8, 16); \ ++ MACRO(VAR1, VAR2, q, poly, p, 16, 8) ++ ++#define TEST_MACRO_ALL_VARIANTS_2_5(MACRO, VAR1, VAR2) \ ++ TEST_MACRO_64BITS_VARIANTS_2_5(MACRO, VAR1, VAR2); \ ++ TEST_MACRO_128BITS_VARIANTS_2_5(MACRO, VAR1, VAR2) ++ ++#define TEST_MACRO_SIGNED_VARIANTS_2_5(MACRO, VAR1, VAR2) \ ++ TEST_MACRO_64BITS_SIGNED_VARIANTS_2_5(MACRO, VAR1, VAR2); \ ++ TEST_MACRO_128BITS_SIGNED_VARIANTS_2_5(MACRO, VAR1, VAR2) ++ ++#endif /* _ARM_NEON_REF_H_ */ +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh_n.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh_n.c +@@ -0,0 +1,110 @@ ++#include ++#include "arm-neon-ref.h" ++#include "compute-ref-data.h" ++ ++/* Expected values of cumulative_saturation flag. */ ++int VECT_VAR(expected_cumulative_sat,int,16,4) = 0; ++int VECT_VAR(expected_cumulative_sat,int,32,2) = 0; ++int VECT_VAR(expected_cumulative_sat,int,16,8) = 0; ++int VECT_VAR(expected_cumulative_sat,int,32,4) = 0; ++ ++/* Expected results. */ ++VECT_VAR_DECL(expected,int,16,4) [] = { 0x19, 0x19, 0x19, 0x19 }; ++VECT_VAR_DECL(expected,int,32,2) [] = { 0x4, 0x4 }; ++VECT_VAR_DECL(expected,int,16,8) [] = { 0x10, 0x10, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x10 }; ++VECT_VAR_DECL(expected,int,32,4) [] = { 0xa, 0xa, 0xa, 0xa }; ++ ++/* Expected values of cumulative_saturation flag when saturation ++ occurs. */ ++int VECT_VAR(expected_cumulative_sat2,int,16,4) = 1; ++int VECT_VAR(expected_cumulative_sat2,int,32,2) = 1; ++int VECT_VAR(expected_cumulative_sat2,int,16,8) = 1; ++int VECT_VAR(expected_cumulative_sat2,int,32,4) = 1; ++ ++/* Expected results when saturation occurs. */ ++VECT_VAR_DECL(expected2,int,16,4) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff }; ++VECT_VAR_DECL(expected2,int,32,2) [] = { 0x7fffffff, 0x7fffffff }; ++VECT_VAR_DECL(expected2,int,16,8) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff, ++ 0x7fff, 0x7fff, 0x7fff, 0x7fff }; ++VECT_VAR_DECL(expected2,int,32,4) [] = { 0x7fffffff, 0x7fffffff, ++ 0x7fffffff, 0x7fffffff }; ++ ++#define INSN_NAME vqdmulh ++#define TEST_MSG "VQDMULH_N" ++#define FNNAME1(NAME) exec_ ## NAME ## _n ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ int i; ++ ++ /* vector_res = vqdmulh_n(vector,val), then store the result. */ ++#define TEST_VQDMULH_N2(INSN, Q, T1, T2, W, N, L, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N)); \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ INSN##Q##_n_##T2##W(VECT_VAR(vector, T1, W, N), \ ++ L); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \ ++ VECT_VAR(vector_res, T1, W, N)); \ ++ CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++ /* Two auxliary macros are necessary to expand INSN. */ ++#define TEST_VQDMULH_N1(INSN, Q, T1, T2, W, N, L, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ TEST_VQDMULH_N2(INSN, Q, T1, T2, W, N, L, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++#define TEST_VQDMULH_N(Q, T1, T2, W, N, L, EXPECTED_CUMULATIVE_SAT, CMT) \ ++ TEST_VQDMULH_N1(INSN_NAME, Q, T1, T2, W, N, L, EXPECTED_CUMULATIVE_SAT, CMT) ++ ++ DECL_VARIABLE(vector, int, 16, 4); ++ DECL_VARIABLE(vector, int, 32, 2); ++ DECL_VARIABLE(vector, int, 16, 8); ++ DECL_VARIABLE(vector, int, 32, 4); ++ ++ DECL_VARIABLE(vector_res, int, 16, 4); ++ DECL_VARIABLE(vector_res, int, 32, 2); ++ DECL_VARIABLE(vector_res, int, 16, 8); ++ DECL_VARIABLE(vector_res, int, 32, 4); ++ ++ clean_results (); ++ ++ /* Initialize vector. */ ++ VDUP(vector, , int, s, 16, 4, 0x1000); ++ VDUP(vector, , int, s, 32, 2, 0x100023); ++ VDUP(vector, q, int, s, 16, 8, 0x1000); ++ VDUP(vector, q, int, s, 32, 4, 0x100045); ++ ++ /* Choose multiplier arbitrarily. */ ++ TEST_VQDMULH_N(, int, s, 16, 4, 0xCF, expected_cumulative_sat, ""); ++ TEST_VQDMULH_N(, int, s, 32, 2, 0x2344, expected_cumulative_sat, ""); ++ TEST_VQDMULH_N(q, int, s, 16, 8, 0x80, expected_cumulative_sat, ""); ++ TEST_VQDMULH_N(q, int, s, 32, 4, 0x5422, expected_cumulative_sat, ""); ++ ++ CHECK (TEST_MSG, int, 16, 4, PRIx16, expected, ""); ++ CHECK (TEST_MSG, int, 32, 2, PRIx32, expected, ""); ++ CHECK (TEST_MSG, int, 16, 8, PRIx16, expected, ""); ++ CHECK (TEST_MSG, int, 32, 4, PRIx32, expected, ""); ++ ++ /* Choose input values to trigger saturation. */ ++ VDUP(vector, , int, s, 16, 4, 0x8000); ++ VDUP(vector, , int, s, 32, 2, 0x80000000); ++ VDUP(vector, q, int, s, 16, 8, 0x8000); ++ VDUP(vector, q, int, s, 32, 4, 0x80000000); ++ ++#define TEST_MSG2 " (check mul cumulative saturation)" ++ TEST_VQDMULH_N(, int, s, 16, 4, 0x8000, expected_cumulative_sat2, TEST_MSG2); ++ TEST_VQDMULH_N(, int, s, 32, 2, 0x80000000, expected_cumulative_sat2, TEST_MSG2); ++ TEST_VQDMULH_N(q, int, s, 16, 8, 0x8000, expected_cumulative_sat2, TEST_MSG2); ++ TEST_VQDMULH_N(q, int, s, 32, 4, 0x80000000, expected_cumulative_sat2, TEST_MSG2); ++ ++ CHECK (TEST_MSG, int, 16, 4, PRIx16, expected2, TEST_MSG2); ++ CHECK (TEST_MSG, int, 32, 2, PRIx32, expected2, TEST_MSG2); ++ CHECK (TEST_MSG, int, 16, 8, PRIx16, expected2, TEST_MSG2); ++ CHECK (TEST_MSG, int, 32, 4, PRIx32, expected2, TEST_MSG2); ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsXi_n.inc ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsXi_n.inc +@@ -0,0 +1,82 @@ ++#define FNNAME1(NAME) exec_ ## NAME ##_n ++#define FNNAME(NAME) FNNAME1(NAME) ++ ++void FNNAME (INSN_NAME) (void) ++{ ++ /* vector_res = vsxi_n(vector, vector2, val), ++ then store the result. */ ++#define TEST_VSXI_N1(INSN, Q, T1, T2, W, N, V) \ ++ VECT_VAR(vector_res, T1, W, N) = \ ++ INSN##Q##_n_##T2##W(VECT_VAR(vector, T1, W, N), \ ++ VECT_VAR(vector2, T1, W, N), \ ++ V); \ ++ vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N)) ++ ++#define TEST_VSXI_N(INSN, Q, T1, T2, W, N, V) \ ++ TEST_VSXI_N1(INSN, Q, T1, T2, W, N, V) ++ ++ DECL_VARIABLE_ALL_VARIANTS(vector); ++ DECL_VARIABLE_ALL_VARIANTS(vector2); ++ DECL_VARIABLE_ALL_VARIANTS(vector_res); ++ ++ clean_results (); ++ ++ /* Initialize input "vector" from "buffer". */ ++ TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector, buffer); ++ ++ /* Fill input vector2 with arbitrary values. */ ++ VDUP(vector2, , int, s, 8, 8, 2); ++ VDUP(vector2, , int, s, 16, 4, -4); ++ VDUP(vector2, , int, s, 32, 2, 3); ++ VDUP(vector2, , int, s, 64, 1, 100); ++ VDUP(vector2, , uint, u, 8, 8, 20); ++ VDUP(vector2, , uint, u, 16, 4, 30); ++ VDUP(vector2, , uint, u, 32, 2, 40); ++ VDUP(vector2, , uint, u, 64, 1, 2); ++ VDUP(vector2, , poly, p, 8, 8, 20); ++ VDUP(vector2, , poly, p, 16, 4, 30); ++ VDUP(vector2, q, int, s, 8, 16, -10); ++ VDUP(vector2, q, int, s, 16, 8, -20); ++ VDUP(vector2, q, int, s, 32, 4, -30); ++ VDUP(vector2, q, int, s, 64, 2, 24); ++ VDUP(vector2, q, uint, u, 8, 16, 12); ++ VDUP(vector2, q, uint, u, 16, 8, 3); ++ VDUP(vector2, q, uint, u, 32, 4, 55); ++ VDUP(vector2, q, uint, u, 64, 2, 3); ++ VDUP(vector2, q, poly, p, 8, 16, 12); ++ VDUP(vector2, q, poly, p, 16, 8, 3); ++ ++ /* Choose shift amount arbitrarily. */ ++ TEST_VSXI_N(INSN_NAME, , int, s, 8, 8, 4); ++ TEST_VSXI_N(INSN_NAME, , int, s, 16, 4, 3); ++ TEST_VSXI_N(INSN_NAME, , int, s, 32, 2, 1); ++ TEST_VSXI_N(INSN_NAME, , int, s, 64, 1, 32); ++ TEST_VSXI_N(INSN_NAME, , uint, u, 8, 8, 2); ++ TEST_VSXI_N(INSN_NAME, , uint, u, 16, 4, 10); ++ TEST_VSXI_N(INSN_NAME, , uint, u, 32, 2, 30); ++ TEST_VSXI_N(INSN_NAME, , uint, u, 64, 1, 3); ++ TEST_VSXI_N(INSN_NAME, , poly, p, 8, 8, 2); ++ TEST_VSXI_N(INSN_NAME, , poly, p, 16, 4, 10); ++ TEST_VSXI_N(INSN_NAME, q, int, s, 8, 16, 5); ++ TEST_VSXI_N(INSN_NAME, q, int, s, 16, 8, 3); ++ TEST_VSXI_N(INSN_NAME, q, int, s, 32, 4, 20); ++ TEST_VSXI_N(INSN_NAME, q, int, s, 64, 2, 16); ++ TEST_VSXI_N(INSN_NAME, q, uint, u, 8, 16, 3); ++ TEST_VSXI_N(INSN_NAME, q, uint, u, 16, 8, 12); ++ TEST_VSXI_N(INSN_NAME, q, uint, u, 32, 4, 23); ++ TEST_VSXI_N(INSN_NAME, q, uint, u, 64, 2, 53); ++ TEST_VSXI_N(INSN_NAME, q, poly, p, 8, 16, 3); ++ TEST_VSXI_N(INSN_NAME, q, poly, p, 16, 8, 12); ++ ++ CHECK_RESULTS (TEST_MSG, ""); ++ ++#ifdef EXTRA_TESTS ++ EXTRA_TESTS(); ++#endif ++} ++ ++int main (void) ++{ ++ FNNAME (INSN_NAME) (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_common.h ++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_common.h +@@ -0,0 +1,94 @@ ++extern void abort (); ++ ++#define CVT(v) ((unsigned char)(v)) ++ ++static void __attribute__((noinline)) ++check_args_8 (int a0, int a1, int a2, int a3, int a4, int a5, int a6, int a7, ++ int a8) ++{ ++ if (a0 != 0 ++ || a1 != 1 ++ || a2 != 2 ++ || a3 != 3 ++ || a4 != 4 ++ || a5 != 5 ++ || a6 != 6 ++ || a7 != 7 ++ || a8 != 8) ++ abort (); ++} ++ ++static void __attribute__((noinline)) ++check_args_24 (int a0, int a1, int a2, int a3, int a4, int a5, int a6, int a7, ++ int a8, int a9, int a10) ++{ ++ if (a0 != 0 ++ || a1 != 1 ++ || a2 != 2 ++ || a3 != 3 ++ || a4 != 4 ++ || a5 != 5 ++ || a6 != 6 ++ || a7 != 7 ++ || a8 != 8 ++ || a9 != 9 ++ || a10 != 10) ++ abort (); ++} ++ ++void __attribute__ ((noinline)) ++initialize_array (unsigned char *a, int len) ++{ ++ int i; ++ ++ for (i = 0; i < (len / 2); i++) ++ { ++ a[i] = i; ++ a[len - i - 1] = i; ++ } ++ ++ return; ++} ++ ++#define t_frame_pattern(name, local_size, callee_saved)\ ++int \ ++name (void)\ ++{\ ++ unsigned char a[local_size];\ ++ initialize_array (a, local_size); \ ++ __asm__ ("":::callee_saved); \ ++ if (a[0] != a[local_size - 1] \ ++ || a[0] != 0) \ ++ return 0; \ ++ if (a[local_size / 2 - 1] != a[local_size / 2] \ ++ || a[local_size / 2 - 1] != CVT (local_size / 2 - 1)) \ ++ return 0; \ ++ return 1; \ ++} ++ ++#define t_frame_pattern_outgoing(name, local_size, callee_saved, out_going_num, ...)\ ++int \ ++name (void)\ ++{\ ++ unsigned char a[local_size];\ ++ initialize_array (a, local_size); \ ++ __asm__ ("":::callee_saved); \ ++ if (a[0] != a[local_size - 1] \ ++ || a[0] != 0) \ ++ return 0; \ ++ if (a[local_size / 2 - 1] != a[local_size / 2] \ ++ || a[local_size / 2 - 1] != CVT (local_size / 2 - 1)) \ ++ return 0; \ ++ check_args_ ## out_going_num (a[0], a[1], a[2], a[3], a[4], a[5], a[6],\ ++ a[7], __VA_ARGS__); \ ++ return 1; \ ++} ++ ++#define t_frame_run(name) \ ++int \ ++main (int argc, char **argv) \ ++{\ ++ if (!name ())\ ++ abort ();\ ++ return 0;\ ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/vstN_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vstN_1.c +@@ -0,0 +1,76 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3" } */ ++ ++#include ++ ++extern void abort (void); ++ ++#define TESTMETH(BASE, ELTS, STRUCT, SUFFIX) \ ++int __attribute__ ((noinline)) \ ++test_vst##STRUCT##SUFFIX () \ ++{ \ ++ BASE##_t src[ELTS * STRUCT]; \ ++ BASE##_t dest[ELTS * STRUCT]; \ ++ BASE##x##ELTS##x##STRUCT##_t vectors; \ ++ int i,j; \ ++ for (i = 0; i < STRUCT * ELTS; i++) \ ++ src [i] = (BASE##_t) 2*i + 1; \ ++ for (i = 0; i < STRUCT; i++) \ ++ vectors.val[i] = vld1##SUFFIX (&src[i*ELTS]); \ ++ asm volatile ("" : : : "memory"); \ ++ vst##STRUCT##SUFFIX (dest, vectors); \ ++ asm volatile ("" : : : "memory"); \ ++ for (i = 0; i < STRUCT; i++) \ ++ { \ ++ for (j = 0; j < ELTS; j++) \ ++ if (src[i*ELTS + j] != dest[i + STRUCT*j]) \ ++ return 1; \ ++ } \ ++ return 0; \ ++} ++ ++#define VARIANTS(VARIANT, STRUCT) \ ++VARIANT (uint8, 8, STRUCT, _u8) \ ++VARIANT (uint16, 4, STRUCT, _u16) \ ++VARIANT (uint32, 2, STRUCT, _u32) \ ++VARIANT (uint64, 1, STRUCT, _u64) \ ++VARIANT (int8, 8, STRUCT, _s8) \ ++VARIANT (int16, 4, STRUCT, _s16) \ ++VARIANT (int32, 2, STRUCT, _s32) \ ++VARIANT (int64, 1, STRUCT, _s64) \ ++VARIANT (poly8, 8, STRUCT, _p8) \ ++VARIANT (poly16, 4, STRUCT, _p16) \ ++VARIANT (float32, 2, STRUCT, _f32) \ ++VARIANT (float64, 1, STRUCT, _f64) \ ++VARIANT (uint8, 16, STRUCT, q_u8) \ ++VARIANT (uint16, 8, STRUCT, q_u16) \ ++VARIANT (uint32, 4, STRUCT, q_u32) \ ++VARIANT (uint64, 2, STRUCT, q_u64) \ ++VARIANT (int8, 16, STRUCT, q_s8) \ ++VARIANT (int16, 8, STRUCT, q_s16) \ ++VARIANT (int32, 4, STRUCT, q_s32) \ ++VARIANT (int64, 2, STRUCT, q_s64) \ ++VARIANT (poly8, 16, STRUCT, q_p8) \ ++VARIANT (poly16, 8, STRUCT, q_p16) \ ++VARIANT (float32, 4, STRUCT, q_f32) \ ++VARIANT (float64, 2, STRUCT, q_f64) ++ ++/* Tests of vst2 and vst2q. */ ++VARIANTS (TESTMETH, 2) ++/* Tests of vst3 and vst3q. */ ++VARIANTS (TESTMETH, 3) ++/* Tests of vst4 and vst4q. */ ++VARIANTS (TESTMETH, 4) ++ ++#define CHECK(BASE, ELTS, STRUCT, SUFFIX) \ ++ if (test_vst##STRUCT##SUFFIX () != 0) \ ++ abort (); ++ ++int ++main (int argc, char **argv) ++{ ++ VARIANTS (CHECK, 2) ++ VARIANTS (CHECK, 3) ++ VARIANTS (CHECK, 4) ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/vect-fmax-fmin.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-fmax-fmin.c +@@ -8,11 +8,11 @@ + #include "vect-fmaxv-fminv.x" + + #define DEFN_SETV(type) \ +- set_vector_##type (pR##type a, type n) \ +- { \ +- int i; \ +- for (i=0; i<16; i++) \ +- a[i] = n; \ ++ void set_vector_##type (pR##type a, type n) \ ++ { \ ++ int i; \ ++ for (i=0; i<16; i++) \ ++ a[i] = n; \ + } + + #define DEFN_CHECKV(type) \ +--- a/src/gcc/testsuite/gcc.target/aarch64/scalar_shift_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/scalar_shift_1.c +@@ -193,7 +193,6 @@ + return b; + } + /* { dg-final { scan-assembler "sshr\td\[0-9\]+,\ d\[0-9\]+,\ 63" } } */ +-/* { dg-final { scan-assembler "shl\td\[0-9\]+,\ d\[0-9\]+,\ 1" } } */ + + Int32x1 + test_corners_sisd_si (Int32x1 b) +@@ -207,7 +206,6 @@ + return b; + } + /* { dg-final { scan-assembler "sshr\tv\[0-9\]+\.2s,\ v\[0-9\]+\.2s,\ 31" } } */ +-/* { dg-final { scan-assembler "shl\tv\[0-9\]+\.2s,\ v\[0-9\]+\.2s,\ 1" } } */ + + + +--- a/src/gcc/testsuite/gcc.target/aarch64/vbslq_f64_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vbslq_f64_1.c +@@ -0,0 +1,21 @@ ++/* Test vbslq_f64 can be folded. */ ++/* { dg-do assemble } */ ++/* { dg-options "--save-temps -O3" } */ ++ ++#include ++ ++/* Folds to ret. */ ++ ++float32x4_t ++fold_me (float32x4_t a, float32x4_t b) ++{ ++ uint32x4_t mask = {-1, -1, -1, -1}; ++ return vbslq_f32 (mask, a, b); ++} ++ ++/* { dg-final { scan-assembler-not "bsl\\tv" } } */ ++/* { dg-final { scan-assembler-not "bit\\tv" } } */ ++/* { dg-final { scan-assembler-not "bif\\tv" } } */ ++ ++/* { dg-final { cleanup-saved-temps } } */ ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/vect-ld1r.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-ld1r.x +@@ -7,7 +7,7 @@ + for (i = 0; i < 8 / sizeof (TYPE); i++) \ + output[i] = *a; \ + } \ +- foo_ ## TYPE ## _q (TYPE *a, TYPE *output) \ ++ void foo_ ## TYPE ## _q (TYPE *a, TYPE *output) \ + { \ + int i; \ + for (i = 0; i < 32 / sizeof (TYPE); i++) \ +--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_10.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_10.c +@@ -0,0 +1,21 @@ ++/* Verify: ++ * -fomit-frame-pointer. ++ * with outgoing. ++ * total frame size > 512. ++ area except outgoing <= 512 ++ * number of callee-saved reg >= 2. ++ * Split stack adjustment into two subtractions. ++ the first subtractions could be optimized into "stp !". */ ++ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fomit-frame-pointer --save-temps" } */ ++ ++#include "test_frame_common.h" ++ ++t_frame_pattern_outgoing (test10, 480, "x19", 24, a[8], a[9], a[10]) ++t_frame_run (test10) ++ ++/* { dg-final { scan-assembler-times "stp\tx19, x30, \\\[sp, -\[0-9\]+\\\]!" 1 } } */ ++/* { dg-final { scan-assembler-times "ldp\tx19, x30, \\\[sp\\\], \[0-9\]+" 1 } } */ ++ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/vrnd_f64_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vrnd_f64_1.c +@@ -0,0 +1,105 @@ ++/* Test vrnd_f64 works correctly. */ ++/* { dg-do run } */ ++/* { dg-options "--save-temps" } */ ++ ++#include "arm_neon.h" ++ ++extern void abort (void); ++ ++/* Bit offset to round mode field in FPCR. */ ++#define RMODE_START 22 ++ ++#define FPROUNDING_ZERO 3 ++ ++/* Set RMODE field of FPCR control register ++ to rounding mode passed. */ ++void __inline __attribute__ ((__always_inline__)) ++set_rounding_mode (uint32_t mode) ++{ ++ uint32_t r; ++ ++ /* Read current FPCR. */ ++ asm volatile ("mrs %[r], fpcr" : [r] "=r" (r) : :); ++ ++ /* Clear rmode. */ ++ r &= ~(3 << RMODE_START); ++ /* Calculate desired FPCR. */ ++ r |= mode << RMODE_START; ++ ++ /* Write desired FPCR back. */ ++ asm volatile ("msr fpcr, %[r]" : : [r] "r" (r) :); ++} ++ ++float64x1_t __attribute__ ((noinline)) ++compare_f64 (float64x1_t passed, float64_t expected) ++{ ++ return (__builtin_fabs (vget_lane_f64 (passed, 0) - expected) ++ > __DBL_EPSILON__); ++} ++ ++void __attribute__ ((noinline)) ++run_round_tests (float64x1_t *tests, ++ float64_t expectations[][6]) ++{ ++ int i; ++ ++ for (i = 0; i < 6; i++) ++ { ++ if (compare_f64 (vrnd_f64 (tests[i]), expectations[0][i])) ++ abort (); ++ if (compare_f64 (vrndx_f64 (tests[i]), expectations[1][i])) ++ abort (); ++ if (compare_f64 (vrndp_f64 (tests[i]), expectations[2][i])) ++ abort (); ++ if (compare_f64 (vrndn_f64 (tests[i]), expectations[3][i])) ++ abort (); ++ if (compare_f64 (vrndm_f64 (tests[i]), expectations[4][i])) ++ abort (); ++ if (compare_f64 (vrndi_f64 (tests[i]), expectations[5][i])) ++ abort (); ++ if (compare_f64 (vrnda_f64 (tests[i]), expectations[6][i])) ++ abort (); ++ } ++} ++ ++int ++main (int argc, char **argv) ++{ ++ float64x1_t tests[6] = ++ { ++ vcreate_f64 (0x3FE0000000000000), /* Hex for: 0.5. */ ++ vcreate_f64 (0x3FD999999999999A), /* Hex for: 0.4. */ ++ vcreate_f64 (0x3FE3333333333333), /* Hex for: 0.6. */ ++ vcreate_f64 (0xBFE0000000000000), /* Hex for: -0.5. */ ++ vcreate_f64 (0xBFD999999999999A), /* Hex for: -0.4. */ ++ vcreate_f64 (0xBFE3333333333333), /* Hex for: -0.6. */ ++ }; ++ ++ float64_t expectations[7][6] = ++ { ++ { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, /* vrnd - round towards zero. */ ++ { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, /* vrndx - round using FPCR mode. */ ++ { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 }, /* vrndp - round to plus infinity. */ ++ { 0.0, 0.0, 1.0, 0.0, 0.0, -1.0 }, /* vrndn - round ties to even. */ ++ { 0.0, 0.0, 0.0, -1.0, -1.0, -1.0 }, /* vrndm - round to minus infinity. */ ++ { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, /* vrndi - round using FPCR mode. */ ++ { 1.0, 0.0, 1.0, -1.0, 0.0, -1.0 }, /* vrnda - round ties away from 0. */ ++ }; ++ ++ /* Set floating point control register ++ to have predictable vrndx and vrndi behaviour. */ ++ set_rounding_mode (FPROUNDING_ZERO); ++ ++ run_round_tests (tests, expectations); ++ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times "frintz\\td\[0-9\]+, d\[0-9\]+" 1 } } */ ++/* { dg-final { scan-assembler-times "frintx\\td\[0-9\]+, d\[0-9\]+" 1 } } */ ++/* { dg-final { scan-assembler-times "frintp\\td\[0-9\]+, d\[0-9\]+" 1 } } */ ++/* { dg-final { scan-assembler-times "frintn\\td\[0-9\]+, d\[0-9\]+" 1 } } */ ++/* { dg-final { scan-assembler-times "frintm\\td\[0-9\]+, d\[0-9\]+" 1 } } */ ++/* { dg-final { scan-assembler-times "frinti\\td\[0-9\]+, d\[0-9\]+" 1 } } */ ++/* { dg-final { scan-assembler-times "frinta\\td\[0-9\]+, d\[0-9\]+" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/scalar_intrinsics.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/scalar_intrinsics.c +@@ -305,13 +305,28 @@ + return res; + } + +-/* { dg-final { scan-assembler-times "\\taddp\\td\[0-9\]+, v\[0-9\]+\.2d" 1 } } */ ++/* { dg-final { scan-assembler-times "\\tfaddp\\td\[0-9\]+, v\[0-9\]+\.2d" 1 } } */ + ++float64_t ++test_vpaddd_f64 (float64x2_t a) ++{ ++ return vpaddd_f64 (a); ++} ++ ++/* { dg-final { scan-assembler-times "\\taddp\\td\[0-9\]+, v\[0-9\]+\.2d" 2 } } */ ++ ++int64_t + test_vpaddd_s64 (int64x2_t a) + { + return vpaddd_s64 (a); + } + ++uint64_t ++test_vpaddd_u64 (uint64x2_t a) ++{ ++ return vpaddd_u64 (a); ++} ++ + /* { dg-final { scan-assembler-times "\\tuqadd\\td\[0-9\]+" 1 } } */ + + uint64x1_t +@@ -498,7 +513,7 @@ + + /* { dg-final { scan-assembler-times "\\tsqdmull\\td\[0-9\]+, s\[0-9\]+, v" 1 } } */ + +-int64x1_t ++int64_t + test_vqdmulls_lane_s32 (int32_t a, int32x2_t b) + { + return vqdmulls_lane_s32 (a, b, 1); +--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_7.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_7.c +@@ -0,0 +1,20 @@ ++/* Verify: ++ * -fomit-frame-pointer. ++ * without outgoing. ++ * total frame size > 512. ++ * number of callee-saved reg == 2. ++ * split stack adjustment into two subtractions. ++ the second subtraction should use "stp !". */ ++ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fomit-frame-pointer --save-temps" } */ ++ ++#include "test_frame_common.h" ++ ++t_frame_pattern (test7, 700, "x19") ++t_frame_run (test7) ++ ++/* { dg-final { scan-assembler-times "stp\tx19, x30, \\\[sp, -\[0-9\]+\\\]!" 1 } } */ ++/* { dg-final { scan-assembler-times "ldp\tx19, x30, \\\[sp\\\], \[0-9\]+" 2 } } */ ++ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/vabs_intrinsic_2.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vabs_intrinsic_2.c +@@ -0,0 +1,17 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2" } */ ++ ++#include ++ ++extern void abort (void); ++ ++int ++main (int argc, char **argv) ++{ ++ int8x8_t a = vabs_s8 (vdup_n_s8 (-128)); /* Should all be -128. */ ++ uint8x8_t b = vcltz_s8 (a); /* Should all be true i.e. -1. */ ++ if (vget_lane_u8 (b, 1)) ++ return 0; ++ abort (); ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/pic-symrefplus.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/pic-symrefplus.c +@@ -34,6 +34,9 @@ + values []; + }; + extern const struct locale_data _nl_C_LC_TIME __attribute__ ((visibility ("hidden"))); ++extern void *memset (void *s, int c, size_t n); ++extern size_t strlen (const char *s); ++extern int __strncasecmp_l (const char *s1, const char *s2, size_t n, __locale_t locale); + char * + __strptime_internal (rp, fmt, tmp, statep , locale) + const char *rp; +@@ -40,6 +43,7 @@ + const char *fmt; + __locale_t locale; + void *statep; ++ int tmp; + { + struct locale_data *const current = locale->__locales[__LC_TIME]; + const char *rp_backup; +@@ -124,5 +128,9 @@ + } + char * + __strptime_l (buf, format, tm , locale) ++ int buf; ++ int format; ++ int tm; ++ int locale; + { + } +--- a/src/gcc/testsuite/gcc.target/aarch64/vbslq_f64_2.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vbslq_f64_2.c +@@ -0,0 +1,24 @@ ++/* Test vbslq_f64 can be folded. */ ++/* { dg-do assemble } */ ++/* { dg-options "--save-temps -O3" } */ ++ ++#include ++ ++/* Should fold out one half of the BSL, leaving just a BIC. */ ++ ++float32x4_t ++half_fold_me (uint32x4_t mask) ++{ ++ float32x4_t a = {0.0, 0.0, 0.0, 0.0}; ++ float32x4_t b = {2.0, 4.0, 8.0, 16.0}; ++ return vbslq_f32 (mask, a, b); ++ ++} ++ ++/* { dg-final { scan-assembler-not "bsl\\tv" } } */ ++/* { dg-final { scan-assembler-not "bit\\tv" } } */ ++/* { dg-final { scan-assembler-not "bif\\tv" } } */ ++/* { dg-final { scan-assembler "bic\\tv" } } */ ++ ++/* { dg-final { cleanup-saved-temps } } */ ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_11.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_11.c +@@ -0,0 +1,16 @@ ++/* Verify: ++ * without outgoing. ++ * total frame size <= 512. ++ * number of callee-save reg >= 2. ++ * optimized code should use "stp !" for stack adjustment. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-O2 --save-temps" } */ ++ ++#include "test_frame_common.h" ++ ++t_frame_pattern (test11, 400, ) ++t_frame_run (test11) ++ ++/* { dg-final { scan-assembler-times "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" 2 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/vqneg_s64_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vqneg_s64_1.c +@@ -0,0 +1,47 @@ ++/* Test vqneg_s64 intrinsics work correctly. */ ++/* { dg-do run } */ ++/* { dg-options "--save-temps" } */ ++ ++#include ++ ++extern void abort (void); ++ ++int __attribute__ ((noinline)) ++test_vqneg_s64 (int64x1_t passed, int64_t expected) ++{ ++ return vget_lane_s64 (vqneg_s64 (passed), 0) != expected; ++} ++ ++int __attribute__ ((noinline)) ++test_vqnegd_s64 (int64_t passed, int64_t expected) ++{ ++ return vqnegd_s64 (passed) != expected; ++} ++ ++/* { dg-final { scan-assembler-times "sqneg\\td\[0-9\]+, d\[0-9\]+" 2 } } */ ++ ++int ++main (int argc, char **argv) ++{ ++ /* Basic test. */ ++ if (test_vqneg_s64 (vcreate_s64 (-1), 1)) ++ abort (); ++ if (test_vqnegd_s64 (-1, 1)) ++ abort (); ++ ++ /* Negating max int64_t. */ ++ if (test_vqneg_s64 (vcreate_s64 (0x7fffffffffffffff), 0x8000000000000001)) ++ abort (); ++ if (test_vqnegd_s64 (0x7fffffffffffffff, 0x8000000000000001)) ++ abort (); ++ ++ /* Negating min int64_t. ++ Note, exact negation cannot be represented as int64_t. */ ++ if (test_vqneg_s64 (vcreate_s64 (0x8000000000000000), 0x7fffffffffffffff)) ++ abort (); ++ if (test_vqnegd_s64 (0x8000000000000000, 0x7fffffffffffffff)) ++ abort (); ++ ++ return 0; ++} ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/vget_low_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vget_low_1.c +@@ -0,0 +1,60 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -std=c99" } */ ++ ++#include ++ ++extern void abort (void); ++ ++#define VARIANTS(VARIANT) \ ++VARIANT (uint8_t, 8, uint8x8_t, uint8x16_t, u8) \ ++VARIANT (uint16_t, 4, uint16x4_t, uint16x8_t, u16) \ ++VARIANT (uint32_t, 2, uint32x2_t, uint32x4_t, u32) \ ++VARIANT (uint64_t, 1, uint64x1_t, uint64x2_t, u64) \ ++VARIANT (int8_t, 8, int8x8_t, int8x16_t, s8) \ ++VARIANT (int16_t, 4, int16x4_t, int16x8_t, s16) \ ++VARIANT (int32_t, 2, int32x2_t, int32x4_t, s32) \ ++VARIANT (int64_t, 1, int64x1_t, int64x2_t, s64) \ ++VARIANT (float32_t, 2, float32x2_t, float32x4_t, f32) \ ++VARIANT (float64_t, 1, float64x1_t, float64x2_t, f64) ++ ++ ++#define TESTMETH(BASETYPE, NUM64, TYPE64, TYPE128, SUFFIX) \ ++int \ ++test_vget_low_ ##SUFFIX (BASETYPE *data) \ ++{ \ ++ BASETYPE temp [NUM64]; \ ++ TYPE128 vec = vld1q_##SUFFIX (data); \ ++ TYPE64 low = vget_low_##SUFFIX (vec); \ ++ vst1_##SUFFIX (temp, low); \ ++ for (int i = 0; i < NUM64; i++) \ ++ if (temp[i] != data[i]) \ ++ return 1; \ ++ return 0; \ ++} ++ ++VARIANTS (TESTMETH) ++ ++#define CHECK(BASETYPE, NUM64, TYPE64, TYPE128, SUFFIX) \ ++ if (test_vget_low_##SUFFIX (BASETYPE ## _ ## data) != 0) \ ++ abort (); ++ ++int ++main (int argc, char **argv) ++{ ++ uint8_t uint8_t_data[16] = ++ { 1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47 }; ++ uint16_t uint16_t_data[8] = { 1, 22, 333, 4444, 55555, 6666, 777, 88 }; ++ uint32_t uint32_t_data[4] = { 65537, 11, 70000, 23 }; ++ uint64_t uint64_t_data[2] = { 0xdeadbeefcafebabeULL, 0x0123456789abcdefULL }; ++ int8_t int8_t_data[16] = ++ { -1, -3, -5, -7, 9, -11, -13, 15, -17, -19, 21, -23, 25, 27, -29, -31 }; ++ int16_t int16_t_data[8] = { -17, 19, 3, -999, 44048, 505, 9999, 1000}; ++ int32_t int32_t_data[4] = { 123456789, -987654321, -135792468, 975318642 }; ++ int64_t int64_t_data[2] = {0xfedcba9876543210LL, 0xdeadbabecafebeefLL }; ++ float32_t float32_t_data[4] = { 3.14159, 2.718, 1.414, 100.0 }; ++ float64_t float64_t_data[2] = { 1.01001000100001, 12345.6789 }; ++ ++ VARIANTS (CHECK); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/ushr64_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/ushr64_1.c +@@ -42,7 +42,6 @@ + return vshrd_n_u64 (passed, 0) != expected; + } + +-/* { dg-final { scan-assembler-times "ushr\\td\[0-9\]+, d\[0-9\]+, 64" 2 } } */ + /* { dg-final { (scan-assembler-times "ushr\\td\[0-9\]+, d\[0-9\]+, 4" 2) || \ + (scan-assembler-times "lsr\\tx\[0-9\]+, x\[0-9\]+, 4" 2) } } */ + /* { dg-final { scan-assembler-not "ushr\\td\[0-9\]+, d\[0-9\]+, 0" } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_8.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_8.c +@@ -0,0 +1,18 @@ ++/* Verify: ++ * -fomit-frame-pointer. ++ * with outgoing. ++ * total frame size bigger than 512. ++ * number of callee-saved reg == 1. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fomit-frame-pointer --save-temps" } */ ++ ++#include "test_frame_common.h" ++ ++t_frame_pattern_outgoing (test8, 700, , 8, a[8]) ++t_frame_run (test8) ++ ++/* { dg-final { scan-assembler-times "str\tx30, \\\[sp, -\[0-9\]+\\\]!" 3 } } */ ++/* { dg-final { scan-assembler-times "ldr\tx30, \\\[sp\\\], \[0-9\]+" 3 } } */ ++ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/vset_lane_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vset_lane_1.c +@@ -0,0 +1,85 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -fno-inline" } */ ++ ++#include ++ ++extern void abort (void); ++ ++#define VARIANTS(VARIANT) \ ++VARIANT (uint8_t, , 8, uint8x8_t, _u8, 5) \ ++VARIANT (uint16_t, , 4, uint16x4_t, _u16, 3) \ ++VARIANT (uint32_t, , 2, uint32x2_t, _u32, 1) \ ++VARIANT (uint64_t, , 1, uint64x1_t, _u64, 0) \ ++VARIANT (int8_t, , 8, int8x8_t, _s8, 6) \ ++VARIANT (int16_t, , 4, int16x4_t, _s16, 2) \ ++VARIANT (int32_t, , 2, int32x2_t, _s32, 0) \ ++VARIANT (int64_t, , 1, int64x1_t, _s64, 0) \ ++VARIANT (poly8_t, , 8, poly8x8_t, _p8, 6) \ ++VARIANT (poly16_t, , 4, poly16x4_t, _p16, 2) \ ++VARIANT (float32_t, , 2, float32x2_t, _f32, 1) \ ++VARIANT (float64_t, , 1, float64x1_t, _f64, 0) \ ++VARIANT (uint8_t, q, 16, uint8x16_t, _u8, 11) \ ++VARIANT (uint16_t, q, 8, uint16x8_t, _u16, 7) \ ++VARIANT (uint32_t, q, 4, uint32x4_t, _u32, 2) \ ++VARIANT (uint64_t, q, 2, uint64x2_t, _u64, 1) \ ++VARIANT (int8_t, q, 16, int8x16_t, _s8, 13) \ ++VARIANT (int16_t, q, 8, int16x8_t, _s16, 5) \ ++VARIANT (int32_t, q, 4, int32x4_t, _s32, 3) \ ++VARIANT (int64_t, q, 2, int64x2_t, _s64, 0) \ ++VARIANT (poly8_t, q, 16, poly8x16_t, _p8, 14) \ ++VARIANT (poly16_t, q, 8, poly16x8_t, _p16, 6) \ ++VARIANT (float32_t, q, 4, float32x4_t, _f32, 2) \ ++VARIANT (float64_t, q, 2, float64x2_t, _f64, 1) ++ ++#define TESTMETH(BASETYPE, Q, NUM, TYPE, SUFFIX, INDEX) \ ++int \ ++test_vset_lane ##Q##SUFFIX (BASETYPE *data) \ ++{ \ ++ BASETYPE temp [NUM]; \ ++ TYPE vec = vld1##Q##SUFFIX (data); \ ++ TYPE vec2; \ ++ BASETYPE changed = data[INDEX] - INDEX; \ ++ int check; \ ++ vec = vset##Q##_lane##SUFFIX (changed, vec, INDEX); \ ++ asm volatile ("orr %0.16b, %1.16b, %1.16b" \ ++ : "=w"(vec2) : "w" (vec) : ); \ ++ vst1##Q##SUFFIX (temp, vec2); \ ++ for (check = 0; check < NUM; check++) \ ++ { \ ++ BASETYPE desired = data[check]; \ ++ if (check==INDEX) desired = changed; \ ++ if (temp[check] != desired) \ ++ return 1; \ ++ } \ ++ return 0; \ ++} ++ ++VARIANTS (TESTMETH) ++ ++#define CHECK(BASETYPE, Q, NUM, TYPE, SUFFIX, INDEX) \ ++ if (test_vset_lane##Q##SUFFIX (BASETYPE ## _ ## data) != 0) \ ++ abort (); ++ ++int ++main (int argc, char **argv) ++{ ++ uint8_t uint8_t_data[16] = ++ { 1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47 }; ++ uint16_t uint16_t_data[8] = { 1, 22, 333, 4444, 55555, 6666, 777, 88 }; ++ uint32_t uint32_t_data[4] = { 65537, 11, 70000, 23 }; ++ uint64_t uint64_t_data[2] = { 0xdeadbeefcafebabeULL, 0x0123456789abcdefULL }; ++ int8_t int8_t_data[16] = ++ { -1, -3, -5, -7, 9, -11, -13, 15, -17, -19, 21, -23, 25, 27, -29, -31 }; ++ int16_t int16_t_data[8] = { -17, 19, 3, -999, 44048, 505, 9999, 1000}; ++ int32_t int32_t_data[4] = { 123456789, -987654321, -135792468, 975318642 }; ++ int64_t int64_t_data[2] = {0xfedcba9876543210LL, 0xdeadbabecafebeefLL }; ++ poly8_t poly8_t_data[16] = ++ { 0, 7, 13, 18, 22, 25, 27, 28, 29, 31, 34, 38, 43, 49, 56, 64 }; ++ poly16_t poly16_t_data[8] = { 11111, 2222, 333, 44, 5, 65432, 54321, 43210 }; ++ float32_t float32_t_data[4] = { 3.14159, 2.718, 1.414, 100.0 }; ++ float64_t float64_t_data[2] = { 1.01001000100001, 12345.6789 }; ++ ++ VARIANTS (CHECK); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_12.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_12.c +@@ -0,0 +1,19 @@ ++/* Verify: ++ * with outgoing. ++ * total frame size <= 512. ++ * number of callee-save reg >= 2. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-O2 --save-temps" } */ ++ ++#include "test_frame_common.h" ++ ++t_frame_pattern_outgoing (test12, 400, , 8, a[8]) ++t_frame_run (test12) ++ ++/* { dg-final { scan-assembler-times "sub\tsp, sp, #\[0-9\]+" 1 } } */ ++ ++/* Check epilogue using write-back. */ ++/* { dg-final { scan-assembler-times "ldp\tx29, x30, \\\[sp\\\], \[0-9\]+" 3 } } */ ++ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/lib/gcc.exp ++++ b/src/gcc/testsuite/lib/gcc.exp +@@ -126,7 +126,9 @@ + global GCC_UNDER_TEST + global TOOL_OPTIONS + global TEST_ALWAYS_FLAGS +- ++ global flags_to_postpone ++ global board_info ++ + if {[target_info needs_status_wrapper] != "" && \ + [target_info needs_status_wrapper] != "0" && \ + [info exists gluefile] } { +@@ -162,8 +164,26 @@ + set options [concat "{additional_flags=$TOOL_OPTIONS}" $options] + } + ++ # bind_pic_locally adds -fpie/-fPIE flags to flags_to_postpone and it is ++ # appended here to multilib_flags as it can be overridden by the latter ++ # if it was added earlier. After the target_compile, multilib_flags is ++ # restored to its orignal content. ++ set tboard [target_info name] ++ if {[board_info $tboard exists multilib_flags]} { ++ set orig_multilib_flags "[board_info [target_info name] multilib_flags]" ++ append board_info($tboard,multilib_flags) " $flags_to_postpone" ++ } ++ + lappend options "timeout=[timeout_value]" + lappend options "compiler=$GCC_UNDER_TEST" + set options [dg-additional-files-options $options $source] +- return [target_compile $source $dest $type $options] ++ set return_val [target_compile $source $dest $type $options] ++ ++ if {[board_info $tboard exists multilib_flags]} { ++ set board_info($tboard,multilib_flags) $orig_multilib_flags ++ set flags_to_postpone "" ++ } ++ ++ return $return_val + } ++ +--- a/src/gcc/testsuite/lib/g++.exp ++++ b/src/gcc/testsuite/lib/g++.exp +@@ -288,6 +288,8 @@ + global gluefile wrap_flags + global ALWAYS_CXXFLAGS + global GXX_UNDER_TEST ++ global flags_to_postpone ++ global board_info + + if { [target_info needs_status_wrapper] != "" && [info exists gluefile] } { + lappend options "libs=${gluefile}" +@@ -313,10 +315,25 @@ + exec rm -f $rponame + } + ++ # bind_pic_locally adds -fpie/-fPIE flags to flags_to_postpone and it is ++ # appended here to multilib_flags as it can be overridden by the latter ++ # if it was added earlier. After the target_compile, multilib_flags is ++ # restored to its orignal content. ++ set tboard [target_info name] ++ if {[board_info $tboard exists multilib_flags]} { ++ set orig_multilib_flags "[board_info [target_info name] multilib_flags]" ++ append board_info($tboard,multilib_flags) " $flags_to_postpone" ++ } ++ + set options [dg-additional-files-options $options $source] + + set result [target_compile $source $dest $type $options] + ++ if {[board_info $tboard exists multilib_flags]} { ++ set board_info($tboard,multilib_flags) $orig_multilib_flags ++ set flags_to_postpone "" ++ } ++ + return $result + } + +--- a/src/gcc/testsuite/lib/wrapper.exp ++++ b/src/gcc/testsuite/lib/wrapper.exp +@@ -34,9 +34,11 @@ + # became true for dejagnu-1.4.4. The set of warnings and code + # that gcc objects on may change, so just make sure -w is always + # passed to turn off all warnings. ++ unset_currtarget_info wrap_compile_flags + set_currtarget_info wrap_compile_flags \ + "$saved_wrap_compile_flags -w $flags" + set result [build_wrapper $filename] ++ unset_currtarget_info wrap_compile_flags + set_currtarget_info wrap_compile_flags "$saved_wrap_compile_flags" + if { $result != "" } { + set gluefile [lindex $result 0] +--- a/src/gcc/testsuite/lib/compat.exp ++++ b/src/gcc/testsuite/lib/compat.exp +@@ -134,7 +134,6 @@ + "$options"] + if ![${tool}_check_compile "$testcase $testname link" "" \ + $dest $comp_output] then { +- unresolved "$testcase $testname execute $optstr" + return + } + +--- a/src/gcc/testsuite/lib/gcc-defs.exp ++++ b/src/gcc/testsuite/lib/gcc-defs.exp +@@ -54,14 +54,19 @@ + if { [info proc ${tool}-dg-prune] != "" } { + global target_triplet + set gcc_output [${tool}-dg-prune $target_triplet $gcc_output] ++ if [string match "*::unsupported::*" $gcc_output] then { ++ regsub -- "::unsupported::" $gcc_output "" gcc_output ++ unsupported "$testcase: $gcc_output" ++ return 0 ++ } ++ } else { ++ set unsupported_message [${tool}_check_unsupported_p $gcc_output] ++ if { $unsupported_message != "" } { ++ unsupported "$testcase: $unsupported_message" ++ return 0 ++ } + } + +- set unsupported_message [${tool}_check_unsupported_p $gcc_output] +- if { $unsupported_message != "" } { +- unsupported "$testcase: $unsupported_message" +- return 0 +- } +- + # remove any leftover LF/CR to make sure any output is legit + regsub -all -- "\[\r\n\]*" $gcc_output "" gcc_output + +--- a/src/gcc/testsuite/lib/gfortran.exp ++++ b/src/gcc/testsuite/lib/gfortran.exp +@@ -234,6 +234,8 @@ + global gluefile wrap_flags + global ALWAYS_GFORTRANFLAGS + global GFORTRAN_UNDER_TEST ++ global flags_to_postpone ++ global board_info + + if { [target_info needs_status_wrapper] != "" && [info exists gluefile] } { + lappend options "libs=${gluefile}" +@@ -240,10 +242,27 @@ + lappend options "ldflags=${wrap_flags}" + } + ++ # bind_pic_locally adds -fpie/-fPIE flags to flags_to_postpone and it is ++ # appended here to multilib_flags as it can be overridden by the latter ++ # if it was added earlier. After the target_compile, multilib_flags is ++ # restored to its orignal content. ++ set tboard [target_info name] ++ if {[board_info $tboard exists multilib_flags]} { ++ set orig_multilib_flags "[board_info [target_info name] multilib_flags]" ++ append board_info($tboard,multilib_flags) " $flags_to_postpone" ++ } ++ + lappend options "compiler=$GFORTRAN_UNDER_TEST" + lappend options "timeout=[timeout_value]" + + set options [concat "$ALWAYS_GFORTRANFLAGS" $options] + set options [dg-additional-files-options $options $source] +- return [target_compile $source $dest $type $options] ++ set return_val [target_compile $source $dest $type $options] ++ ++ if {[board_info $tboard exists multilib_flags]} { ++ set board_info($tboard,multilib_flags) $orig_multilib_flags ++ set flags_to_postpone "" ++ } ++ ++ return $return_val + } +--- a/src/gcc/testsuite/lib/target-supports.exp ++++ b/src/gcc/testsuite/lib/target-supports.exp +@@ -2274,7 +2274,7 @@ + }] + } + +-# Return 1 is this is an arm target using 32-bit instructions ++# Return 1 if this is an arm target using 32-bit instructions + proc check_effective_target_arm32 { } { + return [check_no_compiler_messages arm32 assembly { + #if !defined(__arm__) || (defined(__thumb__) && !defined(__thumb2__)) +@@ -2283,10 +2283,10 @@ + }] + } + +-# Return 1 is this is an arm target not using Thumb ++# Return 1 if this is an arm target not using Thumb + proc check_effective_target_arm_nothumb { } { + return [check_no_compiler_messages arm_nothumb assembly { +- #if (defined(__thumb__) || defined(__thumb2__)) ++ #if !defined(__arm__) || (defined(__thumb__) || defined(__thumb2__)) + #error FOO + #endif + }] +@@ -3337,6 +3337,43 @@ + return $et_vect_shift_saved + } + ++proc check_effective_target_whole_vector_shift { } { ++ if { [istarget x86_64-*-*] ++ || [istarget ia64-*-*] ++ || ([check_effective_target_arm32] ++ && [check_effective_target_arm_little_endian]) ++ || ([istarget mips*-*-*] ++ && [check_effective_target_mips_loongson]) } { ++ set answer 1 ++ } else { ++ set answer 0 ++ } ++ ++ verbose "check_effective_target_vect_long: returning $answer" 2 ++ return $answer ++} ++ ++# Return 1 if the target supports vector bswap operations. ++ ++proc check_effective_target_vect_bswap { } { ++ global et_vect_bswap_saved ++ ++ if [info exists et_vect_bswap_saved] { ++ verbose "check_effective_target_vect_bswap: using cached result" 2 ++ } else { ++ set et_vect_bswap_saved 0 ++ if { [istarget aarch64*-*-*] ++ || ([istarget arm*-*-*] ++ && [check_effective_target_arm_neon]) ++ } { ++ set et_vect_bswap_saved 1 ++ } ++ } ++ ++ verbose "check_effective_target_vect_bswap: returning $et_vect_bswap_saved" 2 ++ return $et_vect_bswap_saved ++} ++ + # Return 1 if the target supports hardware vector shift operation for char. + + proc check_effective_target_vect_shift_char { } { +@@ -3535,8 +3572,7 @@ + } else { + set et_vect_perm_saved 0 + if { [is-effective-target arm_neon_ok] +- || ([istarget aarch64*-*-*] +- && [is-effective-target aarch64_little_endian]) ++ || [istarget aarch64*-*-*] + || [istarget powerpc*-*-*] + || [istarget spu-*-*] + || [istarget i?86-*-*] +@@ -5219,16 +5255,26 @@ + return $flags + } + ++if {![info exists flags_to_postpone]} { ++ set flags_to_postpone "" ++} ++ + # Add to FLAGS the flags needed to enable functions to bind locally + # when using pic/PIC passes in the testsuite. ++proc add_options_for_bind_pic_locally { flags } { ++ global flags_to_postpone + +-proc add_options_for_bind_pic_locally { flags } { ++ # Instead of returning 'flags' with the -fPIE or -fpie appended, we save it ++ # in 'flags_to_postpone' and append it later in gcc_target_compile procedure in ++ # order to make sure that the multilib_flags doesn't override this. ++ + if {[check_no_compiler_messages using_pic2 assembly { + #if __PIC__ != 2 + #error FOO + #endif + }]} { +- return "$flags -fPIE" ++ set flags_to_postpone "-fPIE" ++ return $flags + } + if {[check_no_compiler_messages using_pic1 assembly { + #if __PIC__ != 1 +@@ -5235,9 +5281,9 @@ + #error FOO + #endif + }]} { +- return "$flags -fpie" ++ set flags_to_postpone "-fpie" ++ return $flags + } +- + return $flags + } + +--- a/src/gcc/testsuite/ChangeLog.linaro ++++ b/src/gcc/testsuite/ChangeLog.linaro +@@ -0,0 +1,1647 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-04-09 Kugan Vivekanandarajah ++ ++ Backport from trunk r219745. ++ 2015-01-16 Kyrylo Tkachov ++ ++ PR target/64263 ++ * gcc.target/aarch64/pr64263_1.c: New test. ++ ++2015-04-07 Yvan Roux ++ ++ Backport from trunk r218658. ++ 2014-12-12 Zhenqiang Chen ++ ++ * gcc.dg/pr64007.c: New test. ++ ++2015-04-02 Yvan Roux ++ ++ Backport from trunk r218961. ++ 2014-12-19 Alan Lawrence ++ ++ * gcc.target/aarch64/eon_1.c: New test. ++ ++2015-04-02 Yvan Roux ++ ++ Backport from trunk r218530. ++ 2014-12-09 Alan Lawrence ++ ++ * gcc.target/aarch64/vabs_intrinsic_2.c: New test. ++ ++2015-04-02 Yvan Roux ++ ++ Backport from trunk r218868. ++ 2014-12-18 Alan Lawrence ++ ++ * gcc.target/aarch64/ushr64_1.c: Remove scan-assembler "ushr...64". ++ ++2015-04-02 Yvan Roux ++ ++ Backport from trunk r218855. ++ 2014-12-18 Bin Cheng ++ ++ PR tree-optimization/62178 ++ * gcc.target/aarch64/pr62178.c: New test. ++ ++2015-03-24 Maxim Kuvyrkov ++ ++ Backport from trunk r220808. ++ * gcc.dg/pr64935-1.c, gcc.dg/pr64935-2.c: New tests. ++ ++2015-03-18 Michael Collison ++ ++ Backport from trunk r218012. ++ 2014-11-24 Kyrylo Tkachov ++ ++ * gcc.target/aarch64/fuse_adrp_add_1.c: New test. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-03-10 Michael Collison ++ ++ Backport from trunk r218503. ++ 2014-12-08 Sandra Loosemore ++ ++ * gcc.target/aarch64/bics_4.c: New. ++ ++2015-03-10 Michael Collison ++ ++ Backport from trunk r218486. ++ 2014-12-08 Alex Velenko ++ ++ * gcc.target/aarch64/bics_3.c : New testcase. ++ ++2015-03-10 Michael Collison ++ ++ Backport from trunk r217938. ++ 2014-11-21 Jiong Wang ++ ++ * gcc.target/aarch64/vect_ctz_1.c: New testcase. ++ ++2015-03-10 Michael Collison ++ ++ Backport from trunk r217852. ++ 2014-11-20 Tejas Belagod ++ ++ * gcc.target/aarch64/symbol-range.c: New. ++ * gcc.target/aarch64/symbol-range-tiny.c: New. ++ ++2015-03-06 Christophe Lyon ++ ++ Backport from trunk r218463, r219764, r219765, r219767, r219914, ++ r219917, r219918, r219919, r219920, r219921, r219922, r219930, ++ r219931, r219932, r219934, r219937, r219938, r219939, r219940, ++ r219941, r219942, r219943, r219944, r219945, r219946, r219947, ++ r219948, r219949, r219950, r220117, r220118, r220119, r220121, ++ r220122, r220123, r220124, r220126, r220353. ++ ++ 2015-02-02 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h ++ (_ARM_FPSRC): Add DN and AHP fields. ++ (clean_results): Force DN=1 on AArch64. ++ * gcc.target/aarch64/advsimd-intrinsics/binary_op_no64.inc: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vhadd.c: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vhsub.c: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vmax.c: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vmin.c: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vrhadd.c: New file. ++ ++ 2015-01-26 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vpaddl.c: New file. ++ ++ 2015-01-26 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vpadal.c: New file. ++ ++ 2015-01-26 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vmvn.c: New file. ++ ++ 2015-01-26 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vmovl.c: New file. ++ ++ 2015-01-26 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vpXXX.inc: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vpadd.c: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vpmax.c: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vpmin.c: New file. ++ ++ 2015-01-26 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vmlX_n.inc: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vmla_n.c: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vmls_n.c: New file. ++ ++ 2015-01-26 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vXXXhn.inc: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vraddhn.c: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vrsubhn.c: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vsubhn.c: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vaddhn.c: Use code from ++ vXXXhn.inc. ++ ++ 2015-01-21 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vqdmull_n.c: New file. ++ ++ 2015-01-21 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vqdmull_lane.c: New file. ++ ++ 2015-01-21 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vqdmull.c: New file. ++ ++ 2015-01-21 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vqdmulh_n.c: New file. ++ ++ 2015-01-21 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vqdmulh_lane.c: New file. ++ ++ 2015-01-21 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vqdmulh.c: New file. ++ ++ 2015-01-21 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vmull_n.c: New file. ++ ++ 2015-01-21 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vmull_lane.c: New file. ++ ++ 2015-01-21 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vmull.c: New file. ++ ++ 2015-01-21 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vmul_n.c: New file. ++ ++ 2015-01-21 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vmul_lane.c: New file. ++ ++ 2015-01-21 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vmovn.c: New file. ++ ++ 2015-01-21 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vXXXw.inc: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vsubw.c: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vaddw.c: Use code from ++ vXXXw.inc. ++ ++ 2015-01-21 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vXXXl.inc: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vsubl.c: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vaddl.c: Use code from ++ vXXXl.inc. ++ ++ 2015-01-21 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vsXi_n.inc: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vsli_n.c: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vsri_n.c: New file. ++ ++ 2015-01-21 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vqdmlXl_n.inc: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vqdmlal_n.c: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vqdmlsl_n.c: New file. ++ ++ 2015-01-21 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vqdmlXl_lane.inc: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vqdmlal_lane.c: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vqdmlsl_lane.c: New file. ++ ++ 2015-01-21 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vqdmlXl.inc: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vqdmlal.c: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vqdmlsl.c: New file. ++ ++ 2015-01-20 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vmlXl_n.inc: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vmlal_n.c: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vmlsl_n.c: New file. ++ ++ 2015-01-20 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vmlXl_lane.inc: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vmlal_lane.c: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vmlsl_lane.c: New file. ++ ++ 2015-01-20 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vmlXl.inc: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vmlal.c: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vmlsl.c: New file. ++ ++ 2015-01-20 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vshuffle.inc: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vtrn.c: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vuzp.c: Use code from ++ vshuffle.inc. ++ * gcc.target/aarch64/advsimd-intrinsics/vzip.c: Use code from ++ vshuffle.inc. ++ ++ 2015-01-20 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vmlX_lane.inc: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vmla_lane.c: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vmls_lane.c: New file. ++ ++ 2015-01-20 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vmlX.inc: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vmla.c: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vmls.c: New file. ++ ++ 2015-01-20 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vldX_dup.c: New file. ++ ++ 2015-01-16 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vld1_lane.c: New file. ++ ++ 2015-01-16 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h (CHECK): ++ Add trace. ++ (CHECK_FP): Likewise. ++ (CHECK_CUMULATIVE_SAT): Likewise. ++ ++ 2015-01-16 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h ++ (Set_Neon_Cumulative_Sat): Add parameter. ++ (__set_neon_cumulative_sat): Support new parameter. ++ * gcc.target/aarch64/advsimd-intrinsics/binary_sat_op.inc ++ (TEST_BINARY_SAT_OP1): Call Set_Neon_Cumulative_Sat with new ++ argument. ++ * gcc.target/aarch64/advsimd-intrinsics/unary_sat_op.inc ++ (TEST_UNARY_SAT_OP1): Call Set_Neon_Cumulative_Sat with new ++ argument. ++ ++ 2014-12-07 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vaddhn.c: Actually execute ++ the test. ++ * gcc.target/aarch64/advsimd-intrinsics/vaddl.c: Actually execute ++ the test. Fix expected output. ++ * gcc.target/aarch64/advsimd-intrinsics/vaddw.c: Likewise. ++ ++2015-03-06 Christophe Lyon ++ ++ Backport from trunk r217707. ++ 2014-11-18 Christophe Lyon ++ ++ * gcc.target/arm/neon/vbicQs16.c: Regenerate. ++ * gcc.target/arm/neon/vbicQs32.c: Likewise. ++ * gcc.target/arm/neon/vbicQs64.c: Likewise. ++ * gcc.target/arm/neon/vbicQs8.c: Likewise. ++ * gcc.target/arm/neon/vbicQu16.c: Likewise. ++ * gcc.target/arm/neon/vbicQu32.c: Likewise. ++ * gcc.target/arm/neon/vbicQu64.c: Likewise. ++ * gcc.target/arm/neon/vbicQu8.c: Likewise. ++ * gcc.target/arm/neon/vbics16.c: Likewise. ++ * gcc.target/arm/neon/vbics32.c: Likewise. ++ * gcc.target/arm/neon/vbics64.c: Likewise. ++ * gcc.target/arm/neon/vbics8.c: Likewise. ++ * gcc.target/arm/neon/vbicu16.c: Likewise. ++ * gcc.target/arm/neon/vbicu32.c: Likewise. ++ * gcc.target/arm/neon/vbicu64.c: Likewise. ++ * gcc.target/arm/neon/vbicu8.c: Likewise. ++ * gcc.target/arm/neon/vornQs16.c: Likewise. ++ * gcc.target/arm/neon/vornQs32.c: Likewise. ++ * gcc.target/arm/neon/vornQs64.c: Likewise. ++ * gcc.target/arm/neon/vornQs8.c: Likewise. ++ * gcc.target/arm/neon/vornQu16.c: Likewise. ++ * gcc.target/arm/neon/vornQu32.c: Likewise. ++ * gcc.target/arm/neon/vornQu64.c: Likewise. ++ * gcc.target/arm/neon/vornQu8.c: Likewise. ++ * gcc.target/arm/neon/vorns16.c: Likewise. ++ * gcc.target/arm/neon/vorns32.c: Likewise. ++ * gcc.target/arm/neon/vorns64.c: Likewise. ++ * gcc.target/arm/neon/vorns8.c: Likewise. ++ * gcc.target/arm/neon/vornu16.c: Likewise. ++ * gcc.target/arm/neon/vornu32.c: Likewise. ++ * gcc.target/arm/neon/vornu64.c: Likewise. ++ * gcc.target/arm/neon/vornu8.c: Likewise. ++ ++2015-03-06 Christophe Lyon ++ ++ Backport from trunk r217706. ++ 2014-11-18 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vcls.c: New test. ++ * gcc.target/aarch64/advsimd-intrinsics/vcnt.c: New test. ++ * gcc.target/aarch64/advsimd-intrinsics/vcombine.c: New test. ++ * gcc.target/aarch64/advsimd-intrinsics/vcreate.c: New test. ++ * gcc.target/aarch64/advsimd-intrinsics/vcvt.c: New test. ++ * gcc.target/aarch64/advsimd-intrinsics/vdup_lane.c: New test. ++ * gcc.target/aarch64/advsimd-intrinsics/vext.c: New test. ++ * gcc.target/aarch64/advsimd-intrinsics/vget_high.c: New test. ++ * gcc.target/aarch64/advsimd-intrinsics/vget_low.c: New test. ++ ++2015-03-06 Christophe Lyon ++ ++ Backport from trunk r216663. ++ 2014-10-24 Jiong Wang ++ ++ * lib/target-supports.exp ++ (check_effective_target_arm_crypto_ok_nocache): Remove declaration for ++ vaeseq_u8. ++ (check_effective_target_arm_neon_fp16_ok_nocache): Remove declaration ++ for vcvt_f16_f32. ++ (check_effective_target_arm_neonv2_ok_nocache): Remove declaration for ++ vfma_f32. ++ ++2015-03-05 Yvan Roux ++ ++ Backport from trunk r218115, r218733, r218746, r220491. ++ 2015-02-06 Sebastian Pop ++ Brian Rzycki ++ ++ PR tree-optimization/64878 ++ * testsuite/gcc.dg/tree-ssa/ssa-dom-thread-8.c: New. ++ ++ 2014-12-15 Richard Biener ++ ++ PR middle-end/64246 ++ * gnat.dg/opt46.adb: New testcase. ++ * gnat.dg/opt46.ads: Likewise. ++ * gnat.dg/opt46_pkg.adb: Likewise. ++ * gnat.dg/opt46_pkg.ads: Likewise. ++ ++ 2014-12-15 Richard Biener ++ ++ PR tree-optimization/64284 ++ * gcc.dg/torture/pr64284.c: New testcase. ++ ++ 2014-11-27 Richard Biener ++ ++ PR tree-optimization/64083 ++ * gcc.dg/torture/pr64083.c: New testcase. ++ ++2015-03-05 Yvan Roux ++ ++ Backport from trunk r220860. ++ 2015-02-20 Kyrylo Tkachov ++ ++ * gcc.target/aarch64/sisd-shft-neg_1.c: New test. ++ ++2015-03-04 Prathamesh Kulkarni ++ ++ Backport from trunk r215722. ++ 2014-09-30 James Greenhalgh ++ ++ * gcc.target/aarch64/simd/vqdmullh_laneq_s16.c: New. ++ * gcc.target/aarch64/simd/vqdmulls_laneq_s32.c: Likewise. ++ * gcc.target/aarch64/simd/vqdmulls_lane_s32.c: Fix return type. ++ * gcc.target/aarch64/scalar_intrinsics.c (test_vqdmulls_s32): Fix ++ return type. ++ ++2015-03-04 Prathamesh Kulkarni ++ ++ Backport from trunk r215612. ++ 2014-09-25 James Greenhalgh ++ ++ * gcc.target/aarch64/simd/vqshlb_1.c: New. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-02-10 Michael Collison ++ ++ Backport from trunk r217185, r217186. ++ 2014-11-06 Hale Wang ++ ++ * gcc.target/arm/small-multiply-m0-1.c: New test for ++ * gcc.target/arm/small-multiply-m0-2.c: Likewise. ++ * gcc.target/arm/small-multiply-m0-3.c: Likewise. ++ * gcc.target/arm/small-multiply-m0plus-1.c: New test for ++ * gcc.target/arm/small-multiply-m0plus-2.c: Likewise. ++ * gcc.target/arm/small-multiply-m0plus-3.c: Likewise. ++ * gcc.target/arm/small-multiply-m1-1.c: New test for ++ * gcc.target/arm/small-multiply-m1-2.c: Likewise. ++ * gcc.target/arm/small-multiply-m1-3.c: Likewise. ++ ++2015-02-10 Michael Collison ++ ++ Backport from trunk r217118. ++ 2014-11-05 Alex Velenko ++ ++ * gcc.dg/asr-div1.c: New testcase. ++ ++2015-02-10 Michael Collison ++ ++ Backport from trunk r217228. ++ 2014-11-07 Jiong Wang ++ ++ * gcc.dg/tree-ssa/20040204-1.c: Add aarch64*-*-* to the list. ++ ++2015-02-10 Michael Collison ++ ++ Backport from trunk r219583. ++ 2015-01-14 Kyrylo Tkachov ++ ++ PR target/64460 ++ * gcc.target/arm/pr64460_1.c: New test. ++ ++2015-02-10 Michael Collison ++ ++ Backport from trunk r217431. ++ 2014-11-12 Jiong Wang ++ ++ * gcc.target/aarch64/lr_free_1.c: New testcase for -fomit-frame-pointer. ++ * gcc.target/aarch64/lr_free_2.c: New testcase for leaf ++ -fno-omit-frame-pointer. ++ ++2015-02-09 Prathamesh Kulkarni ++ ++ Backport from trunk r216675. ++ 2014-10-24 Jiong Wang ++ ++ * gcc.target/arm/aapcs/abitest.h: Declare memcpy. ++ ++2015-02-04 Christophe Lyon ++ ++ Backport from trunk r216640-r216661. ++ 2014-10-24 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vuzp.c: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vzip.c: Likewise. ++ ++ 2014-10-24 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vmul.c: New file. ++ ++ 2014-10-24 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vldX_lane.c: New file. ++ ++ 2014-10-24 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vldX.c: New file. ++ ++ 2014-10-24 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vld1_dup.c: New file. ++ ++ 2014-10-24 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vdup-vmov.c: New file. ++ ++ 2014-10-24 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vclz.c: New file. ++ ++ 2014-10-24 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vbsl.c: New file. ++ ++ 2014-10-24 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vaddw.c: New file. ++ ++ 2014-10-24 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vaddl.c: New file. ++ ++ 2014-10-24 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vaddhn.c: New file. ++ ++ 2014-10-24 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vabdl.c: New file. ++ ++ 2014-10-24 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vabd.c: New file. ++ ++ 2014-10-24 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vabal.c: New file. ++ ++ 2014-10-24 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/binary_sat_op.inc: New ++ file. ++ * gcc.target/aarch64/advsimd-intrinsics/vqadd.c: Likewise. ++ * gcc.target/aarch64/advsimd-intrinsics/vqsub.c: Likewise. ++ ++ 2014-10-24 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/unary_sat_op.inc: New ++ file. ++ * gcc.target/aarch64/advsimd-intrinsics/vqabs.c: Likewise. ++ * gcc.target/aarch64/advsimd-intrinsics/vqneg.c: Likewise. ++ ++ 2014-10-24 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/cmp_fp_op.inc: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vcage.c: Likewise. ++ * gcc.target/aarch64/advsimd-intrinsics/vcagt.c: Likewise. ++ * gcc.target/aarch64/advsimd-intrinsics/vcale.c: Likewise. ++ * gcc.target/aarch64/advsimd-intrinsics/vcalt.c: Likewise. ++ ++ 2014-10-24 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/cmp_op.inc: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vceq.c: Likewise. ++ * gcc.target/aarch64/advsimd-intrinsics/vcge.c: Likewise. ++ * gcc.target/aarch64/advsimd-intrinsics/vcgt.c: Likewise. ++ * gcc.target/aarch64/advsimd-intrinsics/vcle.c: Likewise. ++ * gcc.target/aarch64/advsimd-intrinsics/vclt.c: Likewise. ++ ++ 2014-10-24 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/binary_op.inc: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vadd.c: Likewise. ++ * gcc.target/aarch64/advsimd-intrinsics/vand.c: Likewise. ++ * gcc.target/aarch64/advsimd-intrinsics/vbic.c: Likewise. ++ * gcc.target/aarch64/advsimd-intrinsics/veor.c: Likewise. ++ * gcc.target/aarch64/advsimd-intrinsics/vorn.c: Likewise. ++ * gcc.target/aarch64/advsimd-intrinsics/vorr.c: Likewise. ++ * gcc.target/aarch64/advsimd-intrinsics/vsub.c: Likewise. ++ ++ 2014-10-24 Christophe Lyon ++ ++ * gcc.target/aarch64/advsimd-intrinsics/unary_op.inc: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/vabs.c: Likewise. ++ * gcc.target/aarch64/advsimd-intrinsics/vneg.c: Likewise. ++ ++ 2014-10-24 Christophe Lyon ++ ++ * gcc.target/arm/README.advsimd-intrinsics: New file. ++ * gcc.target/aarch64/advsimd-intrinsics/README: Likewise. ++ * gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h: Likewise. ++ * gcc.target/aarch64/advsimd-intrinsics/compute-ref-data.h: ++ Likewise. ++ * gcc.target/aarch64/advsimd-intrinsics/advsimd-intrinsics.exp: ++ Likewise. ++ * gcc.target/aarch64/advsimd-intrinsics/vaba.c: Likewise. ++ * gcc.target/aarch64/advsimd-intrinsics/vld1.c: Likewise. ++ * gcc.target/aarch64/advsimd-intrinsics/vshl.c: Likewise. ++ ++2015-02-05 Prathamesh Kulkarni ++ ++ Backport from trunk r217230. ++ * gcc.target/arm/lp1243022.c (xhci_test_trb_in_td): Add return type. ++ (xhci_check_trb_in_td_math): Likewise. ++ ++ 2014-11-07 Jiong Wang ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2015-01-14 Yvan Roux ++ ++ Backport from trunk r218451. ++ 2014-12-06 James Greenhalgh ++ Sebastian Pop ++ Brian Rzycki ++ ++ PR tree-optimization/54742 ++ * gcc.dg/tree-ssa/ssa-dom-thread-6.c: New test. ++ * gcc.dg/tree-ssa/ssa-dom-thread-7.c: New test. ++ ++2015-01-12 Yvan Roux ++ ++ Backport from trunk r211075. ++ 2014-04-30 Alan Lawrence ++ ++ gcc.target/arm/simd/vrev16p8_1.c: New file. ++ gcc.target/arm/simd/vrev16qp8_1.c: New file. ++ gcc.target/arm/simd/vrev16qs8_1.c: New file. ++ gcc.target/arm/simd/vrev16qu8_1.c: New file. ++ gcc.target/arm/simd/vrev16s8_1.c: New file. ++ gcc.target/arm/simd/vrev16u8_1.c: New file. ++ gcc.target/arm/simd/vrev32p16_1.c: New file. ++ gcc.target/arm/simd/vrev32p8_1.c: New file. ++ gcc.target/arm/simd/vrev32qp16_1.c: New file. ++ gcc.target/arm/simd/vrev32qp8_1.c: New file. ++ gcc.target/arm/simd/vrev32qs16_1.c: New file. ++ gcc.target/arm/simd/vrev32qs8_1.c: New file. ++ gcc.target/arm/simd/vrev32qu16_1.c: New file. ++ gcc.target/arm/simd/vrev32qu8_1.c: New file. ++ gcc.target/arm/simd/vrev32s16_1.c: New file. ++ gcc.target/arm/simd/vrev32s8_1.c: New file. ++ gcc.target/arm/simd/vrev32u16_1.c: New file. ++ gcc.target/arm/simd/vrev32u8_1.c: New file. ++ gcc.target/arm/simd/vrev64f32_1.c: New file. ++ gcc.target/arm/simd/vrev64p16_1.c: New file. ++ gcc.target/arm/simd/vrev64p8_1.c: New file. ++ gcc.target/arm/simd/vrev64qf32_1.c: New file. ++ gcc.target/arm/simd/vrev64qp16_1.c: New file. ++ gcc.target/arm/simd/vrev64qp8_1.c: New file. ++ gcc.target/arm/simd/vrev64qs16_1.c: New file. ++ gcc.target/arm/simd/vrev64qs32_1.c: New file. ++ gcc.target/arm/simd/vrev64qs8_1.c: New file. ++ gcc.target/arm/simd/vrev64qu16_1.c: New file. ++ gcc.target/arm/simd/vrev64qu32_1.c: New file. ++ gcc.target/arm/simd/vrev64qu8_1.c: New file. ++ gcc.target/arm/simd/vrev64s16_1.c: New file. ++ gcc.target/arm/simd/vrev64s32_1.c: New file. ++ gcc.target/arm/simd/vrev64s8_1.c: New file. ++ gcc.target/arm/simd/vrev64u16_1.c: New file. ++ gcc.target/arm/simd/vrev64u32_1.c: New file. ++ gcc.target/arm/simd/vrev64u8_1.c: New file. ++ ++2015-01-11 Yvan Roux ++ ++ Backport from trunk r209620. ++ 2014-04-22 Vidya Praveen ++ ++ * gcc.target/aarch64/cvtf_1.c: New. ++ ++2015-01-11 Yvan Roux ++ ++ Backport from trunk r217362. ++ 2014-11-11 James Greenhalgh ++ ++ * gcc.target/aarch64/vbslq_f64_1.c: New. ++ * gcc.target/aarch64/vbslq_f64_2.c: Likewise. ++ * gcc.target/aarch64/vbslq_u64_1.c: Likewise. ++ * gcc.target/aarch64/vbslq_u64_2.c: Likewise. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r217742. ++ 2014-11-18 James Greenhalgh ++ ++ PR target/63937 ++ * gcc.dg/memset-2.c: New. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r216638. ++ 2014-10-24 Christophe Lyon ++ ++ * lib/wrapper.exp ({tool}_maybe_build_wrapper): Clear ++ wrap_compile_flags before setting it. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r216544. ++ 2014-10-22 Jiong Wang ++ ++ * gcc.target/aarch64/pic-constantpool1.c: Add explicit declaration. ++ * gcc.target/aarch64/pic-symrefplus.c: Likewise. ++ * gcc.target/aarch64/reload-valid-spoff.c: Likewise. ++ * gcc.target/aarch64/vect.x: Likewise. ++ * gcc.target/aarch64/vect-ld1r.x: Add return type. ++ * gcc.target/aarch64/vect-fmax-fmin.c: Likewise. ++ * gcc.target/aarch64/vect-fp.c: Likewise. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r216543. ++ 2014-10-22 Jiong Wang ++ ++ * lib/compat.exp (compat-run): Remove "unresolved". ++ * lib/gcc-defs.exp (${tools}_check_compile): Update code logic for ++ unsupported testcase. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r216517. ++ 2014-10-21 Jiong Wang ++ ++ * gcc.target/arm/20031108-1.c (Proc_7): Add explicit declaration. ++ (Proc_1): Add return type. ++ * gcc.target/arm/cold-lc.c (show_stack): Add explict declaration. ++ * gcc.target/arm/neon-modes-2.c (foo): Likewise. ++ * gcc.target/arm/pr43920-2.c (lseek): Likewise. ++ * gcc.target/arm/pr44788.c (foo): Likewise. ++ * gcc.target/arm/pr55642.c (abs): Likewise. ++ * gcc.target/arm/pr58784.c (f): Likewise. ++ * gcc.target/arm/pr60650.c (foo1, foo2): Likewise. ++ * gcc.target/arm/vfp-ldmdbs.c (bar): Likewise. ++ * gcc.target/arm/vfp-ldmias.c (bar): Likewise. ++ * gcc.target/arm/pr60650-2.c (fn1, fn2): Add return type and add type ++ for local variables. ++ * lib/target-supports.exp ++ (check_effective_target_arm_crypto_ok_nocache): Add declaration for ++ vaeseq_u8. ++ (check_effective_target_arm_neon_fp16_ok_nocache): Add declaration for ++ vcvt_f16_f32. ++ (check_effective_target_arm_neonv2_ok_nocache): Add declaration for ++ vfma_f32. ++ * gcc.target/arm/pr51968.c: Add -Wno-implicit-function-declaration. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r215071. ++ 2014-09-09 Alan Lawrence ++ ++ * gcc.target/aarch64/simd/int_comparisons_1.c: Tighten regexp. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r215540. ++ 2014-09-24 Zhenqiang Chen ++ ++ * gcc.target/arm/pr63210.c: New test. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r215475. ++ 2014-09-22 Alan Lawrence ++ ++ * gcc.dg/vect/vect-reduc-or_1.c: New test. ++ * gcc.dg/vect/vect-reduc-or_2.c: Likewise. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r215473. ++ 2014-09-22 Alan Lawrence ++ ++ * lib/target-supports.exp (check_effective_target_whole_vector_shift): ++ New. ++ ++ * gcc.dg/vect/vect-reduc-mul_1.c: New test. ++ * gcc.dg/vect/vect-reduc-mul_2.c: New test. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r215177. ++ 2014-09-11 Alan Lawrence ++ ++ * gcc.target/aarch64/vset_lane_1.c: New test. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r215129. ++ 2014-09-10 Alan Lawrence ++ ++ * gcc.target/aarch64/vstN_1.c: New test. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r215126. ++ 2014-09-10 Alan Lawrence ++ ++ * gcc.target/aarch64/vldN_lane_1.c: New test. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r215078. ++ 2014-09-09 Alan Lawrence ++ ++ * gcc.target/aarch64/vldN_dup_1.c: New test. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r215077. ++ 2014-09-09 Alan Lawrence ++ ++ * gcc.target/aarch64/vld1-vst1_1.c: Rewrite to test all variants. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r215072. ++ 2014-09-09 Alan Lawrence ++ ++ * gcc.target/aarch64/vldN_1.c: New test. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r215047. ++ 2014-09-09 Tony Wang ++ ++ * gcc.target/arm/xordi3-opt.c: Disable this ++ test case for thumb1 target. ++ * gcc.target/arm/iordi3-opt.c: Ditto. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r215046. ++ 2014-09-09 Kyrylo Tkachov ++ ++ PR target/61749 ++ * gcc.target/aarch64/vqdml_lane_intrinsics-bad_1.c: New test. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r214950. ++ 2014-09-05 Alan Lawrence ++ ++ * gcc.target/aarch64/vget_high_1.c: New test. ++ * gcc.target/aarch64/vget_low_1.c: Likewise. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r214948. ++ 2014-09-05 Alan Lawrence ++ ++ * gcc.target/aarch64/simd/int_comparisons.x: New file. ++ * gcc.target/aarch64/simd/int_comparisons_1.c: New test. ++ * gcc.target/aarch64/simd/int_comparisons_2.c: Ditto. ++ ++2014-12-04 Yvan Roux ++ ++ Backport from trunk r213382. ++ 2014-07-31 James Greenhalgh ++ ++ * gcc.target/aarch64/scalar_intrinsics.c (test_vpaddd_f64): New. ++ (test_vpaddd_s64): Likewise. ++ (test_vpaddd_s64): Likewise. ++ * gcc.target/aarch64/simd/vpaddd_f64: New. ++ * gcc.target/aarch64/simd/vpaddd_s64: New. ++ * gcc.target/aarch64/simd/vpaddd_u64: New. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-10-08 Yvan Roux ++ ++ Backport from trunk r214825, r214826, r215085. ++ 2014-09-09 Kyrylo Tkachov ++ ++ * gcc.target/arm/vect-lceilf_1.c: Make input and output arrays global ++ and 16-byte aligned. ++ * gcc.target/arm/vect-lfloorf_1.c: Likewise. ++ * gcc.target/arm/vect-lroundf_1.c: Likewise. ++ * gcc.target/arm/vect-rounding-btruncf.c: Likewise. ++ * gcc.target/arm/vect-rounding-ceilf.c: Likewise. ++ * gcc.target/arm/vect-rounding-floorf.c: Likewise. ++ * gcc.target/arm/vect-rounding-roundf.c: Likewise. ++ ++ 2014-09-02 Kyrylo Tkachov ++ ++ PR target/62275 ++ * gcc.target/arm/vect-lceilf_1.c: New test. ++ * gcc.target/arm/vect-lfloorf_1.c: Likewise. ++ * gcc.target/arm/vect-lroundf_1.c: Likewise. ++ ++ 2014-09-02 Kyrylo Tkachov ++ ++ PR target/62275 ++ * gcc.target/arm/lceil-vcvt_1.c: New test. ++ * gcc.target/arm/lfloor-vcvt_1.c: Likewise. ++ * gcc.target/arm/lround-vcvt_1.c: Likewise. ++ ++2014-10-06 Venkataramanan Kumar ++ ++ Backport from trunk r214943. ++ 2014-09-05 Alan Lawrence ++ ++ * gcc.target/aarch64/simd/vrbit_1.c: New test. ++ ++2014-10-06 Yvan Roux ++ ++ Backport from trunk r215385. ++ 2014-09-19 James Greenhalgh ++ ++ * gcc.dg/ssp-3.c: New. ++ * gcc.dg/ssp-4.c: Likewise. ++ ++2014-10-06 Yvan Roux ++ ++ Backport from trunk r215136. ++ 2014-09-10 Xinliang David Li ++ ++ PR target/63209 ++ * gcc.c-torture/execute/pr63209.c: New test. ++ ++2014-10-06 Yvan Roux ++ ++ Backport from trunk r215067. ++ 2014-09-09 Jiong Wang ++ ++ * gcc.target/arm/vect-copysignf.c: New testcase. ++ ++2014-10-03 Yvan Roux ++ ++ Backport from trunk r215050, r215051, r215052, r215053, r215054. ++ 2014-09-09 Kyrylo Tkachov ++ ++ * gcc.target/arm/vfp-1.c: Updated expected assembly. ++ ++ 2014-09-09 Kyrylo Tkachov ++ ++ * gcc.target/arm/vfp-1.c: Updated expected assembly. ++ ++ 2014-09-09 Kyrylo Tkachov ++ ++ * gcc.target/arm/vfp-1.c: Updated expected assembly. ++ ++ 2014-09-09 Kyrylo Tkachov ++ ++ * gcc.target/arm/vfp-1.c: Updated expected assembly. ++ ++ 2014-09-09 Kyrylo Tkachov ++ ++ * gcc.target/arm/pr51835.c: Update expected assembly. ++ * gcc.target/arm/vfp-1.c: Likewise. ++ * gcc.target/arm/vfp-ldmdbd.c: Likewise. ++ * gcc.target/arm/vfp-ldmdbs.c: Likewise. ++ * gcc.target/arm/vfp-ldmiad.c: Likewise. ++ * gcc.target/arm/vfp-ldmias.c: Likewise. ++ * gcc.target/arm/vfp-stmdbd.c: Likewise. ++ * gcc.target/arm/vfp-stmdbs.c: Likewise. ++ * gcc.target/arm/vfp-stmiad.c: Likewise. ++ * gcc.target/arm/vfp-stmias.c: Likewise. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-09-03 Yvan Roux ++ ++ Backport from trunk r214526. ++ 2014-08-26 Joseph Myers ++ ++ PR target/60606 ++ PR target/61330 ++ * gcc.dg/torture/pr60606-1.c, gcc.target/arm/pr60606-2.c, ++ gcc.target/arm/pr60606-3.c, gcc.target/arm/pr60606-4.c: New tests. ++ ++2014-09-03 Yvan Roux ++ ++ Backport from trunk r213659. ++ 2014-08-06 Alan Lawrence ++ ++ * gcc.target/aarch64/vdup_n_2.c: New test. ++ ++2014-08-26 Yvan Roux ++ ++ Backport from trunk r213701. ++ 2014-08-07 Kyrylo Tkachov ++ ++ * gcc.dg/pr61756.c: Remove arm-specific dg-options. ++ ++2014-08-26 Yvan Roux ++ ++ Backport from trunk r213488, r213489. ++ 2014-08-01 Jiong Wang ++ ++ * gcc.target/aarch64/legitimize_stack_var_before_reload_1.c: New ++ testcase. ++ ++2014-08-22 Yvan Roux ++ ++ Backport from trunk r212927. ++ 2014-07-23 Jiong Wang ++ ++ * gcc.dg/ira-shrinkwrap-prep-1.c (target): Add arm_nothumb. ++ * gcc.dg/ira-shrinkwrap-prep-2.c (target): Likewise. ++ * gcc.dg/pr10474.c (target): Likewise. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-08-11 Yvan Roux ++ ++ Backport from trunk r213555. ++ 2014-08-04 Kyrylo Tkachov ++ ++ PR target/61713 ++ * gcc.dg/pr61756.c: New test. ++ ++2014-08-11 Yvan Roux ++ ++ Backport from trunk r213376. ++ 2014-07-31 Charles Baylis ++ ++ PR target/61948 ++ * gcc.target/arm/pr61948.c: New test case. ++ ++2014-08-11 Yvan Roux ++ ++ Backport from trunk r212959, r212976, r212999, r213000. ++ 2014-07-24 Jiong Wang ++ ++ * gcc.target/aarch64/test_frame_1.c: Match optimized instruction ++ sequences. ++ * gcc.target/aarch64/test_frame_2.c: Likewise. ++ * gcc.target/aarch64/test_frame_4.c: Likewise. ++ * gcc.target/aarch64/test_frame_6.c: Likewise. ++ * gcc.target/aarch64/test_frame_7.c: Likewise. ++ * gcc.target/aarch64/test_frame_8.c: Likewise. ++ * gcc.target/aarch64/test_frame_10.c: Likewise. ++ ++ 2014-07-24 Jiong Wang ++ ++ * gcc.target/aarch64/test_frame_1.c: Match optimized instruction ++ sequences. ++ * gcc.target/aarch64/test_frame_10.c: Likewise. ++ * gcc.target/aarch64/test_frame_2.c: Likewise. ++ * gcc.target/aarch64/test_frame_4.c: Likewise. ++ * gcc.target/aarch64/test_frame_6.c: Likewise. ++ * gcc.target/aarch64/test_frame_7.c: Likewise. ++ * gcc.target/aarch64/test_frame_8.c: Likewise. ++ * gcc.target/aarch64/test_fp_attribute_1.c: Likewise. ++ ++ 2014-07-24 Jiong Wang ++ ++ * gcc.target/aarch64/test_frame_12.c: Match optimized instruction ++ sequences. ++ ++ 2014-07-23 Jiong Wang ++ ++ * gcc.target/aarch64/test_frame_common.h: New file. ++ * gcc.target/aarch64/test_frame_1.c: Likewise. ++ * gcc.target/aarch64/test_frame_2.c: Likewise. ++ * gcc.target/aarch64/test_frame_3.c: Likewise. ++ * gcc.target/aarch64/test_frame_4.c: Likewise. ++ * gcc.target/aarch64/test_frame_5.c: Likewise. ++ * gcc.target/aarch64/test_frame_6.c: Likewise. ++ * gcc.target/aarch64/test_frame_7.c: Likewise. ++ * gcc.target/aarch64/test_frame_8.c: Likewise. ++ * gcc.target/aarch64/test_frame_9.c: Likewise. ++ * gcc.target/aarch64/test_frame_10.c: Likewise. ++ * gcc.target/aarch64/test_frame_11.c: Likewise. ++ * gcc.target/aarch64/test_frame_12.c: Likewise. ++ * gcc.target/aarch64/test_frame_13.c: Likewise. ++ * gcc.target/aarch64/test_frame_14.c: Likewise. ++ * gcc.target/aarch64/test_frame_15.c: Likewise. ++ ++2014-08-10 Yvan Roux ++ ++ Backport from trunk r212023, r212024. ++ 2014-06-26 Vidya Praveen ++ ++ * gcc.dg/inline-22.c: Add bind_pic_locally. ++ * gcc.dg/inline_4.c: Ditto. ++ * gcc.dg/fail_always_inline.c: Ditto. ++ * g++.dg/ipa/devirt-25.C: Ditto. ++ ++ 2014-06-26 Vidya Praveen ++ ++ * lib/target-support.exp (bind_pic_locally): Save the flags to ++ 'flags_to_postpone' instead of appending to 'flags'. ++ * lib/gcc.exp (gcc_target_compile): Append board_info's multilib_flags ++ with flags_to_postpone and revert after target_compile. ++ * lib/g++.exp (g++_target_compile): Ditto. ++ * lib/gfortran.exp (gfortran_target_compile): Ditto. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-07-17 Yvan Roux ++ ++ Backport from trunk r211887. ++ 2014-06-23 James Greenhalgh ++ ++ * gcc.target/aarch64/scalar_shift_1.c: Fix expected assembler. ++ ++2014-07-17 Yvan Roux ++ ++ Backport from trunk r211441. ++ 2014-06-11 Kyrylo Tkachov ++ ++ * gcc.target/aarch64/acle/acle.exp: New. ++ * gcc.target/aarch64/acle/crc32b.c: New test. ++ * gcc.target/aarch64/acle/crc32cb.c: Likewise. ++ * gcc.target/aarch64/acle/crc32cd.c: Likewise. ++ * gcc.target/aarch64/acle/crc32ch.c: Likewise. ++ * gcc.target/aarch64/acle/crc32cw.c: Likewise. ++ * gcc.target/aarch64/acle/crc32d.c: Likewise. ++ * gcc.target/aarch64/acle/crc32h.c: Likewise. ++ * gcc.target/aarch64/acle/crc32w.c: Likewise. ++ ++2014-07-17 Yvan Roux ++ ++ Backport from trunk r210153. ++ 2014-05-07 Alan Lawrence ++ ++ * gcc.target/aarch64/simd/vrev16p8_1.c: New file. ++ * gcc.target/aarch64/simd/vrev16p8.x: New file. ++ * gcc.target/aarch64/simd/vrev16qp8_1.c: New file. ++ * gcc.target/aarch64/simd/vrev16qp8.x: New file. ++ * gcc.target/aarch64/simd/vrev16qs8_1.c: New file. ++ * gcc.target/aarch64/simd/vrev16qs8.x: New file. ++ * gcc.target/aarch64/simd/vrev16qu8_1.c: New file. ++ * gcc.target/aarch64/simd/vrev16qu8.x: New file. ++ * gcc.target/aarch64/simd/vrev16s8_1.c: New file. ++ * gcc.target/aarch64/simd/vrev16s8.x: New file. ++ * gcc.target/aarch64/simd/vrev16u8_1.c: New file. ++ * gcc.target/aarch64/simd/vrev16u8.x: New file. ++ * gcc.target/aarch64/simd/vrev32p16_1.c: New file. ++ * gcc.target/aarch64/simd/vrev32p16.x: New file. ++ * gcc.target/aarch64/simd/vrev32p8_1.c: New file. ++ * gcc.target/aarch64/simd/vrev32p8.x: New file. ++ * gcc.target/aarch64/simd/vrev32qp16_1.c: New file. ++ * gcc.target/aarch64/simd/vrev32qp16.x: New file. ++ * gcc.target/aarch64/simd/vrev32qp8_1.c: New file. ++ * gcc.target/aarch64/simd/vrev32qp8.x: New file. ++ * gcc.target/aarch64/simd/vrev32qs16_1.c: New file. ++ * gcc.target/aarch64/simd/vrev32qs16.x: New file. ++ * gcc.target/aarch64/simd/vrev32qs8_1.c: New file. ++ * gcc.target/aarch64/simd/vrev32qs8.x: New file. ++ * gcc.target/aarch64/simd/vrev32qu16_1.c: New file. ++ * gcc.target/aarch64/simd/vrev32qu16.x: New file. ++ * gcc.target/aarch64/simd/vrev32qu8_1.c: New file. ++ * gcc.target/aarch64/simd/vrev32qu8.x: New file. ++ * gcc.target/aarch64/simd/vrev32s16_1.c: New file. ++ * gcc.target/aarch64/simd/vrev32s16.x: New file. ++ * gcc.target/aarch64/simd/vrev32s8_1.c: New file. ++ * gcc.target/aarch64/simd/vrev32s8.x: New file. ++ * gcc.target/aarch64/simd/vrev32u16_1.c: New file. ++ * gcc.target/aarch64/simd/vrev32u16.x: New file. ++ * gcc.target/aarch64/simd/vrev32u8_1.c: New file. ++ * gcc.target/aarch64/simd/vrev32u8.x: New file. ++ * gcc.target/aarch64/simd/vrev64f32_1.c: New file. ++ * gcc.target/aarch64/simd/vrev64f32.x: New file. ++ * gcc.target/aarch64/simd/vrev64p16_1.c: New file. ++ * gcc.target/aarch64/simd/vrev64p16.x: New file. ++ * gcc.target/aarch64/simd/vrev64p8_1.c: New file. ++ * gcc.target/aarch64/simd/vrev64p8.x: New file. ++ * gcc.target/aarch64/simd/vrev64qf32_1.c: New file. ++ * gcc.target/aarch64/simd/vrev64qf32.x: New file. ++ * gcc.target/aarch64/simd/vrev64qp16_1.c: New file. ++ * gcc.target/aarch64/simd/vrev64qp16.x: New file. ++ * gcc.target/aarch64/simd/vrev64qp8_1.c: New file. ++ * gcc.target/aarch64/simd/vrev64qp8.x: New file. ++ * gcc.target/aarch64/simd/vrev64qs16_1.c: New file. ++ * gcc.target/aarch64/simd/vrev64qs16.x: New file. ++ * gcc.target/aarch64/simd/vrev64qs32_1.c: New file. ++ * gcc.target/aarch64/simd/vrev64qs32.x: New file. ++ * gcc.target/aarch64/simd/vrev64qs8_1.c: New file. ++ * gcc.target/aarch64/simd/vrev64qs8.x: New file. ++ * gcc.target/aarch64/simd/vrev64qu16_1.c: New file. ++ * gcc.target/aarch64/simd/vrev64qu16.x: New file. ++ * gcc.target/aarch64/simd/vrev64qu32_1.c: New file. ++ * gcc.target/aarch64/simd/vrev64qu32.x: New file. ++ * gcc.target/aarch64/simd/vrev64qu8_1.c: New file. ++ * gcc.target/aarch64/simd/vrev64qu8.x: New file. ++ * gcc.target/aarch64/simd/vrev64s16_1.c: New file. ++ * gcc.target/aarch64/simd/vrev64s16.x: New file. ++ * gcc.target/aarch64/simd/vrev64s32_1.c: New file. ++ * gcc.target/aarch64/simd/vrev64s32.x: New file. ++ * gcc.target/aarch64/simd/vrev64s8_1.c: New file. ++ * gcc.target/aarch64/simd/vrev64s8.x: New file. ++ * gcc.target/aarch64/simd/vrev64u16_1.c: New file. ++ * gcc.target/aarch64/simd/vrev64u16.x: New file. ++ * gcc.target/aarch64/simd/vrev64u32_1.c: New file. ++ * gcc.target/aarch64/simd/vrev64u32.x: New file. ++ * gcc.target/aarch64/simd/vrev64u8_1.c: New file. ++ * gcc.target/aarch64/simd/vrev64u8.x: New file. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r210148, r210151, r210422. ++ 2014-05-14 Alan Lawrence ++ ++ * gcc.target/arm/simd/vtrnqf32_1.c: New file. ++ * gcc.target/arm/simd/vtrnqp16_1.c: New file. ++ * gcc.target/arm/simd/vtrnqp8_1.c: New file. ++ * gcc.target/arm/simd/vtrnqs16_1.c: New file. ++ * gcc.target/arm/simd/vtrnqs32_1.c: New file. ++ * gcc.target/arm/simd/vtrnqs8_1.c: New file. ++ * gcc.target/arm/simd/vtrnqu16_1.c: New file. ++ * gcc.target/arm/simd/vtrnqu32_1.c: New file. ++ * gcc.target/arm/simd/vtrnqu8_1.c: New file. ++ * gcc.target/arm/simd/vtrnf32_1.c: New file. ++ * gcc.target/arm/simd/vtrnp16_1.c: New file. ++ * gcc.target/arm/simd/vtrnp8_1.c: New file. ++ * gcc.target/arm/simd/vtrns16_1.c: New file. ++ * gcc.target/arm/simd/vtrns32_1.c: New file. ++ * gcc.target/arm/simd/vtrns8_1.c: New file. ++ * gcc.target/arm/simd/vtrnu16_1.c: New file. ++ * gcc.target/arm/simd/vtrnu32_1.c: New file. ++ * gcc.target/arm/simd/vtrnu8_1.c: New file. ++ ++ 2014-05-07 Alan Lawrence ++ ++ * gcc.target/aarch64/vtrns32.c: Expect zip[12] insn rather than trn[12]. ++ * gcc.target/aarch64/vtrnu32.c: Likewise. ++ * gcc.target/aarch64/vtrnf32.c: Likewise. ++ ++ 2014-05-07 Alan Lawrence ++ ++ * gcc.target/aarch64/simd/vtrnf32_1.c: New file. ++ * gcc.target/aarch64/simd/vtrnf32.x: New file. ++ * gcc.target/aarch64/simd/vtrnp16_1.c: New file. ++ * gcc.target/aarch64/simd/vtrnp16.x: New file. ++ * gcc.target/aarch64/simd/vtrnp8_1.c: New file. ++ * gcc.target/aarch64/simd/vtrnp8.x: New file. ++ * gcc.target/aarch64/simd/vtrnqf32_1.c: New file. ++ * gcc.target/aarch64/simd/vtrnqf32.x: New file. ++ * gcc.target/aarch64/simd/vtrnqp16_1.c: New file. ++ * gcc.target/aarch64/simd/vtrnqp16.x: New file. ++ * gcc.target/aarch64/simd/vtrnqp8_1.c: New file. ++ * gcc.target/aarch64/simd/vtrnqp8.x: New file. ++ * gcc.target/aarch64/simd/vtrnqs16_1.c: New file. ++ * gcc.target/aarch64/simd/vtrnqs16.x: New file. ++ * gcc.target/aarch64/simd/vtrnqs32_1.c: New file. ++ * gcc.target/aarch64/simd/vtrnqs32.x: New file. ++ * gcc.target/aarch64/simd/vtrnqs8_1.c: New file. ++ * gcc.target/aarch64/simd/vtrnqs8.x: New file. ++ * gcc.target/aarch64/simd/vtrnqu16_1.c: New file. ++ * gcc.target/aarch64/simd/vtrnqu16.x: New file. ++ * gcc.target/aarch64/simd/vtrnqu32_1.c: New file. ++ * gcc.target/aarch64/simd/vtrnqu32.x: New file. ++ * gcc.target/aarch64/simd/vtrnqu8_1.c: New file. ++ * gcc.target/aarch64/simd/vtrnqu8.x: New file. ++ * gcc.target/aarch64/simd/vtrns16_1.c: New file. ++ * gcc.target/aarch64/simd/vtrns16.x: New file. ++ * gcc.target/aarch64/simd/vtrns32_1.c: New file. ++ * gcc.target/aarch64/simd/vtrns32.x: New file. ++ * gcc.target/aarch64/simd/vtrns8_1.c: New file. ++ * gcc.target/aarch64/simd/vtrns8.x: New file. ++ * gcc.target/aarch64/simd/vtrnu16_1.c: New file. ++ * gcc.target/aarch64/simd/vtrnu16.x: New file. ++ * gcc.target/aarch64/simd/vtrnu32_1.c: New file. ++ * gcc.target/aarch64/simd/vtrnu32.x: New file. ++ * gcc.target/aarch64/simd/vtrnu8_1.c: New file. ++ * gcc.target/aarch64/simd/vtrnu8.x: New file. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r209794, 209858. ++ 2014-04-25 Marek Polacek ++ ++ PR c/60114 ++ * gcc.dg/pr60114.c: New test. ++ ++ 2014-04-28 Kyrylo Tkachov ++ ++ PR c/60983 ++ * gcc.dg/pr60114.c: Use signed chars. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r210861. ++ 2014-05-23 Jiong Wang ++ ++ * gcc.target/aarch64/tail_indirect_call_1.c: New. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r211314. ++ 2014-06-06 James Greenhalgh ++ ++ * gcc.dg/tree-ssa/pr42585.c: Skip for AArch64. ++ * gcc.dg/tree-ssa/sra-12.c: Likewise. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r210967. ++ 2014-05-27 Kyrylo Tkachov ++ ++ * lib/target-supports.exp (check_effective_target_vect_bswap): ++ Specify arm*-*-* support. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r210152, 211059. ++ 2014-05-29 Alan Lawrence ++ ++ * gcc.target/arm/simd/vextQf32_1.c: New file. ++ * gcc.target/arm/simd/vextQp16_1.c: New file. ++ * gcc.target/arm/simd/vextQp8_1.c: New file. ++ * gcc.target/arm/simd/vextQs16_1.c: New file. ++ * gcc.target/arm/simd/vextQs32_1.c: New file. ++ * gcc.target/arm/simd/vextQs64_1.c: New file. ++ * gcc.target/arm/simd/vextQs8_1.c: New file. ++ * gcc.target/arm/simd/vextQu16_1.c: New file. ++ * gcc.target/arm/simd/vextQu32_1.c: New file. ++ * gcc.target/arm/simd/vextQu64_1.c: New file. ++ * gcc.target/arm/simd/vextQu8_1.c: New file. ++ * gcc.target/arm/simd/vextQp64_1.c: New file. ++ * gcc.target/arm/simd/vextf32_1.c: New file. ++ * gcc.target/arm/simd/vextp16_1.c: New file. ++ * gcc.target/arm/simd/vextp8_1.c: New file. ++ * gcc.target/arm/simd/vexts16_1.c: New file. ++ * gcc.target/arm/simd/vexts32_1.c: New file. ++ * gcc.target/arm/simd/vexts64_1.c: New file. ++ * gcc.target/arm/simd/vexts8_1.c: New file. ++ * gcc.target/arm/simd/vextu16_1.c: New file. ++ * gcc.target/arm/simd/vextu32_1.c: New file. ++ * gcc.target/arm/simd/vextu64_1.c: New file. ++ * gcc.target/arm/simd/vextu8_1.c: New file. ++ * gcc.target/arm/simd/vextp64_1.c: New file. ++ ++ 2014-05-07 Alan Lawrence ++ ++ * gcc.target/aarch64/simd/ext_f32.x: New file. ++ * gcc.target/aarch64/simd/ext_f32_1.c: New file. ++ * gcc.target/aarch64/simd/ext_p16.x: New file. ++ * gcc.target/aarch64/simd/ext_p16_1.c: New file. ++ * gcc.target/aarch64/simd/ext_p8.x: New file. ++ * gcc.target/aarch64/simd/ext_p8_1.c: New file. ++ * gcc.target/aarch64/simd/ext_s16.x: New file. ++ * gcc.target/aarch64/simd/ext_s16_1.c: New file. ++ * gcc.target/aarch64/simd/ext_s32.x: New file. ++ * gcc.target/aarch64/simd/ext_s32_1.c: New file. ++ * gcc.target/aarch64/simd/ext_s64.x: New file. ++ * gcc.target/aarch64/simd/ext_s64_1.c: New file. ++ * gcc.target/aarch64/simd/ext_s8.x: New file. ++ * gcc.target/aarch64/simd/ext_s8_1.c: New file. ++ * gcc.target/aarch64/simd/ext_u16.x: New file. ++ * gcc.target/aarch64/simd/ext_u16_1.c: New file. ++ * gcc.target/aarch64/simd/ext_u32.x: New file. ++ * gcc.target/aarch64/simd/ext_u32_1.c: New file. ++ * gcc.target/aarch64/simd/ext_u64.x: New file. ++ * gcc.target/aarch64/simd/ext_u64_1.c: New file. ++ * gcc.target/aarch64/simd/ext_u8.x: New file. ++ * gcc.target/aarch64/simd/ext_u8_1.c: New file. ++ * gcc.target/aarch64/simd/ext_f64.c: New file. ++ * gcc.target/aarch64/simd/extq_f32.x: New file. ++ * gcc.target/aarch64/simd/extq_f32_1.c: New file. ++ * gcc.target/aarch64/simd/extq_p16.x: New file. ++ * gcc.target/aarch64/simd/extq_p16_1.c: New file. ++ * gcc.target/aarch64/simd/extq_p8.x: New file. ++ * gcc.target/aarch64/simd/extq_p8_1.c: New file. ++ * gcc.target/aarch64/simd/extq_s16.x: New file. ++ * gcc.target/aarch64/simd/extq_s16_1.c: New file. ++ * gcc.target/aarch64/simd/extq_s32.x: New file. ++ * gcc.target/aarch64/simd/extq_s32_1.c: New file. ++ * gcc.target/aarch64/simd/extq_s64.x: New file. ++ * gcc.target/aarch64/simd/extq_s64_1.c: New file. ++ * gcc.target/aarch64/simd/extq_s8.x: New file. ++ * gcc.target/aarch64/simd/extq_s8_1.c: New file. ++ * gcc.target/aarch64/simd/extq_u16.x: New file. ++ * gcc.target/aarch64/simd/extq_u16_1.c: New file. ++ * gcc.target/aarch64/simd/extq_u32.x: New file. ++ ++2014-07-16 Yvan Roux ++ ++ Backport from trunk r209940, r209943, r209947. ++ 2014-04-30 Alan Lawrence ++ ++ * gcc.target/arm/simd/vuzpqf32_1.c: New file. ++ * gcc.target/arm/simd/vuzpqp16_1.c: New file. ++ * gcc.target/arm/simd/vuzpqp8_1.c: New file. ++ * gcc.target/arm/simd/vuzpqs16_1.c: New file. ++ * gcc.target/arm/simd/vuzpqs32_1.c: New file. ++ * gcc.target/arm/simd/vuzpqs8_1.c: New file. ++ * gcc.target/arm/simd/vuzpqu16_1.c: New file. ++ * gcc.target/arm/simd/vuzpqu32_1.c: New file. ++ * gcc.target/arm/simd/vuzpqu8_1.c: New file. ++ * gcc.target/arm/simd/vuzpf32_1.c: New file. ++ * gcc.target/arm/simd/vuzpp16_1.c: New file. ++ * gcc.target/arm/simd/vuzpp8_1.c: New file. ++ * gcc.target/arm/simd/vuzps16_1.c: New file. ++ * gcc.target/arm/simd/vuzps32_1.c: New file. ++ * gcc.target/arm/simd/vuzps8_1.c: New file. ++ * gcc.target/arm/simd/vuzpu16_1.c: New file. ++ * gcc.target/arm/simd/vuzpu32_1.c: New file. ++ * gcc.target/arm/simd/vuzpu8_1.c: New file. ++ ++ 2014-04-30 Alan Lawrence ++ ++ * gcc.target/aarch64/vuzps32_1.c: Expect zip1/2 insn rather than uzp1/2. ++ * gcc.target/aarch64/vuzpu32_1.c: Likewise. ++ * gcc.target/aarch64/vuzpf32_1.c: Likewise. ++ ++ 2014-04-30 Alan Lawrence ++ ++ * gcc.target/aarch64/simd/vuzpf32_1.c: New file. ++ * gcc.target/aarch64/simd/vuzpf32.x: New file. ++ * gcc.target/aarch64/simd/vuzpp16_1.c: New file. ++ * gcc.target/aarch64/simd/vuzpp16.x: New file. ++ * gcc.target/aarch64/simd/vuzpp8_1.c: New file. ++ * gcc.target/aarch64/simd/vuzpp8.x: New file. ++ * gcc.target/aarch64/simd/vuzpqf32_1.c: New file. ++ * gcc.target/aarch64/simd/vuzpqf32.x: New file. ++ * gcc.target/aarch64/simd/vuzpqp16_1.c: New file. ++ * gcc.target/aarch64/simd/vuzpqp16.x: New file. ++ * gcc.target/aarch64/simd/vuzpqp8_1.c: New file. ++ * gcc.target/aarch64/simd/vuzpqp8.x: New file. ++ * gcc.target/aarch64/simd/vuzpqs16_1.c: New file. ++ * gcc.target/aarch64/simd/vuzpqs16.x: New file. ++ * gcc.target/aarch64/simd/vuzpqs32_1.c: New file. ++ * gcc.target/aarch64/simd/vuzpqs32.x: New file. ++ * gcc.target/aarch64/simd/vuzpqs8_1.c: New file. ++ * gcc.target/aarch64/simd/vuzpqs8.x: New file. ++ * gcc.target/aarch64/simd/vuzpqu16_1.c: New file. ++ * gcc.target/aarch64/simd/vuzpqu16.x: New file. ++ * gcc.target/aarch64/simd/vuzpqu32_1.c: New file. ++ * gcc.target/aarch64/simd/vuzpqu32.x: New file. ++ * gcc.target/aarch64/simd/vuzpqu8_1.c: New file. ++ * gcc.target/aarch64/simd/vuzpqu8.x: New file. ++ * gcc.target/aarch64/simd/vuzps16_1.c: New file. ++ * gcc.target/aarch64/simd/vuzps16.x: New file. ++ * gcc.target/aarch64/simd/vuzps32_1.c: New file. ++ * gcc.target/aarch64/simd/vuzps32.x: New file. ++ * gcc.target/aarch64/simd/vuzps8_1.c: New file. ++ * gcc.target/aarch64/simd/vuzps8.x: New file. ++ * gcc.target/aarch64/simd/vuzpu16_1.c: New file. ++ * gcc.target/aarch64/simd/vuzpu16.x: New file. ++ * gcc.target/aarch64/simd/vuzpu32_1.c: New file. ++ * gcc.target/aarch64/simd/vuzpu32.x: New file. ++ * gcc.target/aarch64/simd/vuzpu8_1.c: New file. ++ * gcc.target/aarch64/simd/vuzpu8.x: New file. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-13 Yvan Roux ++ ++ Backport from trunk r211206. ++ 2014-06-03 Andrew Pinski ++ ++ * gcc.c-torture/compile/20140528-1.c: New testcase. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-25 Yvan Roux ++ ++ Backport from trunk r209908. ++ 2013-04-29 Alan Lawrence ++ ++ * gcc.target/arm/simd/simd.exp: New file. ++ * gcc.target/arm/simd/vzipqf32_1.c: New file. ++ * gcc.target/arm/simd/vzipqp16_1.c: New file. ++ * gcc.target/arm/simd/vzipqp8_1.c: New file. ++ * gcc.target/arm/simd/vzipqs16_1.c: New file. ++ * gcc.target/arm/simd/vzipqs32_1.c: New file. ++ * gcc.target/arm/simd/vzipqs8_1.c: New file. ++ * gcc.target/arm/simd/vzipqu16_1.c: New file. ++ * gcc.target/arm/simd/vzipqu32_1.c: New file. ++ * gcc.target/arm/simd/vzipqu8_1.c: New file. ++ * gcc.target/arm/simd/vzipf32_1.c: New file. ++ * gcc.target/arm/simd/vzipp16_1.c: New file. ++ * gcc.target/arm/simd/vzipp8_1.c: New file. ++ * gcc.target/arm/simd/vzips16_1.c: New file. ++ * gcc.target/arm/simd/vzips32_1.c: New file. ++ * gcc.target/arm/simd/vzips8_1.c: New file. ++ * gcc.target/arm/simd/vzipu16_1.c: New file. ++ * gcc.target/arm/simd/vzipu32_1.c: New file. ++ * gcc.target/arm/simd/vzipu8_1.c: New file. ++ ++2014-05-25 Yvan Roux ++ ++ Backport from trunk r209893. ++ 2014-04-29 Alan Lawrence ++ ++ * gcc.target/aarch64/simd/simd.exp: New file. ++ * gcc.target/aarch64/simd/vzipf32_1.c: New file. ++ * gcc.target/aarch64/simd/vzipf32.x: New file. ++ * gcc.target/aarch64/simd/vzipp16_1.c: New file. ++ * gcc.target/aarch64/simd/vzipp16.x: New file. ++ * gcc.target/aarch64/simd/vzipp8_1.c: New file. ++ * gcc.target/aarch64/simd/vzipp8.x: New file. ++ * gcc.target/aarch64/simd/vzipqf32_1.c: New file. ++ * gcc.target/aarch64/simd/vzipqf32.x: New file. ++ * gcc.target/aarch64/simd/vzipqp16_1.c: New file. ++ * gcc.target/aarch64/simd/vzipqp16.x: New file. ++ * gcc.target/aarch64/simd/vzipqp8_1.c: New file. ++ * gcc.target/aarch64/simd/vzipqp8.x: New file. ++ * gcc.target/aarch64/simd/vzipqs16_1.c: New file. ++ * gcc.target/aarch64/simd/vzipqs16.x: New file. ++ * gcc.target/aarch64/simd/vzipqs32_1.c: New file. ++ * gcc.target/aarch64/simd/vzipqs32.x: New file. ++ * gcc.target/aarch64/simd/vzipqs8_1.c: New file. ++ * gcc.target/aarch64/simd/vzipqs8.x: New file. ++ * gcc.target/aarch64/simd/vzipqu16_1.c: New file. ++ * gcc.target/aarch64/simd/vzipqu16.x: New file. ++ * gcc.target/aarch64/simd/vzipqu32_1.c: New file. ++ * gcc.target/aarch64/simd/vzipqu32.x: New file. ++ * gcc.target/aarch64/simd/vzipqu8_1.c: New file. ++ * gcc.target/aarch64/simd/vzipqu8.x: New file. ++ * gcc.target/aarch64/simd/vzips16_1.c: New file. ++ * gcc.target/aarch64/simd/vzips16.x: New file. ++ * gcc.target/aarch64/simd/vzips32_1.c: New file. ++ * gcc.target/aarch64/simd/vzips32.x: New file. ++ * gcc.target/aarch64/simd/vzips8_1.c: New file. ++ * gcc.target/aarch64/simd/vzips8.x: New file. ++ * gcc.target/aarch64/simd/vzipu16_1.c: New file. ++ * gcc.target/aarch64/simd/vzipu16.x: New file. ++ * gcc.target/aarch64/simd/vzipu32_1.c: New file. ++ * gcc.target/aarch64/simd/vzipu32.x: New file. ++ * gcc.target/aarch64/simd/vzipu8_1.c: New file. ++ * gcc.target/aarch64/simd/vzipu8.x: New file. ++ ++2014-05-25 Yvan Roux ++ ++ Backport from trunk r209808. ++ 2014-04-25 Jiong Wang ++ ++ * gcc.target/arm/tail-long-call.c: New test. ++ ++2014-05-25 Yvan Roux ++ ++ Backport from trunk r209749. ++ 2014-04-24 Alan Lawrence ++ ++ * lib/target-supports.exp (check_effective_target_vect_perm): Return ++ true for aarch64_be. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209736. ++ 2014-04-24 Kyrylo Tkachov ++ ++ * lib/target-supports.exp (check_effective_target_vect_bswap): New. ++ * gcc.dg/vect/vect-bswap16: New test. ++ * gcc.dg/vect/vect-bswap32: Likewise. ++ * gcc.dg/vect/vect-bswap64: Likewise. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209713. ++ 2014-04-23 Alex Velenko ++ ++ * gcc.target/aarch64/vdup_lane_1.c: New testcase. ++ * gcc.target/aarch64/vdup_lane_2.c: New testcase. ++ * gcc.target/aarch64/vdup_n_1.c: New testcase. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209704, 209705. ++ 2014-04-23 Kyrylo Tkachov ++ ++ * gcc.target/arm/rev16.c: New test. ++ ++ 2014-04-23 Kyrylo Tkachov ++ ++ * gcc.target/aarch64/rev16_1.c: New test. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209642. ++ 2014-04-22 Alex Velenko ++ ++ * gcc.target/aarch64/vreinterpret_f64_1.c: New. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209640. ++ 2014-04-22 Alex Velenko ++ ++ * gcc.target/aarch64/vqneg_s64_1.c: New testcase. ++ * gcc.target/aarch64/vqabs_s64_1.c: New testcase. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209613, 209614. ++ 2014-04-22 Ian Bolton ++ ++ * gcc.target/arm/anddi_notdi-1.c: New test. ++ * gcc.target/arm/iordi_notdi-1.c: New test case. ++ ++ 2014-04-22 Ian Bolton ++ ++ * gcc.target/arm/iordi_notdi-1.c: New test. ++ ++2014-05-23 Yvan Roux ++ ++ Backport from trunk r209559. ++ 2014-04-22 Alex Velenko ++ ++ * gcc.target/aarch64/vrnd_f64_1.c : New file. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-05-13 Yvan Roux ++ ++ Backport from trunk r209889. ++ 2014-04-29 Zhenqiang Chen ++ ++ * gcc.target/aarch64/fcsel_1.c: New test case. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/gcc/testsuite/gcc.c-torture/compile/20140528-1.c ++++ b/src/gcc/testsuite/gcc.c-torture/compile/20140528-1.c +@@ -0,0 +1,9 @@ ++unsigned f(unsigned flags, unsigned capabilities) ++{ ++ unsigned gfp_mask; ++ unsigned gfp_notmask = 0; ++ gfp_mask = flags & ((1 << 25) - 1); ++ if (!(capabilities & 0x00000001)) ++ gfp_mask |= 0x1000000u; ++ return (gfp_mask & ~gfp_notmask); ++} +--- a/src/gcc/testsuite/gnat.dg/opt46.adb ++++ b/src/gcc/testsuite/gnat.dg/opt46.adb +@@ -0,0 +1,45 @@ ++-- { dg-do compile } ++-- { dg-options "-O" } ++ ++with Ada.Unchecked_Deallocation; ++ ++with Opt46_Pkg; ++ ++package body Opt46 is ++ ++ type Pattern is abstract tagged null record; ++ ++ type Pattern_Access is access Pattern'Class; ++ ++ procedure Free is new Ada.Unchecked_Deallocation ++ (Pattern'Class, Pattern_Access); ++ ++ type Action is abstract tagged null record; ++ ++ type Action_Access is access Action'Class; ++ ++ procedure Free is new Ada.Unchecked_Deallocation ++ (Action'Class, Action_Access); ++ ++ type Pattern_Action is record ++ Pattern : Pattern_Access; ++ Action : Action_Access; ++ end record; ++ ++ package Pattern_Action_Table is new Opt46_Pkg (Pattern_Action, Natural, 1); ++ ++ type Session_Data is record ++ Filters : Pattern_Action_Table.Instance; ++ end record; ++ ++ procedure Close (Session : Session_Type) is ++ Filters : Pattern_Action_Table.Instance renames Session.Data.Filters; ++ begin ++ for F in 1 .. Pattern_Action_Table.Last (Filters) loop ++ Free (Filters.Table (F).Pattern); ++ Free (Filters.Table (F).Action); ++ end loop; ++ ++ end Close; ++ ++end Opt46; +--- a/src/gcc/testsuite/gnat.dg/opt46.ads ++++ b/src/gcc/testsuite/gnat.dg/opt46.ads +@@ -0,0 +1,16 @@ ++package Opt46 is ++ ++ type Session_Type is limited private; ++ ++ procedure Close (Session : Session_Type); ++ ++private ++ ++ type Session_Data; ++ type Session_Data_Access is access Session_Data; ++ ++ type Session_Type is record ++ Data : Session_Data_Access; ++ end record; ++ ++end Opt46; +--- a/src/gcc/testsuite/gnat.dg/opt46_pkg.adb ++++ b/src/gcc/testsuite/gnat.dg/opt46_pkg.adb +@@ -0,0 +1,8 @@ ++package body Opt46_Pkg is ++ ++ function Last (T : Instance) return Table_Index_Type is ++ begin ++ return Table_Index_Type (T.P.Last_Val); ++ end Last; ++ ++end Opt46_Pkg; +--- a/src/gcc/testsuite/gnat.dg/opt46_pkg.ads ++++ b/src/gcc/testsuite/gnat.dg/opt46_pkg.ads +@@ -0,0 +1,31 @@ ++generic ++ type Table_Component_Type is private; ++ type Table_Index_Type is range <>; ++ ++ Table_Low_Bound : Table_Index_Type; ++ ++package Opt46_Pkg is ++ ++ type Table_Type is ++ array (Table_Index_Type range <>) of Table_Component_Type; ++ subtype Big_Table_Type is ++ Table_Type (Table_Low_Bound .. Table_Index_Type'Last); ++ ++ type Table_Ptr is access all Big_Table_Type; ++ ++ type Table_Private is private; ++ ++ type Instance is record ++ Table : aliased Table_Ptr := null; ++ P : Table_Private; ++ end record; ++ ++ function Last (T : Instance) return Table_Index_Type; ++ ++private ++ ++ type Table_Private is record ++ Last_Val : Integer; ++ end record; ++ ++end Opt46_Pkg; +--- a/src/gcc/testsuite/gcc.dg/asr_div1.c ++++ b/src/gcc/testsuite/gcc.dg/asr_div1.c +@@ -0,0 +1,56 @@ ++/* Test division by const int generates only one shift. */ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fdump-rtl-combine-all" } */ ++ ++extern void abort (void); ++ ++#define NOINLINE __attribute__((noinline)) ++ ++static NOINLINE int ++f1 (int n) ++{ ++ return n / 33; ++} ++ ++static NOINLINE int ++f2 (int n) ++{ ++ return n / 77; ++} ++ ++int ++main () ++{ ++ int a = 0xaaaaaaaa; ++ int b = 0x55555555; ++ int c; ++ c = f1 (a); ++ if (c != 0xfd6a052c) ++ abort (); ++ c = f1 (b); ++ if (c != 0x295FAD4) ++ abort (); ++ c = f2 (a); ++ if (c != 0xfee44b5c) ++ abort (); ++ c = f2 (b); ++ if (c != 0x11bb4a4) ++ abort (); ++ return 0; ++} ++ ++/* Following replacement pattern of intger division by constant, GCC is expected ++ to generate MULT and (x)SHIFTRT. This test checks that considering division ++ by const 33, gcc generates a single ASHIFTRT by 35, instead of two - LSHIFTRT ++ by 32 and ASHIFTRT by 3. */ ++ ++/* { dg-final { scan-rtl-dump "\\(set \\(subreg:DI \\(reg:SI" "combine" { target aarch64*-*-* } } } */ ++/* { dg-final { scan-rtl-dump "\\(ashiftrt:DI \\(reg:DI" "combine" { target aarch64*-*-* } } } */ ++/* { dg-final { scan-rtl-dump "\\(const_int 35 " "combine" { target aarch64*-*-* } } } */ ++ ++/* Similarly, considering division by const 77, gcc generates a single ASHIFTRT ++ by 36, instead of two - LSHIFTRT by 32 and ASHIFTRT by 4. */ ++ ++/* { dg-final { scan-rtl-dump "\\(const_int 36 " "combine" { target aarch64*-*-* } } } */ ++ ++/* { dg-final { cleanup-rtl-dump "combine" } } */ +--- a/src/gcc/testsuite/gcc.dg/fail_always_inline.c ++++ b/src/gcc/testsuite/gcc.dg/fail_always_inline.c +@@ -1,4 +1,5 @@ + /* { dg-do compile } */ ++/* { dg-add-options bind_pic_locally } */ + + extern __attribute__ ((always_inline)) void + bar() { } /* { dg-warning "function might not be inlinable" } */ +--- a/src/gcc/testsuite/gcc.dg/ira-shrinkwrap-prep-1.c ++++ b/src/gcc/testsuite/gcc.dg/ira-shrinkwrap-prep-1.c +@@ -1,4 +1,4 @@ +-/* { dg-do compile { target { { x86_64-*-* && lp64 } || { powerpc*-*-* && lp64 } } } } */ ++/* { dg-do compile { target { { x86_64-*-* && lp64 } || { { powerpc*-*-* && lp64 } || arm_nothumb } } } } */ + /* { dg-options "-O3 -fdump-rtl-ira -fdump-rtl-pro_and_epilogue" } */ + + long __attribute__((noinline, noclone)) +--- a/src/gcc/testsuite/gcc.dg/pr10474.c ++++ b/src/gcc/testsuite/gcc.dg/pr10474.c +@@ -1,4 +1,4 @@ +-/* { dg-do compile { target { { x86_64-*-* && lp64 } || { powerpc*-*-* && lp64 } } } } */ ++/* { dg-do compile { target { { x86_64-*-* && lp64 } || { { powerpc*-*-* && lp64 } || arm_nothumb } } } } */ + /* { dg-options "-O3 -fdump-rtl-pro_and_epilogue" } */ + + void f(int *i) +--- a/src/gcc/testsuite/gcc.dg/ssp-4.c ++++ b/src/gcc/testsuite/gcc.dg/ssp-4.c +@@ -0,0 +1,18 @@ ++/* { dg-do assemble } */ ++/* { dg-options "-fstack-protector-strong -O1 -frename-registers" } */ ++/* { dg-require-effective-target fstack_protector } */ ++ ++typedef unsigned int uint32_t; ++struct ctx ++{ ++ uint32_t A; ++}; ++ ++void * ++buffer_copy (const struct ctx *ctx, void *resbuf) ++{ ++ uint32_t buffer[4]; ++ buffer[0] = (ctx->A); ++ __builtin_memcpy (resbuf, buffer, sizeof (buffer)); ++ return resbuf; ++} +--- a/src/gcc/testsuite/gcc.dg/ira-shrinkwrap-prep-2.c ++++ b/src/gcc/testsuite/gcc.dg/ira-shrinkwrap-prep-2.c +@@ -1,4 +1,4 @@ +-/* { dg-do compile { target { { x86_64-*-* && lp64 } || { powerpc*-*-* && lp64 } } } } */ ++/* { dg-do compile { target { { x86_64-*-* && lp64 } || { { powerpc*-*-* && lp64 } || arm_nothumb } } } } */ + /* { dg-options "-O3 -fdump-rtl-ira -fdump-rtl-pro_and_epilogue" } */ + + long __attribute__((noinline, noclone)) +--- a/src/gcc/testsuite/gcc.dg/pr64935-1.c ++++ b/src/gcc/testsuite/gcc.dg/pr64935-1.c +@@ -0,0 +1,55 @@ ++/* PR rtl-optimization/64935 */ ++/* { dg-do compile } */ ++/* { dg-options "-std=gnu89 -O2 -fcompare-debug" } */ ++/* { dg-prune-output "right shift count >= width of type" } */ ++ ++int a[] = {}, b[] = {}, c[] = {}, d[] = {}, e[] = {}, f[] = {}, h[] = {}; ++int g[] = { 0 }; ++int i, l, s, w, x, y, z, t2, t3, t5; ++unsigned long j, m, o, t4; ++long k, n, p, q, r, t, u, v, t1; ++fn1 () ++{ ++ int t6; ++ for (; i; i++) ++ { ++ t5 = a[q] ^ b[p >> 1] ^ c[o >> 1 & 1] ^ d[n >> 1 & 1] ^ e[m >> 1 & 1] ++ ^ f[l >> 1 & 1] ^ g[0] ^ h[j & 1]; ++ t4 = a[j] ^ b[q >> 1] ^ c[p] ^ d[o] ^ e[n] ^ f[m] ^ g[l >> 8] ^ h[k]; ++ t3 = a[k >> 1] ^ b[j & 5] ^ d[p >> 32] ^ e[o >> 4] ^ f[n >> 6] ++ ^ g[m >> 8] ^ h[l]; ++ t2 = a[l >> 6] ^ b[k & 1] ^ c[j >> 1] ^ d[q >> 32] ^ e[p >> 4] ++ ^ f[o >> 6] ^ g[n >> 8] ^ h[m & 1]; ++ t1 = a[m >> 6] ^ b[l & 1] ^ c[k & 15] ^ d[j >> 2] ^ e[q >> 4] ^ f[p >> 6] ++ ^ g[o >> 8] ^ h[n & 1]; ++ z = a[n >> 56] ^ b[m & 15] ^ c[l & 15] ^ d[k >> 2] ^ e[j >> 4] ++ ^ f[q >> 6] ^ g[p >> 8] ^ h[o & 1]; ++ y = a[o >> 56] ^ b[n & 15] ^ c[m >> 40] ^ d[l >> 2] ^ e[k >> 4] ++ ^ f[j >> 6] ^ g[q >> 8] ^ h[p & 1]; ++ x = a[p >> 56] ^ b[o & 15] ^ c[n >> 40] ^ d[m >> 2] ^ e[l >> 4] ++ ^ f[k >> 6] ^ g[j >> 8] ^ h[q & 1]; ++ q = j = t4; ++ k = t3; ++ l = t2; ++ m = t1; ++ n = z; ++ o = y; ++ p = a[t6] ^ b[0] ^ c[w] ^ d[v] ^ e[u] ^ f[t] ^ g[s] ^ h[r]; ++ t4 = a[r >> 1] ^ b[t6 & 1] ^ d[w >> 1] ^ e[v >> 1] ^ f[u >> 1] ++ ^ g[t >> 1] ^ h[s]; ++ t3 = a[s >> 6] ^ b[r & 1] ^ c[t6 & 5] ^ d[0] ^ e[w >> 4] ^ f[v >> 6] ++ ^ g[u >> 8] ^ h[t & 1]; ++ t2 = a[t >> 6] ^ b[s] ^ c[r & 15] ^ d[t6 >> 1] ^ e[0] ^ f[w >> 6] ++ ^ g[v >> 8] ^ h[u & 1]; ++ t1 = a[u >> 6] ^ b[t & 15] ^ c[s & 5] ^ d[r >> 32] ^ e[t6 >> 4] ++ ^ g[w >> 8] ^ h[v & 1]; ++ z = a[v >> 56] ^ b[u >> 48 & 1] ^ c[t >> 40 & 1] ^ d[s] ^ e[r >> 1 & 1] ++ ^ f[t6 >> 1 & 1] ^ g[0] ^ h[w & 1] ^ z; ++ t6 = t5; ++ r = t4; ++ s = 0; ++ t = u = t1; ++ v = z; ++ w = y; ++ } ++} +--- a/src/gcc/testsuite/gcc.dg/inline-22.c ++++ b/src/gcc/testsuite/gcc.dg/inline-22.c +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ + /* { dg-options "-funit-at-a-time -Wno-attributes" } */ ++/* { dg-add-options bind_pic_locally } */ + /* Verify we can inline without a complete prototype and with promoted + arguments. See also PR32492. */ + __attribute__((always_inline)) void f1() {} +--- a/src/gcc/testsuite/gcc.dg/pr64007.c ++++ b/src/gcc/testsuite/gcc.dg/pr64007.c +@@ -0,0 +1,50 @@ ++/* { dg-options " -O3 " } */ ++/* { dg-do run } */ ++ ++#include ++ ++int d, i; ++ ++struct S ++{ ++ int f0; ++} *b, c, e, h, **g = &b; ++ ++static struct S *f = &e; ++ ++int ++fn1 (int p) ++{ ++ int a = 0; ++ return a || p < 0 || p >= 2 || 1 >> p; ++} ++ ++int ++main () ++{ ++ int k = 1, l, *m = &c.f0; ++ ++ for (;;) ++ { ++ l = fn1 (i); ++ *m = k && i; ++ if (l) ++ { ++ int n[1] = {0}; ++ } ++ break; ++ } ++ ++ *g = &h; ++ ++ assert (b); ++ ++ if (d) ++ (*m)--; ++ d = (f != 0) | (i >= 0); ++ ++ if (c.f0 != 0) ++ __builtin_abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.dg/memset-2.c ++++ b/src/gcc/testsuite/gcc.dg/memset-2.c +@@ -0,0 +1,11 @@ ++/* PR target/63937 */ ++/* { dg-do compile { target lp64 } } */ ++/* { dg-options "-O2" } */ ++ ++void ++foo (char *p) ++{ ++ p = __builtin_assume_aligned (p, 64); ++ __builtin_memset (p, 0, 0x100000001ULL); ++} ++ +--- a/src/gcc/testsuite/gcc.dg/inline_4.c ++++ b/src/gcc/testsuite/gcc.dg/inline_4.c +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ + /* { dg-options "-O2 -fdump-tree-optimized -fdisable-tree-einline=foo2 -fdisable-ipa-inline -Wno-attributes" } */ ++/* { dg-add-options bind_pic_locally } */ + int g; + __attribute__((always_inline)) void bar (void) + { +--- a/src/gcc/testsuite/gcc.dg/pr64935-2.c ++++ b/src/gcc/testsuite/gcc.dg/pr64935-2.c +@@ -0,0 +1,14 @@ ++/* PR rtl-optimization/64935 */ ++/* { dg-do compile } */ ++/* { dg-options "-O -fschedule-insns --param=max-sched-ready-insns=0 -fcompare-debug" } */ ++ ++void ++foo (int *data, unsigned len, const int qlp_coeff[], ++ unsigned order, int lp, int residual[], int i) ++{ ++ int sum; ++ sum = 0; ++ sum += qlp_coeff[1] * data[i - 2]; ++ sum += qlp_coeff[0] * data[i - 1]; ++ residual[i] = data[i] - (sum >> lp); ++} +--- a/src/gcc/testsuite/gcc.dg/torture/pr64083.c ++++ b/src/gcc/testsuite/gcc.dg/torture/pr64083.c +@@ -0,0 +1,17 @@ ++/* { dg-do compile } */ ++ ++int a, b; ++void ++fn1 () ++{ ++ int c = 0; ++ while (b) ++ { ++ switch (c) ++ case 1: ++ fn1 (); ++ if (a) ++ c = 1; ++ b = 0; ++ } ++} +--- a/src/gcc/testsuite/gcc.dg/torture/pr60606-1.c ++++ b/src/gcc/testsuite/gcc.dg/torture/pr60606-1.c +@@ -0,0 +1,9 @@ ++/* { dg-do compile } */ ++/* { dg-options "-ffat-lto-objects" } */ ++ ++int ++f (void) ++{ ++ register unsigned int r asm ("no-such-register"); /* { dg-error "invalid register name" } */ ++ return r; ++} +--- a/src/gcc/testsuite/gcc.dg/torture/pr64284.c ++++ b/src/gcc/testsuite/gcc.dg/torture/pr64284.c +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++ ++int *a; ++int b; ++int ++fn1() { ++ enum { QSTRING } c = 0; ++ while (1) { ++ switch (*a) { ++ case '\'': ++ c = 0; ++ default: ++ switch (c) ++ case 0: ++ if (b) ++ return 0; ++ c = 1; ++ } ++ a++; ++ } ++} +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-6.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-6.c +@@ -0,0 +1,43 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fdump-tree-dom1-details" } */ ++/* { dg-final { scan-tree-dump-times "FSM" 6 "dom1" } } */ ++/* { dg-final { cleanup-tree-dump "dom1" } } */ ++ ++int sum0, sum1, sum2, sum3; ++int foo (char *s, char **ret) ++{ ++ int state=0; ++ char c; ++ ++ for (; *s && state != 4; s++) ++ { ++ c = *s; ++ if (c == '*') ++ { ++ s++; ++ break; ++ } ++ switch (state) ++ { ++ case 0: ++ if (c == '+') ++ state = 1; ++ else if (c != '-') ++ sum0+=c; ++ break; ++ case 1: ++ if (c == '+') ++ state = 2; ++ else if (c == '-') ++ state = 0; ++ else ++ sum1+=c; ++ break; ++ default: ++ break; ++ } ++ ++ } ++ *ret = s; ++ return state; ++} +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-8.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-8.c +@@ -0,0 +1,440 @@ ++/* PR 64878 */ ++/* { dg-options "-O2" } */ ++/* { dg-do run } */ ++ ++struct A { int a1; }; ++struct B { char *b1; int b2; int b3; }; ++struct C { char *c1; int c2; struct B *c3; }; ++extern struct A *f1 (char *s); ++static struct A *f2 (struct C *x); ++__attribute__ ((noinline, noclone)) int f3 (struct A *x, struct A *z) { asm volatile ("" : : "g" (x), "g" (z) : "memory"); return 0; } ++__attribute__ ((noinline, noclone)) void f4 (struct A *x, char *y, struct A *z) { asm volatile ("" : : "g" (x), "g" (z), "g" (y) : "memory"); } ++__attribute__ ((noinline, noclone)) struct B *f5 (void) { static char b[32]; static struct B f3 = { b, 0, 32 }; return &f3; } ++__attribute__ ((noinline, noclone)) int f6 (struct B *p, char *w, int z) { asm volatile ("" : : "g" (p), "g" (w), "g" (z) : "memory"); return 0; } ++__attribute__ ((noinline, noclone)) void f7 (struct B *p) { asm volatile ("" : : "g" (p) : "memory"); } ++__attribute__ ((noinline, noclone)) void f8 (struct B *p) { asm volatile ("" : : "g" (p) : "memory"); } ++__attribute__ ((noinline, noclone)) void f9 (struct A *x) { asm volatile ("" : : "g" (x) : "memory"); } ++__attribute__ ((noinline, noclone)) struct A *f10 (void) { static struct A j; asm volatile ("" : : : "memory"); return &j; } ++__attribute__ ((noinline, noclone)) struct A *f11 (void) { static struct A j; asm volatile ("" : : : "memory"); return &j; } ++__attribute__ ((noinline, noclone)) struct A *f12 (int b) { static struct A j; asm volatile ("" : : "g" (b) : "memory"); return &j; } ++__attribute__ ((noinline, noclone)) struct A *f13 (int i) { static struct A j; asm volatile ("" : : "g" (i) : "memory"); return &j; } ++__attribute__ ((noinline, noclone)) struct A *f14 (double d) { static struct A j; asm volatile ("" : : "g" (&d) : "memory"); return &j; } ++__attribute__ ((noinline, noclone)) struct A *f15 (char *s) { static struct A j; asm volatile ("" : : "g" (s) : "memory"); return &j; } ++char *t = "0123456789abcdef"; ++char *u = "0123456789.+-e"; ++ ++__attribute__ ((noinline, noclone)) struct A * ++f1 (char *s) ++{ ++ struct C f; ++ struct A *o; ++ f.c1 = s; ++ f.c2 = 0; ++ f.c3 = f5 (); ++ o = f2 (&f); ++ f8 (f.c3); ++ return o; ++} ++ ++static struct A * ++f2 (struct C *x) ++{ ++ int a, b, e = 0; ++ struct A *f = 0, *o; ++ char *g = 0; ++ char h = '\0'; ++ int i = 0, j = 0; ++ a = 0; ++ b = 1; ++ char c; ++ do ++ { ++ c = x->c1[x->c2]; ++ switch (a) ++ { ++ case 0: ++ if (c == ' ') ++ x->c2++; ++ else if (c == '/') ++ { ++ a = 4; ++ j = x->c2++; ++ } ++ else ++ a = b; ++ break; ++ case 1: ++ switch (c) ++ { ++ case '{': ++ a = 0; ++ b = 15; ++ f = f10 (); ++ x->c2++; ++ break; ++ case '[': ++ a = 0; ++ b = 13; ++ f = f11 (); ++ x->c2++; ++ break; ++ case 'N': ++ case 'n': ++ a = 3; ++ j = x->c2++; ++ break; ++ case '"': ++ case '\'': ++ h = c; ++ f7 (x->c3); ++ a = 8; ++ j = ++x->c2; ++ break; ++ case 'T': ++ case 't': ++ case 'F': ++ case 'f': ++ a = 11; ++ j = x->c2++; ++ break; ++ case '0' ... '9': ++ case '-': ++ i = 0; ++ a = 12; ++ j = x->c2++; ++ break; ++ default: ++ e = 1; ++ goto out; ++ } ++ break; ++ case 2: ++ goto out; ++ case 3: ++ if (__builtin_strncmp ("null", x->c1 + j, x->c2 - j)) ++ { ++ e = 2; ++ goto out; ++ } ++ if (x->c2 - j == 4) ++ { ++ f = 0; ++ b = 2; ++ a = 0; ++ } ++ else ++ x->c2++; ++ break; ++ case 4: ++ if (c == '*') ++ a = 5; ++ else if (c == '/') ++ a = 6; ++ else ++ { ++ e = 8; ++ goto out; ++ } ++ x->c2++; ++ break; ++ case 5: ++ if (c == '*') ++ a = 7; ++ x->c2++; ++ break; ++ case 6: ++ if (c == '\n') ++ a = 0; ++ x->c2++; ++ break; ++ case 7: ++ if (c == '/') ++ a = 0; ++ else ++ a = 5; ++ x->c2++; ++ break; ++ case 8: ++ if (c == h) ++ { ++ f6 (x->c3, x->c1 + j, x->c2 - j); ++ f = f15 (x->c3->b1); ++ b = 2; ++ a = 0; ++ } ++ else if (c == '\\') ++ { ++ b = 8; ++ a = 9; ++ } ++ x->c2++; ++ break; ++ case 9: ++ switch (c) ++ { ++ case '"': ++ case '\\': ++ f6 (x->c3, x->c1 + j, x->c2 - j - 1); ++ j = x->c2++; ++ a = b; ++ break; ++ case 'b': ++ case 'n': ++ case 'r': ++ case 't': ++ f6 (x->c3, x->c1 + j, x->c2 - j - 1); ++ if (c == 'b') ++ f6 (x->c3, "\b", 1); ++ else if (c == 'n') ++ f6 (x->c3, "\n", 1); ++ else if (c == 'r') ++ f6 (x->c3, "\r", 1); ++ else if (c == 't') ++ f6 (x->c3, "\t", 1); ++ j = ++x->c2; ++ a = b; ++ break; ++ case 'u': ++ f6 (x->c3, x->c1 + j, x->c2 - j - 1); ++ j = ++x->c2; ++ a = 10; ++ break; ++ default: ++ e = 7; ++ goto out; ++ } ++ break; ++ case 10: ++ if (__builtin_strchr (t, c)) ++ { ++ x->c2++; ++ if (x->c2 - j == 4) ++ { ++ unsigned char w[3]; ++ unsigned int s = ++ (((x->c1[j] <= '9') ? x->c1[j] - '0' : (x->c1[j] & 7) + 9) << 12) ++ + (((x->c1[j + 1] <= '9') ? x->c1[j + 1] - '0' : (x->c1[j + 1] & 7) + 9) << 8) ++ + (((x->c1[j + 2] <= '9') ? x->c1[j + 2] - '0' : (x->c1[j + 2] & 7) + 9) << 4) ++ + ((x->c1[j + 3] <= '9') ? x->c1[j + 3] - '0' : (x->c1[j + 3] & 7) + 9); ++ if (s < 0x80) ++ { ++ w[0] = s; ++ f6 (x->c3, (char *) w, 1); ++ } ++ else if (s < 0x800) ++ { ++ w[0] = 0xc0 | (s >> 6); ++ w[1] = 0x80 | (s & 0x3f); ++ f6 (x->c3, (char *) w, 2); ++ } ++ else ++ { ++ w[0] = 0x0 | (s >> 12); ++ w[1] = 0x80 | ((s >> 6) & 0x3f); ++ w[2] = 0x80 | (s & 0x3f); ++ f6 (x->c3, (char *) w, 3); ++ } ++ j = x->c2; ++ a = b; ++ } ++ } ++ else ++ { ++ e = 7; ++ goto out; ++ } ++ break; ++ case 11: ++ if (__builtin_strncmp ("true", x->c1 + j, x->c2 - j) == 0) ++ { ++ if (x->c2 - j == 4) ++ { ++ f = f12 (1); ++ b = 2; ++ a = 0; ++ } ++ else ++ x->c2++; ++ } ++ else if (__builtin_strncmp ("false", x->c1 + j, x->c2 - j) == 0) ++ { ++ if (x->c2 - j == 5) ++ { ++ f = f12 (0); ++ b = 2; ++ a = 0; ++ } ++ else ++ x->c2++; ++ } ++ else ++ { ++ e = 3; ++ goto out; ++ } ++ break; ++ case 12: ++ if (!c || !__builtin_strchr (u, c)) ++ { ++ if (!i) ++ f = f13 (0); ++ else ++ f = f14 (0.0); ++ b = 2; ++ a = 0; ++ } ++ else ++ { ++ if (c == '.' || c == 'e') ++ i = 1; ++ x->c2++; ++ } ++ break; ++ case 13: ++ if (c == ']') ++ { ++ x->c2++; ++ b = 2; ++ a = 0; ++ } ++ else ++ { ++ o = f2 (x); ++ if (((unsigned long) o > (unsigned long) -4000L)) ++ { ++ e = 5; ++ goto out; ++ } ++ f3 (f, o); ++ b = 14; ++ a = 0; ++ } ++ break; ++ case 14: ++ if (c == ']') ++ { ++ x->c2++; ++ b = 2; ++ a = 0; ++ } ++ else if (c == ',') ++ { ++ x->c2++; ++ b = 13; ++ a = 0; ++ } ++ else ++ { ++ f9 (f); ++ e = 5; ++ goto out; ++ } ++ break; ++ case 15: ++ a = 16; ++ j = x->c2; ++ break; ++ case 16: ++ if (c == '}') ++ { ++ x->c2++; ++ b = 2; ++ a = 0; ++ } ++ else if (c == '"' || c == '\'') ++ { ++ h = c; ++ f7 (x->c3); ++ a = 17; ++ j = ++x->c2; ++ } ++ else ++ { ++ e = 6; ++ goto out; ++ } ++ break; ++ case 17: ++ if (c == h) ++ { ++ f6 (x->c3, x->c1 + j, x->c2 - j); ++ g = __builtin_strdup (x->c3->b1); ++ b = 18; ++ a = 0; ++ } ++ else if (c == '\\') ++ { ++ b = 17; ++ a = 9; ++ } ++ x->c2++; ++ break; ++ case 18: ++ if (c == ':') ++ { ++ x->c2++; ++ b = 19; ++ a = 0; ++ } ++ else ++ { ++ e = -6; ++ goto out; ++ } ++ break; ++ case 19: ++ o = f2 (x); ++ if (((unsigned long) o > (unsigned long) -4000L)) ++ { ++ e = 6; ++ goto out; ++ } ++ f4 (f, g, o); ++ __builtin_free (g); ++ g = 0; ++ b = 20; ++ a = 0; ++ break; ++ case 20: ++ if (c == '}') ++ { ++ x->c2++; ++ b = 2; ++ a = 0; ++ } ++ else if (c == ',') ++ { ++ x->c2++; ++ b = 15; ++ a = 0; ++ } ++ else ++ { ++ e = 6; ++ goto out; ++ } ++ break; ++ } ++ } ++ while (c); ++ if (a != 2 && b != 2) ++ e = 9; ++out: ++ __builtin_free (g); ++ if (e == 0) ++ return f; ++ f9 (f); ++ return 0; ++} ++ ++int ++main () ++{ ++ asm volatile ("" : : : "memory"); ++ struct A *r = f1 ("{ \"id\": null, \"blahah\": \"foobarbazbar\", \"barbar\": { \"barbarbarba\":" ++ "\"abcdefgh\", \"ijklmnopqr\": \"stuvwxyzabcdefghijklmnopqrstuv\", \"xyzxyz\":" ++ " [ \"1\" ] } }"); ++ if (!r) ++ __builtin_abort (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr42585.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr42585.c +@@ -35,6 +35,6 @@ + /* Whether the structs are totally scalarized or not depends on the + MOVE_RATIO macro definition in the back end. The scalarization will + not take place when using small values for MOVE_RATIO. */ +-/* { dg-final { scan-tree-dump-times "struct _fat_ptr _ans" 0 "optimized" { target { ! "arm*-*-* avr-*-* nds32*-*-* powerpc*-*-* s390*-*-* sh*-*-*" } } } } */ +-/* { dg-final { scan-tree-dump-times "struct _fat_ptr _T2" 0 "optimized" { target { ! "arm*-*-* avr-*-* nds32*-*-* powerpc*-*-* s390*-*-* sh*-*-*" } } } } */ ++/* { dg-final { scan-tree-dump-times "struct _fat_ptr _ans" 0 "optimized" { target { ! "aarch64*-*-* arm*-*-* avr-*-* nds32*-*-* powerpc*-*-* s390*-*-* sh*-*-*" } } } } */ ++/* { dg-final { scan-tree-dump-times "struct _fat_ptr _T2" 0 "optimized" { target { ! "aarch64*-*-* arm*-*-* avr-*-* nds32*-*-* powerpc*-*-* s390*-*-* sh*-*-*" } } } } */ + /* { dg-final { cleanup-tree-dump "optimized" } } */ +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/sra-12.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/sra-12.c +@@ -21,5 +21,5 @@ + *p = l; + } + +-/* { dg-final { scan-tree-dump-times "l;" 0 "release_ssa" { target { ! "avr*-*-* nds32*-*-*" } } } } */ ++/* { dg-final { scan-tree-dump-times "l;" 0 "release_ssa" { target { ! "aarch64*-*-* avr*-*-* nds32*-*-*" } } } } */ + /* { dg-final { cleanup-tree-dump "release_ssa" } } */ +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c +@@ -0,0 +1,127 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fdump-tree-dom1-details" } */ ++/* { dg-final { scan-tree-dump-times "FSM" 19 "dom1" } } */ ++/* { dg-final { cleanup-tree-dump "dom1" } } */ ++ ++enum STATE { ++ S0=0, ++ SI, ++ S1, ++ S2, ++ S3, ++ S4, ++ S5, ++ S6 ++}; ++ ++int bar (enum STATE s); ++ ++enum STATE foo (unsigned char **y, unsigned *c) ++{ ++ unsigned char *x = *y; ++ unsigned char n; ++ enum STATE s = S0; ++ ++ for( ; *x && s != SI; x++ ) ++ { ++ n = *x; ++ if (n == 'x') ++ { ++ x++; ++ break; ++ } ++ switch(s) ++ { ++ case S0: ++ if(bar(n)) ++ s = S3; ++ else if( n == 'a' || n == 'b' ) ++ s = S1; ++ else if( n == 'c' ) ++ s = S4; ++ else ++ { ++ s = SI; ++ c[SI]++; ++ } ++ c[S0]++; ++ break; ++ case S1: ++ if(bar(n)) ++ { ++ s = S3; ++ c[S1]++; ++ } ++ else if( n == 'c' ) ++ { ++ s = S4; ++ c[S1]++; ++ } ++ else ++ { ++ s = SI; ++ c[S1]++; ++ } ++ break; ++ case S3: ++ if( n == 'c' ) ++ { ++ s = S4; ++ c[S3]++; ++ } ++ else if(!bar(n)) ++ { ++ s = SI; ++ c[S3]++; ++ } ++ break; ++ case S4: ++ if( n == 'E' || n == 'e' ) ++ { ++ s = S2; ++ c[S4]++; ++ } ++ else if(!bar(n)) ++ { ++ s = SI; ++ c[S4]++; ++ } ++ break; ++ case S2: ++ if( n == 'a' || n == 'b' ) ++ { ++ s = S5; ++ c[S2]++; ++ } ++ else ++ { ++ s = SI; ++ c[S2]++; ++ } ++ break; ++ case S5: ++ if(bar(n)) ++ { ++ s = S6; ++ c[S5]++; ++ } ++ else ++ { ++ s = SI; ++ c[S5]++; ++ } ++ break; ++ case S6: ++ if(!bar(n)) ++ { ++ s = SI; ++ c[SI]++; ++ } ++ break; ++ default: ++ break; ++ } ++ } ++ *y=x; ++ return s; ++} +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20040204-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20040204-1.c +@@ -33,5 +33,5 @@ + that the && should be emitted (based on BRANCH_COST). Fix this + by teaching dom to look through && and register all components + as true. */ +-/* { dg-final { scan-tree-dump-times "link_error" 0 "optimized" { xfail { ! "alpha*-*-* arm*-*-* powerpc*-*-* cris-*-* crisv32-*-* hppa*-*-* i?86-*-* mmix-*-* mips*-*-* m68k*-*-* moxie-*-* nds32*-*-* sparc*-*-* spu-*-* x86_64-*-*" } } } } */ ++/* { dg-final { scan-tree-dump-times "link_error" 0 "optimized" { xfail { ! "alpha*-*-* arm*-*-* aarch64*-*-* powerpc*-*-* cris-*-* crisv32-*-* hppa*-*-* i?86-*-* mmix-*-* mips*-*-* m68k*-*-* moxie-*-* nds32*-*-* sparc*-*-* spu-*-* x86_64-*-*" } } } } */ + /* { dg-final { cleanup-tree-dump "optimized" } } */ +--- a/src/gcc/testsuite/gcc.dg/pr60114.c ++++ b/src/gcc/testsuite/gcc.dg/pr60114.c +@@ -0,0 +1,31 @@ ++/* PR c/60114 */ ++/* { dg-do compile } */ ++/* { dg-options "-Wconversion" } */ ++ ++struct S { int n, u[2]; }; ++const signed char z[] = { ++ [0] = 0x100, /* { dg-warning "9:overflow in implicit constant conversion" } */ ++ [2] = 0x101, /* { dg-warning "9:overflow in implicit constant conversion" } */ ++}; ++int A[] = { ++ 0, 0x80000000, /* { dg-warning "16:conversion of unsigned constant value to negative integer" } */ ++ 0xA, 0x80000000, /* { dg-warning "18:conversion of unsigned constant value to negative integer" } */ ++ 0xA, 0xA, 0x80000000 /* { dg-warning "23:conversion of unsigned constant value to negative integer" } */ ++ }; ++int *p = (int []) { 0x80000000 }; /* { dg-warning "21:conversion of unsigned constant value to negative integer" } */ ++union { int k; } u = { .k = 0x80000000 }; /* { dg-warning "29:conversion of unsigned constant value to negative integer" } */ ++typedef int H[]; ++void ++foo (void) ++{ ++ signed char a[][3] = { { 0x100, /* { dg-warning "28:overflow in implicit constant conversion" } */ ++ 1, 0x100 }, /* { dg-warning "24:overflow in implicit constant conversion" } */ ++ { '\0', 0x100, '\0' } /* { dg-warning "27:overflow in implicit constant conversion" } */ ++ }; ++ (const signed char []) { 0x100 }; /* { dg-warning "28:overflow in implicit constant conversion" } */ ++ (const float []) { 1e0, 1e1, 1e100 }; /* { dg-warning "32:conversion" } */ ++ struct S s1 = { 0x80000000 }; /* { dg-warning "19:conversion of unsigned constant value to negative integer" } */ ++ struct S s2 = { .n = 0x80000000 }; /* { dg-warning "24:conversion of unsigned constant value to negative integer" } */ ++ struct S s3 = { .u[1] = 0x80000000 }; /* { dg-warning "27:conversion of unsigned constant value to negative integer" } */ ++ H h = { 1, 2, 0x80000000 }; /* { dg-warning "17:conversion of unsigned constant value to negative integer" } */ ++} +--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-mul_1.c ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-mul_1.c +@@ -0,0 +1,36 @@ ++/* { dg-require-effective-target vect_int_mult } */ ++/* { dg-require-effective-target whole_vector_shift } */ ++ ++/* Write a reduction loop to be reduced using vector shifts. */ ++ ++extern void abort(void); ++ ++unsigned char in[16]; ++ ++int ++main (unsigned char argc, char **argv) ++{ ++ unsigned char i = 0; ++ unsigned char sum = 1; ++ ++ for (i = 0; i < 16; i++) ++ in[i] = i + i + 1; ++ ++ /* Prevent constant propagation of the entire loop below. */ ++ asm volatile ("" : : : "memory"); ++ ++ for (i = 0; i < 16; i++) ++ sum *= in[i]; ++ ++ if (sum != 33) ++ { ++ __builtin_printf("Failed %d\n", sum); ++ abort(); ++ } ++ ++ return 0; ++} ++ ++/* { dg-final { scan-tree-dump "Reduce using vector shifts" "vect" } } */ ++/* { dg-final { cleanup-tree-dump "vect" } } */ ++ +--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-mul_2.c ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-mul_2.c +@@ -0,0 +1,32 @@ ++/* { dg-require-effective-target vect_int_mult } */ ++/* { dg-require-effective-target whole_vector_shift } */ ++ ++/* Write a reduction loop to be reduced using vector shifts and folded. */ ++ ++extern void abort(void); ++ ++int ++main (unsigned char argc, char **argv) ++{ ++ unsigned char in[16]; ++ unsigned char i = 0; ++ unsigned char sum = 1; ++ ++ for (i = 0; i < 16; i++) ++ in[i] = i + i + 1; ++ ++ for (i = 0; i < 16; i++) ++ sum *= in[i]; ++ ++ if (sum != 33) ++ { ++ __builtin_printf("Failed %d\n", sum); ++ abort(); ++ } ++ ++ return 0; ++} ++ ++/* { dg-final { scan-tree-dump "Reduce using vector shifts" "vect" } } */ ++/* { dg-final { cleanup-tree-dump "vect" } } */ ++ +--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-or_1.c ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-or_1.c +@@ -0,0 +1,35 @@ ++/* { dg-require-effective-target whole_vector_shift } */ ++ ++/* Write a reduction loop to be reduced using vector shifts. */ ++ ++extern void abort(void); ++ ++unsigned char in[16] __attribute__((__aligned__(16))); ++ ++int ++main (unsigned char argc, char **argv) ++{ ++ unsigned char i = 0; ++ unsigned char sum = 1; ++ ++ for (i = 0; i < 16; i++) ++ in[i] = (i + i + 1) & 0xfd; ++ ++ /* Prevent constant propagation of the entire loop below. */ ++ asm volatile ("" : : : "memory"); ++ ++ for (i = 0; i < 16; i++) ++ sum |= in[i]; ++ ++ if (sum != 29) ++ { ++ __builtin_printf("Failed %d\n", sum); ++ abort(); ++ } ++ ++ return 0; ++} ++ ++/* { dg-final { scan-tree-dump "Reduce using vector shifts" "vect" } } */ ++/* { dg-final { cleanup-tree-dump "vect" } } */ ++ +--- a/src/gcc/testsuite/gcc.dg/vect/vect-bswap32.c ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-bswap32.c +@@ -0,0 +1,44 @@ ++/* { dg-require-effective-target vect_bswap } */ ++ ++#include "tree-vect.h" ++ ++#define N 128 ++ ++volatile int y = 0; ++ ++static inline void ++vfoo32 (unsigned int* a) ++{ ++ int i = 0; ++ for (i = 0; i < N; ++i) ++ a[i] = __builtin_bswap32 (a[i]); ++} ++ ++int ++main (void) ++{ ++ unsigned int arr[N]; ++ unsigned int expect[N]; ++ int i; ++ ++ for (i = 0; i < N; ++i) ++ { ++ arr[i] = i; ++ expect[i] = __builtin_bswap32 (i); ++ if (y) /* Avoid vectorisation. */ ++ abort (); ++ } ++ ++ vfoo32 (arr); ++ ++ for (i = 0; i < N; ++i) ++ { ++ if (arr[i] != expect[i]) ++ abort (); ++ } ++ ++ return 0; ++} ++ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ ++/* { dg-final { cleanup-tree-dump "vect" } } */ +--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-or_2.c ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-or_2.c +@@ -0,0 +1,31 @@ ++/* { dg-require-effective-target whole_vector_shift } */ ++ ++/* Write a reduction loop to be reduced using vector shifts and folded. */ ++ ++extern void abort(void); ++ ++int ++main (unsigned char argc, char **argv) ++{ ++ unsigned char in[16] __attribute__((aligned(16))); ++ unsigned char i = 0; ++ unsigned char sum = 1; ++ ++ for (i = 0; i < 16; i++) ++ in[i] = (i + i + 1) & 0xfd; ++ ++ for (i = 0; i < 16; i++) ++ sum |= in[i]; ++ ++ if (sum != 29) ++ { ++ __builtin_printf("Failed %d\n", sum); ++ abort(); ++ } ++ ++ return 0; ++} ++ ++/* { dg-final { scan-tree-dump "Reduce using vector shifts" "vect" } } */ ++/* { dg-final { cleanup-tree-dump "vect" } } */ ++ +--- a/src/gcc/testsuite/gcc.dg/vect/vect-bswap16.c ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-bswap16.c +@@ -0,0 +1,44 @@ ++/* { dg-require-effective-target vect_bswap } */ ++ ++#include "tree-vect.h" ++ ++#define N 128 ++ ++volatile int y = 0; ++ ++static inline void ++vfoo16 (unsigned short int* a) ++{ ++ int i = 0; ++ for (i = 0; i < N; ++i) ++ a[i] = __builtin_bswap16 (a[i]); ++} ++ ++int ++main (void) ++{ ++ unsigned short arr[N]; ++ unsigned short expect[N]; ++ int i; ++ ++ for (i = 0; i < N; ++i) ++ { ++ arr[i] = i; ++ expect[i] = __builtin_bswap16 (i); ++ if (y) /* Avoid vectorisation. */ ++ abort (); ++ } ++ ++ vfoo16 (arr); ++ ++ for (i = 0; i < N; ++i) ++ { ++ if (arr[i] != expect[i]) ++ abort (); ++ } ++ ++ return 0; ++} ++ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ ++/* { dg-final { cleanup-tree-dump "vect" } } */ +--- a/src/gcc/testsuite/gcc.dg/vect/vect-bswap64.c ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-bswap64.c +@@ -0,0 +1,44 @@ ++/* { dg-require-effective-target vect_bswap } */ ++ ++#include "tree-vect.h" ++ ++#define N 128 ++ ++volatile int y = 0; ++ ++static inline void ++vfoo64 (unsigned long long* a) ++{ ++ int i = 0; ++ for (i = 0; i < N; ++i) ++ a[i] = __builtin_bswap64 (a[i]); ++} ++ ++int ++main (void) ++{ ++ unsigned long long arr[N]; ++ unsigned long long expect[N]; ++ int i; ++ ++ for (i = 0; i < N; ++i) ++ { ++ arr[i] = i; ++ expect[i] = __builtin_bswap64 (i); ++ if (y) /* Avoid vectorisation. */ ++ abort (); ++ } ++ ++ vfoo64 (arr); ++ ++ for (i = 0; i < N; ++i) ++ { ++ if (arr[i] != expect[i]) ++ abort (); ++ } ++ ++ return 0; ++} ++ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ ++/* { dg-final { cleanup-tree-dump "vect" } } */ +--- a/src/gcc/testsuite/gcc.dg/ssp-3.c ++++ b/src/gcc/testsuite/gcc.dg/ssp-3.c +@@ -0,0 +1,16 @@ ++/* { dg-do assemble } */ ++/* { dg-options "-fstack-protector-strong -O1 -frename-registers" } */ ++/* { dg-require-effective-target fstack_protector } */ ++ ++extern int bar (const char *s, int *argc); ++extern int baz (const char *s); ++ ++char ++foo (const char *s) ++{ ++ int argc; ++ int ret; ++ if ( !bar (s, &argc)) ++ ret = baz (s); ++ return *s; ++} +--- a/src/gcc/testsuite/g++.dg/ipa/devirt-25.C ++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-25.C +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ + /* { dg-options "-O3 -fdump-ipa-cp" } */ ++/* { dg-add-options bind_pic_locally } */ + + class ert_RefCounter { + protected: +--- a/src/gcc/objcp/ChangeLog.linaro ++++ b/src/gcc/objcp/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/gcc/cp/ChangeLog.linaro ++++ b/src/gcc/cp/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/gcc/haifa-sched.c ++++ b/src/gcc/haifa-sched.c +@@ -239,6 +239,13 @@ + /* The minimal value of the INSN_TICK of an instruction. */ + #define MIN_TICK (-max_insn_queue_index) + ++/* Original order of insns in the ready list. ++ Used to keep order of normal insns while separating DEBUG_INSNs. */ ++#define INSN_RFS_DEBUG_ORIG_ORDER(INSN) (HID (INSN)->rfs_debug_orig_order) ++ ++/* The deciding reason for INSN's place in the ready list. */ ++#define INSN_LAST_RFS_WIN(INSN) (HID (INSN)->last_rfs_win) ++ + /* List of important notes we must keep around. This is a pointer to the + last element in the list. */ + rtx note_list; +@@ -345,7 +352,7 @@ + + /* The following array is used to find the best insn from ready when + the automaton pipeline interface is used. */ +-char *ready_try = NULL; ++signed char *ready_try = NULL; + + /* The ready list. */ + struct ready_list ready = {NULL, 0, 0, 0, 0}; +@@ -827,6 +834,7 @@ + /* Forward declarations. */ + + static int priority (rtx); ++static int autopref_rank_for_schedule (const rtx , const rtx); + static int rank_for_schedule (const void *, const void *); + static void swap_sort (rtx *, int); + static void queue_insn (rtx, int, const char *); +@@ -859,8 +867,6 @@ + static void queue_to_ready (struct ready_list *); + static int early_queue_to_ready (state_t, struct ready_list *); + +-static void debug_ready_list (struct ready_list *); +- + /* The following functions are used to implement multi-pass scheduling + on the first cycle. */ + static rtx ready_remove (struct ready_list *, int); +@@ -930,6 +936,13 @@ + /* Registers mentioned in the current region. */ + static bitmap region_ref_regs; + ++/* Effective number of available registers of a given class (see comment ++ in sched_pressure_start_bb). */ ++static int sched_class_regs_num[N_REG_CLASSES]; ++/* Number of call_used_regs. This is a helper for calculating of ++ sched_class_regs_num. */ ++static int call_used_regs_num[N_REG_CLASSES]; ++ + /* Initiate register pressure relative info for scheduling the current + region. Currently it is only clearing register mentioned in the + current region. */ +@@ -1113,7 +1126,7 @@ + gcc_assert (curr_reg_pressure[cl] >= 0); + fprintf (sched_dump, " %s:%d(%d)", reg_class_names[cl], + curr_reg_pressure[cl], +- curr_reg_pressure[cl] - ira_class_hard_regs_num[cl]); ++ curr_reg_pressure[cl] - sched_class_regs_num[cl]); + } + fprintf (sched_dump, "\n"); + } +@@ -1165,6 +1178,12 @@ + INSN_COST (insn) = -1; + /* Invalidate INSN_TICK, so it'll be recalculated. */ + INSN_TICK (insn) = INVALID_TICK; ++ ++ /* Invalidate autoprefetch data entry. */ ++ INSN_AUTOPREF_MULTIPASS_DATA (insn)[0].status ++ = AUTOPREF_MULTIPASS_DATA_UNINITIALIZED; ++ INSN_AUTOPREF_MULTIPASS_DATA (insn)[1].status ++ = AUTOPREF_MULTIPASS_DATA_UNINITIALIZED; + } + + +@@ -1203,6 +1222,11 @@ + if (!sd_lists_empty_p (next, SD_LIST_HARD_BACK)) + return HARD_DEP; + ++ /* If NEXT is intended to sit adjacent to this instruction, we don't ++ want to try to break any dependencies. Treat it as a HARD_DEP. */ ++ if (SCHED_GROUP_P (next)) ++ return HARD_DEP; ++ + /* Now we've got NEXT with speculative deps only. + 1. Look at the deps to see what we have to do. + 2. Check if we can do 'todo'. */ +@@ -1685,13 +1709,6 @@ + /* Macros and functions for keeping the priority queue sorted, and + dealing with queuing and dequeuing of instructions. */ + +-#define SCHED_SORT(READY, N_READY) \ +-do { if ((N_READY) == 2) \ +- swap_sort (READY, N_READY); \ +- else if ((N_READY) > 2) \ +- qsort (READY, N_READY, sizeof (rtx), rank_for_schedule); } \ +-while (0) +- + /* For each pressure class CL, set DEATH[CL] to the number of registers + in that class that die in INSN. */ + +@@ -1733,9 +1750,9 @@ + cl = ira_pressure_classes[i]; + gcc_assert (curr_reg_pressure[cl] >= 0); + change = (int) pressure_info[i].set_increase - death[cl]; +- before = MAX (0, max_reg_pressure[i] - ira_class_hard_regs_num[cl]); ++ before = MAX (0, max_reg_pressure[i] - sched_class_regs_num[cl]); + after = MAX (0, max_reg_pressure[i] + change +- - ira_class_hard_regs_num[cl]); ++ - sched_class_regs_num[cl]); + hard_regno = ira_class_hard_regs[cl][0]; + gcc_assert (hard_regno >= 0); + mode = reg_raw_mode[hard_regno]; +@@ -2072,7 +2089,7 @@ + + /* Check whether the maximum pressure in the overall schedule + has increased. (This means that the MODEL_MAX_PRESSURE of +- every point <= POINT will need to increae too; see below.) */ ++ every point <= POINT will need to increase too; see below.) */ + if (group->limits[pci].pressure < ref_pressure) + group->limits[pci].pressure = ref_pressure; + +@@ -2349,7 +2366,7 @@ + /* Return the cost of increasing the pressure in class CL from FROM to TO. + + Here we use the very simplistic cost model that every register above +- ira_class_hard_regs_num[CL] has a spill cost of 1. We could use other ++ sched_class_regs_num[CL] has a spill cost of 1. We could use other + measures instead, such as one based on MEMORY_MOVE_COST. However: + + (1) In order for an instruction to be scheduled, the higher cost +@@ -2373,7 +2390,7 @@ + static int + model_spill_cost (int cl, int from, int to) + { +- from = MAX (from, ira_class_hard_regs_num[cl]); ++ from = MAX (from, sched_class_regs_num[cl]); + return MAX (to, from) - from; + } + +@@ -2479,7 +2496,7 @@ + bool print_p; + + /* Record the baseECC value for each instruction in the model schedule, +- except that negative costs are converted to zero ones now rather thatn ++ except that negative costs are converted to zero ones now rather than + later. Do not assign a cost to debug instructions, since they must + not change code-generation decisions. Experiments suggest we also + get better results by not assigning a cost to instructions from +@@ -2527,6 +2544,62 @@ + } + } + ++ ++/* Enum of rank_for_schedule heuristic decisions. */ ++enum rfs_decision { ++ RFS_LIVE_RANGE_SHRINK1, RFS_LIVE_RANGE_SHRINK2, ++ RFS_SCHED_GROUP, RFS_PRESSURE_DELAY, RFS_PRESSURE_TICK, ++ RFS_FEEDS_BACKTRACK_INSN, RFS_PRIORITY, RFS_SPECULATION, ++ RFS_SCHED_RANK, RFS_LAST_INSN, RFS_PRESSURE_INDEX, ++ RFS_DEP_COUNT, RFS_TIE, RFS_N }; ++ ++/* Corresponding strings for print outs. */ ++static const char *rfs_str[RFS_N] = { ++ "RFS_LIVE_RANGE_SHRINK1", "RFS_LIVE_RANGE_SHRINK2", ++ "RFS_SCHED_GROUP", "RFS_PRESSURE_DELAY", "RFS_PRESSURE_TICK", ++ "RFS_FEEDS_BACKTRACK_INSN", "RFS_PRIORITY", "RFS_SPECULATION", ++ "RFS_SCHED_RANK", "RFS_LAST_INSN", "RFS_PRESSURE_INDEX", ++ "RFS_DEP_COUNT", "RFS_TIE" }; ++ ++/* Statistical breakdown of rank_for_schedule decisions. */ ++typedef struct { unsigned stats[RFS_N]; } rank_for_schedule_stats_t; ++static rank_for_schedule_stats_t rank_for_schedule_stats; ++ ++/* Return the result of comparing insns TMP and TMP2 and update ++ Rank_For_Schedule statistics. */ ++static int ++rfs_result (enum rfs_decision decision, int result, rtx tmp, rtx tmp2) ++{ ++ ++rank_for_schedule_stats.stats[decision]; ++ if (result < 0) ++ INSN_LAST_RFS_WIN (tmp) = decision; ++ else if (result > 0) ++ INSN_LAST_RFS_WIN (tmp2) = decision; ++ else ++ gcc_unreachable (); ++ return result; ++} ++ ++/* Sorting predicate to move DEBUG_INSNs to the top of ready list, while ++ keeping normal insns in original order. */ ++ ++static int ++rank_for_schedule_debug (const void *x, const void *y) ++{ ++ rtx tmp = *(rtx const *) y; ++ rtx tmp2 = *(rtx const *) x; ++ ++ /* Schedule debug insns as early as possible. */ ++ if (DEBUG_INSN_P (tmp) && !DEBUG_INSN_P (tmp2)) ++ return -1; ++ else if (!DEBUG_INSN_P (tmp) && DEBUG_INSN_P (tmp2)) ++ return 1; ++ else if (DEBUG_INSN_P (tmp) && DEBUG_INSN_P (tmp2)) ++ return INSN_LUID (tmp) - INSN_LUID (tmp2); ++ else ++ return INSN_RFS_DEBUG_ORIG_ORDER (tmp2) - INSN_RFS_DEBUG_ORIG_ORDER (tmp); ++} ++ + /* Returns a positive value if x is preferred; returns a negative value if + y is preferred. Should never return 0, since that will make the sort + unstable. */ +@@ -2539,17 +2612,6 @@ + int tmp_class, tmp2_class; + int val, priority_val, info_val, diff; + +- if (MAY_HAVE_DEBUG_INSNS) +- { +- /* Schedule debug insns as early as possible. */ +- if (DEBUG_INSN_P (tmp) && !DEBUG_INSN_P (tmp2)) +- return -1; +- else if (!DEBUG_INSN_P (tmp) && DEBUG_INSN_P (tmp2)) +- return 1; +- else if (DEBUG_INSN_P (tmp) && DEBUG_INSN_P (tmp2)) +- return INSN_LUID (tmp) - INSN_LUID (tmp2); +- } +- + if (live_range_shrinkage_p) + { + /* Don't use SCHED_PRESSURE_MODEL -- it results in much worse +@@ -2559,17 +2621,19 @@ + || INSN_REG_PRESSURE_EXCESS_COST_CHANGE (tmp2) < 0) + && (diff = (INSN_REG_PRESSURE_EXCESS_COST_CHANGE (tmp) + - INSN_REG_PRESSURE_EXCESS_COST_CHANGE (tmp2))) != 0) +- return diff; ++ return rfs_result (RFS_LIVE_RANGE_SHRINK1, diff, tmp, tmp2); + /* Sort by INSN_LUID (original insn order), so that we make the + sort stable. This minimizes instruction movement, thus + minimizing sched's effect on debugging and cross-jumping. */ +- return INSN_LUID (tmp) - INSN_LUID (tmp2); ++ return rfs_result (RFS_LIVE_RANGE_SHRINK2, ++ INSN_LUID (tmp) - INSN_LUID (tmp2), tmp, tmp2); + } + + /* The insn in a schedule group should be issued the first. */ + if (flag_sched_group_heuristic && + SCHED_GROUP_P (tmp) != SCHED_GROUP_P (tmp2)) +- return SCHED_GROUP_P (tmp2) ? 1 : -1; ++ return rfs_result (RFS_SCHED_GROUP, SCHED_GROUP_P (tmp2) ? 1 : -1, ++ tmp, tmp2); + + /* Make sure that priority of TMP and TMP2 are initialized. */ + gcc_assert (INSN_PRIORITY_KNOWN (tmp) && INSN_PRIORITY_KNOWN (tmp2)); +@@ -2582,18 +2646,15 @@ + + insn_delay (tmp) + - INSN_REG_PRESSURE_EXCESS_COST_CHANGE (tmp2) + - insn_delay (tmp2)))) +- return diff; ++ return rfs_result (RFS_PRESSURE_DELAY, diff, tmp, tmp2); + } + + if (sched_pressure != SCHED_PRESSURE_NONE +- && (INSN_TICK (tmp2) > clock_var || INSN_TICK (tmp) > clock_var)) ++ && (INSN_TICK (tmp2) > clock_var || INSN_TICK (tmp) > clock_var) ++ && INSN_TICK (tmp2) != INSN_TICK (tmp)) + { +- if (INSN_TICK (tmp) <= clock_var) +- return -1; +- else if (INSN_TICK (tmp2) <= clock_var) +- return 1; +- else +- return INSN_TICK (tmp) - INSN_TICK (tmp2); ++ diff = INSN_TICK (tmp) - INSN_TICK (tmp2); ++ return rfs_result (RFS_PRESSURE_TICK, diff, tmp, tmp2); + } + + /* If we are doing backtracking in this schedule, prefer insns that +@@ -2603,7 +2664,7 @@ + { + priority_val = FEEDS_BACKTRACK_INSN (tmp2) - FEEDS_BACKTRACK_INSN (tmp); + if (priority_val) +- return priority_val; ++ return rfs_result (RFS_FEEDS_BACKTRACK_INSN, priority_val, tmp, tmp2); + } + + /* Prefer insn with higher priority. */ +@@ -2610,8 +2671,15 @@ + priority_val = INSN_PRIORITY (tmp2) - INSN_PRIORITY (tmp); + + if (flag_sched_critical_path_heuristic && priority_val) +- return priority_val; ++ return rfs_result (RFS_PRIORITY, priority_val, tmp, tmp2); + ++ if (PARAM_VALUE (PARAM_SCHED_AUTOPREF_QUEUE_DEPTH) >= 0) ++ { ++ int autopref = autopref_rank_for_schedule (tmp, tmp2); ++ if (autopref != 0) ++ return autopref; ++ } ++ + /* Prefer speculative insn with greater dependencies weakness. */ + if (flag_sched_spec_insn_heuristic && spec_info) + { +@@ -2633,12 +2701,12 @@ + + dw = dw2 - dw1; + if (dw > (NO_DEP_WEAK / 8) || dw < -(NO_DEP_WEAK / 8)) +- return dw; ++ return rfs_result (RFS_SPECULATION, dw, tmp, tmp2); + } + + info_val = (*current_sched_info->rank) (tmp, tmp2); + if (flag_sched_rank_heuristic && info_val) +- return info_val; ++ return rfs_result (RFS_SCHED_RANK, info_val, tmp, tmp2); + + /* Compare insns based on their relation to the last scheduled + non-debug insn. */ +@@ -2674,17 +2742,16 @@ + tmp2_class = 2; + + if ((val = tmp2_class - tmp_class)) +- return val; ++ return rfs_result (RFS_LAST_INSN, val, tmp, tmp2); + } + + /* Prefer instructions that occur earlier in the model schedule. */ +- if (sched_pressure == SCHED_PRESSURE_MODEL) ++ if (sched_pressure == SCHED_PRESSURE_MODEL ++ && INSN_BB (tmp) == target_bb && INSN_BB (tmp2) == target_bb) + { +- int diff; +- + diff = model_index (tmp) - model_index (tmp2); +- if (diff != 0) +- return diff; ++ gcc_assert (diff != 0); ++ return rfs_result (RFS_PRESSURE_INDEX, diff, tmp, tmp2); + } + + /* Prefer the insn which has more later insns that depend on it. +@@ -2695,12 +2762,12 @@ + - dep_list_size (tmp, SD_LIST_FORW)); + + if (flag_sched_dep_count_heuristic && val != 0) +- return val; ++ return rfs_result (RFS_DEP_COUNT, val, tmp, tmp2); + + /* If insns are equally good, sort by INSN_LUID (original insn order), + so that we make the sort stable. This minimizes instruction movement, + thus minimizing sched's effect on debugging and cross-jumping. */ +- return INSN_LUID (tmp) - INSN_LUID (tmp2); ++ return rfs_result (RFS_TIE, INSN_LUID (tmp) - INSN_LUID (tmp2), tmp, tmp2); + } + + /* Resort the array A in which only element at index N may be out of order. */ +@@ -2905,27 +2972,100 @@ + gcc_unreachable (); + } + +-/* Sort the ready list READY by ascending priority, using the SCHED_SORT +- macro. */ ++/* Calculate difference of two statistics set WAS and NOW. ++ Result returned in WAS. */ ++static void ++rank_for_schedule_stats_diff (rank_for_schedule_stats_t *was, ++ const rank_for_schedule_stats_t *now) ++{ ++ for (int i = 0; i < RFS_N; ++i) ++ was->stats[i] = now->stats[i] - was->stats[i]; ++} + +-void +-ready_sort (struct ready_list *ready) ++/* Print rank_for_schedule statistics. */ ++static void ++print_rank_for_schedule_stats (const char *prefix, ++ const rank_for_schedule_stats_t *stats, ++ struct ready_list *ready) + { ++ for (int i = 0; i < RFS_N; ++i) ++ if (stats->stats[i]) ++ { ++ fprintf (sched_dump, "%s%20s: %u", prefix, rfs_str[i], stats->stats[i]); ++ ++ if (ready != NULL) ++ /* Print out insns that won due to RFS_. */ ++ { ++ rtx *p = ready_lastpos (ready); ++ ++ fprintf (sched_dump, ":"); ++ /* Start with 1 since least-priority insn didn't have any wins. */ ++ for (int j = 1; j < ready->n_ready; ++j) ++ if (INSN_LAST_RFS_WIN (p[j]) == i) ++ fprintf (sched_dump, " %s", ++ (*current_sched_info->print_insn) (p[j], 0)); ++ } ++ fprintf (sched_dump, "\n"); ++ } ++} ++ ++/* Separate DEBUG_INSNS from normal insns. DEBUG_INSNs go to the end ++ of array. */ ++static void ++ready_sort_debug (struct ready_list *ready) ++{ + int i; + rtx *first = ready_lastpos (ready); + ++ for (i = 0; i < ready->n_ready; ++i) ++ if (!DEBUG_INSN_P (first[i])) ++ INSN_RFS_DEBUG_ORIG_ORDER (first[i]) = i; ++ ++ qsort (first, ready->n_ready, sizeof (rtx), rank_for_schedule_debug); ++} ++ ++/* Sort non-debug insns in the ready list READY by ascending priority. ++ Assumes that all debug insns are separated from the real insns. */ ++static void ++ready_sort_real (struct ready_list *ready) ++{ ++ int i; ++ rtx *first = ready_lastpos (ready); ++ int n_ready_real = ready->n_ready - ready->n_debug; ++ + if (sched_pressure == SCHED_PRESSURE_WEIGHTED) ++ for (i = 0; i < n_ready_real; ++i) ++ setup_insn_reg_pressure_info (first[i]); ++ else if (sched_pressure == SCHED_PRESSURE_MODEL ++ && model_curr_point < model_num_insns) ++ model_set_excess_costs (first, n_ready_real); ++ ++ rank_for_schedule_stats_t stats1; ++ if (sched_verbose >= 4) ++ stats1 = rank_for_schedule_stats; ++ ++ if (n_ready_real == 2) ++ swap_sort (first, n_ready_real); ++ else if (n_ready_real > 2) ++ qsort (first, n_ready_real, sizeof (rtx), rank_for_schedule); ++ ++ if (sched_verbose >= 4) + { +- for (i = 0; i < ready->n_ready; i++) +- if (!DEBUG_INSN_P (first[i])) +- setup_insn_reg_pressure_info (first[i]); ++ rank_for_schedule_stats_diff (&stats1, &rank_for_schedule_stats); ++ print_rank_for_schedule_stats (";;\t\t", &stats1, ready); + } +- if (sched_pressure == SCHED_PRESSURE_MODEL +- && model_curr_point < model_num_insns) +- model_set_excess_costs (first, ready->n_ready); +- SCHED_SORT (first, ready->n_ready); + } + ++/* Sort the ready list READY by ascending priority. */ ++static void ++ready_sort (struct ready_list *ready) ++{ ++ if (ready->n_debug > 0) ++ ready_sort_debug (ready); ++ else ++ ready_sort_real (ready); ++} ++ + /* PREV is an insn that is ready to execute. Adjust its priority if that + will help shorten or lengthen register lifetimes as appropriate. Also + provide a hook for the target to tweak itself. */ +@@ -2971,7 +3111,7 @@ + advance_one_cycle (void) + { + advance_state (curr_state); +- if (sched_verbose >= 6) ++ if (sched_verbose >= 4) + fprintf (sched_dump, ";;\tAdvance the current state.\n"); + } + +@@ -3670,15 +3810,13 @@ + scheduling region. */ + + static void +-model_start_schedule (void) ++model_start_schedule (basic_block bb) + { +- basic_block bb; +- + model_next_priority = 1; + model_schedule.create (sched_max_luid); + model_insns = XCNEWVEC (struct model_insn_info, sched_max_luid); + +- bb = BLOCK_FOR_INSN (NEXT_INSN (current_sched_info->prev_head)); ++ gcc_assert (bb == BLOCK_FOR_INSN (NEXT_INSN (current_sched_info->prev_head))); + initiate_reg_pressure_info (df_get_live_in (bb)); + + model_analyze_insns (); +@@ -3716,6 +3854,53 @@ + model_finalize_pressure_group (&model_before_pressure); + model_schedule.release (); + } ++ ++/* Prepare reg pressure scheduling for basic block BB. */ ++static void ++sched_pressure_start_bb (basic_block bb) ++{ ++ /* Set the number of available registers for each class taking into account ++ relative probability of current basic block versus function prologue and ++ epilogue. ++ * If the basic block executes much more often than the prologue/epilogue ++ (e.g., inside a hot loop), then cost of spill in the prologue is close to ++ nil, so the effective number of available registers is ++ (ira_class_hard_regs_num[cl] - 0). ++ * If the basic block executes as often as the prologue/epilogue, ++ then spill in the block is as costly as in the prologue, so the effective ++ number of available registers is ++ (ira_class_hard_regs_num[cl] - call_used_regs_num[cl]). ++ Note that all-else-equal, we prefer to spill in the prologue, since that ++ allows "extra" registers for other basic blocks of the function. ++ * If the basic block is on the cold path of the function and executes ++ rarely, then we should always prefer to spill in the block, rather than ++ in the prologue/epilogue. The effective number of available register is ++ (ira_class_hard_regs_num[cl] - call_used_regs_num[cl]). */ ++ { ++ int i; ++ int entry_freq = ENTRY_BLOCK_PTR_FOR_FN (cfun)->frequency; ++ int bb_freq = bb->frequency; ++ ++ if (bb_freq == 0) ++ { ++ if (entry_freq == 0) ++ entry_freq = bb_freq = 1; ++ } ++ if (bb_freq < entry_freq) ++ bb_freq = entry_freq; ++ ++ for (i = 0; i < ira_pressure_classes_num; ++i) ++ { ++ enum reg_class cl = ira_pressure_classes[i]; ++ sched_class_regs_num[cl] = ira_class_hard_regs_num[cl]; ++ sched_class_regs_num[cl] ++ -= (call_used_regs_num[cl] * entry_freq) / bb_freq; ++ } ++ } ++ ++ if (sched_pressure == SCHED_PRESSURE_MODEL) ++ model_start_schedule (bb); ++} + + /* A structure that holds local state for the loop in schedule_block. */ + struct sched_block_state +@@ -3750,7 +3935,7 @@ + if (sched_verbose >= 1) + { + struct reg_pressure_data *pressure_info; +- fprintf (sched_dump, ";;\t%3i--> %s%-40s:", ++ fprintf (sched_dump, ";;\t%3i--> %s %-40s:", + clock_var, (*current_sched_info->print_insn) (insn, 1), + str_pattern_slim (PATTERN (insn))); + +@@ -3944,6 +4129,10 @@ + last_clock_var = clock_var; + } + ++ if (nonscheduled_insns_begin != NULL_RTX) ++ /* Indicate to debug counters that INSN is scheduled. */ ++ nonscheduled_insns_begin = insn; ++ + return advance; + } + +@@ -4048,6 +4237,7 @@ + + rtx last_scheduled_insn; + rtx last_nondebug_scheduled_insn; ++ rtx nonscheduled_insns_begin; + int cycle_issued_insns; + + /* Copies of state used in the inner loop of schedule_block. */ +@@ -4120,6 +4310,7 @@ + save->cycle_issued_insns = cycle_issued_insns; + save->last_scheduled_insn = last_scheduled_insn; + save->last_nondebug_scheduled_insn = last_nondebug_scheduled_insn; ++ save->nonscheduled_insns_begin = nonscheduled_insns_begin; + + save->sched_block = sched_block; + +@@ -4375,6 +4566,7 @@ + cycle_issued_insns = save->cycle_issued_insns; + last_scheduled_insn = save->last_scheduled_insn; + last_nondebug_scheduled_insn = save->last_nondebug_scheduled_insn; ++ nonscheduled_insns_begin = save->nonscheduled_insns_begin; + + *psched_block = save->sched_block; + +@@ -4843,6 +5035,24 @@ + } + } + ++/* Return first non-scheduled insn in the current scheduling block. ++ This is mostly used for debug-counter purposes. */ ++static rtx ++first_nonscheduled_insn (void) ++{ ++ rtx insn = (nonscheduled_insns_begin != NULL_RTX ++ ? nonscheduled_insns_begin ++ : current_sched_info->prev_head); ++ ++ do ++ { ++ insn = next_nonnote_nondebug_insn (insn); ++ } ++ while (QUEUE_INDEX (insn) == QUEUE_SCHEDULED); ++ ++ return insn; ++} ++ + /* Move insns that became ready to fire from queue to ready list. */ + + static void +@@ -4855,16 +5065,9 @@ + q_ptr = NEXT_Q (q_ptr); + + if (dbg_cnt (sched_insn) == false) +- { +- /* If debug counter is activated do not requeue the first +- nonscheduled insn. */ +- skip_insn = nonscheduled_insns_begin; +- do +- { +- skip_insn = next_nonnote_nondebug_insn (skip_insn); +- } +- while (QUEUE_INDEX (skip_insn) == QUEUE_SCHEDULED); +- } ++ /* If debug counter is activated do not requeue the first ++ nonscheduled insn. */ ++ skip_insn = first_nonscheduled_insn (); + else + skip_insn = NULL_RTX; + +@@ -4894,7 +5097,11 @@ + && model_index (insn) == model_curr_point) + && !SCHED_GROUP_P (insn) + && insn != skip_insn) +- queue_insn (insn, 1, "ready full"); ++ { ++ if (sched_verbose >= 2) ++ fprintf (sched_dump, "keeping in queue, ready full\n"); ++ queue_insn (insn, 1, "ready full"); ++ } + else + { + ready_add (ready, insn, false); +@@ -4939,6 +5146,9 @@ + + q_ptr = NEXT_Q_AFTER (q_ptr, stalls); + clock_var += stalls; ++ if (sched_verbose >= 2) ++ fprintf (sched_dump, ";;\tAdvancing clock by %d cycle[s] to %d\n", ++ stalls, clock_var); + } + } + +@@ -5099,10 +5309,11 @@ + } + + +-/* Print the ready list for debugging purposes. Callable from debugger. */ +- ++/* Print the ready list for debugging purposes. ++ If READY_TRY is non-zero then only print insns that max_issue ++ will consider. */ + static void +-debug_ready_list (struct ready_list *ready) ++debug_ready_list_1 (struct ready_list *ready, signed char *ready_try) + { + rtx *p; + int i; +@@ -5116,6 +5327,9 @@ + p = ready_lastpos (ready); + for (i = 0; i < ready->n_ready; i++) + { ++ if (ready_try != NULL && ready_try[ready->n_ready - i - 1]) ++ continue; ++ + fprintf (sched_dump, " %s:%d", + (*current_sched_info->print_insn) (p[i], 0), + INSN_LUID (p[i])); +@@ -5122,8 +5336,12 @@ + if (sched_pressure != SCHED_PRESSURE_NONE) + fprintf (sched_dump, "(cost=%d", + INSN_REG_PRESSURE_EXCESS_COST_CHANGE (p[i])); ++ fprintf (sched_dump, ":prio=%d", INSN_PRIORITY (p[i])); + if (INSN_TICK (p[i]) > clock_var) + fprintf (sched_dump, ":delay=%d", INSN_TICK (p[i]) - clock_var); ++ if (sched_pressure == SCHED_PRESSURE_MODEL) ++ fprintf (sched_dump, ":idx=%d", ++ model_index (p[i])); + if (sched_pressure != SCHED_PRESSURE_NONE) + fprintf (sched_dump, ")"); + } +@@ -5130,6 +5348,13 @@ + fprintf (sched_dump, "\n"); + } + ++/* Print the ready list. Callable from debugger. */ ++static void ++debug_ready_list (struct ready_list *ready) ++{ ++ debug_ready_list_1 (ready, NULL); ++} ++ + /* Search INSN for REG_SAVE_NOTE notes and convert them back into insn + NOTEs. This is used for NOTE_INSN_EPILOGUE_BEG, so that sched-ebb + replaces the epilogue note in the correct basic block. */ +@@ -5252,6 +5477,241 @@ + return false; + } + ++/* Functions to model cache auto-prefetcher. ++ ++ Some of the CPUs have cache auto-prefetcher, which /seems/ to initiate ++ memory prefetches if it sees instructions with consequitive memory accesses ++ in the instruction stream. Details of such hardware units are not published, ++ so we can only guess what exactly is going on there. ++ In the scheduler, we model abstract auto-prefetcher. If there are memory ++ insns in the ready list (or the queue) that have same memory base, but ++ different offsets, then we delay the insns with larger offsets until insns ++ with smaller offsets get scheduled. If PARAM_SCHED_AUTOPREF_QUEUE_DEPTH ++ is "1", then we look at the ready list; if it is N>1, then we also look ++ through N-1 queue entries. ++ If the param is N>=0, then rank_for_schedule will consider auto-prefetching ++ among its heuristics. ++ Param value of "-1" disables modelling of the auto-prefetcher. */ ++ ++/* Initialize autoprefetcher model data for INSN. */ ++static void ++autopref_multipass_init (const rtx insn, int write) ++{ ++ autopref_multipass_data_t data = &INSN_AUTOPREF_MULTIPASS_DATA (insn)[write]; ++ ++ gcc_assert (data->status == AUTOPREF_MULTIPASS_DATA_UNINITIALIZED); ++ data->base = NULL_RTX; ++ data->offset = 0; ++ /* Set insn entry initialized, but not relevant for auto-prefetcher. */ ++ data->status = AUTOPREF_MULTIPASS_DATA_IRRELEVANT; ++ ++ rtx set = single_set (insn); ++ if (set == NULL_RTX) ++ return; ++ ++ rtx mem = write ? SET_DEST (set) : SET_SRC (set); ++ if (!MEM_P (mem)) ++ return; ++ ++ struct address_info info; ++ decompose_mem_address (&info, mem); ++ ++ /* TODO: Currently only (base+const) addressing is supported. */ ++ if (info.base == NULL || !REG_P (*info.base) ++ || (info.disp != NULL && !CONST_INT_P (*info.disp))) ++ return; ++ ++ /* This insn is relevant for auto-prefetcher. */ ++ data->base = *info.base; ++ data->offset = info.disp ? INTVAL (*info.disp) : 0; ++ data->status = AUTOPREF_MULTIPASS_DATA_NORMAL; ++} ++ ++/* Helper function for rank_for_schedule sorting. */ ++static int ++autopref_rank_for_schedule (const rtx insn1, const rtx insn2) ++{ ++ for (int write = 0; write < 2; ++write) ++ { ++ autopref_multipass_data_t data1 ++ = &INSN_AUTOPREF_MULTIPASS_DATA (insn1)[write]; ++ autopref_multipass_data_t data2 ++ = &INSN_AUTOPREF_MULTIPASS_DATA (insn2)[write]; ++ ++ if (data1->status == AUTOPREF_MULTIPASS_DATA_UNINITIALIZED) ++ autopref_multipass_init (insn1, write); ++ if (data1->status == AUTOPREF_MULTIPASS_DATA_IRRELEVANT) ++ continue; ++ ++ if (data2->status == AUTOPREF_MULTIPASS_DATA_UNINITIALIZED) ++ autopref_multipass_init (insn2, write); ++ if (data2->status == AUTOPREF_MULTIPASS_DATA_IRRELEVANT) ++ continue; ++ ++ if (!rtx_equal_p (data1->base, data2->base)) ++ continue; ++ ++ return data1->offset - data2->offset; ++ } ++ ++ return 0; ++} ++ ++/* True if header of debug dump was printed. */ ++static bool autopref_multipass_dfa_lookahead_guard_started_dump_p; ++ ++/* Helper for autopref_multipass_dfa_lookahead_guard. ++ Return "1" if INSN1 should be delayed in favor of INSN2. */ ++static int ++autopref_multipass_dfa_lookahead_guard_1 (const rtx insn1, ++ const rtx insn2, int write) ++{ ++ autopref_multipass_data_t data1 ++ = &INSN_AUTOPREF_MULTIPASS_DATA (insn1)[write]; ++ autopref_multipass_data_t data2 ++ = &INSN_AUTOPREF_MULTIPASS_DATA (insn2)[write]; ++ ++ if (data2->status == AUTOPREF_MULTIPASS_DATA_UNINITIALIZED) ++ autopref_multipass_init (insn2, write); ++ if (data2->status == AUTOPREF_MULTIPASS_DATA_IRRELEVANT) ++ return 0; ++ ++ if (rtx_equal_p (data1->base, data2->base) ++ && data1->offset > data2->offset) ++ { ++ if (sched_verbose >= 2) ++ { ++ if (!autopref_multipass_dfa_lookahead_guard_started_dump_p) ++ { ++ fprintf (sched_dump, ++ ";;\t\tnot trying in max_issue due to autoprefetch " ++ "model: "); ++ autopref_multipass_dfa_lookahead_guard_started_dump_p = true; ++ } ++ ++ fprintf (sched_dump, " %d(%d)", INSN_UID (insn1), INSN_UID (insn2)); ++ } ++ ++ return 1; ++ } ++ ++ return 0; ++} ++ ++/* General note: ++ ++ We could have also hooked autoprefetcher model into ++ first_cycle_multipass_backtrack / first_cycle_multipass_issue hooks ++ to enable intelligent selection of "[r1+0]=r2; [r1+4]=r3" on the same cycle ++ (e.g., once "[r1+0]=r2" is issued in max_issue(), "[r1+4]=r3" gets ++ unblocked). We don't bother about this yet because target of interest ++ (ARM Cortex-A15) can issue only 1 memory operation per cycle. */ ++ ++/* Implementation of first_cycle_multipass_dfa_lookahead_guard hook. ++ Return "1" if INSN1 should not be considered in max_issue due to ++ auto-prefetcher considerations. */ ++int ++autopref_multipass_dfa_lookahead_guard (rtx insn1, int ready_index) ++{ ++ int r = 0; ++ ++ if (PARAM_VALUE (PARAM_SCHED_AUTOPREF_QUEUE_DEPTH) <= 0) ++ return 0; ++ ++ if (sched_verbose >= 2 && ready_index == 0) ++ autopref_multipass_dfa_lookahead_guard_started_dump_p = false; ++ ++ for (int write = 0; write < 2; ++write) ++ { ++ autopref_multipass_data_t data1 ++ = &INSN_AUTOPREF_MULTIPASS_DATA (insn1)[write]; ++ ++ if (data1->status == AUTOPREF_MULTIPASS_DATA_UNINITIALIZED) ++ autopref_multipass_init (insn1, write); ++ if (data1->status == AUTOPREF_MULTIPASS_DATA_IRRELEVANT) ++ continue; ++ ++ if (ready_index == 0 ++ && data1->status == AUTOPREF_MULTIPASS_DATA_DONT_DELAY) ++ /* We allow only a single delay on priviledged instructions. ++ Doing otherwise would cause infinite loop. */ ++ { ++ if (sched_verbose >= 2) ++ { ++ if (!autopref_multipass_dfa_lookahead_guard_started_dump_p) ++ { ++ fprintf (sched_dump, ++ ";;\t\tnot trying in max_issue due to autoprefetch " ++ "model: "); ++ autopref_multipass_dfa_lookahead_guard_started_dump_p = true; ++ } ++ ++ fprintf (sched_dump, " *%d*", INSN_UID (insn1)); ++ } ++ continue; ++ } ++ ++ for (int i2 = 0; i2 < ready.n_ready; ++i2) ++ { ++ rtx insn2 = get_ready_element (i2); ++ if (insn1 == insn2) ++ continue; ++ r = autopref_multipass_dfa_lookahead_guard_1 (insn1, insn2, write); ++ if (r) ++ { ++ if (ready_index == 0) ++ { ++ r = -1; ++ data1->status = AUTOPREF_MULTIPASS_DATA_DONT_DELAY; ++ } ++ goto finish; ++ } ++ } ++ ++ if (PARAM_VALUE (PARAM_SCHED_AUTOPREF_QUEUE_DEPTH) == 1) ++ continue; ++ ++ /* Everything from the current queue slot should have been moved to ++ the ready list. */ ++ gcc_assert (insn_queue[NEXT_Q_AFTER (q_ptr, 0)] == NULL_RTX); ++ ++ int n_stalls = PARAM_VALUE (PARAM_SCHED_AUTOPREF_QUEUE_DEPTH) - 1; ++ if (n_stalls > max_insn_queue_index) ++ n_stalls = max_insn_queue_index; ++ ++ for (int stalls = 1; stalls <= n_stalls; ++stalls) ++ { ++ for (rtx link = insn_queue[NEXT_Q_AFTER (q_ptr, stalls)]; ++ link != NULL_RTX; ++ link = XEXP (link, 1)) ++ { ++ rtx insn2 = XEXP (link, 0); ++ r = autopref_multipass_dfa_lookahead_guard_1 (insn1, insn2, ++ write); ++ if (r) ++ { ++ /* Queue INSN1 until INSN2 can issue. */ ++ r = -stalls; ++ if (ready_index == 0) ++ data1->status = AUTOPREF_MULTIPASS_DATA_DONT_DELAY; ++ goto finish; ++ } ++ } ++ } ++ } ++ ++ finish: ++ if (sched_verbose >= 2 ++ && autopref_multipass_dfa_lookahead_guard_started_dump_p ++ && (ready_index == ready.n_ready - 1 || r < 0)) ++ /* This does not /always/ trigger. We don't output EOL if the last ++ insn is not recognized (INSN_CODE < 0) and lookahead_guard is not ++ called. We can live with this. */ ++ fprintf (sched_dump, "\n"); ++ ++ return r; ++} ++ + /* Define type for target data used in multipass scheduling. */ + #ifndef TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DATA_T + # define TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DATA_T int +@@ -5291,15 +5751,6 @@ + could achieve DFA_LOOKAHEAD ** N , where N is the queue length. */ + static int max_lookahead_tries; + +-/* The following value is value of hook +- `first_cycle_multipass_dfa_lookahead' at the last call of +- `max_issue'. */ +-static int cached_first_cycle_multipass_dfa_lookahead = 0; +- +-/* The following value is value of `issue_rate' at the last call of +- `sched_init'. */ +-static int cached_issue_rate = 0; +- + /* The following function returns maximal (or close to maximal) number + of insns which can be issued on the same cycle and one of which + insns is insns with the best rank (the first insn in READY). To +@@ -5328,9 +5779,8 @@ + && privileged_n <= n_ready); + + /* Init MAX_LOOKAHEAD_TRIES. */ +- if (cached_first_cycle_multipass_dfa_lookahead != dfa_lookahead) ++ if (max_lookahead_tries == 0) + { +- cached_first_cycle_multipass_dfa_lookahead = dfa_lookahead; + max_lookahead_tries = 100; + for (i = 0; i < issue_rate; i++) + max_lookahead_tries *= dfa_lookahead; +@@ -5359,6 +5809,12 @@ + if (!ready_try [i]) + all++; + ++ if (sched_verbose >= 2) ++ { ++ fprintf (sched_dump, ";;\t\tmax_issue among %d insns:", all); ++ debug_ready_list_1 (ready, ready_try); ++ } ++ + /* I is the index of the insn to try next. */ + i = 0; + tries_num = 0; +@@ -5487,21 +5943,16 @@ + choose_ready (struct ready_list *ready, bool first_cycle_insn_p, + rtx *insn_ptr) + { +- int lookahead; +- + if (dbg_cnt (sched_insn) == false) + { +- rtx insn = nonscheduled_insns_begin; +- do +- { +- insn = next_nonnote_insn (insn); +- } +- while (QUEUE_INDEX (insn) == QUEUE_SCHEDULED); ++ if (nonscheduled_insns_begin == NULL_RTX) ++ nonscheduled_insns_begin = current_sched_info->prev_head; + ++ rtx insn = first_nonscheduled_insn (); ++ + if (QUEUE_INDEX (insn) == QUEUE_READY) + /* INSN is in the ready_list. */ + { +- nonscheduled_insns_begin = insn; + ready_remove_insn (insn); + *insn_ptr = insn; + return 0; +@@ -5508,14 +5959,11 @@ + } + + /* INSN is in the queue. Advance cycle to move it to the ready list. */ ++ gcc_assert (QUEUE_INDEX (insn) >= 0); + return -1; + } + +- lookahead = 0; +- +- if (targetm.sched.first_cycle_multipass_dfa_lookahead) +- lookahead = targetm.sched.first_cycle_multipass_dfa_lookahead (); +- if (lookahead <= 0 || SCHED_GROUP_P (ready_element (ready, 0)) ++ if (dfa_lookahead <= 0 || SCHED_GROUP_P (ready_element (ready, 0)) + || DEBUG_INSN_P (ready_element (ready, 0))) + { + if (targetm.sched.dispatch (NULL_RTX, IS_DISPATCH_ON)) +@@ -5527,11 +5975,9 @@ + } + else + { +- /* Try to choose the better insn. */ +- int index = 0, i, n; ++ /* Try to choose the best insn. */ ++ int index = 0, i; + rtx insn; +- int try_data = 1, try_control = 1; +- ds_t ts; + + insn = ready_element (ready, 0); + if (INSN_CODE (insn) < 0) +@@ -5540,84 +5986,57 @@ + return 0; + } + +- if (spec_info +- && spec_info->flags & (PREFER_NON_DATA_SPEC +- | PREFER_NON_CONTROL_SPEC)) ++ /* Filter the search space. */ ++ for (i = 0; i < ready->n_ready; i++) + { +- for (i = 0, n = ready->n_ready; i < n; i++) ++ ready_try[i] = 0; ++ ++ insn = ready_element (ready, i); ++ ++ /* If this insn is recognizable we should have already ++ recognized it earlier. ++ ??? Not very clear where this is supposed to be done. ++ See dep_cost_1. */ ++ gcc_checking_assert (INSN_CODE (insn) >= 0 ++ || recog_memoized (insn) < 0); ++ if (INSN_CODE (insn) < 0) + { +- rtx x; +- ds_t s; ++ /* Non-recognized insns at position 0 are handled above. */ ++ gcc_assert (i > 0); ++ ready_try[i] = 1; ++ continue; ++ } + +- x = ready_element (ready, i); +- s = TODO_SPEC (x); ++ if (targetm.sched.first_cycle_multipass_dfa_lookahead_guard) ++ { ++ ready_try[i] ++ = (targetm.sched.first_cycle_multipass_dfa_lookahead_guard ++ (insn, i)); + +- if (spec_info->flags & PREFER_NON_DATA_SPEC +- && !(s & DATA_SPEC)) ++ if (ready_try[i] < 0) ++ /* Queue instruction for several cycles. ++ We need to restart choose_ready as we have changed ++ the ready list. */ + { +- try_data = 0; +- if (!(spec_info->flags & PREFER_NON_CONTROL_SPEC) +- || !try_control) +- break; ++ change_queue_index (insn, -ready_try[i]); ++ return 1; + } + +- if (spec_info->flags & PREFER_NON_CONTROL_SPEC +- && !(s & CONTROL_SPEC)) +- { +- try_control = 0; +- if (!(spec_info->flags & PREFER_NON_DATA_SPEC) || !try_data) +- break; +- } ++ /* Make sure that we didn't end up with 0'th insn filtered out. ++ Don't be tempted to make life easier for backends and just ++ requeue 0'th insn if (ready_try[0] == 0) and restart ++ choose_ready. Backends should be very considerate about ++ requeueing instructions -- especially the highest priority ++ one at position 0. */ ++ gcc_assert (ready_try[i] == 0 || i > 0); ++ if (ready_try[i]) ++ continue; + } +- } + +- ts = TODO_SPEC (insn); +- if ((ts & SPECULATIVE) +- && (((!try_data && (ts & DATA_SPEC)) +- || (!try_control && (ts & CONTROL_SPEC))) +- || (targetm.sched.first_cycle_multipass_dfa_lookahead_guard_spec +- && !targetm.sched +- .first_cycle_multipass_dfa_lookahead_guard_spec (insn)))) +- /* Discard speculative instruction that stands first in the ready +- list. */ +- { +- change_queue_index (insn, 1); +- return 1; ++ gcc_assert (ready_try[i] == 0); ++ /* INSN made it through the scrutiny of filters! */ + } + +- ready_try[0] = 0; +- +- for (i = 1; i < ready->n_ready; i++) +- { +- insn = ready_element (ready, i); +- +- ready_try [i] +- = ((!try_data && (TODO_SPEC (insn) & DATA_SPEC)) +- || (!try_control && (TODO_SPEC (insn) & CONTROL_SPEC))); +- } +- +- /* Let the target filter the search space. */ +- for (i = 1; i < ready->n_ready; i++) +- if (!ready_try[i]) +- { +- insn = ready_element (ready, i); +- +- /* If this insn is recognizable we should have already +- recognized it earlier. +- ??? Not very clear where this is supposed to be done. +- See dep_cost_1. */ +- gcc_checking_assert (INSN_CODE (insn) >= 0 +- || recog_memoized (insn) < 0); +- +- ready_try [i] +- = (/* INSN_CODE check can be omitted here as it is also done later +- in max_issue (). */ +- INSN_CODE (insn) < 0 +- || (targetm.sched.first_cycle_multipass_dfa_lookahead_guard +- && !targetm.sched.first_cycle_multipass_dfa_lookahead_guard +- (insn))); +- } +- + if (max_issue (ready, 1, curr_state, first_cycle_insn_p, &index) == 0) + { + *insn_ptr = ready_remove_first (ready); +@@ -5865,6 +6284,35 @@ + return earliest_fail; + } + ++/* Print instructions together with useful scheduling information between ++ HEAD and TAIL (inclusive). */ ++static void ++dump_insn_stream (rtx head, rtx tail) ++{ ++ fprintf (sched_dump, ";;\t| insn | prio |\n"); ++ ++ rtx next_tail = NEXT_INSN (tail); ++ for (rtx insn = head; insn != next_tail; insn = NEXT_INSN (insn)) ++ { ++ int priority = NOTE_P (insn) ? 0 : INSN_PRIORITY (insn); ++ const char *pattern = (NOTE_P (insn) ++ ? "note" ++ : str_pattern_slim (PATTERN (insn))); ++ ++ fprintf (sched_dump, ";;\t| %4d | %4d | %-30s ", ++ INSN_UID (insn), priority, pattern); ++ ++ if (sched_verbose >= 4) ++ { ++ if (NOTE_P (insn) || recog_memoized (insn) < 0) ++ fprintf (sched_dump, "nothing"); ++ else ++ print_reservation (sched_dump, insn); ++ } ++ fprintf (sched_dump, "\n"); ++ } ++} ++ + /* Use forward list scheduling to rearrange insns of block pointed to by + TARGET_BB, possibly bringing insns from subsequent blocks in the same + region. */ +@@ -5903,8 +6351,17 @@ + + /* Debug info. */ + if (sched_verbose) +- dump_new_block_header (0, *target_bb, head, tail); ++ { ++ dump_new_block_header (0, *target_bb, head, tail); + ++ if (sched_verbose >= 2) ++ { ++ dump_insn_stream (head, tail); ++ memset (&rank_for_schedule_stats, 0, ++ sizeof (rank_for_schedule_stats)); ++ } ++ } ++ + if (init_state == NULL) + state_reset (curr_state); + else +@@ -5922,8 +6379,9 @@ + targetm.sched.init (sched_dump, sched_verbose, ready.veclen); + + /* We start inserting insns after PREV_HEAD. */ +- last_scheduled_insn = nonscheduled_insns_begin = prev_head; ++ last_scheduled_insn = prev_head; + last_nondebug_scheduled_insn = NULL_RTX; ++ nonscheduled_insns_begin = NULL_RTX; + + gcc_assert ((NOTE_P (last_scheduled_insn) + || DEBUG_INSN_P (last_scheduled_insn)) +@@ -5944,8 +6402,8 @@ + in try_ready () (which is called through init_ready_list ()). */ + (*current_sched_info->init_ready_list) (); + +- if (sched_pressure == SCHED_PRESSURE_MODEL) +- model_start_schedule (); ++ if (sched_pressure) ++ sched_pressure_start_bb (*target_bb); + + /* The algorithm is O(n^2) in the number of ready insns at any given + time in the worst case. Before reload we are more likely to have +@@ -5953,7 +6411,8 @@ + if (!reload_completed + && ready.n_ready - ready.n_debug > MAX_SCHED_READY_INSNS) + { +- ready_sort (&ready); ++ ready_sort_debug (&ready); ++ ready_sort_real (&ready); + + /* Find first free-standing insn past MAX_SCHED_READY_INSNS. + If there are debug insns, we know they're first. */ +@@ -5964,7 +6423,8 @@ + if (sched_verbose >= 2) + { + fprintf (sched_dump, +- ";;\t\tReady list on entry: %d insns\n", ready.n_ready); ++ ";;\t\tReady list on entry: %d insns: ", ready.n_ready); ++ debug_ready_list (&ready); + fprintf (sched_dump, + ";;\t\t before reload => truncated to %d insns\n", i); + } +@@ -5976,7 +6436,7 @@ + rtx skip_insn; + + if (dbg_cnt (sched_insn) == false) +- skip_insn = next_nonnote_insn (nonscheduled_insns_begin); ++ skip_insn = first_nonscheduled_insn (); + else + skip_insn = NULL_RTX; + +@@ -6031,7 +6491,7 @@ + + if (sched_verbose >= 2) + { +- fprintf (sched_dump, ";;\t\tReady list after queue_to_ready: "); ++ fprintf (sched_dump, ";;\t\tReady list after queue_to_ready:"); + debug_ready_list (&ready); + } + advance -= clock_var - start_clock_var; +@@ -6097,7 +6557,8 @@ + + if (sched_verbose >= 2) + { +- fprintf (sched_dump, ";;\t\tReady list after ready_sort: "); ++ fprintf (sched_dump, ++ ";;\t\tReady list after ready_sort: "); + debug_ready_list (&ready); + } + } +@@ -6488,14 +6949,25 @@ + sched_extend_luids (); + } + +- if (sched_verbose) +- fprintf (sched_dump, ";; new head = %d\n;; new tail = %d\n\n", +- INSN_UID (head), INSN_UID (tail)); +- + /* Update head/tail boundaries. */ + head = NEXT_INSN (prev_head); + tail = last_scheduled_insn; + ++ if (sched_verbose) ++ { ++ fprintf (sched_dump, ";; new head = %d\n;; new tail = %d\n", ++ INSN_UID (head), INSN_UID (tail)); ++ ++ if (sched_verbose >= 2) ++ { ++ dump_insn_stream (head, tail); ++ print_rank_for_schedule_stats (";; TOTAL ", &rank_for_schedule_stats, ++ NULL); ++ } ++ ++ fprintf (sched_dump, "\n"); ++ } ++ + head = restore_other_notes (head, NULL); + + current_sched_info->head = head; +@@ -6581,6 +7053,19 @@ + saved_reg_live = BITMAP_ALLOC (NULL); + region_ref_regs = BITMAP_ALLOC (NULL); + } ++ ++ /* Calculate number of CALL_USED_REGS in register classes that ++ we calculate register pressure for. */ ++ for (int c = 0; c < ira_pressure_classes_num; ++c) ++ { ++ enum reg_class cl = ira_pressure_classes[c]; ++ ++ call_used_regs_num[cl] = 0; ++ ++ for (int i = 0; i < ira_class_hard_regs_num[cl]; ++i) ++ if (call_used_regs[ira_class_hard_regs[cl][i]]) ++ ++call_used_regs_num[cl]; ++ } + } + } + +@@ -6660,18 +7145,17 @@ + else + issue_rate = 1; + +- if (cached_issue_rate != issue_rate) +- { +- cached_issue_rate = issue_rate; +- /* To invalidate max_lookahead_tries: */ +- cached_first_cycle_multipass_dfa_lookahead = 0; +- } +- +- if (targetm.sched.first_cycle_multipass_dfa_lookahead) ++ if (targetm.sched.first_cycle_multipass_dfa_lookahead ++ /* Don't use max_issue with reg_pressure scheduling. Multipass ++ scheduling and reg_pressure scheduling undo each other's decisions. */ ++ && sched_pressure == SCHED_PRESSURE_NONE) + dfa_lookahead = targetm.sched.first_cycle_multipass_dfa_lookahead (); + else + dfa_lookahead = 0; + ++ /* Set to "0" so that we recalculate. */ ++ max_lookahead_tries = 0; ++ + if (targetm.sched.init_dfa_pre_cycle_insn) + targetm.sched.init_dfa_pre_cycle_insn (); + +@@ -7155,8 +7639,9 @@ + + gcc_assert (new_sched_ready_n_insns >= sched_ready_n_insns); + +- ready_try = (char *) xrecalloc (ready_try, new_sched_ready_n_insns, +- sched_ready_n_insns, sizeof (*ready_try)); ++ ready_try = (signed char *) xrecalloc (ready_try, new_sched_ready_n_insns, ++ sched_ready_n_insns, ++ sizeof (*ready_try)); + + /* We allocate +1 element to save initial state in the choice_stack[0] + entry. */ +@@ -8429,6 +8914,10 @@ + INSN_EXACT_TICK (insn) = INVALID_TICK; + INTER_TICK (insn) = INVALID_TICK; + TODO_SPEC (insn) = HARD_DEP; ++ INSN_AUTOPREF_MULTIPASS_DATA (insn)[0].status ++ = AUTOPREF_MULTIPASS_DATA_UNINITIALIZED; ++ INSN_AUTOPREF_MULTIPASS_DATA (insn)[1].status ++ = AUTOPREF_MULTIPASS_DATA_UNINITIALIZED; + } + } + +@@ -8534,7 +9023,7 @@ + rtx + sched_emit_insn (rtx pat) + { +- rtx insn = emit_insn_before (pat, nonscheduled_insns_begin); ++ rtx insn = emit_insn_before (pat, first_nonscheduled_insn ()); + haifa_init_insn (insn); + + if (current_sched_info->add_remove_insn) +--- a/src/gcc/compare-elim.c ++++ b/src/gcc/compare-elim.c +@@ -100,6 +100,9 @@ + constants. */ + rtx in_a, in_b; + ++ /* The REG_EH_REGION of the comparison. */ ++ rtx eh_note; ++ + /* Information about how this comparison is used. */ + struct comparison_use uses[MAX_CMP_USE]; + +@@ -262,6 +265,7 @@ + struct comparison *last_cmp; + rtx insn, next, last_clobber; + bool last_cmp_valid; ++ bool need_purge = false; + bitmap killed; + + killed = BITMAP_ALLOC (NULL); +@@ -303,44 +307,60 @@ + if (src) + { + enum machine_mode src_mode = GET_MODE (src); ++ rtx eh_note = NULL; + +- /* Eliminate a compare that's redundant with the previous. */ +- if (last_cmp_valid +- && rtx_equal_p (last_cmp->in_a, XEXP (src, 0)) +- && rtx_equal_p (last_cmp->in_b, XEXP (src, 1))) +- { +- rtx flags, x; +- enum machine_mode new_mode +- = targetm.cc_modes_compatible (last_cmp->orig_mode, src_mode); ++ if (flag_non_call_exceptions) ++ eh_note = find_reg_note (insn, REG_EH_REGION, NULL); + +- /* New mode is incompatible with the previous compare mode. */ +- if (new_mode == VOIDmode) +- continue; ++ if (!last_cmp_valid) ++ goto dont_delete; + +- if (new_mode != last_cmp->orig_mode) +- { +- flags = gen_rtx_REG (src_mode, targetm.flags_regnum); ++ /* Take care that it's in the same EH region. */ ++ if (flag_non_call_exceptions ++ && !rtx_equal_p (eh_note, last_cmp->eh_note)) ++ goto dont_delete; + +- /* Generate new comparison for substitution. */ +- x = gen_rtx_COMPARE (new_mode, XEXP (src, 0), XEXP (src, 1)); +- x = gen_rtx_SET (VOIDmode, flags, x); ++ /* Make sure the compare is redundant with the previous. */ ++ if (!rtx_equal_p (last_cmp->in_a, XEXP (src, 0)) ++ || !rtx_equal_p (last_cmp->in_b, XEXP (src, 1))) ++ goto dont_delete; + +- if (!validate_change (last_cmp->insn, +- &PATTERN (last_cmp->insn), x, false)) +- continue; ++ /* New mode must be compatible with the previous compare mode. */ ++ { ++ enum machine_mode new_mode ++ = targetm.cc_modes_compatible (last_cmp->orig_mode, src_mode); ++ if (new_mode == VOIDmode) ++ goto dont_delete; + +- last_cmp->orig_mode = new_mode; +- } ++ if (new_mode != last_cmp->orig_mode) ++ { ++ rtx x, flags = gen_rtx_REG (src_mode, targetm.flags_regnum); + +- delete_insn (insn); +- continue; +- } ++ /* Generate new comparison for substitution. */ ++ x = gen_rtx_COMPARE (new_mode, XEXP (src, 0), XEXP (src, 1)); ++ x = gen_rtx_SET (VOIDmode, flags, x); + ++ if (!validate_change (last_cmp->insn, ++ &PATTERN (last_cmp->insn), x, false)) ++ goto dont_delete; ++ ++ last_cmp->orig_mode = new_mode; ++ } ++ } ++ ++ /* All tests and substitutions succeeded! */ ++ if (eh_note) ++ need_purge = true; ++ delete_insn (insn); ++ continue; ++ ++ dont_delete: + last_cmp = XCNEW (struct comparison); + last_cmp->insn = insn; + last_cmp->prev_clobber = last_clobber; + last_cmp->in_a = XEXP (src, 0); + last_cmp->in_b = XEXP (src, 1); ++ last_cmp->eh_note = eh_note; + last_cmp->orig_mode = src_mode; + all_compares.safe_push (last_cmp); + +@@ -404,6 +424,11 @@ + } + } + } ++ ++ /* If we deleted a compare with a REG_EH_REGION note, we may need to ++ remove EH edges. */ ++ if (need_purge) ++ purge_dead_edges (bb); + } + + /* Find all comparisons in the function. */ +--- a/src/gcc/tree-ssa-loop-ivopts.c ++++ b/src/gcc/tree-ssa-loop-ivopts.c +@@ -5863,6 +5863,108 @@ + return best_cost; + } + ++/* Check if CAND_IDX is a candidate other than OLD_CAND and has ++ cheaper local cost for USE than BEST_CP. Return pointer to ++ the corresponding cost_pair, otherwise just return BEST_CP. */ ++ ++static struct cost_pair* ++cheaper_cost_with_cand (struct ivopts_data *data, struct iv_use *use, ++ unsigned int cand_idx, struct iv_cand *old_cand, ++ struct cost_pair *best_cp) ++{ ++ struct iv_cand *cand; ++ struct cost_pair *cp; ++ ++ gcc_assert (old_cand != NULL && best_cp != NULL); ++ if (cand_idx == old_cand->id) ++ return best_cp; ++ ++ cand = iv_cand (data, cand_idx); ++ cp = get_use_iv_cost (data, use, cand); ++ if (cp != NULL && cheaper_cost_pair (cp, best_cp)) ++ return cp; ++ ++ return best_cp; ++} ++ ++/* Try breaking local optimal fixed-point for IVS by replacing candidates ++ which are used by more than one iv uses. For each of those candidates, ++ this function tries to represent iv uses under that candidate using ++ other ones with lower local cost, then tries to prune the new set. ++ If the new set has lower cost, It returns the new cost after recording ++ candidate replacement in list DELTA. */ ++ ++static comp_cost ++iv_ca_replace (struct ivopts_data *data, struct iv_ca *ivs, ++ struct iv_ca_delta **delta) ++{ ++ bitmap_iterator bi, bj; ++ unsigned int i, j, k; ++ struct iv_use *use; ++ struct iv_cand *cand; ++ comp_cost orig_cost, acost; ++ struct iv_ca_delta *act_delta, *tmp_delta; ++ struct cost_pair *old_cp, *best_cp = NULL; ++ ++ *delta = NULL; ++ orig_cost = iv_ca_cost (ivs); ++ ++ EXECUTE_IF_SET_IN_BITMAP (ivs->cands, 0, i, bi) ++ { ++ if (ivs->n_cand_uses[i] == 1 ++ || ivs->n_cand_uses[i] > ALWAYS_PRUNE_CAND_SET_BOUND) ++ continue; ++ ++ cand = iv_cand (data, i); ++ ++ act_delta = NULL; ++ /* Represent uses under current candidate using other ones with ++ lower local cost. */ ++ for (j = 0; j < ivs->upto; j++) ++ { ++ use = iv_use (data, j); ++ old_cp = iv_ca_cand_for_use (ivs, use); ++ ++ if (old_cp->cand != cand) ++ continue; ++ ++ best_cp = old_cp; ++ if (data->consider_all_candidates) ++ for (k = 0; k < n_iv_cands (data); k++) ++ best_cp = cheaper_cost_with_cand (data, use, k, ++ old_cp->cand, best_cp); ++ else ++ EXECUTE_IF_SET_IN_BITMAP (use->related_cands, 0, k, bj) ++ best_cp = cheaper_cost_with_cand (data, use, k, ++ old_cp->cand, best_cp); ++ ++ if (best_cp == old_cp) ++ continue; ++ ++ act_delta = iv_ca_delta_add (use, old_cp, best_cp, act_delta); ++ } ++ /* No need for further prune. */ ++ if (!act_delta) ++ continue; ++ ++ /* Prune the new candidate set. */ ++ iv_ca_delta_commit (data, ivs, act_delta, true); ++ acost = iv_ca_prune (data, ivs, NULL, &tmp_delta); ++ iv_ca_delta_commit (data, ivs, act_delta, false); ++ act_delta = iv_ca_delta_join (act_delta, tmp_delta); ++ ++ if (compare_costs (acost, orig_cost) < 0) ++ { ++ *delta = act_delta; ++ return acost; ++ } ++ else ++ iv_ca_delta_free (&act_delta); ++ } ++ ++ return orig_cost; ++} ++ + /* Tries to extend the sets IVS in the best possible way in order + to express the USE. If ORIGINALP is true, prefer candidates from + the original set of IVs, otherwise favor important candidates not +@@ -6005,10 +6107,13 @@ + return ivs; + } + +-/* Tries to improve set of induction variables IVS. */ ++/* Tries to improve set of induction variables IVS. TRY_REPLACE_P ++ points to a bool variable, this function tries to break local ++ optimal fixed-point by replacing candidates in IVS if it's true. */ + + static bool +-try_improve_iv_set (struct ivopts_data *data, struct iv_ca *ivs) ++try_improve_iv_set (struct ivopts_data *data, ++ struct iv_ca *ivs, bool *try_replace_p) + { + unsigned i, n_ivs; + comp_cost acost, best_cost = iv_ca_cost (ivs); +@@ -6052,7 +6157,20 @@ + /* Try removing the candidates from the set instead. */ + best_cost = iv_ca_prune (data, ivs, NULL, &best_delta); + +- /* Nothing more we can do. */ ++ if (!best_delta && *try_replace_p) ++ { ++ *try_replace_p = false; ++ /* So far candidate selecting algorithm tends to choose fewer IVs ++ so that it can handle cases in which loops have many variables ++ but the best choice is often to use only one general biv. One ++ weakness is it can't handle opposite cases, in which different ++ candidates should be chosen with respect to each use. To solve ++ the problem, we replace candidates in a manner described by the ++ comments of iv_ca_replace, thus give general algorithm a chance ++ to break local optimal fixed-point in these cases. */ ++ best_cost = iv_ca_replace (data, ivs, &best_delta); ++ } ++ + if (!best_delta) + return false; + } +@@ -6071,6 +6189,7 @@ + find_optimal_iv_set_1 (struct ivopts_data *data, bool originalp) + { + struct iv_ca *set; ++ bool try_replace_p = true; + + /* Get the initial solution. */ + set = get_initial_solution (data, originalp); +@@ -6087,7 +6206,7 @@ + iv_ca_dump (data, dump_file, set); + } + +- while (try_improve_iv_set (data, set)) ++ while (try_improve_iv_set (data, set, &try_replace_p)) + { + if (dump_file && (dump_flags & TDF_DETAILS)) + { +--- a/src/gcc/ira-int.h ++++ b/src/gcc/ira-int.h +@@ -281,6 +281,9 @@ + /* Mode of the allocno which is the mode of the corresponding + pseudo-register. */ + ENUM_BITFIELD (machine_mode) mode : 8; ++ /* Widest mode of the allocno which in at least one case could be ++ for paradoxical subregs where wmode > mode. */ ++ ENUM_BITFIELD (machine_mode) wmode : 8; + /* Register class which should be used for allocation for given + allocno. NO_REGS means that we should use memory. */ + ENUM_BITFIELD (reg_class) aclass : 16; +@@ -313,7 +316,7 @@ + number (0, ...) - 2. Value -1 is used for allocnos spilled by the + reload (at this point pseudo-register has only one allocno) which + did not get stack slot yet. */ +- short int hard_regno; ++ signed int hard_regno : 16; + /* Allocnos with the same regno are linked by the following member. + Allocnos corresponding to inner loops are first in the list (it + corresponds to depth-first traverse of the loops). */ +@@ -430,6 +433,7 @@ + #define ALLOCNO_BAD_SPILL_P(A) ((A)->bad_spill_p) + #define ALLOCNO_ASSIGNED_P(A) ((A)->assigned_p) + #define ALLOCNO_MODE(A) ((A)->mode) ++#define ALLOCNO_WMODE(A) ((A)->wmode) + #define ALLOCNO_PREFS(A) ((A)->allocno_prefs) + #define ALLOCNO_COPIES(A) ((A)->allocno_copies) + #define ALLOCNO_HARD_REG_COSTS(A) ((A)->hard_reg_costs) +--- a/src/gcc/ira-color.c ++++ b/src/gcc/ira-color.c +@@ -1711,6 +1711,7 @@ + { + ira_allocno_t conflict_a = OBJECT_ALLOCNO (conflict_obj); + enum reg_class conflict_aclass; ++ allocno_color_data_t data = ALLOCNO_COLOR_DATA (conflict_a); + + /* Reload can give another class so we need to check all + allocnos. */ +@@ -1782,7 +1783,12 @@ + hard_regno = ira_class_hard_regs[aclass][j]; + ira_assert (hard_regno >= 0); + k = ira_class_hard_reg_index[conflict_aclass][hard_regno]; +- if (k < 0) ++ if (k < 0 ++ /* If HARD_REGNO is not available for CONFLICT_A, ++ the conflict would be ignored, since HARD_REGNO ++ will never be assigned to CONFLICT_A. */ ++ || !TEST_HARD_REG_BIT (data->profitable_hard_regs, ++ hard_regno)) + continue; + full_costs[j] -= conflict_costs[k]; + } +--- a/src/gcc/sel-sched.c ++++ b/src/gcc/sel-sched.c +@@ -3502,8 +3502,6 @@ + static void + process_spec_exprs (av_set_t *av_ptr) + { +- bool try_data_p = true; +- bool try_control_p = true; + expr_t expr; + av_set_iterator si; + +@@ -3529,35 +3527,7 @@ + av_set_iter_remove (&si); + continue; + } +- +- if ((spec_info->flags & PREFER_NON_DATA_SPEC) +- && !(ds & BEGIN_DATA)) +- try_data_p = false; +- +- if ((spec_info->flags & PREFER_NON_CONTROL_SPEC) +- && !(ds & BEGIN_CONTROL)) +- try_control_p = false; + } +- +- FOR_EACH_EXPR_1 (expr, si, av_ptr) +- { +- ds_t ds; +- +- ds = EXPR_SPEC_DONE_DS (expr); +- +- if (ds & SPECULATIVE) +- { +- if ((ds & BEGIN_DATA) && !try_data_p) +- /* We don't want any data speculative instructions right +- now. */ +- av_set_iter_remove (&si); +- +- if ((ds & BEGIN_CONTROL) && !try_control_p) +- /* We don't want any control speculative instructions right +- now. */ +- av_set_iter_remove (&si); +- } +- } + } + + /* Search for any use-like insns in AV_PTR and decide on scheduling +@@ -4255,7 +4225,7 @@ + if (! have_hook || i == 0) + r = 0; + else +- r = !targetm.sched.first_cycle_multipass_dfa_lookahead_guard (insn); ++ r = targetm.sched.first_cycle_multipass_dfa_lookahead_guard (insn, i); + + gcc_assert (INSN_CODE (insn) >= 0); + +--- a/src/gcc/loop-init.c ++++ b/src/gcc/loop-init.c +@@ -245,6 +245,10 @@ + } + + /* Remove the loop. */ ++ if (loop->header) ++ loop->former_header = loop->header; ++ else ++ gcc_assert (loop->former_header != NULL); + loop->header = NULL; + flow_loop_tree_node_remove (loop); + } +@@ -272,6 +276,33 @@ + FOR_EACH_VEC_ELT (*get_loops (cfun), i, loop) + if (loop && loop->header == NULL) + { ++ if (dump_file ++ && ((unsigned) loop->former_header->index ++ < basic_block_info_for_fn (cfun)->length ())) ++ { ++ basic_block former_header ++ = BASIC_BLOCK_FOR_FN (cfun, loop->former_header->index); ++ /* If the old header still exists we want to check if the ++ original loop is re-discovered or the old header is now ++ part of a newly discovered loop. ++ In both cases we should have avoided removing the loop. */ ++ if (former_header == loop->former_header) ++ { ++ if (former_header->loop_father->header == former_header) ++ fprintf (dump_file, "fix_loop_structure: rediscovered " ++ "removed loop %d as loop %d with old header %d\n", ++ loop->num, former_header->loop_father->num, ++ former_header->index); ++ else if ((unsigned) former_header->loop_father->num ++ >= old_nloops) ++ fprintf (dump_file, "fix_loop_structure: header %d of " ++ "removed loop %d is part of the newly " ++ "discovered loop %d with header %d\n", ++ former_header->index, loop->num, ++ former_header->loop_father->num, ++ former_header->loop_father->header->index); ++ } ++ } + (*get_loops (cfun))[i] = NULL; + flow_loop_free (loop); + } +--- a/src/gcc/ifcvt.c ++++ b/src/gcc/ifcvt.c +@@ -63,6 +63,10 @@ + + 1) + #endif + ++#ifndef HAVE_cbranchcc4 ++#define HAVE_cbranchcc4 0 ++#endif ++ + #define IFCVT_MULTIPLE_DUMPS 1 + + #define NULL_BLOCK ((basic_block) NULL) +@@ -1000,6 +1004,18 @@ + 0, 0, outmode, y); + } + ++/* Return the CC reg if it is used in COND. */ ++ ++static rtx ++cc_in_cond (rtx cond) ++{ ++ if (HAVE_cbranchcc4 && cond ++ && GET_MODE_CLASS (GET_MODE (XEXP (cond, 0))) == MODE_CC) ++ return XEXP (cond, 0); ++ ++ return NULL_RTX; ++} ++ + /* Return sequence of instructions generated by if conversion. This + function calls end_sequence() to end the current stream, ensures + that are instructions are unshared, recognizable non-jump insns. +@@ -1010,6 +1026,7 @@ + { + rtx insn; + rtx seq = get_insns (); ++ rtx cc = cc_in_cond (if_info->cond); + + set_used_flags (if_info->x); + set_used_flags (if_info->cond); +@@ -1024,7 +1041,9 @@ + allows proper placement of required clobbers. */ + for (insn = seq; insn; insn = NEXT_INSN (insn)) + if (JUMP_P (insn) +- || recog_memoized (insn) == -1) ++ || recog_memoized (insn) == -1 ++ /* Make sure new generated code does not clobber CC. */ ++ || (cc && set_of (cc, insn))) + return NULL_RTX; + + return seq; +@@ -1432,10 +1451,16 @@ + end_sequence (); + } + +- /* Don't even try if the comparison operands are weird. */ ++ /* Don't even try if the comparison operands are weird ++ except that the target supports cbranchcc4. */ + if (! general_operand (cmp_a, GET_MODE (cmp_a)) + || ! general_operand (cmp_b, GET_MODE (cmp_b))) +- return NULL_RTX; ++ { ++ if (!(HAVE_cbranchcc4) ++ || GET_MODE_CLASS (GET_MODE (cmp_a)) != MODE_CC ++ || cmp_b != const0_rtx) ++ return NULL_RTX; ++ } + + #if HAVE_conditional_move + unsignedp = (code == LTU || code == GEU +@@ -1874,7 +1899,7 @@ + } + + cond = canonicalize_condition (if_info->jump, cond, reverse, +- earliest, target, false, true); ++ earliest, target, HAVE_cbranchcc4, true); + if (! cond || ! reg_mentioned_p (target, cond)) + return NULL; + +@@ -2361,7 +2386,7 @@ + /* Otherwise, fall back on canonicalize_condition to do the dirty + work of manipulating MODE_CC values and COMPARE rtx codes. */ + tmp = canonicalize_condition (jump, cond, reverse, earliest, +- NULL_RTX, false, true); ++ NULL_RTX, HAVE_cbranchcc4, true); + + /* We don't handle side-effects in the condition, like handling + REG_INC notes and making sure no duplicate conditions are emitted. */ +@@ -2494,6 +2519,7 @@ + rtx insn_a, insn_b; + rtx set_a, set_b; + rtx orig_x, x, a, b; ++ rtx cc; + + /* We're looking for patterns of the form + +@@ -2602,6 +2628,13 @@ + if_info->a = a; + if_info->b = b; + ++ /* Skip it if the instruction to be moved might clobber CC. */ ++ cc = cc_in_cond (cond); ++ if (cc ++ && (set_of (cc, insn_a) ++ || (insn_b && set_of (cc, insn_b)))) ++ return FALSE; ++ + /* Try optimizations in some approximation of a useful order. */ + /* ??? Should first look to see if X is live incoming at all. If it + isn't, we don't need anything but an unconditional set. */ +@@ -2757,6 +2790,7 @@ + rtx cond) + { + rtx insn; ++ rtx cc = cc_in_cond (cond); + + /* We can only handle simple jumps at the end of the basic block. + It is almost impossible to update the CFG otherwise. */ +@@ -2815,6 +2849,10 @@ + && modified_between_p (src, insn, NEXT_INSN (BB_END (bb)))) + return FALSE; + ++ /* Skip it if the instruction to be moved might clobber CC. */ ++ if (cc && set_of (cc, insn)) ++ return FALSE; ++ + slot = pointer_map_insert (vals, (void *) dest); + *slot = (void *) src; + +--- a/src/gcc/expr.c ++++ b/src/gcc/expr.c +@@ -68,22 +68,6 @@ + #include "tree-ssa-address.h" + #include "cfgexpand.h" + +-/* Decide whether a function's arguments should be processed +- from first to last or from last to first. +- +- They should if the stack and args grow in opposite directions, but +- only if we have push insns. */ +- +-#ifdef PUSH_ROUNDING +- +-#ifndef PUSH_ARGS_REVERSED +-#if defined (STACK_GROWS_DOWNWARD) != defined (ARGS_GROW_DOWNWARD) +-#define PUSH_ARGS_REVERSED /* If it's last to first. */ +-#endif +-#endif +- +-#endif +- + #ifndef STACK_PUSH_CODE + #ifdef STACK_GROWS_DOWNWARD + #define STACK_PUSH_CODE PRE_DEC +@@ -172,37 +156,6 @@ + static rtx const_vector_from_tree (tree); + static void write_complex_part (rtx, rtx, bool); + +-/* This macro is used to determine whether move_by_pieces should be called +- to perform a structure copy. */ +-#ifndef MOVE_BY_PIECES_P +-#define MOVE_BY_PIECES_P(SIZE, ALIGN) \ +- (move_by_pieces_ninsns (SIZE, ALIGN, MOVE_MAX_PIECES + 1) \ +- < (unsigned int) MOVE_RATIO (optimize_insn_for_speed_p ())) +-#endif +- +-/* This macro is used to determine whether clear_by_pieces should be +- called to clear storage. */ +-#ifndef CLEAR_BY_PIECES_P +-#define CLEAR_BY_PIECES_P(SIZE, ALIGN) \ +- (move_by_pieces_ninsns (SIZE, ALIGN, STORE_MAX_PIECES + 1) \ +- < (unsigned int) CLEAR_RATIO (optimize_insn_for_speed_p ())) +-#endif +- +-/* This macro is used to determine whether store_by_pieces should be +- called to "memset" storage with byte values other than zero. */ +-#ifndef SET_BY_PIECES_P +-#define SET_BY_PIECES_P(SIZE, ALIGN) \ +- (move_by_pieces_ninsns (SIZE, ALIGN, STORE_MAX_PIECES + 1) \ +- < (unsigned int) SET_RATIO (optimize_insn_for_speed_p ())) +-#endif +- +-/* This macro is used to determine whether store_by_pieces should be +- called to "memcpy" storage when the source is a constant string. */ +-#ifndef STORE_BY_PIECES_P +-#define STORE_BY_PIECES_P(SIZE, ALIGN) \ +- (move_by_pieces_ninsns (SIZE, ALIGN, STORE_MAX_PIECES + 1) \ +- < (unsigned int) MOVE_RATIO (optimize_insn_for_speed_p ())) +-#endif + + /* This is run to set up which modes can be used + directly in memory and to initialize the block move optab. It is run +@@ -843,22 +796,16 @@ + return mode; + } + +-/* STORE_MAX_PIECES is the number of bytes at a time that we can +- store efficiently. Due to internal GCC limitations, this is +- MOVE_MAX_PIECES limited by the number of bytes GCC can represent +- for an immediate constant. */ +- +-#define STORE_MAX_PIECES MIN (MOVE_MAX_PIECES, 2 * sizeof (HOST_WIDE_INT)) +- + /* Determine whether the LEN bytes can be moved by using several move + instructions. Return nonzero if a call to move_by_pieces should + succeed. */ + + int +-can_move_by_pieces (unsigned HOST_WIDE_INT len ATTRIBUTE_UNUSED, +- unsigned int align ATTRIBUTE_UNUSED) ++can_move_by_pieces (unsigned HOST_WIDE_INT len, ++ unsigned int align) + { +- return MOVE_BY_PIECES_P (len, align); ++ return targetm.use_by_pieces_infrastructure_p (len, align, MOVE_BY_PIECES, ++ optimize_insn_for_speed_p ()); + } + + /* Generate several move instructions to copy LEN bytes from block FROM to +@@ -1195,7 +1142,7 @@ + set_mem_size (y, INTVAL (size)); + } + +- if (CONST_INT_P (size) && MOVE_BY_PIECES_P (INTVAL (size), align)) ++ if (CONST_INT_P (size) && can_move_by_pieces (INTVAL (size), align)) + move_by_pieces (x, y, INTVAL (size), align, 0); + else if (emit_block_move_via_movmem (x, y, size, align, + expected_align, expected_size, +@@ -2396,6 +2343,18 @@ + = gen_rtx_EXPR_LIST (mode, gen_rtx_USE (VOIDmode, reg), *call_fusage); + } + ++/* Add a CLOBBER expression for REG to the (possibly empty) list pointed ++ to by CALL_FUSAGE. REG must denote a hard register. */ ++ ++void ++clobber_reg_mode (rtx *call_fusage, rtx reg, enum machine_mode mode) ++{ ++ gcc_assert (REG_P (reg) && REGNO (reg) < FIRST_PSEUDO_REGISTER); ++ ++ *call_fusage ++ = gen_rtx_EXPR_LIST (mode, gen_rtx_CLOBBER (VOIDmode, reg), *call_fusage); ++} ++ + /* Add USE expressions to *CALL_FUSAGE for each of NREGS consecutive regs, + starting at REGNO. All of these registers must be hard registers. */ + +@@ -2498,9 +2457,11 @@ + if (len == 0) + return 1; + +- if (! (memsetp +- ? SET_BY_PIECES_P (len, align) +- : STORE_BY_PIECES_P (len, align))) ++ if (!targetm.use_by_pieces_infrastructure_p (len, align, ++ memsetp ++ ? SET_BY_PIECES ++ : STORE_BY_PIECES, ++ optimize_insn_for_speed_p ())) + return 0; + + align = alignment_for_piecewise_move (STORE_MAX_PIECES, align); +@@ -2576,9 +2537,13 @@ + return to; + } + +- gcc_assert (memsetp +- ? SET_BY_PIECES_P (len, align) +- : STORE_BY_PIECES_P (len, align)); ++ gcc_assert (targetm.use_by_pieces_infrastructure_p ++ (len, align, ++ memsetp ++ ? SET_BY_PIECES ++ : STORE_BY_PIECES, ++ optimize_insn_for_speed_p ())); ++ + data.constfun = constfun; + data.constfundata = constfundata; + data.len = len; +@@ -2815,7 +2780,9 @@ + align = MEM_ALIGN (object); + + if (CONST_INT_P (size) +- && CLEAR_BY_PIECES_P (INTVAL (size), align)) ++ && targetm.use_by_pieces_infrastructure_p (INTVAL (size), align, ++ CLEAR_BY_PIECES, ++ optimize_insn_for_speed_p ())) + clear_by_pieces (object, INTVAL (size), align); + else if (set_storage_via_setmem (object, size, const0_rtx, align, + expected_align, expected_size, +@@ -4221,7 +4188,7 @@ + && CONST_INT_P (size) + && skip == 0 + && MEM_ALIGN (xinner) >= align +- && (MOVE_BY_PIECES_P ((unsigned) INTVAL (size) - used, align)) ++ && can_move_by_pieces ((unsigned) INTVAL (size) - used, align) + /* Here we avoid the case of a structure whose weak alignment + forces many pushes of a small amount of data, + and such small pushes do rounding that causes trouble. */ +@@ -4353,11 +4320,7 @@ + /* Loop over all the words allocated on the stack for this arg. */ + /* We can do it by words, because any scalar bigger than a word + has a size a multiple of a word. */ +-#ifndef PUSH_ARGS_REVERSED +- for (i = not_stack; i < size; i++) +-#else + for (i = size - 1; i >= not_stack; i--) +-#endif + if (i >= not_stack + offset) + emit_push_insn (operand_subword_force (x, i, mode), + word_mode, NULL_TREE, NULL_RTX, align, 0, NULL_RTX, +@@ -7839,7 +7802,7 @@ + && ! (target != 0 && safe_from_p (target, exp, 1))) + || TREE_ADDRESSABLE (exp) + || (tree_fits_uhwi_p (TYPE_SIZE_UNIT (type)) +- && (! MOVE_BY_PIECES_P ++ && (! can_move_by_pieces + (tree_to_uhwi (TYPE_SIZE_UNIT (type)), + TYPE_ALIGN (type))) + && ! mostly_zeros_p (exp)))) +@@ -9044,12 +9007,39 @@ + { + op0 = expand_normal (treeop0); + this_optab = optab_for_tree_code (code, type, optab_default); +- temp = expand_unop (mode, this_optab, op0, target, unsignedp); ++ enum machine_mode vec_mode = TYPE_MODE (TREE_TYPE (treeop0)); ++ ++ if (optab_handler (this_optab, vec_mode) != CODE_FOR_nothing) ++ { ++ struct expand_operand ops[2]; ++ enum insn_code icode = optab_handler (this_optab, vec_mode); ++ ++ create_output_operand (&ops[0], target, mode); ++ create_input_operand (&ops[1], op0, vec_mode); ++ if (maybe_expand_insn (icode, 2, ops)) ++ { ++ target = ops[0].value; ++ if (GET_MODE (target) != mode) ++ return gen_lowpart (tmode, target); ++ return target; ++ } ++ } ++ /* Fall back to optab with vector result, and then extract scalar. */ ++ this_optab = scalar_reduc_to_vector (this_optab, type); ++ temp = expand_unop (vec_mode, this_optab, op0, NULL_RTX, unsignedp); + gcc_assert (temp); ++ /* The tree code produces a scalar result, but (somewhat by convention) ++ the optab produces a vector with the result in element 0 if ++ little-endian, or element N-1 if big-endian. So pull the scalar ++ result out of that element. */ ++ int index = BYTES_BIG_ENDIAN ? GET_MODE_NUNITS (vec_mode) - 1 : 0; ++ int bitsize = GET_MODE_BITSIZE (GET_MODE_INNER (vec_mode)); ++ temp = extract_bit_field (temp, bitsize, bitsize * index, unsignedp, ++ target, mode, mode); ++ gcc_assert (temp); + return temp; + } + +- case VEC_LSHIFT_EXPR: + case VEC_RSHIFT_EXPR: + { + target = expand_vec_shift_expr (ops, target); +--- a/src/gcc/expr.h ++++ b/src/gcc/expr.h +@@ -346,6 +346,7 @@ + /* Mark REG as holding a parameter for the next CALL_INSN. + Mode is TYPE_MODE of the non-promoted parameter, or VOIDmode. */ + extern void use_reg_mode (rtx *, rtx, enum machine_mode); ++extern void clobber_reg_mode (rtx *, rtx, enum machine_mode); + + extern rtx copy_blkmode_to_reg (enum machine_mode, tree); + +@@ -356,6 +357,13 @@ + use_reg_mode (fusage, reg, VOIDmode); + } + ++/* Mark REG as clobbered by the call with FUSAGE as CALL_INSN_FUNCTION_USAGE. */ ++static inline void ++clobber_reg (rtx *fusage, rtx reg) ++{ ++ clobber_reg_mode (fusage, reg, VOIDmode); ++} ++ + /* Mark NREGS consecutive regs, starting at REGNO, as holding parameters + for the next CALL_INSN. */ + extern void use_regs (rtx *, int, int); +--- a/src/gcc/go/ChangeLog.linaro ++++ b/src/gcc/go/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/gcc/genattrtab.c ++++ b/src/gcc/genattrtab.c +@@ -4765,6 +4765,7 @@ + + static struct bypass_list *all_bypasses; + static size_t n_bypasses; ++static size_t n_bypassed; + + static void + gen_bypass_1 (const char *s, size_t len) +@@ -4810,12 +4811,18 @@ + struct bypass_list *b; + struct insn_reserv *r; + ++ n_bypassed = 0; ++ + /* The reservation list is likely to be much longer than the bypass + list. */ + for (r = all_insn_reservs; r; r = r->next) + for (b = all_bypasses; b; b = b->next) + if (fnmatch (b->pattern, r->name, 0) == 0) +- r->bypassed = true; ++ { ++ n_bypassed++; ++ r->bypassed = true; ++ break; ++ } + } + + /* Check that attribute NAME is used in define_insn_reservation condition +@@ -5074,7 +5081,7 @@ + process_bypasses (); + + byps_exp = rtx_alloc (COND); +- XVEC (byps_exp, 0) = rtvec_alloc (n_bypasses * 2); ++ XVEC (byps_exp, 0) = rtvec_alloc (n_bypassed * 2); + XEXP (byps_exp, 1) = make_numeric_value (0); + for (decl = all_insn_reservs, i = 0; + decl; +--- a/src/gcc/ada/ChangeLog.linaro ++++ b/src/gcc/ada/ChangeLog.linaro +@@ -0,0 +1,107 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-05-13 Yvan Roux ++ ++ Backport from trunk r209653,209866,209871. ++ ++ 2014-04-28 Richard Henderson ++ ++ * gcc-interface/Makefile.in: Support aarch64-linux. ++ ++ 2014-04-28 Eric Botcazou ++ ++ * exp_dbug.ads (Get_External_Name): Add 'False' default to Has_Suffix, ++ add 'Suffix' parameter and adjust comment. ++ (Get_External_Name_With_Suffix): Delete. ++ * exp_dbug.adb (Get_External_Name_With_Suffix): Merge into... ++ (Get_External_Name): ...here. Add 'False' default to Has_Suffix, add ++ 'Suffix' parameter. ++ (Get_Encoded_Name): Remove 2nd argument in call to Get_External_Name. ++ Call Get_External_Name instead of Get_External_Name_With_Suffix. ++ (Get_Secondary_DT_External_Name): Likewise. ++ * exp_cg.adb (Write_Call_Info): Likewise. ++ * exp_disp.adb (Export_DT): Likewise. ++ (Import_DT): Likewise. ++ * comperr.ads (Compiler_Abort): Remove Code parameter and add From_GCC ++ parameter with False default. ++ * comperr.adb (Compiler_Abort): Likewise. Adjust accordingly. ++ * types.h (Fat_Pointer): Rename into... ++ (String_Pointer): ...this. Add comment on interfacing rules. ++ * fe.h (Compiler_Abort): Adjust for above renaming. ++ (Error_Msg_N): Likewise. ++ (Error_Msg_NE): Likewise. ++ (Get_External_Name): Likewise. Add third parameter. ++ (Get_External_Name_With_Suffix): Delete. ++ * gcc-interface/decl.c (STDCALL_PREFIX): Define. ++ (create_concat_name): Adjust call to Get_External_Name, remove call to ++ Get_External_Name_With_Suffix, use STDCALL_PREFIX, adjust for renaming. ++ * gcc-interface/trans.c (post_error): Likewise. ++ (post_error_ne): Likewise. ++ * gcc-interface/misc.c (internal_error_function): Likewise. ++ ++ 2014-04-22 Richard Henderson ++ ++ * init.c [__linux__] (HAVE_GNAT_ALTERNATE_STACK): New define. ++ (__gnat_alternate_stack): Enable for all linux except ia64. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/gcc/common/config/aarch64/aarch64-common.c ++++ b/src/gcc/common/config/aarch64/aarch64-common.c +@@ -44,6 +44,8 @@ + { + /* Enable section anchors by default at -O1 or higher. */ + { OPT_LEVELS_1_PLUS, OPT_fsection_anchors, NULL, 1 }, ++ /* Enable -fsched-pressure by default when optimizing. */ ++ { OPT_LEVELS_1_PLUS, OPT_fsched_pressure, NULL, 1 }, + /* Enable redundant extension instructions removal at -O2 and higher. */ + { OPT_LEVELS_2_PLUS, OPT_free, NULL, 1 }, + { OPT_LEVELS_NONE, 0, NULL, 0 } +--- a/src/gcc/tree-eh.c ++++ b/src/gcc/tree-eh.c +@@ -4236,10 +4236,9 @@ + if (current_loops + && e->dest == e->dest->loop_father->header) + { +- e->dest->loop_father->header = NULL; +- e->dest->loop_father->latch = NULL; ++ mark_loop_for_removal (e->dest->loop_father); + new_bb->loop_father->latch = NULL; +- loops_state_set (LOOPS_NEED_FIXUP|LOOPS_MAY_HAVE_MULTIPLE_LATCHES); ++ loops_state_set (LOOPS_MAY_HAVE_MULTIPLE_LATCHES); + } + redirect_eh_edge_1 (e, new_bb, change_region); + redirect_edge_succ (e, new_bb); +--- a/src/gcc/fortran/ChangeLog.linaro ++++ b/src/gcc/fortran/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -809,7 +809,7 @@ + ) + AC_SUBST(CONFIGURE_SPECS) + +-ACX_PKGVERSION([GCC]) ++ACX_PKGVERSION([Linaro GCC `cat $srcdir/LINARO-VERSION`]) + ACX_BUGURL([http://gcc.gnu.org/bugs.html]) + + # Sanity check enable_languages in case someone does not run the toplevel +--- a/src/gcc/tree-vect-loop.c ++++ b/src/gcc/tree-vect-loop.c +@@ -1892,9 +1892,9 @@ + + Output: + REDUC_CODE - the corresponding tree-code to be used to reduce the +- vector of partial results into a single scalar result (which +- will also reside in a vector) or ERROR_MARK if the operation is +- a supported reduction operation, but does not have such tree-code. ++ vector of partial results into a single scalar result, or ERROR_MARK ++ if the operation is a supported reduction operation, but does not have ++ such a tree-code. + + Return FALSE if CODE currently cannot be vectorized as reduction. */ + +@@ -4193,6 +4193,7 @@ + if (reduc_code != ERROR_MARK && !slp_reduc) + { + tree tmp; ++ tree vec_elem_type; + + /*** Case 1: Create: + v_out2 = reduc_expr */ +@@ -4201,14 +4202,26 @@ + dump_printf_loc (MSG_NOTE, vect_location, + "Reduce using direct vector reduction.\n"); + +- vec_dest = vect_create_destination_var (scalar_dest, vectype); +- tmp = build1 (reduc_code, vectype, new_phi_result); +- epilog_stmt = gimple_build_assign (vec_dest, tmp); +- new_temp = make_ssa_name (vec_dest, epilog_stmt); ++ vec_elem_type = TREE_TYPE (TREE_TYPE (new_phi_result)); ++ if (!useless_type_conversion_p (scalar_type, vec_elem_type)) ++ { ++ tree tmp_dest = ++ vect_create_destination_var (scalar_dest, vec_elem_type); ++ tmp = build1 (reduc_code, vec_elem_type, new_phi_result); ++ epilog_stmt = gimple_build_assign (tmp_dest, tmp); ++ new_temp = make_ssa_name (tmp_dest, epilog_stmt); ++ gimple_assign_set_lhs (epilog_stmt, new_temp); ++ gsi_insert_before (&exit_gsi, epilog_stmt, GSI_SAME_STMT); ++ ++ tmp = build1 (NOP_EXPR, scalar_type, new_temp); ++ } ++ else ++ tmp = build1 (reduc_code, scalar_type, new_phi_result); ++ epilog_stmt = gimple_build_assign (new_scalar_dest, tmp); ++ new_temp = make_ssa_name (new_scalar_dest, epilog_stmt); + gimple_assign_set_lhs (epilog_stmt, new_temp); + gsi_insert_before (&exit_gsi, epilog_stmt, GSI_SAME_STMT); +- +- extract_scalar_result = true; ++ scalar_results.safe_push (new_temp); + } + else + { +@@ -5120,15 +5133,17 @@ + + epilog_reduc_code = ERROR_MARK; + } +- +- if (reduc_optab +- && optab_handler (reduc_optab, vec_mode) == CODE_FOR_nothing) ++ else if (optab_handler (reduc_optab, vec_mode) == CODE_FOR_nothing) + { +- if (dump_enabled_p ()) +- dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, +- "reduc op not supported by target.\n"); ++ optab = scalar_reduc_to_vector (reduc_optab, vectype_out); ++ if (optab_handler (optab, vec_mode) == CODE_FOR_nothing) ++ { ++ if (dump_enabled_p ()) ++ dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, ++ "reduc op not supported by target.\n"); + +- epilog_reduc_code = ERROR_MARK; ++ epilog_reduc_code = ERROR_MARK; ++ } + } + } + else +--- a/src/gcc/ira-build.c ++++ b/src/gcc/ira-build.c +@@ -523,6 +523,7 @@ + ALLOCNO_BAD_SPILL_P (a) = false; + ALLOCNO_ASSIGNED_P (a) = false; + ALLOCNO_MODE (a) = (regno < 0 ? VOIDmode : PSEUDO_REGNO_MODE (regno)); ++ ALLOCNO_WMODE (a) = ALLOCNO_MODE (a); + ALLOCNO_PREFS (a) = NULL; + ALLOCNO_COPIES (a) = NULL; + ALLOCNO_HARD_REG_COSTS (a) = NULL; +@@ -892,6 +893,7 @@ + parent = ALLOCNO_LOOP_TREE_NODE (a)->parent; + cap = ira_create_allocno (ALLOCNO_REGNO (a), true, parent); + ALLOCNO_MODE (cap) = ALLOCNO_MODE (a); ++ ALLOCNO_WMODE (cap) = ALLOCNO_WMODE (a); + aclass = ALLOCNO_CLASS (a); + ira_set_allocno_class (cap, aclass); + ira_create_allocno_objects (cap); +@@ -1856,9 +1858,9 @@ + + /* This recursive function creates allocnos corresponding to + pseudo-registers containing in X. True OUTPUT_P means that X is +- a lvalue. */ ++ an lvalue. PARENT corresponds to the parent expression of X. */ + static void +-create_insn_allocnos (rtx x, bool output_p) ++create_insn_allocnos (rtx x, rtx outer, bool output_p) + { + int i, j; + const char *fmt; +@@ -1873,7 +1875,15 @@ + ira_allocno_t a; + + if ((a = ira_curr_regno_allocno_map[regno]) == NULL) +- a = ira_create_allocno (regno, false, ira_curr_loop_tree_node); ++ { ++ a = ira_create_allocno (regno, false, ira_curr_loop_tree_node); ++ if (outer != NULL && GET_CODE (outer) == SUBREG) ++ { ++ enum machine_mode wmode = GET_MODE (outer); ++ if (GET_MODE_SIZE (wmode) > GET_MODE_SIZE (ALLOCNO_WMODE (a))) ++ ALLOCNO_WMODE (a) = wmode; ++ } ++ } + + ALLOCNO_NREFS (a)++; + ALLOCNO_FREQ (a) += REG_FREQ_FROM_BB (curr_bb); +@@ -1884,25 +1894,25 @@ + } + else if (code == SET) + { +- create_insn_allocnos (SET_DEST (x), true); +- create_insn_allocnos (SET_SRC (x), false); ++ create_insn_allocnos (SET_DEST (x), NULL, true); ++ create_insn_allocnos (SET_SRC (x), NULL, false); + return; + } + else if (code == CLOBBER) + { +- create_insn_allocnos (XEXP (x, 0), true); ++ create_insn_allocnos (XEXP (x, 0), NULL, true); + return; + } + else if (code == MEM) + { +- create_insn_allocnos (XEXP (x, 0), false); ++ create_insn_allocnos (XEXP (x, 0), NULL, false); + return; + } + else if (code == PRE_DEC || code == POST_DEC || code == PRE_INC || + code == POST_INC || code == POST_MODIFY || code == PRE_MODIFY) + { +- create_insn_allocnos (XEXP (x, 0), true); +- create_insn_allocnos (XEXP (x, 0), false); ++ create_insn_allocnos (XEXP (x, 0), NULL, true); ++ create_insn_allocnos (XEXP (x, 0), NULL, false); + return; + } + +@@ -1910,10 +1920,10 @@ + for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--) + { + if (fmt[i] == 'e') +- create_insn_allocnos (XEXP (x, i), output_p); ++ create_insn_allocnos (XEXP (x, i), x, output_p); + else if (fmt[i] == 'E') + for (j = 0; j < XVECLEN (x, i); j++) +- create_insn_allocnos (XVECEXP (x, i, j), output_p); ++ create_insn_allocnos (XVECEXP (x, i, j), x, output_p); + } + } + +@@ -1932,7 +1942,7 @@ + ira_assert (bb != NULL); + FOR_BB_INSNS_REVERSE (bb, insn) + if (NONDEBUG_INSN_P (insn)) +- create_insn_allocnos (PATTERN (insn), false); ++ create_insn_allocnos (PATTERN (insn), NULL, false); + /* It might be a allocno living through from one subloop to + another. */ + EXECUTE_IF_SET_IN_REG_SET (df_get_live_in (bb), FIRST_PSEUDO_REGISTER, i, bi) +--- a/src/gcc/calls.c ++++ b/src/gcc/calls.c +@@ -1104,8 +1104,6 @@ + { + CUMULATIVE_ARGS *args_so_far_pnt = get_cumulative_args (args_so_far); + location_t loc = EXPR_LOCATION (exp); +- /* 1 if scanning parms front to back, -1 if scanning back to front. */ +- int inc; + + /* Count arg position in order args appear. */ + int argpos; +@@ -1116,22 +1114,9 @@ + args_size->var = 0; + + /* In this loop, we consider args in the order they are written. +- We fill up ARGS from the front or from the back if necessary +- so that in any case the first arg to be pushed ends up at the front. */ ++ We fill up ARGS from the back. */ + +- if (PUSH_ARGS_REVERSED) +- { +- i = num_actuals - 1, inc = -1; +- /* In this case, must reverse order of args +- so that we compute and push the last arg first. */ +- } +- else +- { +- i = 0, inc = 1; +- } +- +- /* First fill in the actual arguments in the ARGS array, splitting +- complex arguments if necessary. */ ++ i = num_actuals - 1; + { + int j = i; + call_expr_arg_iterator iter; +@@ -1140,7 +1125,7 @@ + if (struct_value_addr_value) + { + args[j].tree_value = struct_value_addr_value; +- j += inc; ++ j--; + } + FOR_EACH_CALL_EXPR_ARG (arg, iter, exp) + { +@@ -1152,17 +1137,17 @@ + { + tree subtype = TREE_TYPE (argtype); + args[j].tree_value = build1 (REALPART_EXPR, subtype, arg); +- j += inc; ++ j--; + args[j].tree_value = build1 (IMAGPART_EXPR, subtype, arg); + } + else + args[j].tree_value = arg; +- j += inc; ++ j--; + } + } + + /* I counts args in order (to be) pushed; ARGPOS counts in order written. */ +- for (argpos = 0; argpos < num_actuals; i += inc, argpos++) ++ for (argpos = 0; argpos < num_actuals; i--, argpos++) + { + tree type = TREE_TYPE (args[i].tree_value); + int unsignedp; +@@ -2952,9 +2937,8 @@ + + compute_argument_addresses (args, argblock, num_actuals); + +- /* If we push args individually in reverse order, perform stack alignment +- before the first push (the last arg). */ +- if (PUSH_ARGS_REVERSED && argblock == 0 ++ /* Perform stack alignment before the first push (the last arg). */ ++ if (argblock == 0 + && adjusted_args_size.constant > reg_parm_stack_space + && adjusted_args_size.constant != unadjusted_args_size) + { +@@ -3097,12 +3081,6 @@ + sibcall_failure = 1; + } + +- /* If we pushed args in forward order, perform stack alignment +- after pushing the last arg. */ +- if (!PUSH_ARGS_REVERSED && argblock == 0) +- anti_adjust_stack (GEN_INT (adjusted_args_size.constant +- - unadjusted_args_size)); +- + /* If register arguments require space on the stack and stack space + was not preallocated, allocate stack space here for arguments + passed in registers. */ +@@ -3152,8 +3130,7 @@ + if (pass == 1 && (return_flags & ERF_RETURNS_ARG)) + { + int arg_nr = return_flags & ERF_RETURN_ARG_MASK; +- if (PUSH_ARGS_REVERSED) +- arg_nr = num_actuals - arg_nr - 1; ++ arg_nr = num_actuals - arg_nr - 1; + if (arg_nr >= 0 + && arg_nr < num_actuals + && args[arg_nr].reg +@@ -3597,7 +3574,6 @@ + isn't present here, so we default to native calling abi here. */ + tree fndecl ATTRIBUTE_UNUSED = NULL_TREE; /* library calls default to host calling abi ? */ + tree fntype ATTRIBUTE_UNUSED = NULL_TREE; /* library calls default to host calling abi ? */ +- int inc; + int count; + rtx argblock = 0; + CUMULATIVE_ARGS args_so_far_v; +@@ -3946,22 +3922,13 @@ + argblock = push_block (GEN_INT (args_size.constant), 0, 0); + } + +- /* If we push args individually in reverse order, perform stack alignment ++ /* We push args individually in reverse order, perform stack alignment + before the first push (the last arg). */ +- if (argblock == 0 && PUSH_ARGS_REVERSED) ++ if (argblock == 0) + anti_adjust_stack (GEN_INT (args_size.constant + - original_args_size.constant)); + +- if (PUSH_ARGS_REVERSED) +- { +- inc = -1; +- argnum = nargs - 1; +- } +- else +- { +- inc = 1; +- argnum = 0; +- } ++ argnum = nargs - 1; + + #ifdef REG_PARM_STACK_SPACE + if (ACCUMULATE_OUTGOING_ARGS) +@@ -3978,7 +3945,7 @@ + + /* ARGNUM indexes the ARGVEC array in the order in which the arguments + are to be pushed. */ +- for (count = 0; count < nargs; count++, argnum += inc) ++ for (count = 0; count < nargs; count++, argnum--) + { + enum machine_mode mode = argvec[argnum].mode; + rtx val = argvec[argnum].value; +@@ -4080,17 +4047,8 @@ + } + } + +- /* If we pushed args in forward order, perform stack alignment +- after pushing the last arg. */ +- if (argblock == 0 && !PUSH_ARGS_REVERSED) +- anti_adjust_stack (GEN_INT (args_size.constant +- - original_args_size.constant)); ++ argnum = nargs - 1; + +- if (PUSH_ARGS_REVERSED) +- argnum = nargs - 1; +- else +- argnum = 0; +- + fun = prepare_call_address (NULL, fun, NULL, &call_fusage, 0, 0); + + /* Now load any reg parms into their regs. */ +@@ -4097,7 +4055,7 @@ + + /* ARGNUM indexes the ARGVEC array in the order in which the arguments + are to be pushed. */ +- for (count = 0; count < nargs; count++, argnum += inc) ++ for (count = 0; count < nargs; count++, argnum--) + { + enum machine_mode mode = argvec[argnum].mode; + rtx val = argvec[argnum].value; +--- a/src/gcc/tree.def ++++ b/src/gcc/tree.def +@@ -1144,10 +1144,9 @@ + result (e.g. summing the elements of the vector, finding the minimum over + the vector elements, etc). + Operand 0 is a vector. +- The expression returns a vector of the same type, with the first +- element in the vector holding the result of the reduction of all elements +- of the operand. The content of the other elements in the returned vector +- is undefined. */ ++ The expression returns a scalar, with type the same as the elements of the ++ vector, holding the result of the reduction of all elements of the operand. ++ */ + DEFTREECODE (REDUC_MAX_EXPR, "reduc_max_expr", tcc_unary, 1) + DEFTREECODE (REDUC_MIN_EXPR, "reduc_min_expr", tcc_unary, 1) + DEFTREECODE (REDUC_PLUS_EXPR, "reduc_plus_expr", tcc_unary, 1) +@@ -1210,10 +1209,9 @@ + before adding operand three. */ + DEFTREECODE (FMA_EXPR, "fma_expr", tcc_expression, 3) + +-/* Whole vector left/right shift in bits. ++/* Whole vector right shift in bits. + Operand 0 is a vector to be shifted. + Operand 1 is an integer shift amount in bits. */ +-DEFTREECODE (VEC_LSHIFT_EXPR, "vec_lshift_expr", tcc_binary, 2) + DEFTREECODE (VEC_RSHIFT_EXPR, "vec_rshift_expr", tcc_binary, 2) + + /* Widening vector multiplication. +--- a/src/gcc/expmed.c ++++ b/src/gcc/expmed.c +@@ -540,6 +540,21 @@ + copy_back = true; + } + ++ /* There are similar overflow check at the start of store_bit_field_1, ++ but that only check the situation where the field lies completely ++ outside the register, while there do have situation where the field ++ lies partialy in the register, we need to adjust bitsize for this ++ partial overflow situation. Without this fix, pr48335-2.c on big-endian ++ will broken on those arch support bit insert instruction, like arm, aarch64 ++ etc. */ ++ if (bitsize + bitnum > unit && bitnum < unit) ++ { ++ warning (OPT_Wextra, "write of %wu-bit data outside the bound of " ++ "destination object, data truncated into %wu-bit", ++ bitsize, unit - bitnum); ++ bitsize = unit - bitnum; ++ } ++ + /* If BITS_BIG_ENDIAN is zero on a BYTES_BIG_ENDIAN machine, we count + "backwards" from the size of the unit we are inserting into. + Otherwise, we count bits from the most significant on a +--- a/src/gcc/except.c ++++ b/src/gcc/except.c +@@ -1394,10 +1394,7 @@ + { + for (loop = bb->loop_father; + loop_outer (loop); loop = loop_outer (loop)) +- { +- loop->header = NULL; +- loop->latch = NULL; +- } ++ mark_loop_for_removal (loop); + } + } + +--- a/src/gcc/cfgexpand.c ++++ b/src/gcc/cfgexpand.c +@@ -1292,7 +1292,12 @@ + else if (TREE_CODE (var) == VAR_DECL && DECL_HARD_REGISTER (var)) + { + if (really_expand) +- expand_one_hard_reg_var (var); ++ { ++ expand_one_hard_reg_var (var); ++ if (!DECL_HARD_REGISTER (var)) ++ /* Invalid register specification. */ ++ expand_one_error_var (var); ++ } + } + else if (use_register_for_decl (var)) + { +@@ -4545,7 +4550,6 @@ + case REDUC_MIN_EXPR: + case REDUC_PLUS_EXPR: + case VEC_COND_EXPR: +- case VEC_LSHIFT_EXPR: + case VEC_PACK_FIX_TRUNC_EXPR: + case VEC_PACK_SAT_EXPR: + case VEC_PACK_TRUNC_EXPR: +--- a/src/gcc/gimple-fold.c ++++ b/src/gcc/gimple-fold.c +@@ -374,6 +374,9 @@ + { + tree rhs = gimple_assign_rhs1 (stmt); + ++ if (TREE_CLOBBER_P (rhs)) ++ return NULL_TREE; ++ + if (REFERENCE_CLASS_P (rhs)) + return maybe_fold_reference (rhs, false); + +--- a/src/gcc/simplify-rtx.c ++++ b/src/gcc/simplify-rtx.c +@@ -3348,6 +3348,44 @@ + && UINTVAL (trueop0) == GET_MODE_MASK (mode) + && ! side_effects_p (op1)) + return op0; ++ /* Given: ++ scalar modes M1, M2 ++ scalar constants c1, c2 ++ size (M2) > size (M1) ++ c1 == size (M2) - size (M1) ++ optimize: ++ (ashiftrt:M1 (subreg:M1 (lshiftrt:M2 (reg:M2) ++ (const_int )) ++ ) ++ (const_int )) ++ to: ++ (subreg:M1 (ashiftrt:M2 (reg:M2) ++ (const_int )) ++ ). */ ++ if (!VECTOR_MODE_P (mode) ++ && SUBREG_P (op0) ++ && CONST_INT_P (op1) ++ && (GET_CODE (SUBREG_REG (op0)) == LSHIFTRT) ++ && !VECTOR_MODE_P (GET_MODE (SUBREG_REG (op0))) ++ && CONST_INT_P (XEXP (SUBREG_REG (op0), 1)) ++ && (GET_MODE_BITSIZE (GET_MODE (SUBREG_REG (op0))) ++ > GET_MODE_BITSIZE (mode)) ++ && (INTVAL (XEXP (SUBREG_REG (op0), 1)) ++ == (GET_MODE_BITSIZE (GET_MODE (SUBREG_REG (op0))) ++ - GET_MODE_BITSIZE (mode))) ++ && subreg_lowpart_p (op0)) ++ { ++ rtx tmp = GEN_INT (INTVAL (XEXP (SUBREG_REG (op0), 1)) ++ + INTVAL (op1)); ++ machine_mode inner_mode = GET_MODE (SUBREG_REG (op0)); ++ tmp = simplify_gen_binary (ASHIFTRT, ++ GET_MODE (SUBREG_REG (op0)), ++ XEXP (SUBREG_REG (op0), 0), ++ tmp); ++ return simplify_gen_subreg (mode, tmp, inner_mode, ++ subreg_lowpart_offset (mode, ++ inner_mode)); ++ } + canonicalize_shift: + if (SHIFT_COUNT_TRUNCATED && CONST_INT_P (op1)) + { +@@ -4854,6 +4892,32 @@ + simplify_gen_binary (XOR, cmp_mode, + XEXP (op0, 1), op1)); + ++ /* (eq/ne (and x y) x) simplifies to (eq/ne (and (not y) x) 0), which ++ can be implemented with a BICS instruction on some targets, or ++ constant-folded if y is a constant. */ ++ if ((code == EQ || code == NE) ++ && op0code == AND ++ && rtx_equal_p (XEXP (op0, 0), op1) ++ && !side_effects_p (op1)) ++ { ++ rtx not_y = simplify_gen_unary (NOT, cmp_mode, XEXP (op0, 1), cmp_mode); ++ rtx lhs = simplify_gen_binary (AND, cmp_mode, not_y, XEXP (op0, 0)); ++ ++ return simplify_gen_relational (code, mode, cmp_mode, lhs, const0_rtx); ++ } ++ ++ /* Likewise for (eq/ne (and x y) y). */ ++ if ((code == EQ || code == NE) ++ && op0code == AND ++ && rtx_equal_p (XEXP (op0, 1), op1) ++ && !side_effects_p (op1)) ++ { ++ rtx not_x = simplify_gen_unary (NOT, cmp_mode, XEXP (op0, 0), cmp_mode); ++ rtx lhs = simplify_gen_binary (AND, cmp_mode, not_x, XEXP (op0, 1)); ++ ++ return simplify_gen_relational (code, mode, cmp_mode, lhs, const0_rtx); ++ } ++ + /* (eq/ne (bswap x) C1) simplifies to (eq/ne x C2) with C2 swapped. */ + if ((code == EQ || code == NE) + && GET_CODE (op0) == BSWAP +--- a/src/gcc/explow.c ++++ b/src/gcc/explow.c +@@ -329,11 +329,13 @@ + an address in the address space's address mode, or vice versa (TO_MODE says + which way). We take advantage of the fact that pointers are not allowed to + overflow by commuting arithmetic operations over conversions so that address +- arithmetic insns can be used. */ ++ arithmetic insns can be used. IN_CONST is true if this conversion is inside ++ a CONST. */ + +-rtx +-convert_memory_address_addr_space (enum machine_mode to_mode ATTRIBUTE_UNUSED, +- rtx x, addr_space_t as ATTRIBUTE_UNUSED) ++static rtx ++convert_memory_address_addr_space_1 (enum machine_mode to_mode ATTRIBUTE_UNUSED, ++ rtx x, addr_space_t as ATTRIBUTE_UNUSED, ++ bool in_const) + { + #ifndef POINTERS_EXTEND_UNSIGNED + gcc_assert (GET_MODE (x) == to_mode || GET_MODE (x) == VOIDmode); +@@ -389,32 +391,29 @@ + + case CONST: + return gen_rtx_CONST (to_mode, +- convert_memory_address_addr_space +- (to_mode, XEXP (x, 0), as)); ++ convert_memory_address_addr_space_1 ++ (to_mode, XEXP (x, 0), as, true)); + break; + + case PLUS: + case MULT: +- /* FIXME: For addition, we used to permute the conversion and +- addition operation only if one operand is a constant and +- converting the constant does not change it or if one operand +- is a constant and we are using a ptr_extend instruction +- (POINTERS_EXTEND_UNSIGNED < 0) even if the resulting address +- may overflow/underflow. We relax the condition to include +- zero-extend (POINTERS_EXTEND_UNSIGNED > 0) since the other +- parts of the compiler depend on it. See PR 49721. +- ++ /* For addition we can safely permute the conversion and addition ++ operation if one operand is a constant and converting the constant ++ does not change it or if one operand is a constant and we are ++ using a ptr_extend instruction (POINTERS_EXTEND_UNSIGNED < 0). + We can always safely permute them if we are making the address +- narrower. */ ++ narrower. Inside a CONST RTL, this is safe for both pointers ++ zero or sign extended as pointers cannot wrap. */ + if (GET_MODE_SIZE (to_mode) < GET_MODE_SIZE (from_mode) + || (GET_CODE (x) == PLUS + && CONST_INT_P (XEXP (x, 1)) +- && (POINTERS_EXTEND_UNSIGNED != 0 +- || XEXP (x, 1) == convert_memory_address_addr_space +- (to_mode, XEXP (x, 1), as)))) ++ && ((in_const && POINTERS_EXTEND_UNSIGNED != 0) ++ || XEXP (x, 1) == convert_memory_address_addr_space_1 ++ (to_mode, XEXP (x, 1), as, in_const) ++ || POINTERS_EXTEND_UNSIGNED < 0))) + return gen_rtx_fmt_ee (GET_CODE (x), to_mode, +- convert_memory_address_addr_space +- (to_mode, XEXP (x, 0), as), ++ convert_memory_address_addr_space_1 ++ (to_mode, XEXP (x, 0), as, in_const), + XEXP (x, 1)); + break; + +@@ -426,6 +425,18 @@ + x, POINTERS_EXTEND_UNSIGNED); + #endif /* defined(POINTERS_EXTEND_UNSIGNED) */ + } ++ ++/* Given X, a memory address in address space AS' pointer mode, convert it to ++ an address in the address space's address mode, or vice versa (TO_MODE says ++ which way). We take advantage of the fact that pointers are not allowed to ++ overflow by commuting arithmetic operations over conversions so that address ++ arithmetic insns can be used. */ ++ ++rtx ++convert_memory_address_addr_space (enum machine_mode to_mode, rtx x, addr_space_t as) ++{ ++ return convert_memory_address_addr_space_1 (to_mode, x, as, false); ++} + + /* Return something equivalent to X but valid as a memory address for something + of mode MODE in the named address space AS. When X is not itself valid, +--- a/src/gcc/lto/ChangeLog.linaro ++++ b/src/gcc/lto/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/gcc/po/ChangeLog.linaro ++++ b/src/gcc/po/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/gcc/varasm.c ++++ b/src/gcc/varasm.c +@@ -1335,6 +1335,11 @@ + /* As a register variable, it has no section. */ + return; + } ++ /* Avoid internal errors from invalid register ++ specifications. */ ++ SET_DECL_ASSEMBLER_NAME (decl, NULL_TREE); ++ DECL_HARD_REGISTER (decl) = 0; ++ return; + } + /* Now handle ordinary static variables and functions (in memory). + Also handle vars declared register invalidly. */ +--- a/src/gcc/sched-deps.c ++++ b/src/gcc/sched-deps.c +@@ -2489,7 +2489,7 @@ + /* Pending lists can't get larger with a readonly context. */ + if (!deps->readonly + && ((deps->pending_read_list_length + deps->pending_write_list_length) +- > MAX_PENDING_LIST_LENGTH)) ++ >= MAX_PENDING_LIST_LENGTH)) + { + /* Flush all pending reads and writes to prevent the pending lists + from getting any larger. Insn scheduling runs too slowly when +@@ -2700,7 +2700,7 @@ + { + if ((deps->pending_read_list_length + + deps->pending_write_list_length) +- > MAX_PENDING_LIST_LENGTH ++ >= MAX_PENDING_LIST_LENGTH + && !DEBUG_INSN_P (insn)) + flush_pending_lists (deps, insn, true, true); + add_insn_mem_dependence (deps, true, insn, x); +@@ -2828,35 +2828,41 @@ + sched_deps_info->finish_rhs (); + } + +-/* Try to group comparison and the following conditional jump INSN if +- they're already adjacent. This is to prevent scheduler from scheduling +- them apart. */ ++/* Try to group two fuseable insns together to prevent scheduler ++ from scheduling them apart. */ + + static void +-try_group_insn (rtx insn) ++sched_macro_fuse_insns (rtx insn) + { +- unsigned int condreg1, condreg2; +- rtx cc_reg_1; + rtx prev; + +- if (!any_condjump_p (insn)) +- return; ++ if (any_condjump_p (insn)) ++ { ++ unsigned int condreg1, condreg2; ++ rtx cc_reg_1; ++ targetm.fixed_condition_code_regs (&condreg1, &condreg2); ++ cc_reg_1 = gen_rtx_REG (CCmode, condreg1); ++ prev = prev_nonnote_nondebug_insn (insn); ++ if (!reg_referenced_p (cc_reg_1, PATTERN (insn)) ++ || !prev ++ || !modified_in_p (cc_reg_1, prev)) ++ return; ++ } ++ else ++ { ++ rtx insn_set = single_set (insn); + +- targetm.fixed_condition_code_regs (&condreg1, &condreg2); +- cc_reg_1 = gen_rtx_REG (CCmode, condreg1); +- prev = prev_nonnote_nondebug_insn (insn); +- if (!reg_referenced_p (cc_reg_1, PATTERN (insn)) +- || !prev +- || !modified_in_p (cc_reg_1, prev)) +- return; ++ prev = prev_nonnote_nondebug_insn (insn); ++ if (!prev ++ || !insn_set ++ || !single_set (prev)) ++ return; + +- /* Different microarchitectures support macro fusions for different +- combinations of insn pairs. */ +- if (!targetm.sched.macro_fusion_pair_p +- || !targetm.sched.macro_fusion_pair_p (prev, insn)) +- return; ++ } + +- SCHED_GROUP_P (insn) = 1; ++ if (targetm.sched.macro_fusion_pair_p (prev, insn)) ++ SCHED_GROUP_P (insn) = 1; ++ + } + + /* Analyze an INSN with pattern X to find all dependencies. */ +@@ -2885,7 +2891,7 @@ + /* Group compare and branch insns for macro-fusion. */ + if (targetm.sched.macro_fusion_p + && targetm.sched.macro_fusion_p ()) +- try_group_insn (insn); ++ sched_macro_fuse_insns (insn); + + if (may_trap_p (x)) + /* Avoid moving trapping instructions across function calls that might +@@ -3195,8 +3201,8 @@ + EXECUTE_IF_SET_IN_REG_SET (reg_pending_clobbers, 0, i, rsi) + { + struct deps_reg *reg_last = &deps->reg_last[i]; +- if (reg_last->uses_length > MAX_PENDING_LIST_LENGTH +- || reg_last->clobbers_length > MAX_PENDING_LIST_LENGTH) ++ if (reg_last->uses_length >= MAX_PENDING_LIST_LENGTH ++ || reg_last->clobbers_length >= MAX_PENDING_LIST_LENGTH) + { + add_dependence_list_and_free (deps, insn, ®_last->sets, 0, + REG_DEP_OUTPUT, false); +@@ -3629,7 +3635,7 @@ + && sel_insn_is_speculation_check (insn))) + { + /* Keep the list a reasonable size. */ +- if (deps->pending_flush_length++ > MAX_PENDING_LIST_LENGTH) ++ if (deps->pending_flush_length++ >= MAX_PENDING_LIST_LENGTH) + flush_pending_lists (deps, insn, true, true); + else + deps->pending_jump_insns +--- a/src/gcc/rtl.h ++++ b/src/gcc/rtl.h +@@ -472,6 +472,9 @@ + /* Predicate yielding nonzero iff X is a data for a jump table. */ + #define JUMP_TABLE_DATA_P(INSN) (GET_CODE (INSN) == JUMP_TABLE_DATA) + ++/* Predicate yielding nonzero iff RTX is a subreg. */ ++#define SUBREG_P(RTX) (GET_CODE (RTX) == SUBREG) ++ + /* Predicate yielding nonzero iff X is a return or simple_return. */ + #define ANY_RETURN_P(X) \ + (GET_CODE (X) == RETURN || GET_CODE (X) == SIMPLE_RETURN) +--- a/src/gcc/tree-inline.c ++++ b/src/gcc/tree-inline.c +@@ -2336,11 +2336,8 @@ + + /* Assign the new loop its header and latch and associate + those with the new loop. */ +- if (src_loop->header != NULL) +- { +- dest_loop->header = (basic_block)src_loop->header->aux; +- dest_loop->header->loop_father = dest_loop; +- } ++ dest_loop->header = (basic_block)src_loop->header->aux; ++ dest_loop->header->loop_father = dest_loop; + if (src_loop->latch != NULL) + { + dest_loop->latch = (basic_block)src_loop->latch->aux; +@@ -3649,7 +3646,6 @@ + case RSHIFT_EXPR: + case LROTATE_EXPR: + case RROTATE_EXPR: +- case VEC_LSHIFT_EXPR: + case VEC_RSHIFT_EXPR: + + case BIT_IOR_EXPR: +@@ -5506,6 +5502,11 @@ + delete_unreachable_blocks_update_callgraph (&id); + if (id.dst_node->definition) + cgraph_rebuild_references (); ++ if (loops_state_satisfies_p (LOOPS_NEED_FIXUP)) ++ { ++ calculate_dominance_info (CDI_DOMINATORS); ++ fix_loop_structure (NULL); ++ } + update_ssa (TODO_update_ssa); + + /* After partial cloning we need to rescale frequencies, so they are +--- a/src/gcc/sched-int.h ++++ b/src/gcc/sched-int.h +@@ -170,7 +170,7 @@ + int n_debug; + }; + +-extern char *ready_try; ++extern signed char *ready_try; + extern struct ready_list ready; + + extern int max_issue (struct ready_list *, int, state_t, bool, int *); +@@ -794,6 +794,32 @@ + struct reg_set_data *next_insn_set; + }; + ++enum autopref_multipass_data_status { ++ /* Entry is irrelevant for auto-prefetcher. */ ++ AUTOPREF_MULTIPASS_DATA_IRRELEVANT = -2, ++ /* Entry is uninitialized. */ ++ AUTOPREF_MULTIPASS_DATA_UNINITIALIZED = -1, ++ /* Entry is relevant for auto-prefetcher and insn can be delayed ++ to allow another insn through. */ ++ AUTOPREF_MULTIPASS_DATA_NORMAL = 0, ++ /* Entry is relevant for auto-prefetcher, but insn should not be ++ delayed as that will break scheduling. */ ++ AUTOPREF_MULTIPASS_DATA_DONT_DELAY = 1 ++}; ++ ++/* Data for modeling cache auto-prefetcher. */ ++struct autopref_multipass_data_ ++{ ++ /* Base part of memory address. */ ++ rtx base; ++ /* Memory offset. */ ++ int offset; ++ /* Entry status. */ ++ enum autopref_multipass_data_status status; ++}; ++typedef struct autopref_multipass_data_ autopref_multipass_data_def; ++typedef autopref_multipass_data_def *autopref_multipass_data_t; ++ + struct _haifa_insn_data + { + /* We can't place 'struct _deps_list' into h_i_d instead of deps_list_t +@@ -888,6 +914,16 @@ + pressure excess (between source and target). */ + int reg_pressure_excess_cost_change; + int model_index; ++ ++ /* Original order of insns in the ready list. */ ++ int rfs_debug_orig_order; ++ ++ /* The deciding reason for INSN's place in the ready list. */ ++ int last_rfs_win; ++ ++ /* Two entries for cache auto-prefetcher model: one for mem reads, ++ and one for mem writes. */ ++ autopref_multipass_data_def autopref_multipass_data[2]; + }; + + typedef struct _haifa_insn_data haifa_insn_data_def; +@@ -909,6 +945,8 @@ + (HID (INSN)->reg_pressure_excess_cost_change) + #define INSN_PRIORITY_STATUS(INSN) (HID (INSN)->priority_status) + #define INSN_MODEL_INDEX(INSN) (HID (INSN)->model_index) ++#define INSN_AUTOPREF_MULTIPASS_DATA(INSN) \ ++ (HID (INSN)->autopref_multipass_data) + + typedef struct _haifa_deps_insn_data haifa_deps_insn_data_def; + typedef haifa_deps_insn_data_def *haifa_deps_insn_data_t; +@@ -1141,9 +1179,7 @@ + + enum SPEC_SCHED_FLAGS { + COUNT_SPEC_IN_CRITICAL_PATH = 1, +- PREFER_NON_DATA_SPEC = COUNT_SPEC_IN_CRITICAL_PATH << 1, +- PREFER_NON_CONTROL_SPEC = PREFER_NON_DATA_SPEC << 1, +- SEL_SCHED_SPEC_DONT_CHECK_CONTROL = PREFER_NON_CONTROL_SPEC << 1 ++ SEL_SCHED_SPEC_DONT_CHECK_CONTROL = COUNT_SPEC_IN_CRITICAL_PATH << 1 + }; + + #define NOTE_NOT_BB_P(NOTE) (NOTE_P (NOTE) && (NOTE_KIND (NOTE) \ +@@ -1357,7 +1393,8 @@ + extern int issue_rate; + extern int dfa_lookahead; + +-extern void ready_sort (struct ready_list *); ++extern int autopref_multipass_dfa_lookahead_guard (rtx, int); ++ + extern rtx ready_element (struct ready_list *, int); + extern rtx *ready_lastpos (struct ready_list *); + +--- a/src/gcc/var-tracking.c ++++ b/src/gcc/var-tracking.c +@@ -5997,7 +5997,8 @@ + { + cselib_val *oval = cselib_lookup (oloc, GET_MODE (oloc), 0, VOIDmode); + +- gcc_assert (oval != v); ++ if (oval == v) ++ return; + gcc_assert (REG_P (oloc) || MEM_P (oloc)); + + if (oval && !cselib_preserved_value_p (oval)) +--- a/src/gcc/cfgloop.c ++++ b/src/gcc/cfgloop.c +@@ -1919,3 +1919,16 @@ + { + return bb->loop_father ? loop_depth (bb->loop_father) : 0; + } ++ ++/* Marks LOOP for removal and sets LOOPS_NEED_FIXUP. */ ++ ++void ++mark_loop_for_removal (loop_p loop) ++{ ++ if (loop->header == NULL) ++ return; ++ loop->former_header = loop->header; ++ loop->header = NULL; ++ loop->latch = NULL; ++ loops_state_set (LOOPS_NEED_FIXUP); ++} +--- a/src/gcc/system.h ++++ b/src/gcc/system.h +@@ -830,7 +830,8 @@ + CAN_DEBUG_WITHOUT_FP UNLIKELY_EXECUTED_TEXT_SECTION_NAME \ + HOT_TEXT_SECTION_NAME LEGITIMATE_CONSTANT_P ALWAYS_STRIP_DOTDOT \ + OUTPUT_ADDR_CONST_EXTRA SMALL_REGISTER_CLASSES ASM_OUTPUT_IDENT \ +- ASM_BYTE_OP MEMBER_TYPE_FORCES_BLK ++ ASM_BYTE_OP MEMBER_TYPE_FORCES_BLK CLEAR_BY_PIECES_P \ ++ MOVE_BY_PIECES_P SET_BY_PIECES_P STORE_BY_PIECES_P + + /* Target macros only used for code built for the target, that have + moved to libgcc-tm.h or have never been present elsewhere. */ +@@ -912,7 +913,8 @@ + USE_COMMON_FOR_ONE_ONLY IFCVT_EXTRA_FIELDS IFCVT_INIT_EXTRA_FIELDS \ + CASE_USE_BIT_TESTS FIXUNS_TRUNC_LIKE_FIX_TRUNC \ + GO_IF_MODE_DEPENDENT_ADDRESS DELAY_SLOTS_FOR_EPILOGUE \ +- ELIGIBLE_FOR_EPILOGUE_DELAY TARGET_C99_FUNCTIONS TARGET_HAS_SINCOS ++ ELIGIBLE_FOR_EPILOGUE_DELAY TARGET_C99_FUNCTIONS TARGET_HAS_SINCOS \ ++ LARGEST_EXPONENT_IS_NORNAL ROUND_TOWARDS_ZERO + + /* Hooks that are no longer used. */ + #pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE \ +--- a/src/gcc/cfgloop.h ++++ b/src/gcc/cfgloop.h +@@ -192,6 +192,12 @@ + + /* Number of iteration analysis data for RTL. */ + struct niter_desc *simple_loop_desc; ++ ++ /* For sanity checking during loop fixup we record here the former ++ loop header for loops marked for removal. Note that this prevents ++ the basic-block from being collected but its index can still be ++ reused. */ ++ basic_block former_header; + }; + + /* Flags for state of loop structure. */ +@@ -335,7 +341,9 @@ + extern bool remove_path (edge); + extern void unloop (struct loop *, bool *, bitmap); + extern void scale_loop_frequencies (struct loop *, int, int); ++void mark_loop_for_removal (loop_p); + ++ + /* Induction variable analysis. */ + + /* The description of induction variable. The things are a bit complicated +--- a/src/gcc/tree-vect-generic.c ++++ b/src/gcc/tree-vect-generic.c +@@ -1597,7 +1597,7 @@ + if (compute_type == type) + return; + +- gcc_assert (code != VEC_LSHIFT_EXPR && code != VEC_RSHIFT_EXPR); ++ gcc_assert (code != VEC_RSHIFT_EXPR); + new_rhs = expand_vector_operation (gsi, type, compute_type, stmt, code); + + /* Leave expression untouched for later expansion. */ +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -312,8 +312,9 @@ + aarch64*-*-*) + cpu_type=aarch64 + need_64bit_hwint=yes +- extra_headers="arm_neon.h" ++ extra_headers="arm_neon.h arm_acle.h" + extra_objs="aarch64-builtins.o aarch-common.o" ++ target_gtfiles="\$(srcdir)/config/aarch64/aarch64-builtins.c" + target_has_targetm_common=yes + ;; + alpha*-*-*) +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -814,10 +814,12 @@ + DEVPHASE := $(srcdir)/DEV-PHASE # experimental, prerelease, "" + DATESTAMP := $(srcdir)/DATESTAMP # YYYYMMDD or empty + REVISION := $(srcdir)/REVISION # [BRANCH revision XXXXXX] ++LINAROVER := $(srcdir)/LINARO-VERSION # M.x-YYYY.MM[-S][~dev] + + BASEVER_c := $(shell cat $(BASEVER)) + DEVPHASE_c := $(shell cat $(DEVPHASE)) + DATESTAMP_c := $(shell cat $(DATESTAMP)) ++LINAROVER_c := $(shell cat $(LINAROVER)) + + ifeq (,$(wildcard $(REVISION))) + REVISION_c := +@@ -838,6 +840,7 @@ + DATESTAMP_s := "\"$(if $(DEVPHASE_c), $(DATESTAMP_c))\"" + PKGVERSION_s:= "\"@PKGVERSION@\"" + BUGURL_s := "\"@REPORT_BUGS_TO@\"" ++LINAROVER_s := "\"$(LINAROVER_c)\"" + + PKGVERSION := @PKGVERSION@ + BUGURL_TEXI := @REPORT_BUGS_TEXI@ +@@ -2542,8 +2545,9 @@ + -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \ + @TARGET_SYSTEM_ROOT_DEFINE@ + +-CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(BASEVER_s) +-cppbuiltin.o: $(BASEVER) ++CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(BASEVER_s) \ ++ -DLINAROVER=$(LINAROVER_s) ++cppbuiltin.o: $(BASEVER) $(LINAROVER) + + CFLAGS-cppdefault.o += $(PREPROCESSOR_DEFINES) + +@@ -2799,8 +2803,7 @@ + gcov.texi trouble.texi bugreport.texi service.texi \ + contribute.texi compat.texi funding.texi gnu.texi gpl_v3.texi \ + fdl.texi contrib.texi cppenv.texi cppopts.texi avr-mmcu.texi \ +- implement-c.texi implement-cxx.texi arm-neon-intrinsics.texi \ +- arm-acle-intrinsics.texi ++ implement-c.texi implement-cxx.texi + + # we explicitly use $(srcdir)/doc/tm.texi here to avoid confusion with + # the generated tm.texi; the latter might have a more recent timestamp, +--- a/src/gcc/tree-cfg.c ++++ b/src/gcc/tree-cfg.c +@@ -2594,7 +2594,7 @@ + near its "logical" location. This is of most help to humans looking + at debugging dumps. */ + +-static basic_block ++basic_block + split_edge_bb_loc (edge edge_in) + { + basic_block dest = edge_in->dest; +@@ -3517,12 +3517,21 @@ + + return false; + } ++ case REDUC_MAX_EXPR: ++ case REDUC_MIN_EXPR: ++ case REDUC_PLUS_EXPR: ++ if (!VECTOR_TYPE_P (rhs1_type) ++ || !useless_type_conversion_p (lhs_type, TREE_TYPE (rhs1_type))) ++ { ++ error ("reduction should convert from vector to element type"); ++ debug_generic_expr (lhs_type); ++ debug_generic_expr (rhs1_type); ++ return true; ++ } ++ return false; + + case VEC_UNPACK_HI_EXPR: + case VEC_UNPACK_LO_EXPR: +- case REDUC_MAX_EXPR: +- case REDUC_MIN_EXPR: +- case REDUC_PLUS_EXPR: + case VEC_UNPACK_FLOAT_HI_EXPR: + case VEC_UNPACK_FLOAT_LO_EXPR: + /* FIXME. */ +@@ -3629,7 +3638,6 @@ + return false; + } + +- case VEC_LSHIFT_EXPR: + case VEC_RSHIFT_EXPR: + { + if (TREE_CODE (rhs1_type) != VECTOR_TYPE +--- a/src/gcc/tree-cfg.h ++++ b/src/gcc/tree-cfg.h +@@ -62,6 +62,7 @@ + extern tree gimple_block_label (basic_block); + extern void add_phi_args_after_copy_bb (basic_block); + extern void add_phi_args_after_copy (basic_block *, unsigned, edge); ++extern basic_block split_edge_bb_loc (edge); + extern bool gimple_duplicate_sese_region (edge, edge, basic_block *, unsigned, + basic_block *, bool); + extern bool gimple_duplicate_sese_tail (edge, edge, basic_block *, unsigned, +--- a/src/gcc/ree.c ++++ b/src/gcc/ree.c +@@ -793,6 +793,14 @@ + if (state->modified[INSN_UID (cand->insn)].kind != EXT_MODIFIED_NONE) + return false; + ++ enum machine_mode dst_mode = GET_MODE (SET_DEST (PATTERN (cand->insn))); ++ rtx src_reg = get_extended_src_reg (SET_SRC (PATTERN (cand->insn))); ++ ++ /* Ensure the number of hard registers of the copy match. */ ++ if (HARD_REGNO_NREGS (REGNO (src_reg), dst_mode) ++ != HARD_REGNO_NREGS (REGNO (src_reg), GET_MODE (src_reg))) ++ return false; ++ + /* There's only one reaching def. */ + rtx def_insn = state->defs_list[0]; + +@@ -842,7 +850,7 @@ + start_sequence (); + rtx pat = PATTERN (cand->insn); + rtx new_dst = gen_rtx_REG (GET_MODE (SET_DEST (pat)), +- REGNO (XEXP (SET_SRC (pat), 0))); ++ REGNO (get_extended_src_reg (SET_SRC (pat)))); + rtx new_src = gen_rtx_REG (GET_MODE (SET_DEST (pat)), + REGNO (SET_DEST (pat))); + emit_move_insn (new_dst, new_src); +--- a/src/gcc/config/s390/s390.c ++++ b/src/gcc/config/s390/s390.c +@@ -12112,6 +12112,18 @@ + register_pass (&insert_pass_s390_early_mach); + } + ++/* Implement TARGET_USE_BY_PIECES_INFRASTRUCTURE_P. */ ++ ++static bool ++s390_use_by_pieces_infrastructure_p (unsigned HOST_WIDE_INT size, ++ unsigned int align ATTRIBUTE_UNUSED, ++ enum by_pieces_operation op ATTRIBUTE_UNUSED, ++ bool speed_p ATTRIBUTE_UNUSED) ++{ ++ return (size == 1 || size == 2 ++ || size == 4 || (TARGET_ZARCH && size == 8)); ++} ++ + /* Initialize GCC target structure. */ + + #undef TARGET_ASM_ALIGNED_HI_OP +@@ -12294,6 +12306,10 @@ + #undef TARGET_SET_UP_BY_PROLOGUE + #define TARGET_SET_UP_BY_PROLOGUE s300_set_up_by_prologue + ++#undef TARGET_USE_BY_PIECES_INFRASTRUCTURE_P ++#define TARGET_USE_BY_PIECES_INFRASTRUCTURE_P \ ++ s390_use_by_pieces_infrastructure_p ++ + struct gcc_target targetm = TARGET_INITIALIZER; + + #include "gt-s390.h" +--- a/src/gcc/config/s390/s390.h ++++ b/src/gcc/config/s390/s390.h +@@ -752,24 +752,6 @@ + #define MOVE_MAX_PIECES (TARGET_ZARCH ? 8 : 4) + #define MAX_MOVE_MAX 16 + +-/* Determine whether to use move_by_pieces or block move insn. */ +-#define MOVE_BY_PIECES_P(SIZE, ALIGN) \ +- ( (SIZE) == 1 || (SIZE) == 2 || (SIZE) == 4 \ +- || (TARGET_ZARCH && (SIZE) == 8) ) +- +-/* Determine whether to use clear_by_pieces or block clear insn. */ +-#define CLEAR_BY_PIECES_P(SIZE, ALIGN) \ +- ( (SIZE) == 1 || (SIZE) == 2 || (SIZE) == 4 \ +- || (TARGET_ZARCH && (SIZE) == 8) ) +- +-/* This macro is used to determine whether store_by_pieces should be +- called to "memcpy" storage when the source is a constant string. */ +-#define STORE_BY_PIECES_P(SIZE, ALIGN) MOVE_BY_PIECES_P (SIZE, ALIGN) +- +-/* Likewise to decide whether to "memset" storage with byte values +- other than zero. */ +-#define SET_BY_PIECES_P(SIZE, ALIGN) STORE_BY_PIECES_P (SIZE, ALIGN) +- + /* Don't perform CSE on function addresses. */ + #define NO_FUNCTION_CSE + +--- a/src/gcc/config/i386/i386.c ++++ b/src/gcc/config/i386/i386.c +@@ -25804,6 +25804,9 @@ + rtx compare_set = NULL_RTX, test_if, cond; + rtx alu_set = NULL_RTX, addr = NULL_RTX; + ++ if (!any_condjump_p (condjmp)) ++ return false; ++ + if (get_attr_type (condgen) != TYPE_TEST + && get_attr_type (condgen) != TYPE_ICMP + && get_attr_type (condgen) != TYPE_INCDEC +@@ -26374,7 +26377,7 @@ + static void + core2i7_first_cycle_multipass_filter_ready_try + (const_ix86_first_cycle_multipass_data_t data, +- char *ready_try, int n_ready, bool first_cycle_insn_p) ++ signed char *ready_try, int n_ready, bool first_cycle_insn_p) + { + while (n_ready--) + { +@@ -26406,7 +26409,8 @@ + + /* Prepare for a new round of multipass lookahead scheduling. */ + static void +-core2i7_first_cycle_multipass_begin (void *_data, char *ready_try, int n_ready, ++core2i7_first_cycle_multipass_begin (void *_data, ++ signed char *ready_try, int n_ready, + bool first_cycle_insn_p) + { + ix86_first_cycle_multipass_data_t data +@@ -26427,7 +26431,8 @@ + /* INSN is being issued in current solution. Account for its impact on + the decoder model. */ + static void +-core2i7_first_cycle_multipass_issue (void *_data, char *ready_try, int n_ready, ++core2i7_first_cycle_multipass_issue (void *_data, ++ signed char *ready_try, int n_ready, + rtx insn, const void *_prev_data) + { + ix86_first_cycle_multipass_data_t data +@@ -26465,7 +26470,7 @@ + /* Revert the effect on ready_try. */ + static void + core2i7_first_cycle_multipass_backtrack (const void *_data, +- char *ready_try, ++ signed char *ready_try, + int n_ready ATTRIBUTE_UNUSED) + { + const_ix86_first_cycle_multipass_data_t data +--- a/src/gcc/config/sh/sh.c ++++ b/src/gcc/config/sh/sh.c +@@ -317,6 +317,10 @@ + static bool sh_legitimate_constant_p (enum machine_mode, rtx); + static int mov_insn_size (enum machine_mode, bool); + static int mov_insn_alignment_mask (enum machine_mode, bool); ++static bool sh_use_by_pieces_infrastructure_p (unsigned HOST_WIDE_INT, ++ unsigned int, ++ enum by_pieces_operation, ++ bool); + static bool sequence_insn_p (rtx); + static void sh_canonicalize_comparison (int *, rtx *, rtx *, bool); + static void sh_canonicalize_comparison (enum rtx_code&, rtx&, rtx&, +@@ -601,6 +605,10 @@ + #undef TARGET_FIXED_CONDITION_CODE_REGS + #define TARGET_FIXED_CONDITION_CODE_REGS sh_fixed_condition_code_regs + ++#undef TARGET_USE_BY_PIECES_INFRASTRUCTURE_P ++#define TARGET_USE_BY_PIECES_INFRASTRUCTURE_P \ ++ sh_use_by_pieces_infrastructure_p ++ + /* Machine-specific symbol_ref flags. */ + #define SYMBOL_FLAG_FUNCVEC_FUNCTION (SYMBOL_FLAG_MACH_DEP << 0) + +@@ -13393,4 +13401,27 @@ + return NULL_RTX; + } + ++/* Implement TARGET_USE_BY_PIECES_INFRASTRUCTURE_P. */ ++ ++static bool ++sh_use_by_pieces_infrastructure_p (unsigned HOST_WIDE_INT size, ++ unsigned int align, ++ enum by_pieces_operation op, ++ bool speed_p) ++{ ++ switch (op) ++ { ++ case MOVE_BY_PIECES: ++ return move_by_pieces_ninsns (size, align, MOVE_MAX_PIECES + 1) ++ < (!speed_p ? 2 : (align >= 32) ? 16 : 2); ++ case STORE_BY_PIECES: ++ case SET_BY_PIECES: ++ return move_by_pieces_ninsns (size, align, STORE_MAX_PIECES + 1) ++ < (!speed_p ? 2 : (align >= 32) ? 16 : 2); ++ default: ++ return default_use_by_pieces_infrastructure_p (size, align, ++ op, speed_p); ++ } ++} ++ + #include "gt-sh.h" +--- a/src/gcc/config/sh/sh.h ++++ b/src/gcc/config/sh/sh.h +@@ -1584,16 +1584,6 @@ + #define USE_STORE_PRE_DECREMENT(mode) ((mode == SImode || mode == DImode) \ + ? 0 : TARGET_SH1) + +-#define MOVE_BY_PIECES_P(SIZE, ALIGN) \ +- (move_by_pieces_ninsns (SIZE, ALIGN, MOVE_MAX_PIECES + 1) \ +- < (optimize_size ? 2 : ((ALIGN >= 32) ? 16 : 2))) +- +-#define STORE_BY_PIECES_P(SIZE, ALIGN) \ +- (move_by_pieces_ninsns (SIZE, ALIGN, STORE_MAX_PIECES + 1) \ +- < (optimize_size ? 2 : ((ALIGN >= 32) ? 16 : 2))) +- +-#define SET_BY_PIECES_P(SIZE, ALIGN) STORE_BY_PIECES_P(SIZE, ALIGN) +- + /* Macros to check register numbers against specific register classes. */ + + /* These assume that REGNO is a hard or pseudo reg number. +--- a/src/gcc/config/host-linux.c ++++ b/src/gcc/config/host-linux.c +@@ -86,6 +86,8 @@ + # define TRY_EMPTY_VM_SPACE 0x60000000 + #elif defined(__mc68000__) + # define TRY_EMPTY_VM_SPACE 0x40000000 ++#elif defined(__aarch64__) && defined(__ILP32__) ++# define TRY_EMPTY_VM_SPACE 0x60000000 + #elif defined(__aarch64__) + # define TRY_EMPTY_VM_SPACE 0x1000000000 + #elif defined(__ARM_EABI__) +--- a/src/gcc/config/cris/cris.h ++++ b/src/gcc/config/cris/cris.h +@@ -80,15 +80,7 @@ + /* Which CPU version this is. The parsed and adjusted cris_cpu_str. */ + extern int cris_cpu_version; + +-/* Changing the order used to be necessary to put the fourth __make_dp +- argument (a DImode parameter) in registers, to fit with the libfunc +- parameter passing scheme used for intrinsic functions. FIXME: Check +- performance. */ +-#ifdef IN_LIBGCC2 +-#define __make_dp(a,b,c,d) __cris_make_dp(d,a,b,c) +-#endif + +- + /* Node: Driver */ + + /* Also provide canonical vN definitions when user specifies an alias. */ +--- a/src/gcc/config/ia64/ia64.c ++++ b/src/gcc/config/ia64/ia64.c +@@ -169,8 +169,7 @@ + static void ia64_dependencies_evaluation_hook (rtx, rtx); + static void ia64_init_dfa_pre_cycle_insn (void); + static rtx ia64_dfa_pre_cycle_insn (void); +-static int ia64_first_cycle_multipass_dfa_lookahead_guard (rtx); +-static bool ia64_first_cycle_multipass_dfa_lookahead_guard_spec (const_rtx); ++static int ia64_first_cycle_multipass_dfa_lookahead_guard (rtx, int); + static int ia64_dfa_new_cycle (FILE *, int, rtx, int, int, int *); + static void ia64_h_i_d_extended (void); + static void * ia64_alloc_sched_context (void); +@@ -496,10 +495,6 @@ + #undef TARGET_SCHED_GEN_SPEC_CHECK + #define TARGET_SCHED_GEN_SPEC_CHECK ia64_gen_spec_check + +-#undef TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC +-#define TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC\ +- ia64_first_cycle_multipass_dfa_lookahead_guard_spec +- + #undef TARGET_SCHED_SKIP_RTX_P + #define TARGET_SCHED_SKIP_RTX_P ia64_skip_rtx_p + +@@ -7531,32 +7526,30 @@ + return 1; + } + +-/* We are choosing insn from the ready queue. Return nonzero if INSN ++/* We are choosing insn from the ready queue. Return zero if INSN + can be chosen. */ + + static int +-ia64_first_cycle_multipass_dfa_lookahead_guard (rtx insn) ++ia64_first_cycle_multipass_dfa_lookahead_guard (rtx insn, int ready_index) + { + gcc_assert (insn && INSN_P (insn)); +- return ((!reload_completed +- || !safe_group_barrier_needed (insn)) +- && ia64_first_cycle_multipass_dfa_lookahead_guard_spec (insn) +- && (!mflag_sched_mem_insns_hard_limit +- || !is_load_p (insn) +- || mem_ops_in_group[current_cycle % 4] < ia64_max_memory_insns)); +-} + +-/* We are choosing insn from the ready queue. Return nonzero if INSN +- can be chosen. */ ++ /* Size of ALAT is 32. As far as we perform conservative ++ data speculation, we keep ALAT half-empty. */ ++ if ((TODO_SPEC (insn) & BEGIN_DATA) && pending_data_specs >= 16) ++ return ready_index == 0 ? -1 : 1; + +-static bool +-ia64_first_cycle_multipass_dfa_lookahead_guard_spec (const_rtx insn) +-{ +- gcc_assert (insn && INSN_P (insn)); +- /* Size of ALAT is 32. As far as we perform conservative data speculation, +- we keep ALAT half-empty. */ +- return (pending_data_specs < 16 +- || !(TODO_SPEC (insn) & BEGIN_DATA)); ++ if (ready_index == 0) ++ return 0; ++ ++ if ((!reload_completed ++ || !safe_group_barrier_needed (insn)) ++ && (!mflag_sched_mem_insns_hard_limit ++ || !is_load_p (insn) ++ || mem_ops_in_group[current_cycle % 4] < ia64_max_memory_insns)) ++ return 0; ++ ++ return 1; + } + + /* The following variable value is pseudo-insn used by the DFA insn +@@ -7943,18 +7936,10 @@ + + spec_info->flags = 0; + +- if ((mask & DATA_SPEC) && mflag_sched_prefer_non_data_spec_insns) +- spec_info->flags |= PREFER_NON_DATA_SPEC; ++ if ((mask & CONTROL_SPEC) ++ && sel_sched_p () && mflag_sel_sched_dont_check_control_spec) ++ spec_info->flags |= SEL_SCHED_SPEC_DONT_CHECK_CONTROL; + +- if (mask & CONTROL_SPEC) +- { +- if (mflag_sched_prefer_non_control_spec_insns) +- spec_info->flags |= PREFER_NON_CONTROL_SPEC; +- +- if (sel_sched_p () && mflag_sel_sched_dont_check_control_spec) +- spec_info->flags |= SEL_SCHED_SPEC_DONT_CHECK_CONTROL; +- } +- + if (sched_verbose >= 1) + spec_info->dump = sched_dump; + else +--- a/src/gcc/config/ia64/ia64.opt ++++ b/src/gcc/config/ia64/ia64.opt +@@ -164,12 +164,10 @@ + Use simple data speculation check for control speculation + + msched-prefer-non-data-spec-insns +-Target Report Var(mflag_sched_prefer_non_data_spec_insns) Init(0) +-If set, data speculative instructions will be chosen for schedule only if there are no other choices at the moment ++Target Ignore Warn(switch %qs is no longer supported) + + msched-prefer-non-control-spec-insns +-Target Report Var(mflag_sched_prefer_non_control_spec_insns) Init(0) +-If set, control speculative instructions will be chosen for schedule only if there are no other choices at the moment ++Target Ignore Warn(switch %qs is no longer supported) + + msched-count-spec-in-critical-path + Target Report Var(mflag_sched_count_spec_in_critical_path) Init(0) +--- a/src/gcc/config/aarch64/geniterators.sh ++++ b/src/gcc/config/aarch64/geniterators.sh +@@ -0,0 +1,45 @@ ++#!/bin/sh ++# ++# Copyright (C) 2014 Free Software Foundation, Inc. ++# Contributed by ARM Ltd. ++# ++# This file is part of GCC. ++# ++# GCC is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3, or (at your option) ++# any later version. ++# ++# GCC is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# Generate aarch64-builtin-iterators.h, a file containing a series of ++# BUILTIN_ macros, which expand to VAR Macros covering the ++# same set of modes as the iterator in iterators.md ++ ++echo "/* -*- buffer-read-only: t -*- */" ++echo "/* Generated automatically by geniterators.sh from iterators.md. */" ++echo "#ifndef GCC_AARCH64_ITERATORS_H" ++echo "#define GCC_AARCH64_ITERATORS_H" ++ ++# Strip newlines, create records marked ITERATOR, and strip junk (anything ++# which does not have a matching brace because it contains characters we ++# don't want to or can't handle (e.g P, PTR iterators change depending on ++# Pmode and ptr_mode). ++cat $1 | tr "\n" " " \ ++ | sed 's/(define_mode_iterator \([A-Za-z0-9_]*\) \([]\[A-Z0-9 \t]*\)/\n#define BUILTIN_\1(T, N, MAP) \\ \2\n/g' \ ++ | grep '#define [A-Z0-9_(), \\]* \[[A-Z0-9[:space:]]*]' \ ++ | sed 's/\t//g' \ ++ | sed 's/ \+/ /g' \ ++ | sed 's/ \[\([A-Z0-9 ]*\)]/\n\L\1/' \ ++ | awk ' BEGIN { FS = " " ; OFS = ", "} \ ++ /#/ { print } \ ++ ! /#/ { $1 = $1 ; printf " VAR%d (T, N, MAP, %s)\n", NF, $0 }' ++ ++echo "#endif /* GCC_AARCH64_ITERATORS_H */" +--- a/src/gcc/config/aarch64/aarch64-simd.md ++++ b/src/gcc/config/aarch64/aarch64-simd.md +@@ -19,8 +19,8 @@ + ;; . + + (define_expand "mov" +- [(set (match_operand:VALL 0 "aarch64_simd_nonimmediate_operand" "") +- (match_operand:VALL 1 "aarch64_simd_general_operand" ""))] ++ [(set (match_operand:VALL 0 "nonimmediate_operand" "") ++ (match_operand:VALL 1 "general_operand" ""))] + "TARGET_SIMD" + " + if (GET_CODE (operands[0]) == MEM) +@@ -29,8 +29,8 @@ + ) + + (define_expand "movmisalign" +- [(set (match_operand:VALL 0 "aarch64_simd_nonimmediate_operand" "") +- (match_operand:VALL 1 "aarch64_simd_general_operand" ""))] ++ [(set (match_operand:VALL 0 "nonimmediate_operand" "") ++ (match_operand:VALL 1 "general_operand" ""))] + "TARGET_SIMD" + { + /* This pattern is not permitted to fail during expansion: if both arguments +@@ -91,9 +91,9 @@ + ) + + (define_insn "*aarch64_simd_mov" +- [(set (match_operand:VD 0 "aarch64_simd_nonimmediate_operand" ++ [(set (match_operand:VD 0 "nonimmediate_operand" + "=w, m, w, ?r, ?w, ?r, w") +- (match_operand:VD 1 "aarch64_simd_general_operand" ++ (match_operand:VD 1 "general_operand" + "m, w, w, w, r, r, Dn"))] + "TARGET_SIMD + && (register_operand (operands[0], mode) +@@ -119,9 +119,9 @@ + ) + + (define_insn "*aarch64_simd_mov" +- [(set (match_operand:VQ 0 "aarch64_simd_nonimmediate_operand" ++ [(set (match_operand:VQ 0 "nonimmediate_operand" + "=w, m, w, ?r, ?w, ?r, w") +- (match_operand:VQ 1 "aarch64_simd_general_operand" ++ (match_operand:VQ 1 "general_operand" + "m, w, w, w, r, r, Dn"))] + "TARGET_SIMD + && (register_operand (operands[0], mode) +@@ -286,6 +286,37 @@ + [(set_attr "type" "neon_mul_")] + ) + ++(define_insn "bswap" ++ [(set (match_operand:VDQHSD 0 "register_operand" "=w") ++ (bswap:VDQHSD (match_operand:VDQHSD 1 "register_operand" "w")))] ++ "TARGET_SIMD" ++ "rev\\t%0., %1." ++ [(set_attr "type" "neon_rev")] ++) ++ ++(define_insn "aarch64_rbit" ++ [(set (match_operand:VB 0 "register_operand" "=w") ++ (unspec:VB [(match_operand:VB 1 "register_operand" "w")] ++ UNSPEC_RBIT))] ++ "TARGET_SIMD" ++ "rbit\\t%0., %1." ++ [(set_attr "type" "neon_rbit")] ++) ++ ++(define_expand "ctz2" ++ [(set (match_operand:VS 0 "register_operand") ++ (ctz:VS (match_operand:VS 1 "register_operand")))] ++ "TARGET_SIMD" ++ { ++ emit_insn (gen_bswap (operands[0], operands[1])); ++ rtx op0_castsi2qi = simplify_gen_subreg(mode, operands[0], ++ mode, 0); ++ emit_insn (gen_aarch64_rbit (op0_castsi2qi, op0_castsi2qi)); ++ emit_insn (gen_clz2 (operands[0], operands[0])); ++ DONE; ++ } ++) ++ + (define_insn "*aarch64_mul3_elt" + [(set (match_operand:VMUL 0 "register_operand" "=w") + (mult:VMUL +@@ -692,25 +723,16 @@ + (match_operand:SI 2 "aarch64_shift_imm64_di" "")] + "TARGET_SIMD" + { ++ /* An arithmetic shift right by 64 fills the result with copies of the sign ++ bit, just like asr by 63 - however the standard pattern does not handle ++ a shift by 64. */ + if (INTVAL (operands[2]) == 64) +- emit_insn (gen_aarch64_sshr_simddi (operands[0], operands[1])); +- else +- emit_insn (gen_ashrdi3 (operands[0], operands[1], operands[2])); ++ operands[2] = GEN_INT (63); ++ emit_insn (gen_ashrdi3 (operands[0], operands[1], operands[2])); + DONE; + } + ) + +-;; SIMD shift by 64. This pattern is a special case as standard pattern does +-;; not handle NEON shifts by 64. +-(define_insn "aarch64_sshr_simddi" +- [(set (match_operand:DI 0 "register_operand" "=w") +- (unspec:DI +- [(match_operand:DI 1 "register_operand" "w")] UNSPEC_SSHR64))] +- "TARGET_SIMD" +- "sshr\t%d0, %d1, 64" +- [(set_attr "type" "neon_shift_imm")] +-) +- + (define_expand "vlshr3" + [(match_operand:VQ_S 0 "register_operand" "") + (match_operand:VQ_S 1 "register_operand" "") +@@ -731,7 +753,7 @@ + "TARGET_SIMD" + { + if (INTVAL (operands[2]) == 64) +- emit_insn (gen_aarch64_ushr_simddi (operands[0], operands[1])); ++ emit_move_insn (operands[0], const0_rtx); + else + emit_insn (gen_lshrdi3 (operands[0], operands[1], operands[2])); + DONE; +@@ -738,17 +760,6 @@ + } + ) + +-;; SIMD shift by 64. This pattern is a special case as standard pattern does +-;; not handle NEON shifts by 64. +-(define_insn "aarch64_ushr_simddi" +- [(set (match_operand:DI 0 "register_operand" "=w") +- (unspec:DI +- [(match_operand:DI 1 "register_operand" "w")] UNSPEC_USHR64))] +- "TARGET_SIMD" +- "ushr\t%d0, %d1, 64" +- [(set_attr "type" "neon_shift_imm")] +-) +- + (define_expand "vec_set" + [(match_operand:VQ_S 0 "register_operand") + (match_operand: 1 "register_operand") +@@ -989,7 +1000,7 @@ + dup\\t%d0, %1.d[0] + fmov\\t%d0, %1 + dup\\t%d0, %1" +- [(set_attr "type" "neon_dup,fmov,neon_dup") ++ [(set_attr "type" "neon_dup,f_mcr,neon_dup") + (set_attr "simd" "yes,*,yes") + (set_attr "fp" "*,yes,*") + (set_attr "length" "4")] +@@ -1081,7 +1092,7 @@ + (match_operand: 1 "register_operand" "w,r") + (vec_select: + (match_dup 0) +- (match_operand:VQ 2 "vect_par_cnst_hi_half" ""))))] ++ (match_operand:VQ 2 "vect_par_cnst_lo_half" ""))))] + "TARGET_SIMD && BYTES_BIG_ENDIAN" + "@ + ins\\t%0.d[1], %1.d[0] +@@ -1094,7 +1105,7 @@ + (match_operand: 1 "register_operand" "")] + "TARGET_SIMD" + { +- rtx p = aarch64_simd_vect_par_cnst_half (mode, BYTES_BIG_ENDIAN); ++ rtx p = aarch64_simd_vect_par_cnst_half (mode, false); + if (BYTES_BIG_ENDIAN) + emit_insn (gen_aarch64_simd_move_hi_quad_be_ (operands[0], + operands[1], p)); +@@ -1134,7 +1145,7 @@ + ;; For quads. + + (define_insn "vec_pack_trunc_" +- [(set (match_operand: 0 "register_operand" "+&w") ++ [(set (match_operand: 0 "register_operand" "=&w") + (vec_concat: + (truncate: (match_operand:VQN 1 "register_operand" "w")) + (truncate: (match_operand:VQN 2 "register_operand" "w"))))] +@@ -1576,7 +1587,7 @@ + ) + + ;; Vector versions of the floating-point frint patterns. +-;; Expands to btrunc, ceil, floor, nearbyint, rint, round. ++;; Expands to btrunc, ceil, floor, nearbyint, rint, round, frintn. + (define_insn "2" + [(set (match_operand:VDQF 0 "register_operand" "=w") + (unspec:VDQF [(match_operand:VDQF 1 "register_operand" "w")] +@@ -1778,25 +1789,52 @@ + + ;; 'across lanes' add. + +-(define_insn "reduc_plus_" ++(define_expand "reduc_plus_scal_" ++ [(match_operand: 0 "register_operand" "=w") ++ (unspec:VDQ [(match_operand:VDQ 1 "register_operand" "w")] ++ UNSPEC_ADDV)] ++ "TARGET_SIMD" ++ { ++ rtx elt = GEN_INT (ENDIAN_LANE_N (mode, 0)); ++ rtx scratch = gen_reg_rtx (mode); ++ emit_insn (gen_aarch64_reduc_plus_internal (scratch, operands[1])); ++ emit_insn (gen_aarch64_get_lane (operands[0], scratch, elt)); ++ DONE; ++ } ++) ++ ++(define_expand "reduc_plus_scal_" ++ [(match_operand: 0 "register_operand" "=w") ++ (match_operand:V2F 1 "register_operand" "w")] ++ "TARGET_SIMD" ++ { ++ rtx elt = GEN_INT (ENDIAN_LANE_N (mode, 0)); ++ rtx scratch = gen_reg_rtx (mode); ++ emit_insn (gen_aarch64_reduc_plus_internal (scratch, operands[1])); ++ emit_insn (gen_aarch64_get_lane (operands[0], scratch, elt)); ++ DONE; ++ } ++) ++ ++(define_insn "aarch64_reduc_plus_internal" + [(set (match_operand:VDQV 0 "register_operand" "=w") + (unspec:VDQV [(match_operand:VDQV 1 "register_operand" "w")] +- SUADDV))] ++ UNSPEC_ADDV))] + "TARGET_SIMD" + "add\\t%0, %1." + [(set_attr "type" "neon_reduc_add")] + ) + +-(define_insn "reduc_plus_v2si" ++(define_insn "aarch64_reduc_plus_internalv2si" + [(set (match_operand:V2SI 0 "register_operand" "=w") + (unspec:V2SI [(match_operand:V2SI 1 "register_operand" "w")] +- SUADDV))] ++ UNSPEC_ADDV))] + "TARGET_SIMD" + "addp\\t%0.2s, %1.2s, %1.2s" + [(set_attr "type" "neon_reduc_add")] + ) + +-(define_insn "reduc_splus_" ++(define_insn "aarch64_reduc_plus_internal" + [(set (match_operand:V2F 0 "register_operand" "=w") + (unspec:V2F [(match_operand:V2F 1 "register_operand" "w")] + UNSPEC_FADDV))] +@@ -1814,14 +1852,17 @@ + [(set_attr "type" "neon_fp_reduc_add_s_q")] + ) + +-(define_expand "reduc_splus_v4sf" +- [(set (match_operand:V4SF 0 "register_operand") ++(define_expand "reduc_plus_scal_v4sf" ++ [(set (match_operand:SF 0 "register_operand") + (unspec:V4SF [(match_operand:V4SF 1 "register_operand")] + UNSPEC_FADDV))] + "TARGET_SIMD" + { +- emit_insn (gen_aarch64_addpv4sf (operands[0], operands[1])); +- emit_insn (gen_aarch64_addpv4sf (operands[0], operands[0])); ++ rtx elt = GEN_INT (ENDIAN_LANE_N (V4SFmode, 0)); ++ rtx scratch = gen_reg_rtx (V4SFmode); ++ emit_insn (gen_aarch64_addpv4sf (scratch, operands[1])); ++ emit_insn (gen_aarch64_addpv4sf (scratch, scratch)); ++ emit_insn (gen_aarch64_get_lanev4sf (operands[0], scratch, elt)); + DONE; + }) + +@@ -1835,7 +1876,40 @@ + + ;; 'across lanes' max and min ops. + +-(define_insn "reduc__" ++;; Template for outputting a scalar, so we can create __builtins which can be ++;; gimple_fold'd to the REDUC_(MAX|MIN)_EXPR tree code. (This is FP smax/smin). ++(define_expand "reduc__scal_" ++ [(match_operand: 0 "register_operand") ++ (unspec:VDQF [(match_operand:VDQF 1 "register_operand")] ++ FMAXMINV)] ++ "TARGET_SIMD" ++ { ++ rtx elt = GEN_INT (ENDIAN_LANE_N (mode, 0)); ++ rtx scratch = gen_reg_rtx (mode); ++ emit_insn (gen_aarch64_reduc__internal (scratch, ++ operands[1])); ++ emit_insn (gen_aarch64_get_lane (operands[0], scratch, elt)); ++ DONE; ++ } ++) ++ ++;; Likewise for integer cases, signed and unsigned. ++(define_expand "reduc__scal_" ++ [(match_operand: 0 "register_operand") ++ (unspec:VDQ_BHSI [(match_operand:VDQ_BHSI 1 "register_operand")] ++ MAXMINV)] ++ "TARGET_SIMD" ++ { ++ rtx elt = GEN_INT (ENDIAN_LANE_N (mode, 0)); ++ rtx scratch = gen_reg_rtx (mode); ++ emit_insn (gen_aarch64_reduc__internal (scratch, ++ operands[1])); ++ emit_insn (gen_aarch64_get_lane (operands[0], scratch, elt)); ++ DONE; ++ } ++) ++ ++(define_insn "aarch64_reduc__internal" + [(set (match_operand:VDQV_S 0 "register_operand" "=w") + (unspec:VDQV_S [(match_operand:VDQV_S 1 "register_operand" "w")] + MAXMINV))] +@@ -1844,7 +1918,7 @@ + [(set_attr "type" "neon_reduc_minmax")] + ) + +-(define_insn "reduc__v2si" ++(define_insn "aarch64_reduc__internalv2si" + [(set (match_operand:V2SI 0 "register_operand" "=w") + (unspec:V2SI [(match_operand:V2SI 1 "register_operand" "w")] + MAXMINV))] +@@ -1853,24 +1927,15 @@ + [(set_attr "type" "neon_reduc_minmax")] + ) + +-(define_insn "reduc__" +- [(set (match_operand:V2F 0 "register_operand" "=w") +- (unspec:V2F [(match_operand:V2F 1 "register_operand" "w")] ++(define_insn "aarch64_reduc__internal" ++ [(set (match_operand:VDQF 0 "register_operand" "=w") ++ (unspec:VDQF [(match_operand:VDQF 1 "register_operand" "w")] + FMAXMINV))] + "TARGET_SIMD" +- "p\\t%0, %1." ++ "\\t%0, %1." + [(set_attr "type" "neon_fp_reduc_minmax_")] + ) + +-(define_insn "reduc__v4sf" +- [(set (match_operand:V4SF 0 "register_operand" "=w") +- (unspec:V4SF [(match_operand:V4SF 1 "register_operand" "w")] +- FMAXMINV))] +- "TARGET_SIMD" +- "v\\t%s0, %1.4s" +- [(set_attr "type" "neon_fp_reduc_minmax_s_q")] +-) +- + ;; aarch64_simd_bsl may compile to any of bsl/bif/bit depending on register + ;; allocation. + ;; Operand 1 is the mask, operands 2 and 3 are the bitfields from which +@@ -1888,15 +1953,15 @@ + ;; bif op0, op1, mask + + (define_insn "aarch64_simd_bsl_internal" +- [(set (match_operand:VALLDIF 0 "register_operand" "=w,w,w") +- (ior:VALLDIF +- (and:VALLDIF +- (match_operand: 1 "register_operand" " 0,w,w") +- (match_operand:VALLDIF 2 "register_operand" " w,w,0")) +- (and:VALLDIF ++ [(set (match_operand:VSDQ_I_DI 0 "register_operand" "=w,w,w") ++ (ior:VSDQ_I_DI ++ (and:VSDQ_I_DI + (not: +- (match_dup: 1)) +- (match_operand:VALLDIF 3 "register_operand" " w,0,w")) ++ (match_operand: 1 "register_operand" " 0,w,w")) ++ (match_operand:VSDQ_I_DI 3 "register_operand" " w,0,w")) ++ (and:VSDQ_I_DI ++ (match_dup: 1) ++ (match_operand:VSDQ_I_DI 2 "register_operand" " w,w,0")) + ))] + "TARGET_SIMD" + "@ +@@ -1914,9 +1979,21 @@ + "TARGET_SIMD" + { + /* We can't alias operands together if they have different modes. */ ++ rtx tmp = operands[0]; ++ if (FLOAT_MODE_P (mode)) ++ { ++ operands[2] = gen_lowpart (mode, operands[2]); ++ operands[3] = gen_lowpart (mode, operands[3]); ++ tmp = gen_reg_rtx (mode); ++ } + operands[1] = gen_lowpart (mode, operands[1]); +- emit_insn (gen_aarch64_simd_bsl_internal (operands[0], operands[1], +- operands[2], operands[3])); ++ emit_insn (gen_aarch64_simd_bsl_internal (tmp, ++ operands[1], ++ operands[2], ++ operands[3])); ++ if (tmp != operands[0]) ++ emit_move_insn (operands[0], gen_lowpart (mode, tmp)); ++ + DONE; + }) + +@@ -1930,58 +2007,94 @@ + (match_operand:VDQ 2 "nonmemory_operand")))] + "TARGET_SIMD" + { +- int inverse = 0, has_zero_imm_form = 0; + rtx op1 = operands[1]; + rtx op2 = operands[2]; + rtx mask = gen_reg_rtx (mode); ++ enum rtx_code code = GET_CODE (operands[3]); + +- switch (GET_CODE (operands[3])) ++ /* Switching OP1 and OP2 is necessary for NE (to output a cmeq insn), ++ and desirable for other comparisons if it results in FOO ? -1 : 0 ++ (this allows direct use of the comparison result without a bsl). */ ++ if (code == NE ++ || (code != EQ ++ && op1 == CONST0_RTX (mode) ++ && op2 == CONSTM1_RTX (mode))) + { ++ op1 = operands[2]; ++ op2 = operands[1]; ++ switch (code) ++ { ++ case LE: code = GT; break; ++ case LT: code = GE; break; ++ case GE: code = LT; break; ++ case GT: code = LE; break; ++ /* No case EQ. */ ++ case NE: code = EQ; break; ++ case LTU: code = GEU; break; ++ case LEU: code = GTU; break; ++ case GTU: code = LEU; break; ++ case GEU: code = LTU; break; ++ default: gcc_unreachable (); ++ } ++ } ++ ++ /* Make sure we can handle the last operand. */ ++ switch (code) ++ { ++ case NE: ++ /* Normalized to EQ above. */ ++ gcc_unreachable (); ++ + case LE: + case LT: +- case NE: +- inverse = 1; +- /* Fall through. */ + case GE: + case GT: + case EQ: +- has_zero_imm_form = 1; +- break; +- case LEU: +- case LTU: +- inverse = 1; +- break; ++ /* These instructions have a form taking an immediate zero. */ ++ if (operands[5] == CONST0_RTX (mode)) ++ break; ++ /* Fall through, as may need to load into register. */ + default: ++ if (!REG_P (operands[5])) ++ operands[5] = force_reg (mode, operands[5]); + break; + } + +- if (!REG_P (operands[5]) +- && (operands[5] != CONST0_RTX (mode) || !has_zero_imm_form)) +- operands[5] = force_reg (mode, operands[5]); +- +- switch (GET_CODE (operands[3])) ++ switch (code) + { + case LT: ++ emit_insn (gen_aarch64_cmlt (mask, operands[4], operands[5])); ++ break; ++ + case GE: + emit_insn (gen_aarch64_cmge (mask, operands[4], operands[5])); + break; + + case LE: ++ emit_insn (gen_aarch64_cmle (mask, operands[4], operands[5])); ++ break; ++ + case GT: + emit_insn (gen_aarch64_cmgt (mask, operands[4], operands[5])); + break; + + case LTU: ++ emit_insn (gen_aarch64_cmgtu (mask, operands[5], operands[4])); ++ break; ++ + case GEU: + emit_insn (gen_aarch64_cmgeu (mask, operands[4], operands[5])); + break; + + case LEU: ++ emit_insn (gen_aarch64_cmgeu (mask, operands[5], operands[4])); ++ break; ++ + case GTU: + emit_insn (gen_aarch64_cmgtu (mask, operands[4], operands[5])); + break; + +- case NE: ++ /* NE has been normalized to EQ above. */ + case EQ: + emit_insn (gen_aarch64_cmeq (mask, operands[4], operands[5])); + break; +@@ -1990,12 +2103,6 @@ + gcc_unreachable (); + } + +- if (inverse) +- { +- op1 = operands[2]; +- op2 = operands[1]; +- } +- + /* If we have (a = (b CMP c) ? -1 : 0); + Then we can simply move the generated mask. */ + +@@ -2383,6 +2490,15 @@ + DONE; + }) + ++(define_expand "aarch64_reinterpretdf" ++ [(match_operand:DF 0 "register_operand" "") ++ (match_operand:VD_RE 1 "register_operand" "")] ++ "TARGET_SIMD" ++{ ++ aarch64_simd_reinterpret (operands[0], operands[1]); ++ DONE; ++}) ++ + (define_expand "aarch64_reinterpretv16qi" + [(match_operand:V16QI 0 "register_operand" "") + (match_operand:VQ 1 "register_operand" "")] +@@ -2769,9 +2885,9 @@ + ;; q + + (define_insn "aarch64_s" +- [(set (match_operand:VSDQ_I_BHSI 0 "register_operand" "=w") +- (UNQOPS:VSDQ_I_BHSI +- (match_operand:VSDQ_I_BHSI 1 "register_operand" "w")))] ++ [(set (match_operand:VSDQ_I 0 "register_operand" "=w") ++ (UNQOPS:VSDQ_I ++ (match_operand:VSDQ_I 1 "register_operand" "w")))] + "TARGET_SIMD" + "s\\t%0, %1" + [(set_attr "type" "neon_")] +@@ -3470,7 +3586,7 @@ + + (define_expand "aarch64_sqdmull_laneq" + [(match_operand: 0 "register_operand" "=w") +- (match_operand:VD_HSI 1 "register_operand" "w") ++ (match_operand:VSD_HSI 1 "register_operand" "w") + (match_operand: 2 "register_operand" "") + (match_operand:SI 3 "immediate_operand" "i")] + "TARGET_SIMD" +@@ -3679,12 +3795,12 @@ + (define_insn "aarch64_shll_n" + [(set (match_operand: 0 "register_operand" "=w") + (unspec: [(match_operand:VDW 1 "register_operand" "w") +- (match_operand:SI 2 "immediate_operand" "i")] ++ (match_operand:SI 2 ++ "aarch64_simd_shift_imm_bitsize_" "i")] + VSHLL))] + "TARGET_SIMD" + "* + int bit_width = GET_MODE_UNIT_SIZE (mode) * BITS_PER_UNIT; +- aarch64_simd_const_bounds (operands[2], 0, bit_width + 1); + if (INTVAL (operands[2]) == bit_width) + { + return \"shll\\t%0., %1., %2\"; +@@ -3705,7 +3821,6 @@ + "TARGET_SIMD" + "* + int bit_width = GET_MODE_UNIT_SIZE (mode) * BITS_PER_UNIT; +- aarch64_simd_const_bounds (operands[2], 0, bit_width + 1); + if (INTVAL (operands[2]) == bit_width) + { + return \"shll2\\t%0., %1., %2\"; +@@ -3721,13 +3836,11 @@ + (define_insn "aarch64_shr_n" + [(set (match_operand:VSDQ_I_DI 0 "register_operand" "=w") + (unspec:VSDQ_I_DI [(match_operand:VSDQ_I_DI 1 "register_operand" "w") +- (match_operand:SI 2 "immediate_operand" "i")] ++ (match_operand:SI 2 ++ "aarch64_simd_shift_imm_offset_" "i")] + VRSHR_N))] + "TARGET_SIMD" +- "* +- int bit_width = GET_MODE_UNIT_SIZE (mode) * BITS_PER_UNIT; +- aarch64_simd_const_bounds (operands[2], 1, bit_width + 1); +- return \"shr\\t%0, %1, %2\";" ++ "shr\\t%0, %1, %2" + [(set_attr "type" "neon_sat_shift_imm")] + ) + +@@ -3737,13 +3850,11 @@ + [(set (match_operand:VSDQ_I_DI 0 "register_operand" "=w") + (unspec:VSDQ_I_DI [(match_operand:VSDQ_I_DI 1 "register_operand" "0") + (match_operand:VSDQ_I_DI 2 "register_operand" "w") +- (match_operand:SI 3 "immediate_operand" "i")] ++ (match_operand:SI 3 ++ "aarch64_simd_shift_imm_offset_" "i")] + VSRA))] + "TARGET_SIMD" +- "* +- int bit_width = GET_MODE_UNIT_SIZE (mode) * BITS_PER_UNIT; +- aarch64_simd_const_bounds (operands[3], 1, bit_width + 1); +- return \"sra\\t%0, %2, %3\";" ++ "sra\\t%0, %2, %3" + [(set_attr "type" "neon_shift_acc")] + ) + +@@ -3753,14 +3864,11 @@ + [(set (match_operand:VSDQ_I_DI 0 "register_operand" "=w") + (unspec:VSDQ_I_DI [(match_operand:VSDQ_I_DI 1 "register_operand" "0") + (match_operand:VSDQ_I_DI 2 "register_operand" "w") +- (match_operand:SI 3 "immediate_operand" "i")] ++ (match_operand:SI 3 ++ "aarch64_simd_shift_imm_" "i")] + VSLRI))] + "TARGET_SIMD" +- "* +- int bit_width = GET_MODE_UNIT_SIZE (mode) * BITS_PER_UNIT; +- aarch64_simd_const_bounds (operands[3], 1 - , +- bit_width - + 1); +- return \"si\\t%0, %2, %3\";" ++ "si\\t%0, %2, %3" + [(set_attr "type" "neon_shift_imm")] + ) + +@@ -3769,13 +3877,11 @@ + (define_insn "aarch64_qshl_n" + [(set (match_operand:VSDQ_I 0 "register_operand" "=w") + (unspec:VSDQ_I [(match_operand:VSDQ_I 1 "register_operand" "w") +- (match_operand:SI 2 "immediate_operand" "i")] ++ (match_operand:SI 2 ++ "aarch64_simd_shift_imm_" "i")] + VQSHL_N))] + "TARGET_SIMD" +- "* +- int bit_width = GET_MODE_UNIT_SIZE (mode) * BITS_PER_UNIT; +- aarch64_simd_const_bounds (operands[2], 0, bit_width); +- return \"qshl\\t%0, %1, %2\";" ++ "qshl\\t%0, %1, %2" + [(set_attr "type" "neon_sat_shift_imm")] + ) + +@@ -3785,13 +3891,11 @@ + (define_insn "aarch64_qshrn_n" + [(set (match_operand: 0 "register_operand" "=w") + (unspec: [(match_operand:VSQN_HSDI 1 "register_operand" "w") +- (match_operand:SI 2 "immediate_operand" "i")] ++ (match_operand:SI 2 ++ "aarch64_simd_shift_imm_offset_" "i")] + VQSHRN_N))] + "TARGET_SIMD" +- "* +- int bit_width = GET_MODE_UNIT_SIZE (mode) * BITS_PER_UNIT; +- aarch64_simd_const_bounds (operands[2], 1, bit_width + 1); +- return \"qshrn\\t%0, %1, %2\";" ++ "qshrn\\t%0, %1, %2" + [(set_attr "type" "neon_sat_shift_imm_narrow_q")] + ) + +@@ -3823,26 +3927,46 @@ + ))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_SIMD" +- "@ +- cm\t%d0, %d, %d +- cm\t%d0, %d1, #0 +- #" +- "reload_completed +- /* We need to prevent the split from +- happening in the 'w' constraint cases. */ +- && GP_REGNUM_P (REGNO (operands[0])) +- && GP_REGNUM_P (REGNO (operands[1]))" +- [(const_int 0)] ++ "#" ++ "reload_completed" ++ [(set (match_operand:DI 0 "register_operand") ++ (neg:DI ++ (COMPARISONS:DI ++ (match_operand:DI 1 "register_operand") ++ (match_operand:DI 2 "aarch64_simd_reg_or_zero") ++ )))] + { +- enum machine_mode mode = SELECT_CC_MODE (, operands[1], operands[2]); +- rtx cc_reg = aarch64_gen_compare_reg (, operands[1], operands[2]); +- rtx comparison = gen_rtx_ (mode, operands[1], operands[2]); +- emit_insn (gen_cstoredi_neg (operands[0], comparison, cc_reg)); +- DONE; ++ /* If we are in the general purpose register file, ++ we split to a sequence of comparison and store. */ ++ if (GP_REGNUM_P (REGNO (operands[0])) ++ && GP_REGNUM_P (REGNO (operands[1]))) ++ { ++ enum machine_mode mode = SELECT_CC_MODE (, operands[1], operands[2]); ++ rtx cc_reg = aarch64_gen_compare_reg (, operands[1], operands[2]); ++ rtx comparison = gen_rtx_ (mode, operands[1], operands[2]); ++ emit_insn (gen_cstoredi_neg (operands[0], comparison, cc_reg)); ++ DONE; ++ } ++ /* Otherwise, we expand to a similar pattern which does not ++ clobber CC_REGNUM. */ + } + [(set_attr "type" "neon_compare, neon_compare_zero, multiple")] + ) + ++(define_insn "*aarch64_cmdi" ++ [(set (match_operand:DI 0 "register_operand" "=w,w") ++ (neg:DI ++ (COMPARISONS:DI ++ (match_operand:DI 1 "register_operand" "w,w") ++ (match_operand:DI 2 "aarch64_simd_reg_or_zero" "w,ZDz") ++ )))] ++ "TARGET_SIMD && reload_completed" ++ "@ ++ cm\t%d0, %d, %d ++ cm\t%d0, %d1, #0" ++ [(set_attr "type" "neon_compare, neon_compare_zero")] ++) ++ + ;; cm(hs|hi) + + (define_insn "aarch64_cm" +@@ -3866,35 +3990,62 @@ + ))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_SIMD" +- "@ +- cm\t%d0, %d, %d +- #" +- "reload_completed +- /* We need to prevent the split from +- happening in the 'w' constraint cases. */ +- && GP_REGNUM_P (REGNO (operands[0])) +- && GP_REGNUM_P (REGNO (operands[1]))" +- [(const_int 0)] ++ "#" ++ "reload_completed" ++ [(set (match_operand:DI 0 "register_operand") ++ (neg:DI ++ (UCOMPARISONS:DI ++ (match_operand:DI 1 "register_operand") ++ (match_operand:DI 2 "aarch64_simd_reg_or_zero") ++ )))] + { +- enum machine_mode mode = CCmode; +- rtx cc_reg = aarch64_gen_compare_reg (, operands[1], operands[2]); +- rtx comparison = gen_rtx_ (mode, operands[1], operands[2]); +- emit_insn (gen_cstoredi_neg (operands[0], comparison, cc_reg)); +- DONE; ++ /* If we are in the general purpose register file, ++ we split to a sequence of comparison and store. */ ++ if (GP_REGNUM_P (REGNO (operands[0])) ++ && GP_REGNUM_P (REGNO (operands[1]))) ++ { ++ enum machine_mode mode = CCmode; ++ rtx cc_reg = aarch64_gen_compare_reg (, operands[1], operands[2]); ++ rtx comparison = gen_rtx_ (mode, operands[1], operands[2]); ++ emit_insn (gen_cstoredi_neg (operands[0], comparison, cc_reg)); ++ DONE; ++ } ++ /* Otherwise, we expand to a similar pattern which does not ++ clobber CC_REGNUM. */ + } +- [(set_attr "type" "neon_compare, neon_compare_zero")] ++ [(set_attr "type" "neon_compare,multiple")] + ) + ++(define_insn "*aarch64_cmdi" ++ [(set (match_operand:DI 0 "register_operand" "=w") ++ (neg:DI ++ (UCOMPARISONS:DI ++ (match_operand:DI 1 "register_operand" "w") ++ (match_operand:DI 2 "aarch64_simd_reg_or_zero" "w") ++ )))] ++ "TARGET_SIMD && reload_completed" ++ "cm\t%d0, %d, %d" ++ [(set_attr "type" "neon_compare")] ++) ++ + ;; cmtst + ++;; Although neg (ne (and x y) 0) is the natural way of expressing a cmtst, ++;; we don't have any insns using ne, and aarch64_vcond_internal outputs ++;; not (neg (eq (and x y) 0)) ++;; which is rewritten by simplify_rtx as ++;; plus (eq (and x y) 0) -1. ++ + (define_insn "aarch64_cmtst" + [(set (match_operand: 0 "register_operand" "=w") +- (neg: +- (ne: ++ (plus: ++ (eq: + (and:VDQ + (match_operand:VDQ 1 "register_operand" "w") + (match_operand:VDQ 2 "register_operand" "w")) +- (vec_duplicate: (const_int 0)))))] ++ (match_operand:VDQ 3 "aarch64_simd_imm_zero")) ++ (match_operand: 4 "aarch64_simd_imm_minus_one"))) ++ ] + "TARGET_SIMD" + "cmtst\t%0, %1, %2" + [(set_attr "type" "neon_tst")] +@@ -3910,23 +4061,44 @@ + (const_int 0)))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_SIMD" +- "@ +- cmtst\t%d0, %d1, %d2 +- #" +- "reload_completed +- /* We need to prevent the split from +- happening in the 'w' constraint cases. */ +- && GP_REGNUM_P (REGNO (operands[0])) +- && GP_REGNUM_P (REGNO (operands[1]))" +- [(const_int 0)] ++ "#" ++ "reload_completed" ++ [(set (match_operand:DI 0 "register_operand") ++ (neg:DI ++ (ne:DI ++ (and:DI ++ (match_operand:DI 1 "register_operand") ++ (match_operand:DI 2 "register_operand")) ++ (const_int 0))))] + { +- rtx and_tree = gen_rtx_AND (DImode, operands[1], operands[2]); +- enum machine_mode mode = SELECT_CC_MODE (NE, and_tree, const0_rtx); +- rtx cc_reg = aarch64_gen_compare_reg (NE, and_tree, const0_rtx); +- rtx comparison = gen_rtx_NE (mode, and_tree, const0_rtx); +- emit_insn (gen_cstoredi_neg (operands[0], comparison, cc_reg)); +- DONE; ++ /* If we are in the general purpose register file, ++ we split to a sequence of comparison and store. */ ++ if (GP_REGNUM_P (REGNO (operands[0])) ++ && GP_REGNUM_P (REGNO (operands[1]))) ++ { ++ rtx and_tree = gen_rtx_AND (DImode, operands[1], operands[2]); ++ enum machine_mode mode = SELECT_CC_MODE (NE, and_tree, const0_rtx); ++ rtx cc_reg = aarch64_gen_compare_reg (NE, and_tree, const0_rtx); ++ rtx comparison = gen_rtx_NE (mode, and_tree, const0_rtx); ++ emit_insn (gen_cstoredi_neg (operands[0], comparison, cc_reg)); ++ DONE; ++ } ++ /* Otherwise, we expand to a similar pattern which does not ++ clobber CC_REGNUM. */ + } ++ [(set_attr "type" "neon_tst,multiple")] ++) ++ ++(define_insn "*aarch64_cmtstdi" ++ [(set (match_operand:DI 0 "register_operand" "=w") ++ (neg:DI ++ (ne:DI ++ (and:DI ++ (match_operand:DI 1 "register_operand" "w") ++ (match_operand:DI 2 "register_operand" "w")) ++ (const_int 0))))] ++ "TARGET_SIMD" ++ "cmtst\t%d0, %d1, %d2" + [(set_attr "type" "neon_tst")] + ) + +@@ -4007,6 +4179,28 @@ + [(set_attr "type" "neon_load2_2reg")] + ) + ++(define_insn "aarch64_simd_ld2r" ++ [(set (match_operand:OI 0 "register_operand" "=w") ++ (unspec:OI [(match_operand: 1 "aarch64_simd_struct_operand" "Utv") ++ (unspec:VALLDIF [(const_int 0)] UNSPEC_VSTRUCTDUMMY) ] ++ UNSPEC_LD2_DUP))] ++ "TARGET_SIMD" ++ "ld2r\\t{%S0. - %T0.}, %1" ++ [(set_attr "type" "neon_load2_all_lanes")] ++) ++ ++(define_insn "aarch64_vec_load_lanesoi_lane" ++ [(set (match_operand:OI 0 "register_operand" "=w") ++ (unspec:OI [(match_operand: 1 "aarch64_simd_struct_operand" "Utv") ++ (match_operand:OI 2 "register_operand" "0") ++ (match_operand:SI 3 "immediate_operand" "i") ++ (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY) ] ++ UNSPEC_LD2_LANE))] ++ "TARGET_SIMD" ++ "ld2\\t{%S0. - %T0.}[%3], %1" ++ [(set_attr "type" "neon_load2_one_lane")] ++) ++ + (define_insn "vec_store_lanesoi" + [(set (match_operand:OI 0 "aarch64_simd_struct_operand" "=Utv") + (unspec:OI [(match_operand:OI 1 "register_operand" "w") +@@ -4017,6 +4211,17 @@ + [(set_attr "type" "neon_store2_2reg")] + ) + ++(define_insn "vec_store_lanesoi_lane" ++ [(set (match_operand: 0 "aarch64_simd_struct_operand" "=Utv") ++ (unspec: [(match_operand:OI 1 "register_operand" "w") ++ (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY) ++ (match_operand:SI 2 "immediate_operand" "i")] ++ UNSPEC_ST2_LANE))] ++ "TARGET_SIMD" ++ "st2\\t{%S1. - %T1.}[%2], %0" ++ [(set_attr "type" "neon_store3_one_lane")] ++) ++ + (define_insn "vec_load_lanesci" + [(set (match_operand:CI 0 "register_operand" "=w") + (unspec:CI [(match_operand:CI 1 "aarch64_simd_struct_operand" "Utv") +@@ -4027,6 +4232,28 @@ + [(set_attr "type" "neon_load3_3reg")] + ) + ++(define_insn "aarch64_simd_ld3r" ++ [(set (match_operand:CI 0 "register_operand" "=w") ++ (unspec:CI [(match_operand: 1 "aarch64_simd_struct_operand" "Utv") ++ (unspec:VALLDIF [(const_int 0)] UNSPEC_VSTRUCTDUMMY) ] ++ UNSPEC_LD3_DUP))] ++ "TARGET_SIMD" ++ "ld3r\\t{%S0. - %U0.}, %1" ++ [(set_attr "type" "neon_load3_all_lanes")] ++) ++ ++(define_insn "aarch64_vec_load_lanesci_lane" ++ [(set (match_operand:CI 0 "register_operand" "=w") ++ (unspec:CI [(match_operand: 1 "aarch64_simd_struct_operand" "Utv") ++ (match_operand:CI 2 "register_operand" "0") ++ (match_operand:SI 3 "immediate_operand" "i") ++ (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)] ++ UNSPEC_LD3_LANE))] ++ "TARGET_SIMD" ++ "ld3\\t{%S0. - %U0.}[%3], %1" ++ [(set_attr "type" "neon_load3_one_lane")] ++) ++ + (define_insn "vec_store_lanesci" + [(set (match_operand:CI 0 "aarch64_simd_struct_operand" "=Utv") + (unspec:CI [(match_operand:CI 1 "register_operand" "w") +@@ -4037,6 +4264,17 @@ + [(set_attr "type" "neon_store3_3reg")] + ) + ++(define_insn "vec_store_lanesci_lane" ++ [(set (match_operand: 0 "aarch64_simd_struct_operand" "=Utv") ++ (unspec: [(match_operand:CI 1 "register_operand" "w") ++ (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY) ++ (match_operand:SI 2 "immediate_operand" "i")] ++ UNSPEC_ST3_LANE))] ++ "TARGET_SIMD" ++ "st3\\t{%S1. - %U1.}[%2], %0" ++ [(set_attr "type" "neon_store3_one_lane")] ++) ++ + (define_insn "vec_load_lanesxi" + [(set (match_operand:XI 0 "register_operand" "=w") + (unspec:XI [(match_operand:XI 1 "aarch64_simd_struct_operand" "Utv") +@@ -4047,6 +4285,28 @@ + [(set_attr "type" "neon_load4_4reg")] + ) + ++(define_insn "aarch64_simd_ld4r" ++ [(set (match_operand:XI 0 "register_operand" "=w") ++ (unspec:XI [(match_operand: 1 "aarch64_simd_struct_operand" "Utv") ++ (unspec:VALLDIF [(const_int 0)] UNSPEC_VSTRUCTDUMMY) ] ++ UNSPEC_LD4_DUP))] ++ "TARGET_SIMD" ++ "ld4r\\t{%S0. - %V0.}, %1" ++ [(set_attr "type" "neon_load4_all_lanes")] ++) ++ ++(define_insn "aarch64_vec_load_lanesxi_lane" ++ [(set (match_operand:XI 0 "register_operand" "=w") ++ (unspec:XI [(match_operand: 1 "aarch64_simd_struct_operand" "Utv") ++ (match_operand:XI 2 "register_operand" "0") ++ (match_operand:SI 3 "immediate_operand" "i") ++ (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)] ++ UNSPEC_LD4_LANE))] ++ "TARGET_SIMD" ++ "ld4\\t{%S0. - %V0.}[%3], %1" ++ [(set_attr "type" "neon_load4_one_lane")] ++) ++ + (define_insn "vec_store_lanesxi" + [(set (match_operand:XI 0 "aarch64_simd_struct_operand" "=Utv") + (unspec:XI [(match_operand:XI 1 "register_operand" "w") +@@ -4057,6 +4317,17 @@ + [(set_attr "type" "neon_store4_4reg")] + ) + ++(define_insn "vec_store_lanesxi_lane" ++ [(set (match_operand: 0 "aarch64_simd_struct_operand" "=Utv") ++ (unspec: [(match_operand:XI 1 "register_operand" "w") ++ (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY) ++ (match_operand:SI 2 "immediate_operand" "i")] ++ UNSPEC_ST4_LANE))] ++ "TARGET_SIMD" ++ "st4\\t{%S1. - %V1.}[%2], %0" ++ [(set_attr "type" "neon_store4_one_lane")] ++) ++ + ;; Reload patterns for AdvSIMD register list operands. + + (define_expand "mov" +@@ -4176,6 +4447,45 @@ + aarch64_simd_disambiguate_copy (operands, dest, src, 4); + }) + ++(define_expand "aarch64_ld2r" ++ [(match_operand:OI 0 "register_operand" "=w") ++ (match_operand:DI 1 "register_operand" "w") ++ (unspec:VALLDIF [(const_int 0)] UNSPEC_VSTRUCTDUMMY)] ++ "TARGET_SIMD" ++{ ++ enum machine_mode mode = mode; ++ rtx mem = gen_rtx_MEM (mode, operands[1]); ++ ++ emit_insn (gen_aarch64_simd_ld2r (operands[0], mem)); ++ DONE; ++}) ++ ++(define_expand "aarch64_ld3r" ++ [(match_operand:CI 0 "register_operand" "=w") ++ (match_operand:DI 1 "register_operand" "w") ++ (unspec:VALLDIF [(const_int 0)] UNSPEC_VSTRUCTDUMMY)] ++ "TARGET_SIMD" ++{ ++ enum machine_mode mode = mode; ++ rtx mem = gen_rtx_MEM (mode, operands[1]); ++ ++ emit_insn (gen_aarch64_simd_ld3r (operands[0], mem)); ++ DONE; ++}) ++ ++(define_expand "aarch64_ld4r" ++ [(match_operand:XI 0 "register_operand" "=w") ++ (match_operand:DI 1 "register_operand" "w") ++ (unspec:VALLDIF [(const_int 0)] UNSPEC_VSTRUCTDUMMY)] ++ "TARGET_SIMD" ++{ ++ enum machine_mode mode = mode; ++ rtx mem = gen_rtx_MEM (mode, operands[1]); ++ ++ emit_insn (gen_aarch64_simd_ld4r (operands[0],mem)); ++ DONE; ++}) ++ + (define_insn "aarch64_ld2_dreg" + [(set (match_operand:OI 0 "register_operand" "=w") + (subreg:OI +@@ -4349,6 +4659,65 @@ + DONE; + }) + ++(define_expand "aarch64_ld2_lane" ++ [(match_operand:OI 0 "register_operand" "=w") ++ (match_operand:DI 1 "register_operand" "w") ++ (match_operand:OI 2 "register_operand" "0") ++ (match_operand:SI 3 "immediate_operand" "i") ++ (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)] ++ "TARGET_SIMD" ++{ ++ enum machine_mode mode = mode; ++ rtx mem = gen_rtx_MEM (mode, operands[1]); ++ ++ aarch64_simd_lane_bounds (operands[3], 0, GET_MODE_NUNITS (mode)); ++ emit_insn (gen_aarch64_vec_load_lanesoi_lane (operands[0], ++ mem, ++ operands[2], ++ operands[3])); ++ DONE; ++}) ++ ++(define_expand "aarch64_ld3_lane" ++ [(match_operand:CI 0 "register_operand" "=w") ++ (match_operand:DI 1 "register_operand" "w") ++ (match_operand:CI 2 "register_operand" "0") ++ (match_operand:SI 3 "immediate_operand" "i") ++ (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)] ++ "TARGET_SIMD" ++{ ++ enum machine_mode mode = mode; ++ rtx mem = gen_rtx_MEM (mode, operands[1]); ++ ++ aarch64_simd_lane_bounds (operands[3], 0, GET_MODE_NUNITS (mode)); ++ emit_insn (gen_aarch64_vec_load_lanesci_lane (operands[0], ++ mem, ++ operands[2], ++ operands[3])); ++ DONE; ++}) ++ ++(define_expand "aarch64_ld4_lane" ++ [(match_operand:XI 0 "register_operand" "=w") ++ (match_operand:DI 1 "register_operand" "w") ++ (match_operand:XI 2 "register_operand" "0") ++ (match_operand:SI 3 "immediate_operand" "i") ++ (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)] ++ "TARGET_SIMD" ++{ ++ enum machine_mode mode = mode; ++ rtx mem = gen_rtx_MEM (mode, operands[1]); ++ ++ aarch64_simd_lane_bounds (operands[3], 0, GET_MODE_NUNITS (mode)); ++ emit_insn (gen_aarch64_vec_load_lanesxi_lane (operands[0], ++ mem, ++ operands[2], ++ operands[3])); ++ DONE; ++}) ++ ++ ++ + ;; Expanders for builtins to extract vector registers from large + ;; opaque integer modes. + +@@ -4410,7 +4779,7 @@ + (match_operand:VB 1 "register_operand") + (match_operand:VB 2 "register_operand") + (match_operand:VB 3 "register_operand")] +- "TARGET_SIMD && !BYTES_BIG_ENDIAN" ++ "TARGET_SIMD" + { + aarch64_expand_vec_perm (operands[0], operands[1], + operands[2], operands[3]); +@@ -4465,6 +4834,44 @@ + [(set_attr "type" "neon_permute")] + ) + ++;; Note immediate (third) operand is lane index not byte index. ++(define_insn "aarch64_ext" ++ [(set (match_operand:VALL 0 "register_operand" "=w") ++ (unspec:VALL [(match_operand:VALL 1 "register_operand" "w") ++ (match_operand:VALL 2 "register_operand" "w") ++ (match_operand:SI 3 "immediate_operand" "i")] ++ UNSPEC_EXT))] ++ "TARGET_SIMD" ++{ ++ operands[3] = GEN_INT (INTVAL (operands[3]) ++ * GET_MODE_SIZE (GET_MODE_INNER (mode))); ++ return "ext\\t%0., %1., %2., #%3"; ++} ++ [(set_attr "type" "neon_ext")] ++) ++ ++;; This exists solely to check the arguments to the corresponding __builtin. ++;; Used where we want an error for out-of-range indices which would otherwise ++;; be silently wrapped (e.g. the mask to a __builtin_shuffle). ++(define_expand "aarch64_im_lane_boundsi" ++ [(match_operand:SI 0 "immediate_operand" "i") ++ (match_operand:SI 1 "immediate_operand" "i")] ++ "TARGET_SIMD" ++{ ++ aarch64_simd_lane_bounds (operands[0], 0, INTVAL (operands[1])); ++ DONE; ++} ++) ++ ++(define_insn "aarch64_rev" ++ [(set (match_operand:VALL 0 "register_operand" "=w") ++ (unspec:VALL [(match_operand:VALL 1 "register_operand" "w")] ++ REVERSE))] ++ "TARGET_SIMD" ++ "rev\\t%0., %1." ++ [(set_attr "type" "neon_rev")] ++) ++ + (define_insn "aarch64_st2_dreg" + [(set (match_operand:TI 0 "aarch64_simd_struct_operand" "=Utv") + (unspec:TI [(match_operand:OI 1 "register_operand" "w") +@@ -4551,6 +4958,57 @@ + DONE; + }) + ++(define_expand "aarch64_st2_lane" ++ [(match_operand:DI 0 "register_operand" "r") ++ (match_operand:OI 1 "register_operand" "w") ++ (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY) ++ (match_operand:SI 2 "immediate_operand")] ++ "TARGET_SIMD" ++{ ++ enum machine_mode mode = mode; ++ rtx mem = gen_rtx_MEM (mode, operands[0]); ++ operands[2] = GEN_INT (ENDIAN_LANE_N (mode, INTVAL (operands[2]))); ++ ++ emit_insn (gen_vec_store_lanesoi_lane (mem, ++ operands[1], ++ operands[2])); ++ DONE; ++}) ++ ++(define_expand "aarch64_st3_lane" ++ [(match_operand:DI 0 "register_operand" "r") ++ (match_operand:CI 1 "register_operand" "w") ++ (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY) ++ (match_operand:SI 2 "immediate_operand")] ++ "TARGET_SIMD" ++{ ++ enum machine_mode mode = mode; ++ rtx mem = gen_rtx_MEM (mode, operands[0]); ++ operands[2] = GEN_INT (ENDIAN_LANE_N (mode, INTVAL (operands[2]))); ++ ++ emit_insn (gen_vec_store_lanesci_lane (mem, ++ operands[1], ++ operands[2])); ++ DONE; ++}) ++ ++(define_expand "aarch64_st4_lane" ++ [(match_operand:DI 0 "register_operand" "r") ++ (match_operand:XI 1 "register_operand" "w") ++ (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY) ++ (match_operand:SI 2 "immediate_operand")] ++ "TARGET_SIMD" ++{ ++ enum machine_mode mode = mode; ++ rtx mem = gen_rtx_MEM (mode, operands[0]); ++ operands[2] = GEN_INT (ENDIAN_LANE_N (mode, INTVAL (operands[2]))); ++ ++ emit_insn (gen_vec_store_lanesxi_lane (mem, ++ operands[1], ++ operands[2])); ++ DONE; ++}) ++ + (define_expand "aarch64_st1" + [(match_operand:DI 0 "register_operand") + (match_operand:VALL 1 "register_operand")] +--- a/src/gcc/config/aarch64/predicates.md ++++ b/src/gcc/config/aarch64/predicates.md +@@ -26,6 +26,10 @@ + && GET_MODE_CLASS (GET_MODE (op)) == MODE_CC")))) + ) + ++(define_predicate "aarch64_call_insn_operand" ++ (ior (match_code "symbol_ref") ++ (match_operand 0 "register_operand"))) ++ + (define_predicate "aarch64_simd_register" + (and (match_code "reg") + (ior (match_test "REGNO_REG_CLASS (REGNO (op)) == FP_LO_REGS") +@@ -119,6 +123,10 @@ + (match_test "INTVAL (op) != 0 + && (unsigned) exact_log2 (INTVAL (op)) < 64"))) + ++(define_predicate "aarch64_mem_pair_offset" ++ (and (match_code "const_int") ++ (match_test "aarch64_offset_7bit_signed_scaled_p (mode, INTVAL (op))"))) ++ + (define_predicate "aarch64_mem_pair_operand" + (and (match_code "mem") + (match_test "aarch64_legitimate_address_p (mode, XEXP (op, 0), PARALLEL, +@@ -194,6 +202,18 @@ + (define_special_predicate "aarch64_comparison_operator" + (match_code "eq,ne,le,lt,ge,gt,geu,gtu,leu,ltu,unordered,ordered,unlt,unle,unge,ungt")) + ++(define_special_predicate "aarch64_comparison_operation" ++ (match_code "eq,ne,le,lt,ge,gt,geu,gtu,leu,ltu,unordered,ordered,unlt,unle,unge,ungt") ++{ ++ if (XEXP (op, 1) != const0_rtx) ++ return false; ++ rtx op0 = XEXP (op, 0); ++ if (!REG_P (op0) || REGNO (op0) != CC_REGNUM) ++ return false; ++ return aarch64_get_condition_code (op) >= 0; ++}) ++ ++ + ;; True if the operand is memory reference suitable for a load/store exclusive. + (define_predicate "aarch64_sync_memory_operand" + (and (match_operand 0 "memory_operand") +@@ -203,62 +223,15 @@ + (define_special_predicate "vect_par_cnst_hi_half" + (match_code "parallel") + { +- HOST_WIDE_INT count = XVECLEN (op, 0); +- int nunits = GET_MODE_NUNITS (mode); +- int i; +- +- if (count < 1 +- || count != nunits / 2) +- return false; +- +- if (!VECTOR_MODE_P (mode)) +- return false; +- +- for (i = 0; i < count; i++) +- { +- rtx elt = XVECEXP (op, 0, i); +- int val; +- +- if (GET_CODE (elt) != CONST_INT) +- return false; +- +- val = INTVAL (elt); +- if (val != (nunits / 2) + i) +- return false; +- } +- return true; ++ return aarch64_simd_check_vect_par_cnst_half (op, mode, true); + }) + + (define_special_predicate "vect_par_cnst_lo_half" + (match_code "parallel") + { +- HOST_WIDE_INT count = XVECLEN (op, 0); +- int nunits = GET_MODE_NUNITS (mode); +- int i; +- +- if (count < 1 +- || count != nunits / 2) +- return false; +- +- if (!VECTOR_MODE_P (mode)) +- return false; +- +- for (i = 0; i < count; i++) +- { +- rtx elt = XVECEXP (op, 0, i); +- int val; +- +- if (GET_CODE (elt) != CONST_INT) +- return false; +- +- val = INTVAL (elt); +- if (val != i) +- return false; +- } +- return true; ++ return aarch64_simd_check_vect_par_cnst_half (op, mode, false); + }) + +- + (define_special_predicate "aarch64_simd_lshift_imm" + (match_code "const_vector") + { +@@ -300,3 +273,62 @@ + { + return aarch64_simd_imm_zero_p (op, mode); + }) ++ ++(define_special_predicate "aarch64_simd_imm_minus_one" ++ (match_code "const_vector") ++{ ++ return aarch64_const_vec_all_same_int_p (op, -1); ++}) ++ ++;; Predicates used by the various SIMD shift operations. These ++;; fall in to 3 categories. ++;; Shifts with a range 0-(bit_size - 1) (aarch64_simd_shift_imm) ++;; Shifts with a range 1-bit_size (aarch64_simd_shift_imm_offset) ++;; Shifts with a range 0-bit_size (aarch64_simd_shift_imm_bitsize) ++(define_predicate "aarch64_simd_shift_imm_qi" ++ (and (match_code "const_int") ++ (match_test "IN_RANGE (INTVAL (op), 0, 7)"))) ++ ++(define_predicate "aarch64_simd_shift_imm_hi" ++ (and (match_code "const_int") ++ (match_test "IN_RANGE (INTVAL (op), 0, 15)"))) ++ ++(define_predicate "aarch64_simd_shift_imm_si" ++ (and (match_code "const_int") ++ (match_test "IN_RANGE (INTVAL (op), 0, 31)"))) ++ ++(define_predicate "aarch64_simd_shift_imm_di" ++ (and (match_code "const_int") ++ (match_test "IN_RANGE (INTVAL (op), 0, 63)"))) ++ ++(define_predicate "aarch64_simd_shift_imm_offset_qi" ++ (and (match_code "const_int") ++ (match_test "IN_RANGE (INTVAL (op), 1, 8)"))) ++ ++(define_predicate "aarch64_simd_shift_imm_offset_hi" ++ (and (match_code "const_int") ++ (match_test "IN_RANGE (INTVAL (op), 1, 16)"))) ++ ++(define_predicate "aarch64_simd_shift_imm_offset_si" ++ (and (match_code "const_int") ++ (match_test "IN_RANGE (INTVAL (op), 1, 32)"))) ++ ++(define_predicate "aarch64_simd_shift_imm_offset_di" ++ (and (match_code "const_int") ++ (match_test "IN_RANGE (INTVAL (op), 1, 64)"))) ++ ++(define_predicate "aarch64_simd_shift_imm_bitsize_qi" ++ (and (match_code "const_int") ++ (match_test "IN_RANGE (INTVAL (op), 0, 8)"))) ++ ++(define_predicate "aarch64_simd_shift_imm_bitsize_hi" ++ (and (match_code "const_int") ++ (match_test "IN_RANGE (INTVAL (op), 0, 16)"))) ++ ++(define_predicate "aarch64_simd_shift_imm_bitsize_si" ++ (and (match_code "const_int") ++ (match_test "IN_RANGE (INTVAL (op), 0, 32)"))) ++ ++(define_predicate "aarch64_simd_shift_imm_bitsize_di" ++ (and (match_code "const_int") ++ (match_test "IN_RANGE (INTVAL (op), 0, 64)"))) +--- a/src/gcc/config/aarch64/arm_neon.h ++++ b/src/gcc/config/aarch64/arm_neon.h +@@ -2113,29 +2113,26 @@ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vqadd_u8 (uint8x8_t __a, uint8x8_t __b) + { +- return (uint8x8_t) __builtin_aarch64_uqaddv8qi ((int8x8_t) __a, +- (int8x8_t) __b); ++ return __builtin_aarch64_uqaddv8qi_uuu (__a, __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vqadd_u16 (uint16x4_t __a, uint16x4_t __b) + { +- return (uint16x4_t) __builtin_aarch64_uqaddv4hi ((int16x4_t) __a, +- (int16x4_t) __b); ++ return __builtin_aarch64_uqaddv4hi_uuu (__a, __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vqadd_u32 (uint32x2_t __a, uint32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_uqaddv2si ((int32x2_t) __a, +- (int32x2_t) __b); ++ return __builtin_aarch64_uqaddv2si_uuu (__a, __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vqadd_u64 (uint64x1_t __a, uint64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_uqadddi ((int64x1_t) __a, +- (int64x1_t) __b); ++ return (uint64x1_t) __builtin_aarch64_uqadddi_uuu ((uint64_t) __a, ++ (uint64_t) __b); + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +@@ -2165,29 +2162,25 @@ + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vqaddq_u8 (uint8x16_t __a, uint8x16_t __b) + { +- return (uint8x16_t) __builtin_aarch64_uqaddv16qi ((int8x16_t) __a, +- (int8x16_t) __b); ++ return __builtin_aarch64_uqaddv16qi_uuu (__a, __b); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vqaddq_u16 (uint16x8_t __a, uint16x8_t __b) + { +- return (uint16x8_t) __builtin_aarch64_uqaddv8hi ((int16x8_t) __a, +- (int16x8_t) __b); ++ return __builtin_aarch64_uqaddv8hi_uuu (__a, __b); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vqaddq_u32 (uint32x4_t __a, uint32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_uqaddv4si ((int32x4_t) __a, +- (int32x4_t) __b); ++ return __builtin_aarch64_uqaddv4si_uuu (__a, __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vqaddq_u64 (uint64x2_t __a, uint64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_uqaddv2di ((int64x2_t) __a, +- (int64x2_t) __b); ++ return __builtin_aarch64_uqaddv2di_uuu (__a, __b); + } + + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +@@ -2217,29 +2210,26 @@ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vqsub_u8 (uint8x8_t __a, uint8x8_t __b) + { +- return (uint8x8_t) __builtin_aarch64_uqsubv8qi ((int8x8_t) __a, +- (int8x8_t) __b); ++ return __builtin_aarch64_uqsubv8qi_uuu (__a, __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vqsub_u16 (uint16x4_t __a, uint16x4_t __b) + { +- return (uint16x4_t) __builtin_aarch64_uqsubv4hi ((int16x4_t) __a, +- (int16x4_t) __b); ++ return __builtin_aarch64_uqsubv4hi_uuu (__a, __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vqsub_u32 (uint32x2_t __a, uint32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_uqsubv2si ((int32x2_t) __a, +- (int32x2_t) __b); ++ return __builtin_aarch64_uqsubv2si_uuu (__a, __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vqsub_u64 (uint64x1_t __a, uint64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_uqsubdi ((int64x1_t) __a, +- (int64x1_t) __b); ++ return (uint64x1_t) __builtin_aarch64_uqsubdi_uuu ((uint64_t) __a, ++ (uint64_t) __b); + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +@@ -2269,29 +2259,25 @@ + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vqsubq_u8 (uint8x16_t __a, uint8x16_t __b) + { +- return (uint8x16_t) __builtin_aarch64_uqsubv16qi ((int8x16_t) __a, +- (int8x16_t) __b); ++ return __builtin_aarch64_uqsubv16qi_uuu (__a, __b); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vqsubq_u16 (uint16x8_t __a, uint16x8_t __b) + { +- return (uint16x8_t) __builtin_aarch64_uqsubv8hi ((int16x8_t) __a, +- (int16x8_t) __b); ++ return __builtin_aarch64_uqsubv8hi_uuu (__a, __b); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vqsubq_u32 (uint32x4_t __a, uint32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_uqsubv4si ((int32x4_t) __a, +- (int32x4_t) __b); ++ return __builtin_aarch64_uqsubv4si_uuu (__a, __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vqsubq_u64 (uint64x2_t __a, uint64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_uqsubv2di ((int64x2_t) __a, +- (int64x2_t) __b); ++ return __builtin_aarch64_uqsubv2di_uuu (__a, __b); + } + + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +@@ -2312,6 +2298,12 @@ + return (int32x2_t) __builtin_aarch64_sqnegv2si (__a); + } + ++__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) ++vqneg_s64 (int64x1_t __a) ++{ ++ return __builtin_aarch64_sqnegdi (__a); ++} ++ + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vqnegq_s8 (int8x16_t __a) + { +@@ -2348,6 +2340,12 @@ + return (int32x2_t) __builtin_aarch64_sqabsv2si (__a); + } + ++__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) ++vqabs_s64 (int64x1_t __a) ++{ ++ return __builtin_aarch64_sqabsdi (__a); ++} ++ + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vqabsq_s8 (int8x16_t __a) + { +@@ -2637,1352 +2635,1587 @@ + /* vreinterpret */ + + __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) ++vreinterpret_p8_f64 (float64x1_t __a) ++{ ++ return __builtin_aarch64_reinterpretv8qidf_ps (__a); ++} ++ ++__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) + vreinterpret_p8_s8 (int8x8_t __a) + { +- return (poly8x8_t) __builtin_aarch64_reinterpretv8qiv8qi (__a); ++ return (poly8x8_t) __a; + } + + __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) + vreinterpret_p8_s16 (int16x4_t __a) + { +- return (poly8x8_t) __builtin_aarch64_reinterpretv8qiv4hi (__a); ++ return (poly8x8_t) __a; + } + + __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) + vreinterpret_p8_s32 (int32x2_t __a) + { +- return (poly8x8_t) __builtin_aarch64_reinterpretv8qiv2si (__a); ++ return (poly8x8_t) __a; + } + + __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) + vreinterpret_p8_s64 (int64x1_t __a) + { +- return (poly8x8_t) __builtin_aarch64_reinterpretv8qidi (__a); ++ return (poly8x8_t) __a; + } + + __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) + vreinterpret_p8_f32 (float32x2_t __a) + { +- return (poly8x8_t) __builtin_aarch64_reinterpretv8qiv2sf (__a); ++ return (poly8x8_t) __a; + } + + __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) + vreinterpret_p8_u8 (uint8x8_t __a) + { +- return (poly8x8_t) __builtin_aarch64_reinterpretv8qiv8qi ((int8x8_t) __a); ++ return (poly8x8_t) __a; + } + + __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) + vreinterpret_p8_u16 (uint16x4_t __a) + { +- return (poly8x8_t) __builtin_aarch64_reinterpretv8qiv4hi ((int16x4_t) __a); ++ return (poly8x8_t) __a; + } + + __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) + vreinterpret_p8_u32 (uint32x2_t __a) + { +- return (poly8x8_t) __builtin_aarch64_reinterpretv8qiv2si ((int32x2_t) __a); ++ return (poly8x8_t) __a; + } + + __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) + vreinterpret_p8_u64 (uint64x1_t __a) + { +- return (poly8x8_t) __builtin_aarch64_reinterpretv8qidi ((int64x1_t) __a); ++ return (poly8x8_t) __a; + } + + __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) + vreinterpret_p8_p16 (poly16x4_t __a) + { +- return (poly8x8_t) __builtin_aarch64_reinterpretv8qiv4hi ((int16x4_t) __a); ++ return (poly8x8_t) __a; + } + + __extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) ++vreinterpretq_p8_f64 (float64x2_t __a) ++{ ++ return (poly8x16_t) __a; ++} ++ ++__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_p8_s8 (int8x16_t __a) + { +- return (poly8x16_t) __builtin_aarch64_reinterpretv16qiv16qi (__a); ++ return (poly8x16_t) __a; + } + + __extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_p8_s16 (int16x8_t __a) + { +- return (poly8x16_t) __builtin_aarch64_reinterpretv16qiv8hi (__a); ++ return (poly8x16_t) __a; + } + + __extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_p8_s32 (int32x4_t __a) + { +- return (poly8x16_t) __builtin_aarch64_reinterpretv16qiv4si (__a); ++ return (poly8x16_t) __a; + } + + __extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_p8_s64 (int64x2_t __a) + { +- return (poly8x16_t) __builtin_aarch64_reinterpretv16qiv2di (__a); ++ return (poly8x16_t) __a; + } + + __extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_p8_f32 (float32x4_t __a) + { +- return (poly8x16_t) __builtin_aarch64_reinterpretv16qiv4sf (__a); ++ return (poly8x16_t) __a; + } + + __extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_p8_u8 (uint8x16_t __a) + { +- return (poly8x16_t) __builtin_aarch64_reinterpretv16qiv16qi ((int8x16_t) +- __a); ++ return (poly8x16_t) __a; + } + + __extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_p8_u16 (uint16x8_t __a) + { +- return (poly8x16_t) __builtin_aarch64_reinterpretv16qiv8hi ((int16x8_t) +- __a); ++ return (poly8x16_t) __a; + } + + __extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_p8_u32 (uint32x4_t __a) + { +- return (poly8x16_t) __builtin_aarch64_reinterpretv16qiv4si ((int32x4_t) +- __a); ++ return (poly8x16_t) __a; + } + + __extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_p8_u64 (uint64x2_t __a) + { +- return (poly8x16_t) __builtin_aarch64_reinterpretv16qiv2di ((int64x2_t) +- __a); ++ return (poly8x16_t) __a; + } + + __extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_p8_p16 (poly16x8_t __a) + { +- return (poly8x16_t) __builtin_aarch64_reinterpretv16qiv8hi ((int16x8_t) +- __a); ++ return (poly8x16_t) __a; + } + + __extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) ++vreinterpret_p16_f64 (float64x1_t __a) ++{ ++ return __builtin_aarch64_reinterpretv4hidf_ps (__a); ++} ++ ++__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) + vreinterpret_p16_s8 (int8x8_t __a) + { +- return (poly16x4_t) __builtin_aarch64_reinterpretv4hiv8qi (__a); ++ return (poly16x4_t) __a; + } + + __extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) + vreinterpret_p16_s16 (int16x4_t __a) + { +- return (poly16x4_t) __builtin_aarch64_reinterpretv4hiv4hi (__a); ++ return (poly16x4_t) __a; + } + + __extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) + vreinterpret_p16_s32 (int32x2_t __a) + { +- return (poly16x4_t) __builtin_aarch64_reinterpretv4hiv2si (__a); ++ return (poly16x4_t) __a; + } + + __extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) + vreinterpret_p16_s64 (int64x1_t __a) + { +- return (poly16x4_t) __builtin_aarch64_reinterpretv4hidi (__a); ++ return (poly16x4_t) __a; + } + + __extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) + vreinterpret_p16_f32 (float32x2_t __a) + { +- return (poly16x4_t) __builtin_aarch64_reinterpretv4hiv2sf (__a); ++ return (poly16x4_t) __a; + } + + __extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) + vreinterpret_p16_u8 (uint8x8_t __a) + { +- return (poly16x4_t) __builtin_aarch64_reinterpretv4hiv8qi ((int8x8_t) __a); ++ return (poly16x4_t) __a; + } + + __extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) + vreinterpret_p16_u16 (uint16x4_t __a) + { +- return (poly16x4_t) __builtin_aarch64_reinterpretv4hiv4hi ((int16x4_t) __a); ++ return (poly16x4_t) __a; + } + + __extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) + vreinterpret_p16_u32 (uint32x2_t __a) + { +- return (poly16x4_t) __builtin_aarch64_reinterpretv4hiv2si ((int32x2_t) __a); ++ return (poly16x4_t) __a; + } + + __extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) + vreinterpret_p16_u64 (uint64x1_t __a) + { +- return (poly16x4_t) __builtin_aarch64_reinterpretv4hidi ((int64x1_t) __a); ++ return (poly16x4_t) __a; + } + + __extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) + vreinterpret_p16_p8 (poly8x8_t __a) + { +- return (poly16x4_t) __builtin_aarch64_reinterpretv4hiv8qi ((int8x8_t) __a); ++ return (poly16x4_t) __a; + } + + __extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) ++vreinterpretq_p16_f64 (float64x2_t __a) ++{ ++ return (poly16x8_t) __a; ++} ++ ++__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_p16_s8 (int8x16_t __a) + { +- return (poly16x8_t) __builtin_aarch64_reinterpretv8hiv16qi (__a); ++ return (poly16x8_t) __a; + } + + __extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_p16_s16 (int16x8_t __a) + { +- return (poly16x8_t) __builtin_aarch64_reinterpretv8hiv8hi (__a); ++ return (poly16x8_t) __a; + } + + __extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_p16_s32 (int32x4_t __a) + { +- return (poly16x8_t) __builtin_aarch64_reinterpretv8hiv4si (__a); ++ return (poly16x8_t) __a; + } + + __extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_p16_s64 (int64x2_t __a) + { +- return (poly16x8_t) __builtin_aarch64_reinterpretv8hiv2di (__a); ++ return (poly16x8_t) __a; + } + + __extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_p16_f32 (float32x4_t __a) + { +- return (poly16x8_t) __builtin_aarch64_reinterpretv8hiv4sf (__a); ++ return (poly16x8_t) __a; + } + + __extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_p16_u8 (uint8x16_t __a) + { +- return (poly16x8_t) __builtin_aarch64_reinterpretv8hiv16qi ((int8x16_t) +- __a); ++ return (poly16x8_t) __a; + } + + __extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_p16_u16 (uint16x8_t __a) + { +- return (poly16x8_t) __builtin_aarch64_reinterpretv8hiv8hi ((int16x8_t) __a); ++ return (poly16x8_t) __a; + } + + __extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_p16_u32 (uint32x4_t __a) + { +- return (poly16x8_t) __builtin_aarch64_reinterpretv8hiv4si ((int32x4_t) __a); ++ return (poly16x8_t) __a; + } + + __extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_p16_u64 (uint64x2_t __a) + { +- return (poly16x8_t) __builtin_aarch64_reinterpretv8hiv2di ((int64x2_t) __a); ++ return (poly16x8_t) __a; + } + + __extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_p16_p8 (poly8x16_t __a) + { +- return (poly16x8_t) __builtin_aarch64_reinterpretv8hiv16qi ((int8x16_t) +- __a); ++ return (poly16x8_t) __a; + } + + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) ++vreinterpret_f32_f64 (float64x1_t __a) ++{ ++ return __builtin_aarch64_reinterpretv2sfdf (__a); ++} ++ ++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) + vreinterpret_f32_s8 (int8x8_t __a) + { +- return (float32x2_t) __builtin_aarch64_reinterpretv2sfv8qi (__a); ++ return (float32x2_t) __a; + } + + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) + vreinterpret_f32_s16 (int16x4_t __a) + { +- return (float32x2_t) __builtin_aarch64_reinterpretv2sfv4hi (__a); ++ return (float32x2_t) __a; + } + + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) + vreinterpret_f32_s32 (int32x2_t __a) + { +- return (float32x2_t) __builtin_aarch64_reinterpretv2sfv2si (__a); ++ return (float32x2_t) __a; + } + + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) + vreinterpret_f32_s64 (int64x1_t __a) + { +- return (float32x2_t) __builtin_aarch64_reinterpretv2sfdi (__a); ++ return (float32x2_t) __a; + } + + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) + vreinterpret_f32_u8 (uint8x8_t __a) + { +- return (float32x2_t) __builtin_aarch64_reinterpretv2sfv8qi ((int8x8_t) __a); ++ return (float32x2_t) __a; + } + + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) + vreinterpret_f32_u16 (uint16x4_t __a) + { +- return (float32x2_t) __builtin_aarch64_reinterpretv2sfv4hi ((int16x4_t) +- __a); ++ return (float32x2_t) __a; + } + + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) + vreinterpret_f32_u32 (uint32x2_t __a) + { +- return (float32x2_t) __builtin_aarch64_reinterpretv2sfv2si ((int32x2_t) +- __a); ++ return (float32x2_t) __a; + } + + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) + vreinterpret_f32_u64 (uint64x1_t __a) + { +- return (float32x2_t) __builtin_aarch64_reinterpretv2sfdi ((int64x1_t) __a); ++ return (float32x2_t) __a; + } + + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) + vreinterpret_f32_p8 (poly8x8_t __a) + { +- return (float32x2_t) __builtin_aarch64_reinterpretv2sfv8qi ((int8x8_t) __a); ++ return (float32x2_t) __a; + } + + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) + vreinterpret_f32_p16 (poly16x4_t __a) + { +- return (float32x2_t) __builtin_aarch64_reinterpretv2sfv4hi ((int16x4_t) +- __a); ++ return (float32x2_t) __a; + } + + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) ++vreinterpretq_f32_f64 (float64x2_t __a) ++{ ++ return (float32x4_t) __a; ++} ++ ++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_f32_s8 (int8x16_t __a) + { +- return (float32x4_t) __builtin_aarch64_reinterpretv4sfv16qi (__a); ++ return (float32x4_t) __a; + } + + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_f32_s16 (int16x8_t __a) + { +- return (float32x4_t) __builtin_aarch64_reinterpretv4sfv8hi (__a); ++ return (float32x4_t) __a; + } + + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_f32_s32 (int32x4_t __a) + { +- return (float32x4_t) __builtin_aarch64_reinterpretv4sfv4si (__a); ++ return (float32x4_t) __a; + } + + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_f32_s64 (int64x2_t __a) + { +- return (float32x4_t) __builtin_aarch64_reinterpretv4sfv2di (__a); ++ return (float32x4_t) __a; + } + + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_f32_u8 (uint8x16_t __a) + { +- return (float32x4_t) __builtin_aarch64_reinterpretv4sfv16qi ((int8x16_t) +- __a); ++ return (float32x4_t) __a; + } + + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_f32_u16 (uint16x8_t __a) + { +- return (float32x4_t) __builtin_aarch64_reinterpretv4sfv8hi ((int16x8_t) +- __a); ++ return (float32x4_t) __a; + } + + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_f32_u32 (uint32x4_t __a) + { +- return (float32x4_t) __builtin_aarch64_reinterpretv4sfv4si ((int32x4_t) +- __a); ++ return (float32x4_t) __a; + } + + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_f32_u64 (uint64x2_t __a) + { +- return (float32x4_t) __builtin_aarch64_reinterpretv4sfv2di ((int64x2_t) +- __a); ++ return (float32x4_t) __a; + } + + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_f32_p8 (poly8x16_t __a) + { +- return (float32x4_t) __builtin_aarch64_reinterpretv4sfv16qi ((int8x16_t) +- __a); ++ return (float32x4_t) __a; + } + + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_f32_p16 (poly16x8_t __a) + { +- return (float32x4_t) __builtin_aarch64_reinterpretv4sfv8hi ((int16x8_t) +- __a); ++ return (float32x4_t) __a; + } + ++__extension__ static __inline float64x1_t __attribute__((__always_inline__)) ++vreinterpret_f64_f32 (float32x2_t __a) ++{ ++ return __builtin_aarch64_reinterpretdfv2sf (__a); ++} ++ ++__extension__ static __inline float64x1_t __attribute__((__always_inline__)) ++vreinterpret_f64_p8 (poly8x8_t __a) ++{ ++ return __builtin_aarch64_reinterpretdfv8qi_sp (__a); ++} ++ ++__extension__ static __inline float64x1_t __attribute__((__always_inline__)) ++vreinterpret_f64_p16 (poly16x4_t __a) ++{ ++ return __builtin_aarch64_reinterpretdfv4hi_sp (__a); ++} ++ ++__extension__ static __inline float64x1_t __attribute__((__always_inline__)) ++vreinterpret_f64_s8 (int8x8_t __a) ++{ ++ return __builtin_aarch64_reinterpretdfv8qi (__a); ++} ++ ++__extension__ static __inline float64x1_t __attribute__((__always_inline__)) ++vreinterpret_f64_s16 (int16x4_t __a) ++{ ++ return __builtin_aarch64_reinterpretdfv4hi (__a); ++} ++ ++__extension__ static __inline float64x1_t __attribute__((__always_inline__)) ++vreinterpret_f64_s32 (int32x2_t __a) ++{ ++ return __builtin_aarch64_reinterpretdfv2si (__a); ++} ++ ++__extension__ static __inline float64x1_t __attribute__((__always_inline__)) ++vreinterpret_f64_s64 (int64x1_t __a) ++{ ++ return __builtin_aarch64_createdf ((uint64_t) vget_lane_s64 (__a, 0)); ++} ++ ++__extension__ static __inline float64x1_t __attribute__((__always_inline__)) ++vreinterpret_f64_u8 (uint8x8_t __a) ++{ ++ return __builtin_aarch64_reinterpretdfv8qi_su (__a); ++} ++ ++__extension__ static __inline float64x1_t __attribute__((__always_inline__)) ++vreinterpret_f64_u16 (uint16x4_t __a) ++{ ++ return __builtin_aarch64_reinterpretdfv4hi_su (__a); ++} ++ ++__extension__ static __inline float64x1_t __attribute__((__always_inline__)) ++vreinterpret_f64_u32 (uint32x2_t __a) ++{ ++ return __builtin_aarch64_reinterpretdfv2si_su (__a); ++} ++ ++__extension__ static __inline float64x1_t __attribute__((__always_inline__)) ++vreinterpret_f64_u64 (uint64x1_t __a) ++{ ++ return __builtin_aarch64_createdf (vget_lane_u64 (__a, 0)); ++} ++ ++__extension__ static __inline float64x2_t __attribute__((__always_inline__)) ++vreinterpretq_f64_f32 (float32x4_t __a) ++{ ++ return (float64x2_t) __a; ++} ++ ++__extension__ static __inline float64x2_t __attribute__((__always_inline__)) ++vreinterpretq_f64_p8 (poly8x16_t __a) ++{ ++ return (float64x2_t) __a; ++} ++ ++__extension__ static __inline float64x2_t __attribute__((__always_inline__)) ++vreinterpretq_f64_p16 (poly16x8_t __a) ++{ ++ return (float64x2_t) __a; ++} ++ ++__extension__ static __inline float64x2_t __attribute__((__always_inline__)) ++vreinterpretq_f64_s8 (int8x16_t __a) ++{ ++ return (float64x2_t) __a; ++} ++ ++__extension__ static __inline float64x2_t __attribute__((__always_inline__)) ++vreinterpretq_f64_s16 (int16x8_t __a) ++{ ++ return (float64x2_t) __a; ++} ++ ++__extension__ static __inline float64x2_t __attribute__((__always_inline__)) ++vreinterpretq_f64_s32 (int32x4_t __a) ++{ ++ return (float64x2_t) __a; ++} ++ ++__extension__ static __inline float64x2_t __attribute__((__always_inline__)) ++vreinterpretq_f64_s64 (int64x2_t __a) ++{ ++ return (float64x2_t) __a; ++} ++ ++__extension__ static __inline float64x2_t __attribute__((__always_inline__)) ++vreinterpretq_f64_u8 (uint8x16_t __a) ++{ ++ return (float64x2_t) __a; ++} ++ ++__extension__ static __inline float64x2_t __attribute__((__always_inline__)) ++vreinterpretq_f64_u16 (uint16x8_t __a) ++{ ++ return (float64x2_t) __a; ++} ++ ++__extension__ static __inline float64x2_t __attribute__((__always_inline__)) ++vreinterpretq_f64_u32 (uint32x4_t __a) ++{ ++ return (float64x2_t) __a; ++} ++ ++__extension__ static __inline float64x2_t __attribute__((__always_inline__)) ++vreinterpretq_f64_u64 (uint64x2_t __a) ++{ ++ return (float64x2_t) __a; ++} ++ + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) ++vreinterpret_s64_f64 (float64x1_t __a) ++{ ++ return __builtin_aarch64_reinterpretdidf (__a); ++} ++ ++__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vreinterpret_s64_s8 (int8x8_t __a) + { +- return (int64x1_t) __builtin_aarch64_reinterpretdiv8qi (__a); ++ return (int64x1_t) __a; + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vreinterpret_s64_s16 (int16x4_t __a) + { +- return (int64x1_t) __builtin_aarch64_reinterpretdiv4hi (__a); ++ return (int64x1_t) __a; + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vreinterpret_s64_s32 (int32x2_t __a) + { +- return (int64x1_t) __builtin_aarch64_reinterpretdiv2si (__a); ++ return (int64x1_t) __a; + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vreinterpret_s64_f32 (float32x2_t __a) + { +- return (int64x1_t) __builtin_aarch64_reinterpretdiv2sf (__a); ++ return (int64x1_t) __a; + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vreinterpret_s64_u8 (uint8x8_t __a) + { +- return (int64x1_t) __builtin_aarch64_reinterpretdiv8qi ((int8x8_t) __a); ++ return (int64x1_t) __a; + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vreinterpret_s64_u16 (uint16x4_t __a) + { +- return (int64x1_t) __builtin_aarch64_reinterpretdiv4hi ((int16x4_t) __a); ++ return (int64x1_t) __a; + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vreinterpret_s64_u32 (uint32x2_t __a) + { +- return (int64x1_t) __builtin_aarch64_reinterpretdiv2si ((int32x2_t) __a); ++ return (int64x1_t) __a; + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vreinterpret_s64_u64 (uint64x1_t __a) + { +- return (int64x1_t) __builtin_aarch64_reinterpretdidi ((int64x1_t) __a); ++ return (int64x1_t) __a; + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vreinterpret_s64_p8 (poly8x8_t __a) + { +- return (int64x1_t) __builtin_aarch64_reinterpretdiv8qi ((int8x8_t) __a); ++ return (int64x1_t) __a; + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vreinterpret_s64_p16 (poly16x4_t __a) + { +- return (int64x1_t) __builtin_aarch64_reinterpretdiv4hi ((int16x4_t) __a); ++ return (int64x1_t) __a; + } + + __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) ++vreinterpretq_s64_f64 (float64x2_t __a) ++{ ++ return (int64x2_t) __a; ++} ++ ++__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) + vreinterpretq_s64_s8 (int8x16_t __a) + { +- return (int64x2_t) __builtin_aarch64_reinterpretv2div16qi (__a); ++ return (int64x2_t) __a; + } + + __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) + vreinterpretq_s64_s16 (int16x8_t __a) + { +- return (int64x2_t) __builtin_aarch64_reinterpretv2div8hi (__a); ++ return (int64x2_t) __a; + } + + __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) + vreinterpretq_s64_s32 (int32x4_t __a) + { +- return (int64x2_t) __builtin_aarch64_reinterpretv2div4si (__a); ++ return (int64x2_t) __a; + } + + __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) + vreinterpretq_s64_f32 (float32x4_t __a) + { +- return (int64x2_t) __builtin_aarch64_reinterpretv2div4sf (__a); ++ return (int64x2_t) __a; + } + + __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) + vreinterpretq_s64_u8 (uint8x16_t __a) + { +- return (int64x2_t) __builtin_aarch64_reinterpretv2div16qi ((int8x16_t) __a); ++ return (int64x2_t) __a; + } + + __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) + vreinterpretq_s64_u16 (uint16x8_t __a) + { +- return (int64x2_t) __builtin_aarch64_reinterpretv2div8hi ((int16x8_t) __a); ++ return (int64x2_t) __a; + } + + __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) + vreinterpretq_s64_u32 (uint32x4_t __a) + { +- return (int64x2_t) __builtin_aarch64_reinterpretv2div4si ((int32x4_t) __a); ++ return (int64x2_t) __a; + } + + __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) + vreinterpretq_s64_u64 (uint64x2_t __a) + { +- return (int64x2_t) __builtin_aarch64_reinterpretv2div2di ((int64x2_t) __a); ++ return (int64x2_t) __a; + } + + __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) + vreinterpretq_s64_p8 (poly8x16_t __a) + { +- return (int64x2_t) __builtin_aarch64_reinterpretv2div16qi ((int8x16_t) __a); ++ return (int64x2_t) __a; + } + + __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) + vreinterpretq_s64_p16 (poly16x8_t __a) + { +- return (int64x2_t) __builtin_aarch64_reinterpretv2div8hi ((int16x8_t) __a); ++ return (int64x2_t) __a; + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vreinterpret_u64_f64 (float64x1_t __a) ++{ ++ return __builtin_aarch64_reinterpretdidf_us (__a); ++} ++ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vreinterpret_u64_s8 (int8x8_t __a) + { +- return (uint64x1_t) __builtin_aarch64_reinterpretdiv8qi (__a); ++ return (uint64x1_t) __a; + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vreinterpret_u64_s16 (int16x4_t __a) + { +- return (uint64x1_t) __builtin_aarch64_reinterpretdiv4hi (__a); ++ return (uint64x1_t) __a; + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vreinterpret_u64_s32 (int32x2_t __a) + { +- return (uint64x1_t) __builtin_aarch64_reinterpretdiv2si (__a); ++ return (uint64x1_t) __a; + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vreinterpret_u64_s64 (int64x1_t __a) + { +- return (uint64x1_t) __builtin_aarch64_reinterpretdidi (__a); ++ return (uint64x1_t) __a; + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vreinterpret_u64_f32 (float32x2_t __a) + { +- return (uint64x1_t) __builtin_aarch64_reinterpretdiv2sf (__a); ++ return (uint64x1_t) __a; + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vreinterpret_u64_u8 (uint8x8_t __a) + { +- return (uint64x1_t) __builtin_aarch64_reinterpretdiv8qi ((int8x8_t) __a); ++ return (uint64x1_t) __a; + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vreinterpret_u64_u16 (uint16x4_t __a) + { +- return (uint64x1_t) __builtin_aarch64_reinterpretdiv4hi ((int16x4_t) __a); ++ return (uint64x1_t) __a; + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vreinterpret_u64_u32 (uint32x2_t __a) + { +- return (uint64x1_t) __builtin_aarch64_reinterpretdiv2si ((int32x2_t) __a); ++ return (uint64x1_t) __a; + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vreinterpret_u64_p8 (poly8x8_t __a) + { +- return (uint64x1_t) __builtin_aarch64_reinterpretdiv8qi ((int8x8_t) __a); ++ return (uint64x1_t) __a; + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vreinterpret_u64_p16 (poly16x4_t __a) + { +- return (uint64x1_t) __builtin_aarch64_reinterpretdiv4hi ((int16x4_t) __a); ++ return (uint64x1_t) __a; + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vreinterpretq_u64_f64 (float64x2_t __a) ++{ ++ return (uint64x2_t) __a; ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vreinterpretq_u64_s8 (int8x16_t __a) + { +- return (uint64x2_t) __builtin_aarch64_reinterpretv2div16qi (__a); ++ return (uint64x2_t) __a; + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vreinterpretq_u64_s16 (int16x8_t __a) + { +- return (uint64x2_t) __builtin_aarch64_reinterpretv2div8hi (__a); ++ return (uint64x2_t) __a; + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vreinterpretq_u64_s32 (int32x4_t __a) + { +- return (uint64x2_t) __builtin_aarch64_reinterpretv2div4si (__a); ++ return (uint64x2_t) __a; + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vreinterpretq_u64_s64 (int64x2_t __a) + { +- return (uint64x2_t) __builtin_aarch64_reinterpretv2div2di (__a); ++ return (uint64x2_t) __a; + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vreinterpretq_u64_f32 (float32x4_t __a) + { +- return (uint64x2_t) __builtin_aarch64_reinterpretv2div4sf (__a); ++ return (uint64x2_t) __a; + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vreinterpretq_u64_u8 (uint8x16_t __a) + { +- return (uint64x2_t) __builtin_aarch64_reinterpretv2div16qi ((int8x16_t) +- __a); ++ return (uint64x2_t) __a; + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vreinterpretq_u64_u16 (uint16x8_t __a) + { +- return (uint64x2_t) __builtin_aarch64_reinterpretv2div8hi ((int16x8_t) __a); ++ return (uint64x2_t) __a; + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vreinterpretq_u64_u32 (uint32x4_t __a) + { +- return (uint64x2_t) __builtin_aarch64_reinterpretv2div4si ((int32x4_t) __a); ++ return (uint64x2_t) __a; + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vreinterpretq_u64_p8 (poly8x16_t __a) + { +- return (uint64x2_t) __builtin_aarch64_reinterpretv2div16qi ((int8x16_t) +- __a); ++ return (uint64x2_t) __a; + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vreinterpretq_u64_p16 (poly16x8_t __a) + { +- return (uint64x2_t) __builtin_aarch64_reinterpretv2div8hi ((int16x8_t) __a); ++ return (uint64x2_t) __a; + } + + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) ++vreinterpret_s8_f64 (float64x1_t __a) ++{ ++ return __builtin_aarch64_reinterpretv8qidf (__a); ++} ++ ++__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + vreinterpret_s8_s16 (int16x4_t __a) + { +- return (int8x8_t) __builtin_aarch64_reinterpretv8qiv4hi (__a); ++ return (int8x8_t) __a; + } + + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + vreinterpret_s8_s32 (int32x2_t __a) + { +- return (int8x8_t) __builtin_aarch64_reinterpretv8qiv2si (__a); ++ return (int8x8_t) __a; + } + + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + vreinterpret_s8_s64 (int64x1_t __a) + { +- return (int8x8_t) __builtin_aarch64_reinterpretv8qidi (__a); ++ return (int8x8_t) __a; + } + + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + vreinterpret_s8_f32 (float32x2_t __a) + { +- return (int8x8_t) __builtin_aarch64_reinterpretv8qiv2sf (__a); ++ return (int8x8_t) __a; + } + + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + vreinterpret_s8_u8 (uint8x8_t __a) + { +- return (int8x8_t) __builtin_aarch64_reinterpretv8qiv8qi ((int8x8_t) __a); ++ return (int8x8_t) __a; + } + + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + vreinterpret_s8_u16 (uint16x4_t __a) + { +- return (int8x8_t) __builtin_aarch64_reinterpretv8qiv4hi ((int16x4_t) __a); ++ return (int8x8_t) __a; + } + + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + vreinterpret_s8_u32 (uint32x2_t __a) + { +- return (int8x8_t) __builtin_aarch64_reinterpretv8qiv2si ((int32x2_t) __a); ++ return (int8x8_t) __a; + } + + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + vreinterpret_s8_u64 (uint64x1_t __a) + { +- return (int8x8_t) __builtin_aarch64_reinterpretv8qidi ((int64x1_t) __a); ++ return (int8x8_t) __a; + } + + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + vreinterpret_s8_p8 (poly8x8_t __a) + { +- return (int8x8_t) __builtin_aarch64_reinterpretv8qiv8qi ((int8x8_t) __a); ++ return (int8x8_t) __a; + } + + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + vreinterpret_s8_p16 (poly16x4_t __a) + { +- return (int8x8_t) __builtin_aarch64_reinterpretv8qiv4hi ((int16x4_t) __a); ++ return (int8x8_t) __a; + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) ++vreinterpretq_s8_f64 (float64x2_t __a) ++{ ++ return (int8x16_t) __a; ++} ++ ++__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_s8_s16 (int16x8_t __a) + { +- return (int8x16_t) __builtin_aarch64_reinterpretv16qiv8hi (__a); ++ return (int8x16_t) __a; + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_s8_s32 (int32x4_t __a) + { +- return (int8x16_t) __builtin_aarch64_reinterpretv16qiv4si (__a); ++ return (int8x16_t) __a; + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_s8_s64 (int64x2_t __a) + { +- return (int8x16_t) __builtin_aarch64_reinterpretv16qiv2di (__a); ++ return (int8x16_t) __a; + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_s8_f32 (float32x4_t __a) + { +- return (int8x16_t) __builtin_aarch64_reinterpretv16qiv4sf (__a); ++ return (int8x16_t) __a; + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_s8_u8 (uint8x16_t __a) + { +- return (int8x16_t) __builtin_aarch64_reinterpretv16qiv16qi ((int8x16_t) +- __a); ++ return (int8x16_t) __a; + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_s8_u16 (uint16x8_t __a) + { +- return (int8x16_t) __builtin_aarch64_reinterpretv16qiv8hi ((int16x8_t) __a); ++ return (int8x16_t) __a; + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_s8_u32 (uint32x4_t __a) + { +- return (int8x16_t) __builtin_aarch64_reinterpretv16qiv4si ((int32x4_t) __a); ++ return (int8x16_t) __a; + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_s8_u64 (uint64x2_t __a) + { +- return (int8x16_t) __builtin_aarch64_reinterpretv16qiv2di ((int64x2_t) __a); ++ return (int8x16_t) __a; + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_s8_p8 (poly8x16_t __a) + { +- return (int8x16_t) __builtin_aarch64_reinterpretv16qiv16qi ((int8x16_t) +- __a); ++ return (int8x16_t) __a; + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_s8_p16 (poly16x8_t __a) + { +- return (int8x16_t) __builtin_aarch64_reinterpretv16qiv8hi ((int16x8_t) __a); ++ return (int8x16_t) __a; + } + + __extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) ++vreinterpret_s16_f64 (float64x1_t __a) ++{ ++ return __builtin_aarch64_reinterpretv4hidf (__a); ++} ++ ++__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) + vreinterpret_s16_s8 (int8x8_t __a) + { +- return (int16x4_t) __builtin_aarch64_reinterpretv4hiv8qi (__a); ++ return (int16x4_t) __a; + } + + __extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) + vreinterpret_s16_s32 (int32x2_t __a) + { +- return (int16x4_t) __builtin_aarch64_reinterpretv4hiv2si (__a); ++ return (int16x4_t) __a; + } + + __extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) + vreinterpret_s16_s64 (int64x1_t __a) + { +- return (int16x4_t) __builtin_aarch64_reinterpretv4hidi (__a); ++ return (int16x4_t) __a; + } + + __extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) + vreinterpret_s16_f32 (float32x2_t __a) + { +- return (int16x4_t) __builtin_aarch64_reinterpretv4hiv2sf (__a); ++ return (int16x4_t) __a; + } + + __extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) + vreinterpret_s16_u8 (uint8x8_t __a) + { +- return (int16x4_t) __builtin_aarch64_reinterpretv4hiv8qi ((int8x8_t) __a); ++ return (int16x4_t) __a; + } + + __extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) + vreinterpret_s16_u16 (uint16x4_t __a) + { +- return (int16x4_t) __builtin_aarch64_reinterpretv4hiv4hi ((int16x4_t) __a); ++ return (int16x4_t) __a; + } + + __extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) + vreinterpret_s16_u32 (uint32x2_t __a) + { +- return (int16x4_t) __builtin_aarch64_reinterpretv4hiv2si ((int32x2_t) __a); ++ return (int16x4_t) __a; + } + + __extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) + vreinterpret_s16_u64 (uint64x1_t __a) + { +- return (int16x4_t) __builtin_aarch64_reinterpretv4hidi ((int64x1_t) __a); ++ return (int16x4_t) __a; + } + + __extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) + vreinterpret_s16_p8 (poly8x8_t __a) + { +- return (int16x4_t) __builtin_aarch64_reinterpretv4hiv8qi ((int8x8_t) __a); ++ return (int16x4_t) __a; + } + + __extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) + vreinterpret_s16_p16 (poly16x4_t __a) + { +- return (int16x4_t) __builtin_aarch64_reinterpretv4hiv4hi ((int16x4_t) __a); ++ return (int16x4_t) __a; + } + + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) ++vreinterpretq_s16_f64 (float64x2_t __a) ++{ ++ return (int16x8_t) __a; ++} ++ ++__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_s16_s8 (int8x16_t __a) + { +- return (int16x8_t) __builtin_aarch64_reinterpretv8hiv16qi (__a); ++ return (int16x8_t) __a; + } + + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_s16_s32 (int32x4_t __a) + { +- return (int16x8_t) __builtin_aarch64_reinterpretv8hiv4si (__a); ++ return (int16x8_t) __a; + } + + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_s16_s64 (int64x2_t __a) + { +- return (int16x8_t) __builtin_aarch64_reinterpretv8hiv2di (__a); ++ return (int16x8_t) __a; + } + + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_s16_f32 (float32x4_t __a) + { +- return (int16x8_t) __builtin_aarch64_reinterpretv8hiv4sf (__a); ++ return (int16x8_t) __a; + } + + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_s16_u8 (uint8x16_t __a) + { +- return (int16x8_t) __builtin_aarch64_reinterpretv8hiv16qi ((int8x16_t) __a); ++ return (int16x8_t) __a; + } + + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_s16_u16 (uint16x8_t __a) + { +- return (int16x8_t) __builtin_aarch64_reinterpretv8hiv8hi ((int16x8_t) __a); ++ return (int16x8_t) __a; + } + + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_s16_u32 (uint32x4_t __a) + { +- return (int16x8_t) __builtin_aarch64_reinterpretv8hiv4si ((int32x4_t) __a); ++ return (int16x8_t) __a; + } + + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_s16_u64 (uint64x2_t __a) + { +- return (int16x8_t) __builtin_aarch64_reinterpretv8hiv2di ((int64x2_t) __a); ++ return (int16x8_t) __a; + } + + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_s16_p8 (poly8x16_t __a) + { +- return (int16x8_t) __builtin_aarch64_reinterpretv8hiv16qi ((int8x16_t) __a); ++ return (int16x8_t) __a; + } + + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_s16_p16 (poly16x8_t __a) + { +- return (int16x8_t) __builtin_aarch64_reinterpretv8hiv8hi ((int16x8_t) __a); ++ return (int16x8_t) __a; + } + + __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) ++vreinterpret_s32_f64 (float64x1_t __a) ++{ ++ return __builtin_aarch64_reinterpretv2sidf (__a); ++} ++ ++__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) + vreinterpret_s32_s8 (int8x8_t __a) + { +- return (int32x2_t) __builtin_aarch64_reinterpretv2siv8qi (__a); ++ return (int32x2_t) __a; + } + + __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) + vreinterpret_s32_s16 (int16x4_t __a) + { +- return (int32x2_t) __builtin_aarch64_reinterpretv2siv4hi (__a); ++ return (int32x2_t) __a; + } + + __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) + vreinterpret_s32_s64 (int64x1_t __a) + { +- return (int32x2_t) __builtin_aarch64_reinterpretv2sidi (__a); ++ return (int32x2_t) __a; + } + + __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) + vreinterpret_s32_f32 (float32x2_t __a) + { +- return (int32x2_t) __builtin_aarch64_reinterpretv2siv2sf (__a); ++ return (int32x2_t) __a; + } + + __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) + vreinterpret_s32_u8 (uint8x8_t __a) + { +- return (int32x2_t) __builtin_aarch64_reinterpretv2siv8qi ((int8x8_t) __a); ++ return (int32x2_t) __a; + } + + __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) + vreinterpret_s32_u16 (uint16x4_t __a) + { +- return (int32x2_t) __builtin_aarch64_reinterpretv2siv4hi ((int16x4_t) __a); ++ return (int32x2_t) __a; + } + + __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) + vreinterpret_s32_u32 (uint32x2_t __a) + { +- return (int32x2_t) __builtin_aarch64_reinterpretv2siv2si ((int32x2_t) __a); ++ return (int32x2_t) __a; + } + + __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) + vreinterpret_s32_u64 (uint64x1_t __a) + { +- return (int32x2_t) __builtin_aarch64_reinterpretv2sidi ((int64x1_t) __a); ++ return (int32x2_t) __a; + } + + __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) + vreinterpret_s32_p8 (poly8x8_t __a) + { +- return (int32x2_t) __builtin_aarch64_reinterpretv2siv8qi ((int8x8_t) __a); ++ return (int32x2_t) __a; + } + + __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) + vreinterpret_s32_p16 (poly16x4_t __a) + { +- return (int32x2_t) __builtin_aarch64_reinterpretv2siv4hi ((int16x4_t) __a); ++ return (int32x2_t) __a; + } + + __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) ++vreinterpretq_s32_f64 (float64x2_t __a) ++{ ++ return (int32x4_t) __a; ++} ++ ++__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_s32_s8 (int8x16_t __a) + { +- return (int32x4_t) __builtin_aarch64_reinterpretv4siv16qi (__a); ++ return (int32x4_t) __a; + } + + __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_s32_s16 (int16x8_t __a) + { +- return (int32x4_t) __builtin_aarch64_reinterpretv4siv8hi (__a); ++ return (int32x4_t) __a; + } + + __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_s32_s64 (int64x2_t __a) + { +- return (int32x4_t) __builtin_aarch64_reinterpretv4siv2di (__a); ++ return (int32x4_t) __a; + } + + __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_s32_f32 (float32x4_t __a) + { +- return (int32x4_t) __builtin_aarch64_reinterpretv4siv4sf (__a); ++ return (int32x4_t) __a; + } + + __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_s32_u8 (uint8x16_t __a) + { +- return (int32x4_t) __builtin_aarch64_reinterpretv4siv16qi ((int8x16_t) __a); ++ return (int32x4_t) __a; + } + + __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_s32_u16 (uint16x8_t __a) + { +- return (int32x4_t) __builtin_aarch64_reinterpretv4siv8hi ((int16x8_t) __a); ++ return (int32x4_t) __a; + } + + __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_s32_u32 (uint32x4_t __a) + { +- return (int32x4_t) __builtin_aarch64_reinterpretv4siv4si ((int32x4_t) __a); ++ return (int32x4_t) __a; + } + + __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_s32_u64 (uint64x2_t __a) + { +- return (int32x4_t) __builtin_aarch64_reinterpretv4siv2di ((int64x2_t) __a); ++ return (int32x4_t) __a; + } + + __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_s32_p8 (poly8x16_t __a) + { +- return (int32x4_t) __builtin_aarch64_reinterpretv4siv16qi ((int8x16_t) __a); ++ return (int32x4_t) __a; + } + + __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_s32_p16 (poly16x8_t __a) + { +- return (int32x4_t) __builtin_aarch64_reinterpretv4siv8hi ((int16x8_t) __a); ++ return (int32x4_t) __a; + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vreinterpret_u8_f64 (float64x1_t __a) ++{ ++ return __builtin_aarch64_reinterpretv8qidf_us (__a); ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vreinterpret_u8_s8 (int8x8_t __a) + { +- return (uint8x8_t) __builtin_aarch64_reinterpretv8qiv8qi (__a); ++ return (uint8x8_t) __a; + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vreinterpret_u8_s16 (int16x4_t __a) + { +- return (uint8x8_t) __builtin_aarch64_reinterpretv8qiv4hi (__a); ++ return (uint8x8_t) __a; + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vreinterpret_u8_s32 (int32x2_t __a) + { +- return (uint8x8_t) __builtin_aarch64_reinterpretv8qiv2si (__a); ++ return (uint8x8_t) __a; + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vreinterpret_u8_s64 (int64x1_t __a) + { +- return (uint8x8_t) __builtin_aarch64_reinterpretv8qidi (__a); ++ return (uint8x8_t) __a; + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vreinterpret_u8_f32 (float32x2_t __a) + { +- return (uint8x8_t) __builtin_aarch64_reinterpretv8qiv2sf (__a); ++ return (uint8x8_t) __a; + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vreinterpret_u8_u16 (uint16x4_t __a) + { +- return (uint8x8_t) __builtin_aarch64_reinterpretv8qiv4hi ((int16x4_t) __a); ++ return (uint8x8_t) __a; + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vreinterpret_u8_u32 (uint32x2_t __a) + { +- return (uint8x8_t) __builtin_aarch64_reinterpretv8qiv2si ((int32x2_t) __a); ++ return (uint8x8_t) __a; + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vreinterpret_u8_u64 (uint64x1_t __a) + { +- return (uint8x8_t) __builtin_aarch64_reinterpretv8qidi ((int64x1_t) __a); ++ return (uint8x8_t) __a; + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vreinterpret_u8_p8 (poly8x8_t __a) + { +- return (uint8x8_t) __builtin_aarch64_reinterpretv8qiv8qi ((int8x8_t) __a); ++ return (uint8x8_t) __a; + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vreinterpret_u8_p16 (poly16x4_t __a) + { +- return (uint8x8_t) __builtin_aarch64_reinterpretv8qiv4hi ((int16x4_t) __a); ++ return (uint8x8_t) __a; + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vreinterpretq_u8_f64 (float64x2_t __a) ++{ ++ return (uint8x16_t) __a; ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_u8_s8 (int8x16_t __a) + { +- return (uint8x16_t) __builtin_aarch64_reinterpretv16qiv16qi (__a); ++ return (uint8x16_t) __a; + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_u8_s16 (int16x8_t __a) + { +- return (uint8x16_t) __builtin_aarch64_reinterpretv16qiv8hi (__a); ++ return (uint8x16_t) __a; + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_u8_s32 (int32x4_t __a) + { +- return (uint8x16_t) __builtin_aarch64_reinterpretv16qiv4si (__a); ++ return (uint8x16_t) __a; + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_u8_s64 (int64x2_t __a) + { +- return (uint8x16_t) __builtin_aarch64_reinterpretv16qiv2di (__a); ++ return (uint8x16_t) __a; + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_u8_f32 (float32x4_t __a) + { +- return (uint8x16_t) __builtin_aarch64_reinterpretv16qiv4sf (__a); ++ return (uint8x16_t) __a; + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_u8_u16 (uint16x8_t __a) + { +- return (uint8x16_t) __builtin_aarch64_reinterpretv16qiv8hi ((int16x8_t) +- __a); ++ return (uint8x16_t) __a; + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_u8_u32 (uint32x4_t __a) + { +- return (uint8x16_t) __builtin_aarch64_reinterpretv16qiv4si ((int32x4_t) +- __a); ++ return (uint8x16_t) __a; + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_u8_u64 (uint64x2_t __a) + { +- return (uint8x16_t) __builtin_aarch64_reinterpretv16qiv2di ((int64x2_t) +- __a); ++ return (uint8x16_t) __a; + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_u8_p8 (poly8x16_t __a) + { +- return (uint8x16_t) __builtin_aarch64_reinterpretv16qiv16qi ((int8x16_t) +- __a); ++ return (uint8x16_t) __a; + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vreinterpretq_u8_p16 (poly16x8_t __a) + { +- return (uint8x16_t) __builtin_aarch64_reinterpretv16qiv8hi ((int16x8_t) +- __a); ++ return (uint8x16_t) __a; + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) ++vreinterpret_u16_f64 (float64x1_t __a) ++{ ++ return __builtin_aarch64_reinterpretv4hidf_us (__a); ++} ++ ++__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vreinterpret_u16_s8 (int8x8_t __a) + { +- return (uint16x4_t) __builtin_aarch64_reinterpretv4hiv8qi (__a); ++ return (uint16x4_t) __a; + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vreinterpret_u16_s16 (int16x4_t __a) + { +- return (uint16x4_t) __builtin_aarch64_reinterpretv4hiv4hi (__a); ++ return (uint16x4_t) __a; + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vreinterpret_u16_s32 (int32x2_t __a) + { +- return (uint16x4_t) __builtin_aarch64_reinterpretv4hiv2si (__a); ++ return (uint16x4_t) __a; + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vreinterpret_u16_s64 (int64x1_t __a) + { +- return (uint16x4_t) __builtin_aarch64_reinterpretv4hidi (__a); ++ return (uint16x4_t) __a; + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vreinterpret_u16_f32 (float32x2_t __a) + { +- return (uint16x4_t) __builtin_aarch64_reinterpretv4hiv2sf (__a); ++ return (uint16x4_t) __a; + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vreinterpret_u16_u8 (uint8x8_t __a) + { +- return (uint16x4_t) __builtin_aarch64_reinterpretv4hiv8qi ((int8x8_t) __a); ++ return (uint16x4_t) __a; + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vreinterpret_u16_u32 (uint32x2_t __a) + { +- return (uint16x4_t) __builtin_aarch64_reinterpretv4hiv2si ((int32x2_t) __a); ++ return (uint16x4_t) __a; + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vreinterpret_u16_u64 (uint64x1_t __a) + { +- return (uint16x4_t) __builtin_aarch64_reinterpretv4hidi ((int64x1_t) __a); ++ return (uint16x4_t) __a; + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vreinterpret_u16_p8 (poly8x8_t __a) + { +- return (uint16x4_t) __builtin_aarch64_reinterpretv4hiv8qi ((int8x8_t) __a); ++ return (uint16x4_t) __a; + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vreinterpret_u16_p16 (poly16x4_t __a) + { +- return (uint16x4_t) __builtin_aarch64_reinterpretv4hiv4hi ((int16x4_t) __a); ++ return (uint16x4_t) __a; + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) ++vreinterpretq_u16_f64 (float64x2_t __a) ++{ ++ return (uint16x8_t) __a; ++} ++ ++__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_u16_s8 (int8x16_t __a) + { +- return (uint16x8_t) __builtin_aarch64_reinterpretv8hiv16qi (__a); ++ return (uint16x8_t) __a; + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_u16_s16 (int16x8_t __a) + { +- return (uint16x8_t) __builtin_aarch64_reinterpretv8hiv8hi (__a); ++ return (uint16x8_t) __a; + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_u16_s32 (int32x4_t __a) + { +- return (uint16x8_t) __builtin_aarch64_reinterpretv8hiv4si (__a); ++ return (uint16x8_t) __a; + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_u16_s64 (int64x2_t __a) + { +- return (uint16x8_t) __builtin_aarch64_reinterpretv8hiv2di (__a); ++ return (uint16x8_t) __a; + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_u16_f32 (float32x4_t __a) + { +- return (uint16x8_t) __builtin_aarch64_reinterpretv8hiv4sf (__a); ++ return (uint16x8_t) __a; + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_u16_u8 (uint8x16_t __a) + { +- return (uint16x8_t) __builtin_aarch64_reinterpretv8hiv16qi ((int8x16_t) +- __a); ++ return (uint16x8_t) __a; + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_u16_u32 (uint32x4_t __a) + { +- return (uint16x8_t) __builtin_aarch64_reinterpretv8hiv4si ((int32x4_t) __a); ++ return (uint16x8_t) __a; + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_u16_u64 (uint64x2_t __a) + { +- return (uint16x8_t) __builtin_aarch64_reinterpretv8hiv2di ((int64x2_t) __a); ++ return (uint16x8_t) __a; + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_u16_p8 (poly8x16_t __a) + { +- return (uint16x8_t) __builtin_aarch64_reinterpretv8hiv16qi ((int8x16_t) +- __a); ++ return (uint16x8_t) __a; + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vreinterpretq_u16_p16 (poly16x8_t __a) + { +- return (uint16x8_t) __builtin_aarch64_reinterpretv8hiv8hi ((int16x8_t) __a); ++ return (uint16x8_t) __a; + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vreinterpret_u32_f64 (float64x1_t __a) ++{ ++ return __builtin_aarch64_reinterpretv2sidf_us (__a); ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vreinterpret_u32_s8 (int8x8_t __a) + { +- return (uint32x2_t) __builtin_aarch64_reinterpretv2siv8qi (__a); ++ return (uint32x2_t) __a; + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vreinterpret_u32_s16 (int16x4_t __a) + { +- return (uint32x2_t) __builtin_aarch64_reinterpretv2siv4hi (__a); ++ return (uint32x2_t) __a; + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vreinterpret_u32_s32 (int32x2_t __a) + { +- return (uint32x2_t) __builtin_aarch64_reinterpretv2siv2si (__a); ++ return (uint32x2_t) __a; + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vreinterpret_u32_s64 (int64x1_t __a) + { +- return (uint32x2_t) __builtin_aarch64_reinterpretv2sidi (__a); ++ return (uint32x2_t) __a; + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vreinterpret_u32_f32 (float32x2_t __a) + { +- return (uint32x2_t) __builtin_aarch64_reinterpretv2siv2sf (__a); ++ return (uint32x2_t) __a; + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vreinterpret_u32_u8 (uint8x8_t __a) + { +- return (uint32x2_t) __builtin_aarch64_reinterpretv2siv8qi ((int8x8_t) __a); ++ return (uint32x2_t) __a; + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vreinterpret_u32_u16 (uint16x4_t __a) + { +- return (uint32x2_t) __builtin_aarch64_reinterpretv2siv4hi ((int16x4_t) __a); ++ return (uint32x2_t) __a; + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vreinterpret_u32_u64 (uint64x1_t __a) + { +- return (uint32x2_t) __builtin_aarch64_reinterpretv2sidi ((int64x1_t) __a); ++ return (uint32x2_t) __a; + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vreinterpret_u32_p8 (poly8x8_t __a) + { +- return (uint32x2_t) __builtin_aarch64_reinterpretv2siv8qi ((int8x8_t) __a); ++ return (uint32x2_t) __a; + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vreinterpret_u32_p16 (poly16x4_t __a) + { +- return (uint32x2_t) __builtin_aarch64_reinterpretv2siv4hi ((int16x4_t) __a); ++ return (uint32x2_t) __a; + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vreinterpretq_u32_f64 (float64x2_t __a) ++{ ++ return (uint32x4_t) __a; ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_u32_s8 (int8x16_t __a) + { +- return (uint32x4_t) __builtin_aarch64_reinterpretv4siv16qi (__a); ++ return (uint32x4_t) __a; + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_u32_s16 (int16x8_t __a) + { +- return (uint32x4_t) __builtin_aarch64_reinterpretv4siv8hi (__a); ++ return (uint32x4_t) __a; + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_u32_s32 (int32x4_t __a) + { +- return (uint32x4_t) __builtin_aarch64_reinterpretv4siv4si (__a); ++ return (uint32x4_t) __a; + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_u32_s64 (int64x2_t __a) + { +- return (uint32x4_t) __builtin_aarch64_reinterpretv4siv2di (__a); ++ return (uint32x4_t) __a; + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_u32_f32 (float32x4_t __a) + { +- return (uint32x4_t) __builtin_aarch64_reinterpretv4siv4sf (__a); ++ return (uint32x4_t) __a; + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_u32_u8 (uint8x16_t __a) + { +- return (uint32x4_t) __builtin_aarch64_reinterpretv4siv16qi ((int8x16_t) +- __a); ++ return (uint32x4_t) __a; + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_u32_u16 (uint16x8_t __a) + { +- return (uint32x4_t) __builtin_aarch64_reinterpretv4siv8hi ((int16x8_t) __a); ++ return (uint32x4_t) __a; + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_u32_u64 (uint64x2_t __a) + { +- return (uint32x4_t) __builtin_aarch64_reinterpretv4siv2di ((int64x2_t) __a); ++ return (uint32x4_t) __a; + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_u32_p8 (poly8x16_t __a) + { +- return (uint32x4_t) __builtin_aarch64_reinterpretv4siv16qi ((int8x16_t) +- __a); ++ return (uint32x4_t) __a; + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vreinterpretq_u32_p16 (poly16x8_t __a) + { +- return (uint32x4_t) __builtin_aarch64_reinterpretv4siv8hi ((int16x8_t) __a); ++ return (uint32x4_t) __a; + } + + #define __GET_LOW(__TYPE) \ +@@ -4064,6 +4297,85 @@ + + #undef __GET_LOW + ++#define __GET_HIGH(__TYPE) \ ++ uint64x2_t tmp = vreinterpretq_u64_##__TYPE (__a); \ ++ uint64x1_t hi = vcreate_u64 (vgetq_lane_u64 (tmp, 1)); \ ++ return vreinterpret_##__TYPE##_u64 (hi); ++ ++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) ++vget_high_f32 (float32x4_t __a) ++{ ++ __GET_HIGH (f32); ++} ++ ++__extension__ static __inline float64x1_t __attribute__ ((__always_inline__)) ++vget_high_f64 (float64x2_t __a) ++{ ++ __GET_HIGH (f64); ++} ++ ++__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) ++vget_high_p8 (poly8x16_t __a) ++{ ++ __GET_HIGH (p8); ++} ++ ++__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) ++vget_high_p16 (poly16x8_t __a) ++{ ++ __GET_HIGH (p16); ++} ++ ++__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) ++vget_high_s8 (int8x16_t __a) ++{ ++ __GET_HIGH (s8); ++} ++ ++__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) ++vget_high_s16 (int16x8_t __a) ++{ ++ __GET_HIGH (s16); ++} ++ ++__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) ++vget_high_s32 (int32x4_t __a) ++{ ++ __GET_HIGH (s32); ++} ++ ++__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) ++vget_high_s64 (int64x2_t __a) ++{ ++ __GET_HIGH (s64); ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vget_high_u8 (uint8x16_t __a) ++{ ++ __GET_HIGH (u8); ++} ++ ++__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) ++vget_high_u16 (uint16x8_t __a) ++{ ++ __GET_HIGH (u16); ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vget_high_u32 (uint32x4_t __a) ++{ ++ __GET_HIGH (u32); ++} ++ ++#undef __GET_HIGH ++ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vget_high_u64 (uint64x2_t __a) ++{ ++ return vcreate_u64 (vgetq_lane_u64 (__a, 1)); ++} ++ + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vcombine_s8 (int8x8_t __a, int8x8_t __b) + { +@@ -5408,318 +5720,6 @@ + return result; + } + +-#define vext_f32(a, b, c) \ +- __extension__ \ +- ({ \ +- float32x2_t b_ = (b); \ +- float32x2_t a_ = (a); \ +- float32x2_t result; \ +- __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*4" \ +- : "=w"(result) \ +- : "w"(a_), "w"(b_), "i"(c) \ +- : /* No clobbers */); \ +- result; \ +- }) +- +-#define vext_f64(a, b, c) \ +- __extension__ \ +- ({ \ +- float64x1_t b_ = (b); \ +- float64x1_t a_ = (a); \ +- float64x1_t result; \ +- __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*8" \ +- : "=w"(result) \ +- : "w"(a_), "w"(b_), "i"(c) \ +- : /* No clobbers */); \ +- result; \ +- }) +- +-#define vext_p8(a, b, c) \ +- __extension__ \ +- ({ \ +- poly8x8_t b_ = (b); \ +- poly8x8_t a_ = (a); \ +- poly8x8_t result; \ +- __asm__ ("ext %0.8b,%1.8b,%2.8b,%3" \ +- : "=w"(result) \ +- : "w"(a_), "w"(b_), "i"(c) \ +- : /* No clobbers */); \ +- result; \ +- }) +- +-#define vext_p16(a, b, c) \ +- __extension__ \ +- ({ \ +- poly16x4_t b_ = (b); \ +- poly16x4_t a_ = (a); \ +- poly16x4_t result; \ +- __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*2" \ +- : "=w"(result) \ +- : "w"(a_), "w"(b_), "i"(c) \ +- : /* No clobbers */); \ +- result; \ +- }) +- +-#define vext_s8(a, b, c) \ +- __extension__ \ +- ({ \ +- int8x8_t b_ = (b); \ +- int8x8_t a_ = (a); \ +- int8x8_t result; \ +- __asm__ ("ext %0.8b,%1.8b,%2.8b,%3" \ +- : "=w"(result) \ +- : "w"(a_), "w"(b_), "i"(c) \ +- : /* No clobbers */); \ +- result; \ +- }) +- +-#define vext_s16(a, b, c) \ +- __extension__ \ +- ({ \ +- int16x4_t b_ = (b); \ +- int16x4_t a_ = (a); \ +- int16x4_t result; \ +- __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*2" \ +- : "=w"(result) \ +- : "w"(a_), "w"(b_), "i"(c) \ +- : /* No clobbers */); \ +- result; \ +- }) +- +-#define vext_s32(a, b, c) \ +- __extension__ \ +- ({ \ +- int32x2_t b_ = (b); \ +- int32x2_t a_ = (a); \ +- int32x2_t result; \ +- __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*4" \ +- : "=w"(result) \ +- : "w"(a_), "w"(b_), "i"(c) \ +- : /* No clobbers */); \ +- result; \ +- }) +- +-#define vext_s64(a, b, c) \ +- __extension__ \ +- ({ \ +- int64x1_t b_ = (b); \ +- int64x1_t a_ = (a); \ +- int64x1_t result; \ +- __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*8" \ +- : "=w"(result) \ +- : "w"(a_), "w"(b_), "i"(c) \ +- : /* No clobbers */); \ +- result; \ +- }) +- +-#define vext_u8(a, b, c) \ +- __extension__ \ +- ({ \ +- uint8x8_t b_ = (b); \ +- uint8x8_t a_ = (a); \ +- uint8x8_t result; \ +- __asm__ ("ext %0.8b,%1.8b,%2.8b,%3" \ +- : "=w"(result) \ +- : "w"(a_), "w"(b_), "i"(c) \ +- : /* No clobbers */); \ +- result; \ +- }) +- +-#define vext_u16(a, b, c) \ +- __extension__ \ +- ({ \ +- uint16x4_t b_ = (b); \ +- uint16x4_t a_ = (a); \ +- uint16x4_t result; \ +- __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*2" \ +- : "=w"(result) \ +- : "w"(a_), "w"(b_), "i"(c) \ +- : /* No clobbers */); \ +- result; \ +- }) +- +-#define vext_u32(a, b, c) \ +- __extension__ \ +- ({ \ +- uint32x2_t b_ = (b); \ +- uint32x2_t a_ = (a); \ +- uint32x2_t result; \ +- __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*4" \ +- : "=w"(result) \ +- : "w"(a_), "w"(b_), "i"(c) \ +- : /* No clobbers */); \ +- result; \ +- }) +- +-#define vext_u64(a, b, c) \ +- __extension__ \ +- ({ \ +- uint64x1_t b_ = (b); \ +- uint64x1_t a_ = (a); \ +- uint64x1_t result; \ +- __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*8" \ +- : "=w"(result) \ +- : "w"(a_), "w"(b_), "i"(c) \ +- : /* No clobbers */); \ +- result; \ +- }) +- +-#define vextq_f32(a, b, c) \ +- __extension__ \ +- ({ \ +- float32x4_t b_ = (b); \ +- float32x4_t a_ = (a); \ +- float32x4_t result; \ +- __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*4" \ +- : "=w"(result) \ +- : "w"(a_), "w"(b_), "i"(c) \ +- : /* No clobbers */); \ +- result; \ +- }) +- +-#define vextq_f64(a, b, c) \ +- __extension__ \ +- ({ \ +- float64x2_t b_ = (b); \ +- float64x2_t a_ = (a); \ +- float64x2_t result; \ +- __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*8" \ +- : "=w"(result) \ +- : "w"(a_), "w"(b_), "i"(c) \ +- : /* No clobbers */); \ +- result; \ +- }) +- +-#define vextq_p8(a, b, c) \ +- __extension__ \ +- ({ \ +- poly8x16_t b_ = (b); \ +- poly8x16_t a_ = (a); \ +- poly8x16_t result; \ +- __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3" \ +- : "=w"(result) \ +- : "w"(a_), "w"(b_), "i"(c) \ +- : /* No clobbers */); \ +- result; \ +- }) +- +-#define vextq_p16(a, b, c) \ +- __extension__ \ +- ({ \ +- poly16x8_t b_ = (b); \ +- poly16x8_t a_ = (a); \ +- poly16x8_t result; \ +- __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*2" \ +- : "=w"(result) \ +- : "w"(a_), "w"(b_), "i"(c) \ +- : /* No clobbers */); \ +- result; \ +- }) +- +-#define vextq_s8(a, b, c) \ +- __extension__ \ +- ({ \ +- int8x16_t b_ = (b); \ +- int8x16_t a_ = (a); \ +- int8x16_t result; \ +- __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3" \ +- : "=w"(result) \ +- : "w"(a_), "w"(b_), "i"(c) \ +- : /* No clobbers */); \ +- result; \ +- }) +- +-#define vextq_s16(a, b, c) \ +- __extension__ \ +- ({ \ +- int16x8_t b_ = (b); \ +- int16x8_t a_ = (a); \ +- int16x8_t result; \ +- __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*2" \ +- : "=w"(result) \ +- : "w"(a_), "w"(b_), "i"(c) \ +- : /* No clobbers */); \ +- result; \ +- }) +- +-#define vextq_s32(a, b, c) \ +- __extension__ \ +- ({ \ +- int32x4_t b_ = (b); \ +- int32x4_t a_ = (a); \ +- int32x4_t result; \ +- __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*4" \ +- : "=w"(result) \ +- : "w"(a_), "w"(b_), "i"(c) \ +- : /* No clobbers */); \ +- result; \ +- }) +- +-#define vextq_s64(a, b, c) \ +- __extension__ \ +- ({ \ +- int64x2_t b_ = (b); \ +- int64x2_t a_ = (a); \ +- int64x2_t result; \ +- __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*8" \ +- : "=w"(result) \ +- : "w"(a_), "w"(b_), "i"(c) \ +- : /* No clobbers */); \ +- result; \ +- }) +- +-#define vextq_u8(a, b, c) \ +- __extension__ \ +- ({ \ +- uint8x16_t b_ = (b); \ +- uint8x16_t a_ = (a); \ +- uint8x16_t result; \ +- __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3" \ +- : "=w"(result) \ +- : "w"(a_), "w"(b_), "i"(c) \ +- : /* No clobbers */); \ +- result; \ +- }) +- +-#define vextq_u16(a, b, c) \ +- __extension__ \ +- ({ \ +- uint16x8_t b_ = (b); \ +- uint16x8_t a_ = (a); \ +- uint16x8_t result; \ +- __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*2" \ +- : "=w"(result) \ +- : "w"(a_), "w"(b_), "i"(c) \ +- : /* No clobbers */); \ +- result; \ +- }) +- +-#define vextq_u32(a, b, c) \ +- __extension__ \ +- ({ \ +- uint32x4_t b_ = (b); \ +- uint32x4_t a_ = (a); \ +- uint32x4_t result; \ +- __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*4" \ +- : "=w"(result) \ +- : "w"(a_), "w"(b_), "i"(c) \ +- : /* No clobbers */); \ +- result; \ +- }) +- +-#define vextq_u64(a, b, c) \ +- __extension__ \ +- ({ \ +- uint64x2_t b_ = (b); \ +- uint64x2_t a_ = (a); \ +- uint64x2_t result; \ +- __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*8" \ +- : "=w"(result) \ +- : "w"(a_), "w"(b_), "i"(c) \ +- : /* No clobbers */); \ +- result; \ +- }) +- + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) + vfma_f32 (float32x2_t a, float32x2_t b, float32x2_t c) + { +@@ -5819,139 +5819,7 @@ + return result; + } + +-__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +-vget_high_f32 (float32x4_t a) +-{ +- float32x2_t result; +- __asm__ ("ins %0.d[0], %1.d[1]" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64x1_t __attribute__ ((__always_inline__)) +-vget_high_f64 (float64x2_t a) +-{ +- float64x1_t result; +- __asm__ ("ins %0.d[0], %1.d[1]" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) +-vget_high_p8 (poly8x16_t a) +-{ +- poly8x8_t result; +- __asm__ ("ins %0.d[0], %1.d[1]" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) +-vget_high_p16 (poly16x8_t a) +-{ +- poly16x4_t result; +- __asm__ ("ins %0.d[0], %1.d[1]" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +-vget_high_s8 (int8x16_t a) +-{ +- int8x8_t result; +- __asm__ ("ins %0.d[0], %1.d[1]" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) +-vget_high_s16 (int16x8_t a) +-{ +- int16x4_t result; +- __asm__ ("ins %0.d[0], %1.d[1]" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) +-vget_high_s32 (int32x4_t a) +-{ +- int32x2_t result; +- __asm__ ("ins %0.d[0], %1.d[1]" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) +-vget_high_s64 (int64x2_t a) +-{ +- int64x1_t result; +- __asm__ ("ins %0.d[0], %1.d[1]" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +-vget_high_u8 (uint8x16_t a) +-{ +- uint8x8_t result; +- __asm__ ("ins %0.d[0], %1.d[1]" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +-vget_high_u16 (uint16x8_t a) +-{ +- uint16x4_t result; +- __asm__ ("ins %0.d[0], %1.d[1]" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +-vget_high_u32 (uint32x4_t a) +-{ +- uint32x2_t result; +- __asm__ ("ins %0.d[0], %1.d[1]" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +-vget_high_u64 (uint64x2_t a) +-{ +- uint64x1_t result; +- __asm__ ("ins %0.d[0], %1.d[1]" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + vhsub_s8 (int8x8_t a, int8x8_t b) + { + int8x8_t result; +@@ -6784,7 +6652,7 @@ + #define vmlal_high_lane_s16(a, b, c, d) \ + __extension__ \ + ({ \ +- int16x8_t c_ = (c); \ ++ int16x4_t c_ = (c); \ + int16x8_t b_ = (b); \ + int32x4_t a_ = (a); \ + int32x4_t result; \ +@@ -6798,7 +6666,7 @@ + #define vmlal_high_lane_s32(a, b, c, d) \ + __extension__ \ + ({ \ +- int32x4_t c_ = (c); \ ++ int32x2_t c_ = (c); \ + int32x4_t b_ = (b); \ + int64x2_t a_ = (a); \ + int64x2_t result; \ +@@ -6812,7 +6680,7 @@ + #define vmlal_high_lane_u16(a, b, c, d) \ + __extension__ \ + ({ \ +- uint16x8_t c_ = (c); \ ++ uint16x4_t c_ = (c); \ + uint16x8_t b_ = (b); \ + uint32x4_t a_ = (a); \ + uint32x4_t result; \ +@@ -6826,7 +6694,7 @@ + #define vmlal_high_lane_u32(a, b, c, d) \ + __extension__ \ + ({ \ +- uint32x4_t c_ = (c); \ ++ uint32x2_t c_ = (c); \ + uint32x4_t b_ = (b); \ + uint64x2_t a_ = (a); \ + uint64x2_t result; \ +@@ -7237,18 +7105,6 @@ + return result; + } + +-__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) +-vmlaq_n_f64 (float64x2_t a, float64x2_t b, float64_t c) +-{ +- float64x2_t result; +- float64x2_t t1; +- __asm__ ("fmul %1.2d, %3.2d, %4.d[0]; fadd %0.2d, %0.2d, %1.2d" +- : "=w"(result), "=w"(t1) +- : "0"(a), "w"(b), "w"(c) +- : /* No clobbers */); +- return result; +-} +- + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) + vmlaq_n_s16 (int16x8_t a, int16x8_t b, int16_t c) + { +@@ -7484,7 +7340,7 @@ + #define vmlsl_high_lane_s16(a, b, c, d) \ + __extension__ \ + ({ \ +- int16x8_t c_ = (c); \ ++ int16x4_t c_ = (c); \ + int16x8_t b_ = (b); \ + int32x4_t a_ = (a); \ + int32x4_t result; \ +@@ -7498,7 +7354,7 @@ + #define vmlsl_high_lane_s32(a, b, c, d) \ + __extension__ \ + ({ \ +- int32x4_t c_ = (c); \ ++ int32x2_t c_ = (c); \ + int32x4_t b_ = (b); \ + int64x2_t a_ = (a); \ + int64x2_t result; \ +@@ -7512,7 +7368,7 @@ + #define vmlsl_high_lane_u16(a, b, c, d) \ + __extension__ \ + ({ \ +- uint16x8_t c_ = (c); \ ++ uint16x4_t c_ = (c); \ + uint16x8_t b_ = (b); \ + uint32x4_t a_ = (a); \ + uint32x4_t result; \ +@@ -7526,7 +7382,7 @@ + #define vmlsl_high_lane_u32(a, b, c, d) \ + __extension__ \ + ({ \ +- uint32x4_t c_ = (c); \ ++ uint32x2_t c_ = (c); \ + uint32x4_t b_ = (b); \ + uint64x2_t a_ = (a); \ + uint64x2_t result; \ +@@ -7937,18 +7793,6 @@ + return result; + } + +-__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) +-vmlsq_n_f64 (float64x2_t a, float64x2_t b, float64_t c) +-{ +- float64x2_t result; +- float64x2_t t1; +- __asm__ ("fmul %1.2d, %3.2d, %4.d[0]; fsub %0.2d, %0.2d, %1.2d" +- : "=w"(result), "=w"(t1) +- : "0"(a), "w"(b), "x"(c) +- : /* No clobbers */); +- return result; +-} +- + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) + vmlsq_n_s16 (int16x8_t a, int16x8_t b, int16_t c) + { +@@ -9312,57 +9156,7 @@ + return result; + } + +-__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +-vpadd_s8 (int8x8_t __a, int8x8_t __b) +-{ +- return __builtin_aarch64_addpv8qi (__a, __b); +-} +- + __extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) +-vpadd_s16 (int16x4_t __a, int16x4_t __b) +-{ +- return __builtin_aarch64_addpv4hi (__a, __b); +-} +- +-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) +-vpadd_s32 (int32x2_t __a, int32x2_t __b) +-{ +- return __builtin_aarch64_addpv2si (__a, __b); +-} +- +-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +-vpadd_u8 (uint8x8_t __a, uint8x8_t __b) +-{ +- return (uint8x8_t) __builtin_aarch64_addpv8qi ((int8x8_t) __a, +- (int8x8_t) __b); +-} +- +-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +-vpadd_u16 (uint16x4_t __a, uint16x4_t __b) +-{ +- return (uint16x4_t) __builtin_aarch64_addpv4hi ((int16x4_t) __a, +- (int16x4_t) __b); +-} +- +-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +-vpadd_u32 (uint32x2_t __a, uint32x2_t __b) +-{ +- return (uint32x2_t) __builtin_aarch64_addpv2si ((int32x2_t) __a, +- (int32x2_t) __b); +-} +- +-__extension__ static __inline float64_t __attribute__ ((__always_inline__)) +-vpaddd_f64 (float64x2_t a) +-{ +- float64_t result; +- __asm__ ("faddp %d0,%1.2d" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) + vpaddl_s8 (int8x8_t a) + { + int16x4_t result; +@@ -10556,50 +10350,6 @@ + result; \ + }) + +-__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +-vrbit_s8 (int8x8_t a) +-{ +- int8x8_t result; +- __asm__ ("rbit %0.8b,%1.8b" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +-vrbit_u8 (uint8x8_t a) +-{ +- uint8x8_t result; +- __asm__ ("rbit %0.8b,%1.8b" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +-vrbitq_s8 (int8x16_t a) +-{ +- int8x16_t result; +- __asm__ ("rbit %0.16b,%1.16b" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +-vrbitq_u8 (uint8x16_t a) +-{ +- uint8x16_t result; +- __asm__ ("rbit %0.16b,%1.16b" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vrecpe_u32 (uint32x2_t a) + { +@@ -10622,402 +10372,6 @@ + return result; + } + +-__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) +-vrev16_p8 (poly8x8_t a) +-{ +- poly8x8_t result; +- __asm__ ("rev16 %0.8b,%1.8b" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +-vrev16_s8 (int8x8_t a) +-{ +- int8x8_t result; +- __asm__ ("rev16 %0.8b,%1.8b" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +-vrev16_u8 (uint8x8_t a) +-{ +- uint8x8_t result; +- __asm__ ("rev16 %0.8b,%1.8b" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) +-vrev16q_p8 (poly8x16_t a) +-{ +- poly8x16_t result; +- __asm__ ("rev16 %0.16b,%1.16b" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +-vrev16q_s8 (int8x16_t a) +-{ +- int8x16_t result; +- __asm__ ("rev16 %0.16b,%1.16b" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +-vrev16q_u8 (uint8x16_t a) +-{ +- uint8x16_t result; +- __asm__ ("rev16 %0.16b,%1.16b" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) +-vrev32_p8 (poly8x8_t a) +-{ +- poly8x8_t result; +- __asm__ ("rev32 %0.8b,%1.8b" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) +-vrev32_p16 (poly16x4_t a) +-{ +- poly16x4_t result; +- __asm__ ("rev32 %0.4h,%1.4h" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +-vrev32_s8 (int8x8_t a) +-{ +- int8x8_t result; +- __asm__ ("rev32 %0.8b,%1.8b" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) +-vrev32_s16 (int16x4_t a) +-{ +- int16x4_t result; +- __asm__ ("rev32 %0.4h,%1.4h" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +-vrev32_u8 (uint8x8_t a) +-{ +- uint8x8_t result; +- __asm__ ("rev32 %0.8b,%1.8b" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +-vrev32_u16 (uint16x4_t a) +-{ +- uint16x4_t result; +- __asm__ ("rev32 %0.4h,%1.4h" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) +-vrev32q_p8 (poly8x16_t a) +-{ +- poly8x16_t result; +- __asm__ ("rev32 %0.16b,%1.16b" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) +-vrev32q_p16 (poly16x8_t a) +-{ +- poly16x8_t result; +- __asm__ ("rev32 %0.8h,%1.8h" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +-vrev32q_s8 (int8x16_t a) +-{ +- int8x16_t result; +- __asm__ ("rev32 %0.16b,%1.16b" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) +-vrev32q_s16 (int16x8_t a) +-{ +- int16x8_t result; +- __asm__ ("rev32 %0.8h,%1.8h" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +-vrev32q_u8 (uint8x16_t a) +-{ +- uint8x16_t result; +- __asm__ ("rev32 %0.16b,%1.16b" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) +-vrev32q_u16 (uint16x8_t a) +-{ +- uint16x8_t result; +- __asm__ ("rev32 %0.8h,%1.8h" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +-vrev64_f32 (float32x2_t a) +-{ +- float32x2_t result; +- __asm__ ("rev64 %0.2s,%1.2s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) +-vrev64_p8 (poly8x8_t a) +-{ +- poly8x8_t result; +- __asm__ ("rev64 %0.8b,%1.8b" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) +-vrev64_p16 (poly16x4_t a) +-{ +- poly16x4_t result; +- __asm__ ("rev64 %0.4h,%1.4h" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +-vrev64_s8 (int8x8_t a) +-{ +- int8x8_t result; +- __asm__ ("rev64 %0.8b,%1.8b" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) +-vrev64_s16 (int16x4_t a) +-{ +- int16x4_t result; +- __asm__ ("rev64 %0.4h,%1.4h" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) +-vrev64_s32 (int32x2_t a) +-{ +- int32x2_t result; +- __asm__ ("rev64 %0.2s,%1.2s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +-vrev64_u8 (uint8x8_t a) +-{ +- uint8x8_t result; +- __asm__ ("rev64 %0.8b,%1.8b" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +-vrev64_u16 (uint16x4_t a) +-{ +- uint16x4_t result; +- __asm__ ("rev64 %0.4h,%1.4h" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +-vrev64_u32 (uint32x2_t a) +-{ +- uint32x2_t result; +- __asm__ ("rev64 %0.2s,%1.2s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +-vrev64q_f32 (float32x4_t a) +-{ +- float32x4_t result; +- __asm__ ("rev64 %0.4s,%1.4s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) +-vrev64q_p8 (poly8x16_t a) +-{ +- poly8x16_t result; +- __asm__ ("rev64 %0.16b,%1.16b" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) +-vrev64q_p16 (poly16x8_t a) +-{ +- poly16x8_t result; +- __asm__ ("rev64 %0.8h,%1.8h" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +-vrev64q_s8 (int8x16_t a) +-{ +- int8x16_t result; +- __asm__ ("rev64 %0.16b,%1.16b" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) +-vrev64q_s16 (int16x8_t a) +-{ +- int16x8_t result; +- __asm__ ("rev64 %0.8h,%1.8h" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) +-vrev64q_s32 (int32x4_t a) +-{ +- int32x4_t result; +- __asm__ ("rev64 %0.4s,%1.4s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +-vrev64q_u8 (uint8x16_t a) +-{ +- uint8x16_t result; +- __asm__ ("rev64 %0.16b,%1.16b" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) +-vrev64q_u16 (uint16x8_t a) +-{ +- uint16x8_t result; +- __asm__ ("rev64 %0.8h,%1.8h" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +-vrev64q_u32 (uint32x4_t a) +-{ +- uint32x4_t result; +- __asm__ ("rev64 %0.4s,%1.4s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- + #define vrshrn_high_n_s16(a, b, c) \ + __extension__ \ + ({ \ +@@ -11323,17 +10677,6 @@ + return result; + } + +-__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) +-vrsrtsq_f64 (float64x2_t a, float64x2_t b) +-{ +- float64x2_t result; +- __asm__ ("frsqrts %0.2d,%1.2d,%2.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vrsubhn_high_s16 (int8x8_t a, int16x8_t b, int16x8_t c) + { +@@ -12441,469 +11784,7 @@ + return result; + } + +-__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +-vtrn1_f32 (float32x2_t a, float32x2_t b) +-{ +- float32x2_t result; +- __asm__ ("trn1 %0.2s,%1.2s,%2.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) +-vtrn1_p8 (poly8x8_t a, poly8x8_t b) +-{ +- poly8x8_t result; +- __asm__ ("trn1 %0.8b,%1.8b,%2.8b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) +-vtrn1_p16 (poly16x4_t a, poly16x4_t b) +-{ +- poly16x4_t result; +- __asm__ ("trn1 %0.4h,%1.4h,%2.4h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +-vtrn1_s8 (int8x8_t a, int8x8_t b) +-{ +- int8x8_t result; +- __asm__ ("trn1 %0.8b,%1.8b,%2.8b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) +-vtrn1_s16 (int16x4_t a, int16x4_t b) +-{ +- int16x4_t result; +- __asm__ ("trn1 %0.4h,%1.4h,%2.4h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) +-vtrn1_s32 (int32x2_t a, int32x2_t b) +-{ +- int32x2_t result; +- __asm__ ("trn1 %0.2s,%1.2s,%2.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +-vtrn1_u8 (uint8x8_t a, uint8x8_t b) +-{ +- uint8x8_t result; +- __asm__ ("trn1 %0.8b,%1.8b,%2.8b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +-vtrn1_u16 (uint16x4_t a, uint16x4_t b) +-{ +- uint16x4_t result; +- __asm__ ("trn1 %0.4h,%1.4h,%2.4h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +-vtrn1_u32 (uint32x2_t a, uint32x2_t b) +-{ +- uint32x2_t result; +- __asm__ ("trn1 %0.2s,%1.2s,%2.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +-vtrn1q_f32 (float32x4_t a, float32x4_t b) +-{ +- float32x4_t result; +- __asm__ ("trn1 %0.4s,%1.4s,%2.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) +-vtrn1q_f64 (float64x2_t a, float64x2_t b) +-{ +- float64x2_t result; +- __asm__ ("trn1 %0.2d,%1.2d,%2.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) +-vtrn1q_p8 (poly8x16_t a, poly8x16_t b) +-{ +- poly8x16_t result; +- __asm__ ("trn1 %0.16b,%1.16b,%2.16b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) +-vtrn1q_p16 (poly16x8_t a, poly16x8_t b) +-{ +- poly16x8_t result; +- __asm__ ("trn1 %0.8h,%1.8h,%2.8h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +-vtrn1q_s8 (int8x16_t a, int8x16_t b) +-{ +- int8x16_t result; +- __asm__ ("trn1 %0.16b,%1.16b,%2.16b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) +-vtrn1q_s16 (int16x8_t a, int16x8_t b) +-{ +- int16x8_t result; +- __asm__ ("trn1 %0.8h,%1.8h,%2.8h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) +-vtrn1q_s32 (int32x4_t a, int32x4_t b) +-{ +- int32x4_t result; +- __asm__ ("trn1 %0.4s,%1.4s,%2.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) +-vtrn1q_s64 (int64x2_t a, int64x2_t b) +-{ +- int64x2_t result; +- __asm__ ("trn1 %0.2d,%1.2d,%2.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +-vtrn1q_u8 (uint8x16_t a, uint8x16_t b) +-{ +- uint8x16_t result; +- __asm__ ("trn1 %0.16b,%1.16b,%2.16b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) +-vtrn1q_u16 (uint16x8_t a, uint16x8_t b) +-{ +- uint16x8_t result; +- __asm__ ("trn1 %0.8h,%1.8h,%2.8h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +-vtrn1q_u32 (uint32x4_t a, uint32x4_t b) +-{ +- uint32x4_t result; +- __asm__ ("trn1 %0.4s,%1.4s,%2.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +-vtrn1q_u64 (uint64x2_t a, uint64x2_t b) +-{ +- uint64x2_t result; +- __asm__ ("trn1 %0.2d,%1.2d,%2.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +-vtrn2_f32 (float32x2_t a, float32x2_t b) +-{ +- float32x2_t result; +- __asm__ ("trn2 %0.2s,%1.2s,%2.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) +-vtrn2_p8 (poly8x8_t a, poly8x8_t b) +-{ +- poly8x8_t result; +- __asm__ ("trn2 %0.8b,%1.8b,%2.8b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) +-vtrn2_p16 (poly16x4_t a, poly16x4_t b) +-{ +- poly16x4_t result; +- __asm__ ("trn2 %0.4h,%1.4h,%2.4h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +-vtrn2_s8 (int8x8_t a, int8x8_t b) +-{ +- int8x8_t result; +- __asm__ ("trn2 %0.8b,%1.8b,%2.8b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) +-vtrn2_s16 (int16x4_t a, int16x4_t b) +-{ +- int16x4_t result; +- __asm__ ("trn2 %0.4h,%1.4h,%2.4h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) +-vtrn2_s32 (int32x2_t a, int32x2_t b) +-{ +- int32x2_t result; +- __asm__ ("trn2 %0.2s,%1.2s,%2.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +-vtrn2_u8 (uint8x8_t a, uint8x8_t b) +-{ +- uint8x8_t result; +- __asm__ ("trn2 %0.8b,%1.8b,%2.8b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +-vtrn2_u16 (uint16x4_t a, uint16x4_t b) +-{ +- uint16x4_t result; +- __asm__ ("trn2 %0.4h,%1.4h,%2.4h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +-vtrn2_u32 (uint32x2_t a, uint32x2_t b) +-{ +- uint32x2_t result; +- __asm__ ("trn2 %0.2s,%1.2s,%2.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +-vtrn2q_f32 (float32x4_t a, float32x4_t b) +-{ +- float32x4_t result; +- __asm__ ("trn2 %0.4s,%1.4s,%2.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) +-vtrn2q_f64 (float64x2_t a, float64x2_t b) +-{ +- float64x2_t result; +- __asm__ ("trn2 %0.2d,%1.2d,%2.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) +-vtrn2q_p8 (poly8x16_t a, poly8x16_t b) +-{ +- poly8x16_t result; +- __asm__ ("trn2 %0.16b,%1.16b,%2.16b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) +-vtrn2q_p16 (poly16x8_t a, poly16x8_t b) +-{ +- poly16x8_t result; +- __asm__ ("trn2 %0.8h,%1.8h,%2.8h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +-vtrn2q_s8 (int8x16_t a, int8x16_t b) +-{ +- int8x16_t result; +- __asm__ ("trn2 %0.16b,%1.16b,%2.16b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) +-vtrn2q_s16 (int16x8_t a, int16x8_t b) +-{ +- int16x8_t result; +- __asm__ ("trn2 %0.8h,%1.8h,%2.8h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) +-vtrn2q_s32 (int32x4_t a, int32x4_t b) +-{ +- int32x4_t result; +- __asm__ ("trn2 %0.4s,%1.4s,%2.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) +-vtrn2q_s64 (int64x2_t a, int64x2_t b) +-{ +- int64x2_t result; +- __asm__ ("trn2 %0.2d,%1.2d,%2.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +-vtrn2q_u8 (uint8x16_t a, uint8x16_t b) +-{ +- uint8x16_t result; +- __asm__ ("trn2 %0.16b,%1.16b,%2.16b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) +-vtrn2q_u16 (uint16x8_t a, uint16x8_t b) +-{ +- uint16x8_t result; +- __asm__ ("trn2 %0.8h,%1.8h,%2.8h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +-vtrn2q_u32 (uint32x4_t a, uint32x4_t b) +-{ +- uint32x4_t result; +- __asm__ ("trn2 %0.4s,%1.4s,%2.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +-vtrn2q_u64 (uint64x2_t a, uint64x2_t b) +-{ +- uint64x2_t result; +- __asm__ ("trn2 %0.2d,%1.2d,%2.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vtst_p8 (poly8x8_t a, poly8x8_t b) + { + uint8x8_t result; +@@ -12946,930 +11827,7 @@ + : /* No clobbers */); + return result; + } +-__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +-vuzp1_f32 (float32x2_t a, float32x2_t b) +-{ +- float32x2_t result; +- __asm__ ("uzp1 %0.2s,%1.2s,%2.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} + +-__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) +-vuzp1_p8 (poly8x8_t a, poly8x8_t b) +-{ +- poly8x8_t result; +- __asm__ ("uzp1 %0.8b,%1.8b,%2.8b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) +-vuzp1_p16 (poly16x4_t a, poly16x4_t b) +-{ +- poly16x4_t result; +- __asm__ ("uzp1 %0.4h,%1.4h,%2.4h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +-vuzp1_s8 (int8x8_t a, int8x8_t b) +-{ +- int8x8_t result; +- __asm__ ("uzp1 %0.8b,%1.8b,%2.8b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) +-vuzp1_s16 (int16x4_t a, int16x4_t b) +-{ +- int16x4_t result; +- __asm__ ("uzp1 %0.4h,%1.4h,%2.4h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) +-vuzp1_s32 (int32x2_t a, int32x2_t b) +-{ +- int32x2_t result; +- __asm__ ("uzp1 %0.2s,%1.2s,%2.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +-vuzp1_u8 (uint8x8_t a, uint8x8_t b) +-{ +- uint8x8_t result; +- __asm__ ("uzp1 %0.8b,%1.8b,%2.8b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +-vuzp1_u16 (uint16x4_t a, uint16x4_t b) +-{ +- uint16x4_t result; +- __asm__ ("uzp1 %0.4h,%1.4h,%2.4h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +-vuzp1_u32 (uint32x2_t a, uint32x2_t b) +-{ +- uint32x2_t result; +- __asm__ ("uzp1 %0.2s,%1.2s,%2.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +-vuzp1q_f32 (float32x4_t a, float32x4_t b) +-{ +- float32x4_t result; +- __asm__ ("uzp1 %0.4s,%1.4s,%2.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) +-vuzp1q_f64 (float64x2_t a, float64x2_t b) +-{ +- float64x2_t result; +- __asm__ ("uzp1 %0.2d,%1.2d,%2.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) +-vuzp1q_p8 (poly8x16_t a, poly8x16_t b) +-{ +- poly8x16_t result; +- __asm__ ("uzp1 %0.16b,%1.16b,%2.16b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) +-vuzp1q_p16 (poly16x8_t a, poly16x8_t b) +-{ +- poly16x8_t result; +- __asm__ ("uzp1 %0.8h,%1.8h,%2.8h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +-vuzp1q_s8 (int8x16_t a, int8x16_t b) +-{ +- int8x16_t result; +- __asm__ ("uzp1 %0.16b,%1.16b,%2.16b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) +-vuzp1q_s16 (int16x8_t a, int16x8_t b) +-{ +- int16x8_t result; +- __asm__ ("uzp1 %0.8h,%1.8h,%2.8h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) +-vuzp1q_s32 (int32x4_t a, int32x4_t b) +-{ +- int32x4_t result; +- __asm__ ("uzp1 %0.4s,%1.4s,%2.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) +-vuzp1q_s64 (int64x2_t a, int64x2_t b) +-{ +- int64x2_t result; +- __asm__ ("uzp1 %0.2d,%1.2d,%2.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +-vuzp1q_u8 (uint8x16_t a, uint8x16_t b) +-{ +- uint8x16_t result; +- __asm__ ("uzp1 %0.16b,%1.16b,%2.16b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) +-vuzp1q_u16 (uint16x8_t a, uint16x8_t b) +-{ +- uint16x8_t result; +- __asm__ ("uzp1 %0.8h,%1.8h,%2.8h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +-vuzp1q_u32 (uint32x4_t a, uint32x4_t b) +-{ +- uint32x4_t result; +- __asm__ ("uzp1 %0.4s,%1.4s,%2.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +-vuzp1q_u64 (uint64x2_t a, uint64x2_t b) +-{ +- uint64x2_t result; +- __asm__ ("uzp1 %0.2d,%1.2d,%2.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +-vuzp2_f32 (float32x2_t a, float32x2_t b) +-{ +- float32x2_t result; +- __asm__ ("uzp2 %0.2s,%1.2s,%2.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) +-vuzp2_p8 (poly8x8_t a, poly8x8_t b) +-{ +- poly8x8_t result; +- __asm__ ("uzp2 %0.8b,%1.8b,%2.8b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) +-vuzp2_p16 (poly16x4_t a, poly16x4_t b) +-{ +- poly16x4_t result; +- __asm__ ("uzp2 %0.4h,%1.4h,%2.4h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +-vuzp2_s8 (int8x8_t a, int8x8_t b) +-{ +- int8x8_t result; +- __asm__ ("uzp2 %0.8b,%1.8b,%2.8b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) +-vuzp2_s16 (int16x4_t a, int16x4_t b) +-{ +- int16x4_t result; +- __asm__ ("uzp2 %0.4h,%1.4h,%2.4h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) +-vuzp2_s32 (int32x2_t a, int32x2_t b) +-{ +- int32x2_t result; +- __asm__ ("uzp2 %0.2s,%1.2s,%2.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +-vuzp2_u8 (uint8x8_t a, uint8x8_t b) +-{ +- uint8x8_t result; +- __asm__ ("uzp2 %0.8b,%1.8b,%2.8b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +-vuzp2_u16 (uint16x4_t a, uint16x4_t b) +-{ +- uint16x4_t result; +- __asm__ ("uzp2 %0.4h,%1.4h,%2.4h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +-vuzp2_u32 (uint32x2_t a, uint32x2_t b) +-{ +- uint32x2_t result; +- __asm__ ("uzp2 %0.2s,%1.2s,%2.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +-vuzp2q_f32 (float32x4_t a, float32x4_t b) +-{ +- float32x4_t result; +- __asm__ ("uzp2 %0.4s,%1.4s,%2.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) +-vuzp2q_f64 (float64x2_t a, float64x2_t b) +-{ +- float64x2_t result; +- __asm__ ("uzp2 %0.2d,%1.2d,%2.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) +-vuzp2q_p8 (poly8x16_t a, poly8x16_t b) +-{ +- poly8x16_t result; +- __asm__ ("uzp2 %0.16b,%1.16b,%2.16b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) +-vuzp2q_p16 (poly16x8_t a, poly16x8_t b) +-{ +- poly16x8_t result; +- __asm__ ("uzp2 %0.8h,%1.8h,%2.8h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +-vuzp2q_s8 (int8x16_t a, int8x16_t b) +-{ +- int8x16_t result; +- __asm__ ("uzp2 %0.16b,%1.16b,%2.16b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) +-vuzp2q_s16 (int16x8_t a, int16x8_t b) +-{ +- int16x8_t result; +- __asm__ ("uzp2 %0.8h,%1.8h,%2.8h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) +-vuzp2q_s32 (int32x4_t a, int32x4_t b) +-{ +- int32x4_t result; +- __asm__ ("uzp2 %0.4s,%1.4s,%2.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) +-vuzp2q_s64 (int64x2_t a, int64x2_t b) +-{ +- int64x2_t result; +- __asm__ ("uzp2 %0.2d,%1.2d,%2.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +-vuzp2q_u8 (uint8x16_t a, uint8x16_t b) +-{ +- uint8x16_t result; +- __asm__ ("uzp2 %0.16b,%1.16b,%2.16b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) +-vuzp2q_u16 (uint16x8_t a, uint16x8_t b) +-{ +- uint16x8_t result; +- __asm__ ("uzp2 %0.8h,%1.8h,%2.8h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +-vuzp2q_u32 (uint32x4_t a, uint32x4_t b) +-{ +- uint32x4_t result; +- __asm__ ("uzp2 %0.4s,%1.4s,%2.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +-vuzp2q_u64 (uint64x2_t a, uint64x2_t b) +-{ +- uint64x2_t result; +- __asm__ ("uzp2 %0.2d,%1.2d,%2.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +-vzip1_f32 (float32x2_t a, float32x2_t b) +-{ +- float32x2_t result; +- __asm__ ("zip1 %0.2s,%1.2s,%2.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) +-vzip1_p8 (poly8x8_t a, poly8x8_t b) +-{ +- poly8x8_t result; +- __asm__ ("zip1 %0.8b,%1.8b,%2.8b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) +-vzip1_p16 (poly16x4_t a, poly16x4_t b) +-{ +- poly16x4_t result; +- __asm__ ("zip1 %0.4h,%1.4h,%2.4h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +-vzip1_s8 (int8x8_t a, int8x8_t b) +-{ +- int8x8_t result; +- __asm__ ("zip1 %0.8b,%1.8b,%2.8b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) +-vzip1_s16 (int16x4_t a, int16x4_t b) +-{ +- int16x4_t result; +- __asm__ ("zip1 %0.4h,%1.4h,%2.4h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) +-vzip1_s32 (int32x2_t a, int32x2_t b) +-{ +- int32x2_t result; +- __asm__ ("zip1 %0.2s,%1.2s,%2.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +-vzip1_u8 (uint8x8_t a, uint8x8_t b) +-{ +- uint8x8_t result; +- __asm__ ("zip1 %0.8b,%1.8b,%2.8b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +-vzip1_u16 (uint16x4_t a, uint16x4_t b) +-{ +- uint16x4_t result; +- __asm__ ("zip1 %0.4h,%1.4h,%2.4h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +-vzip1_u32 (uint32x2_t a, uint32x2_t b) +-{ +- uint32x2_t result; +- __asm__ ("zip1 %0.2s,%1.2s,%2.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +-vzip1q_f32 (float32x4_t a, float32x4_t b) +-{ +- float32x4_t result; +- __asm__ ("zip1 %0.4s,%1.4s,%2.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) +-vzip1q_f64 (float64x2_t a, float64x2_t b) +-{ +- float64x2_t result; +- __asm__ ("zip1 %0.2d,%1.2d,%2.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) +-vzip1q_p8 (poly8x16_t a, poly8x16_t b) +-{ +- poly8x16_t result; +- __asm__ ("zip1 %0.16b,%1.16b,%2.16b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) +-vzip1q_p16 (poly16x8_t a, poly16x8_t b) +-{ +- poly16x8_t result; +- __asm__ ("zip1 %0.8h,%1.8h,%2.8h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +-vzip1q_s8 (int8x16_t a, int8x16_t b) +-{ +- int8x16_t result; +- __asm__ ("zip1 %0.16b,%1.16b,%2.16b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) +-vzip1q_s16 (int16x8_t a, int16x8_t b) +-{ +- int16x8_t result; +- __asm__ ("zip1 %0.8h,%1.8h,%2.8h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) +-vzip1q_s32 (int32x4_t a, int32x4_t b) +-{ +- int32x4_t result; +- __asm__ ("zip1 %0.4s,%1.4s,%2.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) +-vzip1q_s64 (int64x2_t a, int64x2_t b) +-{ +- int64x2_t result; +- __asm__ ("zip1 %0.2d,%1.2d,%2.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +-vzip1q_u8 (uint8x16_t a, uint8x16_t b) +-{ +- uint8x16_t result; +- __asm__ ("zip1 %0.16b,%1.16b,%2.16b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) +-vzip1q_u16 (uint16x8_t a, uint16x8_t b) +-{ +- uint16x8_t result; +- __asm__ ("zip1 %0.8h,%1.8h,%2.8h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +-vzip1q_u32 (uint32x4_t a, uint32x4_t b) +-{ +- uint32x4_t result; +- __asm__ ("zip1 %0.4s,%1.4s,%2.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +-vzip1q_u64 (uint64x2_t a, uint64x2_t b) +-{ +- uint64x2_t result; +- __asm__ ("zip1 %0.2d,%1.2d,%2.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +-vzip2_f32 (float32x2_t a, float32x2_t b) +-{ +- float32x2_t result; +- __asm__ ("zip2 %0.2s,%1.2s,%2.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) +-vzip2_p8 (poly8x8_t a, poly8x8_t b) +-{ +- poly8x8_t result; +- __asm__ ("zip2 %0.8b,%1.8b,%2.8b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) +-vzip2_p16 (poly16x4_t a, poly16x4_t b) +-{ +- poly16x4_t result; +- __asm__ ("zip2 %0.4h,%1.4h,%2.4h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +-vzip2_s8 (int8x8_t a, int8x8_t b) +-{ +- int8x8_t result; +- __asm__ ("zip2 %0.8b,%1.8b,%2.8b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) +-vzip2_s16 (int16x4_t a, int16x4_t b) +-{ +- int16x4_t result; +- __asm__ ("zip2 %0.4h,%1.4h,%2.4h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) +-vzip2_s32 (int32x2_t a, int32x2_t b) +-{ +- int32x2_t result; +- __asm__ ("zip2 %0.2s,%1.2s,%2.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +-vzip2_u8 (uint8x8_t a, uint8x8_t b) +-{ +- uint8x8_t result; +- __asm__ ("zip2 %0.8b,%1.8b,%2.8b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +-vzip2_u16 (uint16x4_t a, uint16x4_t b) +-{ +- uint16x4_t result; +- __asm__ ("zip2 %0.4h,%1.4h,%2.4h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +-vzip2_u32 (uint32x2_t a, uint32x2_t b) +-{ +- uint32x2_t result; +- __asm__ ("zip2 %0.2s,%1.2s,%2.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +-vzip2q_f32 (float32x4_t a, float32x4_t b) +-{ +- float32x4_t result; +- __asm__ ("zip2 %0.4s,%1.4s,%2.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) +-vzip2q_f64 (float64x2_t a, float64x2_t b) +-{ +- float64x2_t result; +- __asm__ ("zip2 %0.2d,%1.2d,%2.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) +-vzip2q_p8 (poly8x16_t a, poly8x16_t b) +-{ +- poly8x16_t result; +- __asm__ ("zip2 %0.16b,%1.16b,%2.16b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) +-vzip2q_p16 (poly16x8_t a, poly16x8_t b) +-{ +- poly16x8_t result; +- __asm__ ("zip2 %0.8h,%1.8h,%2.8h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +-vzip2q_s8 (int8x16_t a, int8x16_t b) +-{ +- int8x16_t result; +- __asm__ ("zip2 %0.16b,%1.16b,%2.16b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) +-vzip2q_s16 (int16x8_t a, int16x8_t b) +-{ +- int16x8_t result; +- __asm__ ("zip2 %0.8h,%1.8h,%2.8h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) +-vzip2q_s32 (int32x4_t a, int32x4_t b) +-{ +- int32x4_t result; +- __asm__ ("zip2 %0.4s,%1.4s,%2.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) +-vzip2q_s64 (int64x2_t a, int64x2_t b) +-{ +- int64x2_t result; +- __asm__ ("zip2 %0.2d,%1.2d,%2.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +-vzip2q_u8 (uint8x16_t a, uint8x16_t b) +-{ +- uint8x16_t result; +- __asm__ ("zip2 %0.16b,%1.16b,%2.16b" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) +-vzip2q_u16 (uint16x8_t a, uint16x8_t b) +-{ +- uint16x8_t result; +- __asm__ ("zip2 %0.8h,%1.8h,%2.8h" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +-vzip2q_u32 (uint32x4_t a, uint32x4_t b) +-{ +- uint32x4_t result; +- __asm__ ("zip2 %0.4s,%1.4s,%2.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +-vzip2q_u64 (uint64x2_t a, uint64x2_t b) +-{ +- uint64x2_t result; +- __asm__ ("zip2 %0.2d,%1.2d,%2.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- + /* End of temporary inline asm implementations. */ + + /* Start of temporary inline asm for vldn, vstn and friends. */ +@@ -13953,378 +11911,226 @@ + __STRUCTN (float, 64, 4) + #undef __STRUCTN + +-#define __LD2R_FUNC(rettype, structtype, ptrtype, \ +- regsuffix, funcsuffix, Q) \ +- __extension__ static __inline rettype \ +- __attribute__ ((__always_inline__)) \ +- vld2 ## Q ## _dup_ ## funcsuffix (const ptrtype *ptr) \ +- { \ +- rettype result; \ +- __asm__ ("ld2r {v16." #regsuffix ", v17." #regsuffix "}, %1\n\t" \ +- "st1 {v16." #regsuffix ", v17." #regsuffix "}, %0\n\t" \ +- : "=Q"(result) \ +- : "Q"(*(const structtype *)ptr) \ +- : "memory", "v16", "v17"); \ +- return result; \ +- } + +-__LD2R_FUNC (float32x2x2_t, float32x2_t, float32_t, 2s, f32,) +-__LD2R_FUNC (float64x1x2_t, float64x2_t, float64_t, 1d, f64,) +-__LD2R_FUNC (poly8x8x2_t, poly8x2_t, poly8_t, 8b, p8,) +-__LD2R_FUNC (poly16x4x2_t, poly16x2_t, poly16_t, 4h, p16,) +-__LD2R_FUNC (int8x8x2_t, int8x2_t, int8_t, 8b, s8,) +-__LD2R_FUNC (int16x4x2_t, int16x2_t, int16_t, 4h, s16,) +-__LD2R_FUNC (int32x2x2_t, int32x2_t, int32_t, 2s, s32,) +-__LD2R_FUNC (int64x1x2_t, int64x2_t, int64_t, 1d, s64,) +-__LD2R_FUNC (uint8x8x2_t, uint8x2_t, uint8_t, 8b, u8,) +-__LD2R_FUNC (uint16x4x2_t, uint16x2_t, uint16_t, 4h, u16,) +-__LD2R_FUNC (uint32x2x2_t, uint32x2_t, uint32_t, 2s, u32,) +-__LD2R_FUNC (uint64x1x2_t, uint64x2_t, uint64_t, 1d, u64,) +-__LD2R_FUNC (float32x4x2_t, float32x2_t, float32_t, 4s, f32, q) +-__LD2R_FUNC (float64x2x2_t, float64x2_t, float64_t, 2d, f64, q) +-__LD2R_FUNC (poly8x16x2_t, poly8x2_t, poly8_t, 16b, p8, q) +-__LD2R_FUNC (poly16x8x2_t, poly16x2_t, poly16_t, 8h, p16, q) +-__LD2R_FUNC (int8x16x2_t, int8x2_t, int8_t, 16b, s8, q) +-__LD2R_FUNC (int16x8x2_t, int16x2_t, int16_t, 8h, s16, q) +-__LD2R_FUNC (int32x4x2_t, int32x2_t, int32_t, 4s, s32, q) +-__LD2R_FUNC (int64x2x2_t, int64x2_t, int64_t, 2d, s64, q) +-__LD2R_FUNC (uint8x16x2_t, uint8x2_t, uint8_t, 16b, u8, q) +-__LD2R_FUNC (uint16x8x2_t, uint16x2_t, uint16_t, 8h, u16, q) +-__LD2R_FUNC (uint32x4x2_t, uint32x2_t, uint32_t, 4s, u32, q) +-__LD2R_FUNC (uint64x2x2_t, uint64x2_t, uint64_t, 2d, u64, q) ++#define __ST2_LANE_FUNC(intype, largetype, ptrtype, \ ++ mode, ptr_mode, funcsuffix, signedtype) \ ++__extension__ static __inline void \ ++__attribute__ ((__always_inline__)) \ ++vst2_lane_ ## funcsuffix (ptrtype *__ptr, \ ++ intype __b, const int __c) \ ++{ \ ++ __builtin_aarch64_simd_oi __o; \ ++ largetype __temp; \ ++ __temp.val[0] \ ++ = vcombine_##funcsuffix (__b.val[0], \ ++ vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \ ++ __temp.val[1] \ ++ = vcombine_##funcsuffix (__b.val[1], \ ++ vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \ ++ __o = __builtin_aarch64_set_qregoi##mode (__o, \ ++ (signedtype) __temp.val[0], 0); \ ++ __o = __builtin_aarch64_set_qregoi##mode (__o, \ ++ (signedtype) __temp.val[1], 1); \ ++ __builtin_aarch64_st2_lane##mode ((__builtin_aarch64_simd_ ## ptr_mode *) \ ++ __ptr, __o, __c); \ ++} + +-#define __LD2_LANE_FUNC(rettype, ptrtype, regsuffix, \ +- lnsuffix, funcsuffix, Q) \ +- __extension__ static __inline rettype \ +- __attribute__ ((__always_inline__)) \ +- vld2 ## Q ## _lane_ ## funcsuffix (const ptrtype *ptr, \ +- rettype b, const int c) \ +- { \ +- rettype result; \ +- __asm__ ("ld1 {v16." #regsuffix ", v17." #regsuffix "}, %1\n\t" \ +- "ld2 {v16." #lnsuffix ", v17." #lnsuffix "}[%3], %2\n\t" \ +- "st1 {v16." #regsuffix ", v17." #regsuffix "}, %0\n\t" \ +- : "=Q"(result) \ +- : "Q"(b), "Q"(*(const rettype *)ptr), "i"(c) \ +- : "memory", "v16", "v17"); \ +- return result; \ +- } ++__ST2_LANE_FUNC (float32x2x2_t, float32x4x2_t, float32_t, v4sf, sf, f32, ++ float32x4_t) ++__ST2_LANE_FUNC (float64x1x2_t, float64x2x2_t, float64_t, v2df, df, f64, ++ float64x2_t) ++__ST2_LANE_FUNC (poly8x8x2_t, poly8x16x2_t, poly8_t, v16qi, qi, p8, int8x16_t) ++__ST2_LANE_FUNC (poly16x4x2_t, poly16x8x2_t, poly16_t, v8hi, hi, p16, ++ int16x8_t) ++__ST2_LANE_FUNC (int8x8x2_t, int8x16x2_t, int8_t, v16qi, qi, s8, int8x16_t) ++__ST2_LANE_FUNC (int16x4x2_t, int16x8x2_t, int16_t, v8hi, hi, s16, int16x8_t) ++__ST2_LANE_FUNC (int32x2x2_t, int32x4x2_t, int32_t, v4si, si, s32, int32x4_t) ++__ST2_LANE_FUNC (int64x1x2_t, int64x2x2_t, int64_t, v2di, di, s64, int64x2_t) ++__ST2_LANE_FUNC (uint8x8x2_t, uint8x16x2_t, uint8_t, v16qi, qi, u8, int8x16_t) ++__ST2_LANE_FUNC (uint16x4x2_t, uint16x8x2_t, uint16_t, v8hi, hi, u16, ++ int16x8_t) ++__ST2_LANE_FUNC (uint32x2x2_t, uint32x4x2_t, uint32_t, v4si, si, u32, ++ int32x4_t) ++__ST2_LANE_FUNC (uint64x1x2_t, uint64x2x2_t, uint64_t, v2di, di, u64, ++ int64x2_t) + +-__LD2_LANE_FUNC (int8x8x2_t, uint8_t, 8b, b, s8,) +-__LD2_LANE_FUNC (float32x2x2_t, float32_t, 2s, s, f32,) +-__LD2_LANE_FUNC (float64x1x2_t, float64_t, 1d, d, f64,) +-__LD2_LANE_FUNC (poly8x8x2_t, poly8_t, 8b, b, p8,) +-__LD2_LANE_FUNC (poly16x4x2_t, poly16_t, 4h, h, p16,) +-__LD2_LANE_FUNC (int16x4x2_t, int16_t, 4h, h, s16,) +-__LD2_LANE_FUNC (int32x2x2_t, int32_t, 2s, s, s32,) +-__LD2_LANE_FUNC (int64x1x2_t, int64_t, 1d, d, s64,) +-__LD2_LANE_FUNC (uint8x8x2_t, uint8_t, 8b, b, u8,) +-__LD2_LANE_FUNC (uint16x4x2_t, uint16_t, 4h, h, u16,) +-__LD2_LANE_FUNC (uint32x2x2_t, uint32_t, 2s, s, u32,) +-__LD2_LANE_FUNC (uint64x1x2_t, uint64_t, 1d, d, u64,) +-__LD2_LANE_FUNC (float32x4x2_t, float32_t, 4s, s, f32, q) +-__LD2_LANE_FUNC (float64x2x2_t, float64_t, 2d, d, f64, q) +-__LD2_LANE_FUNC (poly8x16x2_t, poly8_t, 16b, b, p8, q) +-__LD2_LANE_FUNC (poly16x8x2_t, poly16_t, 8h, h, p16, q) +-__LD2_LANE_FUNC (int8x16x2_t, int8_t, 16b, b, s8, q) +-__LD2_LANE_FUNC (int16x8x2_t, int16_t, 8h, h, s16, q) +-__LD2_LANE_FUNC (int32x4x2_t, int32_t, 4s, s, s32, q) +-__LD2_LANE_FUNC (int64x2x2_t, int64_t, 2d, d, s64, q) +-__LD2_LANE_FUNC (uint8x16x2_t, uint8_t, 16b, b, u8, q) +-__LD2_LANE_FUNC (uint16x8x2_t, uint16_t, 8h, h, u16, q) +-__LD2_LANE_FUNC (uint32x4x2_t, uint32_t, 4s, s, u32, q) +-__LD2_LANE_FUNC (uint64x2x2_t, uint64_t, 2d, d, u64, q) ++#undef __ST2_LANE_FUNC ++#define __ST2_LANE_FUNC(intype, ptrtype, mode, ptr_mode, funcsuffix) \ ++__extension__ static __inline void \ ++__attribute__ ((__always_inline__)) \ ++vst2q_lane_ ## funcsuffix (ptrtype *__ptr, \ ++ intype __b, const int __c) \ ++{ \ ++ union { intype __i; \ ++ __builtin_aarch64_simd_oi __o; } __temp = { __b }; \ ++ __builtin_aarch64_st2_lane##mode ((__builtin_aarch64_simd_ ## ptr_mode *) \ ++ __ptr, __temp.__o, __c); \ ++} + +-#define __LD3R_FUNC(rettype, structtype, ptrtype, \ +- regsuffix, funcsuffix, Q) \ +- __extension__ static __inline rettype \ +- __attribute__ ((__always_inline__)) \ +- vld3 ## Q ## _dup_ ## funcsuffix (const ptrtype *ptr) \ +- { \ +- rettype result; \ +- __asm__ ("ld3r {v16." #regsuffix " - v18." #regsuffix "}, %1\n\t" \ +- "st1 {v16." #regsuffix " - v18." #regsuffix "}, %0\n\t" \ +- : "=Q"(result) \ +- : "Q"(*(const structtype *)ptr) \ +- : "memory", "v16", "v17", "v18"); \ +- return result; \ +- } ++__ST2_LANE_FUNC (float32x4x2_t, float32_t, v4sf, sf, f32) ++__ST2_LANE_FUNC (float64x2x2_t, float64_t, v2df, df, f64) ++__ST2_LANE_FUNC (poly8x16x2_t, poly8_t, v16qi, qi, p8) ++__ST2_LANE_FUNC (poly16x8x2_t, poly16_t, v8hi, hi, p16) ++__ST2_LANE_FUNC (int8x16x2_t, int8_t, v16qi, qi, s8) ++__ST2_LANE_FUNC (int16x8x2_t, int16_t, v8hi, hi, s16) ++__ST2_LANE_FUNC (int32x4x2_t, int32_t, v4si, si, s32) ++__ST2_LANE_FUNC (int64x2x2_t, int64_t, v2di, di, s64) ++__ST2_LANE_FUNC (uint8x16x2_t, uint8_t, v16qi, qi, u8) ++__ST2_LANE_FUNC (uint16x8x2_t, uint16_t, v8hi, hi, u16) ++__ST2_LANE_FUNC (uint32x4x2_t, uint32_t, v4si, si, u32) ++__ST2_LANE_FUNC (uint64x2x2_t, uint64_t, v2di, di, u64) + +-__LD3R_FUNC (float32x2x3_t, float32x3_t, float32_t, 2s, f32,) +-__LD3R_FUNC (float64x1x3_t, float64x3_t, float64_t, 1d, f64,) +-__LD3R_FUNC (poly8x8x3_t, poly8x3_t, poly8_t, 8b, p8,) +-__LD3R_FUNC (poly16x4x3_t, poly16x3_t, poly16_t, 4h, p16,) +-__LD3R_FUNC (int8x8x3_t, int8x3_t, int8_t, 8b, s8,) +-__LD3R_FUNC (int16x4x3_t, int16x3_t, int16_t, 4h, s16,) +-__LD3R_FUNC (int32x2x3_t, int32x3_t, int32_t, 2s, s32,) +-__LD3R_FUNC (int64x1x3_t, int64x3_t, int64_t, 1d, s64,) +-__LD3R_FUNC (uint8x8x3_t, uint8x3_t, uint8_t, 8b, u8,) +-__LD3R_FUNC (uint16x4x3_t, uint16x3_t, uint16_t, 4h, u16,) +-__LD3R_FUNC (uint32x2x3_t, uint32x3_t, uint32_t, 2s, u32,) +-__LD3R_FUNC (uint64x1x3_t, uint64x3_t, uint64_t, 1d, u64,) +-__LD3R_FUNC (float32x4x3_t, float32x3_t, float32_t, 4s, f32, q) +-__LD3R_FUNC (float64x2x3_t, float64x3_t, float64_t, 2d, f64, q) +-__LD3R_FUNC (poly8x16x3_t, poly8x3_t, poly8_t, 16b, p8, q) +-__LD3R_FUNC (poly16x8x3_t, poly16x3_t, poly16_t, 8h, p16, q) +-__LD3R_FUNC (int8x16x3_t, int8x3_t, int8_t, 16b, s8, q) +-__LD3R_FUNC (int16x8x3_t, int16x3_t, int16_t, 8h, s16, q) +-__LD3R_FUNC (int32x4x3_t, int32x3_t, int32_t, 4s, s32, q) +-__LD3R_FUNC (int64x2x3_t, int64x3_t, int64_t, 2d, s64, q) +-__LD3R_FUNC (uint8x16x3_t, uint8x3_t, uint8_t, 16b, u8, q) +-__LD3R_FUNC (uint16x8x3_t, uint16x3_t, uint16_t, 8h, u16, q) +-__LD3R_FUNC (uint32x4x3_t, uint32x3_t, uint32_t, 4s, u32, q) +-__LD3R_FUNC (uint64x2x3_t, uint64x3_t, uint64_t, 2d, u64, q) ++#define __ST3_LANE_FUNC(intype, largetype, ptrtype, \ ++ mode, ptr_mode, funcsuffix, signedtype) \ ++__extension__ static __inline void \ ++__attribute__ ((__always_inline__)) \ ++vst3_lane_ ## funcsuffix (ptrtype *__ptr, \ ++ intype __b, const int __c) \ ++{ \ ++ __builtin_aarch64_simd_ci __o; \ ++ largetype __temp; \ ++ __temp.val[0] \ ++ = vcombine_##funcsuffix (__b.val[0], \ ++ vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \ ++ __temp.val[1] \ ++ = vcombine_##funcsuffix (__b.val[1], \ ++ vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \ ++ __temp.val[2] \ ++ = vcombine_##funcsuffix (__b.val[2], \ ++ vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \ ++ __o = __builtin_aarch64_set_qregci##mode (__o, \ ++ (signedtype) __temp.val[0], 0); \ ++ __o = __builtin_aarch64_set_qregci##mode (__o, \ ++ (signedtype) __temp.val[1], 1); \ ++ __o = __builtin_aarch64_set_qregci##mode (__o, \ ++ (signedtype) __temp.val[2], 2); \ ++ __builtin_aarch64_st3_lane##mode ((__builtin_aarch64_simd_ ## ptr_mode *) \ ++ __ptr, __o, __c); \ ++} + +-#define __LD3_LANE_FUNC(rettype, ptrtype, regsuffix, \ +- lnsuffix, funcsuffix, Q) \ +- __extension__ static __inline rettype \ +- __attribute__ ((__always_inline__)) \ +- vld3 ## Q ## _lane_ ## funcsuffix (const ptrtype *ptr, \ +- rettype b, const int c) \ +- { \ +- rettype result; \ +- __asm__ ("ld1 {v16." #regsuffix " - v18." #regsuffix "}, %1\n\t" \ +- "ld3 {v16." #lnsuffix " - v18." #lnsuffix "}[%3], %2\n\t" \ +- "st1 {v16." #regsuffix " - v18." #regsuffix "}, %0\n\t" \ +- : "=Q"(result) \ +- : "Q"(b), "Q"(*(const rettype *)ptr), "i"(c) \ +- : "memory", "v16", "v17", "v18"); \ +- return result; \ +- } ++__ST3_LANE_FUNC (float32x2x3_t, float32x4x3_t, float32_t, v4sf, sf, f32, ++ float32x4_t) ++__ST3_LANE_FUNC (float64x1x3_t, float64x2x3_t, float64_t, v2df, df, f64, ++ float64x2_t) ++__ST3_LANE_FUNC (poly8x8x3_t, poly8x16x3_t, poly8_t, v16qi, qi, p8, int8x16_t) ++__ST3_LANE_FUNC (poly16x4x3_t, poly16x8x3_t, poly16_t, v8hi, hi, p16, ++ int16x8_t) ++__ST3_LANE_FUNC (int8x8x3_t, int8x16x3_t, int8_t, v16qi, qi, s8, int8x16_t) ++__ST3_LANE_FUNC (int16x4x3_t, int16x8x3_t, int16_t, v8hi, hi, s16, int16x8_t) ++__ST3_LANE_FUNC (int32x2x3_t, int32x4x3_t, int32_t, v4si, si, s32, int32x4_t) ++__ST3_LANE_FUNC (int64x1x3_t, int64x2x3_t, int64_t, v2di, di, s64, int64x2_t) ++__ST3_LANE_FUNC (uint8x8x3_t, uint8x16x3_t, uint8_t, v16qi, qi, u8, int8x16_t) ++__ST3_LANE_FUNC (uint16x4x3_t, uint16x8x3_t, uint16_t, v8hi, hi, u16, ++ int16x8_t) ++__ST3_LANE_FUNC (uint32x2x3_t, uint32x4x3_t, uint32_t, v4si, si, u32, ++ int32x4_t) ++__ST3_LANE_FUNC (uint64x1x3_t, uint64x2x3_t, uint64_t, v2di, di, u64, ++ int64x2_t) + +-__LD3_LANE_FUNC (int8x8x3_t, uint8_t, 8b, b, s8,) +-__LD3_LANE_FUNC (float32x2x3_t, float32_t, 2s, s, f32,) +-__LD3_LANE_FUNC (float64x1x3_t, float64_t, 1d, d, f64,) +-__LD3_LANE_FUNC (poly8x8x3_t, poly8_t, 8b, b, p8,) +-__LD3_LANE_FUNC (poly16x4x3_t, poly16_t, 4h, h, p16,) +-__LD3_LANE_FUNC (int16x4x3_t, int16_t, 4h, h, s16,) +-__LD3_LANE_FUNC (int32x2x3_t, int32_t, 2s, s, s32,) +-__LD3_LANE_FUNC (int64x1x3_t, int64_t, 1d, d, s64,) +-__LD3_LANE_FUNC (uint8x8x3_t, uint8_t, 8b, b, u8,) +-__LD3_LANE_FUNC (uint16x4x3_t, uint16_t, 4h, h, u16,) +-__LD3_LANE_FUNC (uint32x2x3_t, uint32_t, 2s, s, u32,) +-__LD3_LANE_FUNC (uint64x1x3_t, uint64_t, 1d, d, u64,) +-__LD3_LANE_FUNC (float32x4x3_t, float32_t, 4s, s, f32, q) +-__LD3_LANE_FUNC (float64x2x3_t, float64_t, 2d, d, f64, q) +-__LD3_LANE_FUNC (poly8x16x3_t, poly8_t, 16b, b, p8, q) +-__LD3_LANE_FUNC (poly16x8x3_t, poly16_t, 8h, h, p16, q) +-__LD3_LANE_FUNC (int8x16x3_t, int8_t, 16b, b, s8, q) +-__LD3_LANE_FUNC (int16x8x3_t, int16_t, 8h, h, s16, q) +-__LD3_LANE_FUNC (int32x4x3_t, int32_t, 4s, s, s32, q) +-__LD3_LANE_FUNC (int64x2x3_t, int64_t, 2d, d, s64, q) +-__LD3_LANE_FUNC (uint8x16x3_t, uint8_t, 16b, b, u8, q) +-__LD3_LANE_FUNC (uint16x8x3_t, uint16_t, 8h, h, u16, q) +-__LD3_LANE_FUNC (uint32x4x3_t, uint32_t, 4s, s, u32, q) +-__LD3_LANE_FUNC (uint64x2x3_t, uint64_t, 2d, d, u64, q) ++#undef __ST3_LANE_FUNC ++#define __ST3_LANE_FUNC(intype, ptrtype, mode, ptr_mode, funcsuffix) \ ++__extension__ static __inline void \ ++__attribute__ ((__always_inline__)) \ ++vst3q_lane_ ## funcsuffix (ptrtype *__ptr, \ ++ intype __b, const int __c) \ ++{ \ ++ union { intype __i; \ ++ __builtin_aarch64_simd_ci __o; } __temp = { __b }; \ ++ __builtin_aarch64_st3_lane##mode ((__builtin_aarch64_simd_ ## ptr_mode *) \ ++ __ptr, __temp.__o, __c); \ ++} + +-#define __LD4R_FUNC(rettype, structtype, ptrtype, \ +- regsuffix, funcsuffix, Q) \ +- __extension__ static __inline rettype \ +- __attribute__ ((__always_inline__)) \ +- vld4 ## Q ## _dup_ ## funcsuffix (const ptrtype *ptr) \ +- { \ +- rettype result; \ +- __asm__ ("ld4r {v16." #regsuffix " - v19." #regsuffix "}, %1\n\t" \ +- "st1 {v16." #regsuffix " - v19." #regsuffix "}, %0\n\t" \ +- : "=Q"(result) \ +- : "Q"(*(const structtype *)ptr) \ +- : "memory", "v16", "v17", "v18", "v19"); \ +- return result; \ +- } ++__ST3_LANE_FUNC (float32x4x3_t, float32_t, v4sf, sf, f32) ++__ST3_LANE_FUNC (float64x2x3_t, float64_t, v2df, df, f64) ++__ST3_LANE_FUNC (poly8x16x3_t, poly8_t, v16qi, qi, p8) ++__ST3_LANE_FUNC (poly16x8x3_t, poly16_t, v8hi, hi, p16) ++__ST3_LANE_FUNC (int8x16x3_t, int8_t, v16qi, qi, s8) ++__ST3_LANE_FUNC (int16x8x3_t, int16_t, v8hi, hi, s16) ++__ST3_LANE_FUNC (int32x4x3_t, int32_t, v4si, si, s32) ++__ST3_LANE_FUNC (int64x2x3_t, int64_t, v2di, di, s64) ++__ST3_LANE_FUNC (uint8x16x3_t, uint8_t, v16qi, qi, u8) ++__ST3_LANE_FUNC (uint16x8x3_t, uint16_t, v8hi, hi, u16) ++__ST3_LANE_FUNC (uint32x4x3_t, uint32_t, v4si, si, u32) ++__ST3_LANE_FUNC (uint64x2x3_t, uint64_t, v2di, di, u64) + +-__LD4R_FUNC (float32x2x4_t, float32x4_t, float32_t, 2s, f32,) +-__LD4R_FUNC (float64x1x4_t, float64x4_t, float64_t, 1d, f64,) +-__LD4R_FUNC (poly8x8x4_t, poly8x4_t, poly8_t, 8b, p8,) +-__LD4R_FUNC (poly16x4x4_t, poly16x4_t, poly16_t, 4h, p16,) +-__LD4R_FUNC (int8x8x4_t, int8x4_t, int8_t, 8b, s8,) +-__LD4R_FUNC (int16x4x4_t, int16x4_t, int16_t, 4h, s16,) +-__LD4R_FUNC (int32x2x4_t, int32x4_t, int32_t, 2s, s32,) +-__LD4R_FUNC (int64x1x4_t, int64x4_t, int64_t, 1d, s64,) +-__LD4R_FUNC (uint8x8x4_t, uint8x4_t, uint8_t, 8b, u8,) +-__LD4R_FUNC (uint16x4x4_t, uint16x4_t, uint16_t, 4h, u16,) +-__LD4R_FUNC (uint32x2x4_t, uint32x4_t, uint32_t, 2s, u32,) +-__LD4R_FUNC (uint64x1x4_t, uint64x4_t, uint64_t, 1d, u64,) +-__LD4R_FUNC (float32x4x4_t, float32x4_t, float32_t, 4s, f32, q) +-__LD4R_FUNC (float64x2x4_t, float64x4_t, float64_t, 2d, f64, q) +-__LD4R_FUNC (poly8x16x4_t, poly8x4_t, poly8_t, 16b, p8, q) +-__LD4R_FUNC (poly16x8x4_t, poly16x4_t, poly16_t, 8h, p16, q) +-__LD4R_FUNC (int8x16x4_t, int8x4_t, int8_t, 16b, s8, q) +-__LD4R_FUNC (int16x8x4_t, int16x4_t, int16_t, 8h, s16, q) +-__LD4R_FUNC (int32x4x4_t, int32x4_t, int32_t, 4s, s32, q) +-__LD4R_FUNC (int64x2x4_t, int64x4_t, int64_t, 2d, s64, q) +-__LD4R_FUNC (uint8x16x4_t, uint8x4_t, uint8_t, 16b, u8, q) +-__LD4R_FUNC (uint16x8x4_t, uint16x4_t, uint16_t, 8h, u16, q) +-__LD4R_FUNC (uint32x4x4_t, uint32x4_t, uint32_t, 4s, u32, q) +-__LD4R_FUNC (uint64x2x4_t, uint64x4_t, uint64_t, 2d, u64, q) ++#define __ST4_LANE_FUNC(intype, largetype, ptrtype, \ ++ mode, ptr_mode, funcsuffix, signedtype) \ ++__extension__ static __inline void \ ++__attribute__ ((__always_inline__)) \ ++vst4_lane_ ## funcsuffix (ptrtype *__ptr, \ ++ intype __b, const int __c) \ ++{ \ ++ __builtin_aarch64_simd_xi __o; \ ++ largetype __temp; \ ++ __temp.val[0] \ ++ = vcombine_##funcsuffix (__b.val[0], \ ++ vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \ ++ __temp.val[1] \ ++ = vcombine_##funcsuffix (__b.val[1], \ ++ vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \ ++ __temp.val[2] \ ++ = vcombine_##funcsuffix (__b.val[2], \ ++ vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \ ++ __temp.val[3] \ ++ = vcombine_##funcsuffix (__b.val[3], \ ++ vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \ ++ __o = __builtin_aarch64_set_qregxi##mode (__o, \ ++ (signedtype) __temp.val[0], 0); \ ++ __o = __builtin_aarch64_set_qregxi##mode (__o, \ ++ (signedtype) __temp.val[1], 1); \ ++ __o = __builtin_aarch64_set_qregxi##mode (__o, \ ++ (signedtype) __temp.val[2], 2); \ ++ __o = __builtin_aarch64_set_qregxi##mode (__o, \ ++ (signedtype) __temp.val[3], 3); \ ++ __builtin_aarch64_st4_lane##mode ((__builtin_aarch64_simd_ ## ptr_mode *) \ ++ __ptr, __o, __c); \ ++} + +-#define __LD4_LANE_FUNC(rettype, ptrtype, regsuffix, \ +- lnsuffix, funcsuffix, Q) \ +- __extension__ static __inline rettype \ +- __attribute__ ((__always_inline__)) \ +- vld4 ## Q ## _lane_ ## funcsuffix (const ptrtype *ptr, \ +- rettype b, const int c) \ +- { \ +- rettype result; \ +- __asm__ ("ld1 {v16." #regsuffix " - v19." #regsuffix "}, %1\n\t" \ +- "ld4 {v16." #lnsuffix " - v19." #lnsuffix "}[%3], %2\n\t" \ +- "st1 {v16." #regsuffix " - v19." #regsuffix "}, %0\n\t" \ +- : "=Q"(result) \ +- : "Q"(b), "Q"(*(const rettype *)ptr), "i"(c) \ +- : "memory", "v16", "v17", "v18", "v19"); \ +- return result; \ +- } ++__ST4_LANE_FUNC (float32x2x4_t, float32x4x4_t, float32_t, v4sf, sf, f32, ++ float32x4_t) ++__ST4_LANE_FUNC (float64x1x4_t, float64x2x4_t, float64_t, v2df, df, f64, ++ float64x2_t) ++__ST4_LANE_FUNC (poly8x8x4_t, poly8x16x4_t, poly8_t, v16qi, qi, p8, int8x16_t) ++__ST4_LANE_FUNC (poly16x4x4_t, poly16x8x4_t, poly16_t, v8hi, hi, p16, ++ int16x8_t) ++__ST4_LANE_FUNC (int8x8x4_t, int8x16x4_t, int8_t, v16qi, qi, s8, int8x16_t) ++__ST4_LANE_FUNC (int16x4x4_t, int16x8x4_t, int16_t, v8hi, hi, s16, int16x8_t) ++__ST4_LANE_FUNC (int32x2x4_t, int32x4x4_t, int32_t, v4si, si, s32, int32x4_t) ++__ST4_LANE_FUNC (int64x1x4_t, int64x2x4_t, int64_t, v2di, di, s64, int64x2_t) ++__ST4_LANE_FUNC (uint8x8x4_t, uint8x16x4_t, uint8_t, v16qi, qi, u8, int8x16_t) ++__ST4_LANE_FUNC (uint16x4x4_t, uint16x8x4_t, uint16_t, v8hi, hi, u16, ++ int16x8_t) ++__ST4_LANE_FUNC (uint32x2x4_t, uint32x4x4_t, uint32_t, v4si, si, u32, ++ int32x4_t) ++__ST4_LANE_FUNC (uint64x1x4_t, uint64x2x4_t, uint64_t, v2di, di, u64, ++ int64x2_t) + +-__LD4_LANE_FUNC (int8x8x4_t, uint8_t, 8b, b, s8,) +-__LD4_LANE_FUNC (float32x2x4_t, float32_t, 2s, s, f32,) +-__LD4_LANE_FUNC (float64x1x4_t, float64_t, 1d, d, f64,) +-__LD4_LANE_FUNC (poly8x8x4_t, poly8_t, 8b, b, p8,) +-__LD4_LANE_FUNC (poly16x4x4_t, poly16_t, 4h, h, p16,) +-__LD4_LANE_FUNC (int16x4x4_t, int16_t, 4h, h, s16,) +-__LD4_LANE_FUNC (int32x2x4_t, int32_t, 2s, s, s32,) +-__LD4_LANE_FUNC (int64x1x4_t, int64_t, 1d, d, s64,) +-__LD4_LANE_FUNC (uint8x8x4_t, uint8_t, 8b, b, u8,) +-__LD4_LANE_FUNC (uint16x4x4_t, uint16_t, 4h, h, u16,) +-__LD4_LANE_FUNC (uint32x2x4_t, uint32_t, 2s, s, u32,) +-__LD4_LANE_FUNC (uint64x1x4_t, uint64_t, 1d, d, u64,) +-__LD4_LANE_FUNC (float32x4x4_t, float32_t, 4s, s, f32, q) +-__LD4_LANE_FUNC (float64x2x4_t, float64_t, 2d, d, f64, q) +-__LD4_LANE_FUNC (poly8x16x4_t, poly8_t, 16b, b, p8, q) +-__LD4_LANE_FUNC (poly16x8x4_t, poly16_t, 8h, h, p16, q) +-__LD4_LANE_FUNC (int8x16x4_t, int8_t, 16b, b, s8, q) +-__LD4_LANE_FUNC (int16x8x4_t, int16_t, 8h, h, s16, q) +-__LD4_LANE_FUNC (int32x4x4_t, int32_t, 4s, s, s32, q) +-__LD4_LANE_FUNC (int64x2x4_t, int64_t, 2d, d, s64, q) +-__LD4_LANE_FUNC (uint8x16x4_t, uint8_t, 16b, b, u8, q) +-__LD4_LANE_FUNC (uint16x8x4_t, uint16_t, 8h, h, u16, q) +-__LD4_LANE_FUNC (uint32x4x4_t, uint32_t, 4s, s, u32, q) +-__LD4_LANE_FUNC (uint64x2x4_t, uint64_t, 2d, d, u64, q) ++#undef __ST4_LANE_FUNC ++#define __ST4_LANE_FUNC(intype, ptrtype, mode, ptr_mode, funcsuffix) \ ++__extension__ static __inline void \ ++__attribute__ ((__always_inline__)) \ ++vst4q_lane_ ## funcsuffix (ptrtype *__ptr, \ ++ intype __b, const int __c) \ ++{ \ ++ union { intype __i; \ ++ __builtin_aarch64_simd_xi __o; } __temp = { __b }; \ ++ __builtin_aarch64_st4_lane##mode ((__builtin_aarch64_simd_ ## ptr_mode *) \ ++ __ptr, __temp.__o, __c); \ ++} + +-#define __ST2_LANE_FUNC(intype, ptrtype, regsuffix, \ +- lnsuffix, funcsuffix, Q) \ +- typedef struct { ptrtype __x[2]; } __ST2_LANE_STRUCTURE_##intype; \ +- __extension__ static __inline void \ +- __attribute__ ((__always_inline__)) \ +- vst2 ## Q ## _lane_ ## funcsuffix (ptrtype *ptr, \ +- intype b, const int c) \ +- { \ +- __ST2_LANE_STRUCTURE_##intype *__p = \ +- (__ST2_LANE_STRUCTURE_##intype *)ptr; \ +- __asm__ ("ld1 {v16." #regsuffix ", v17." #regsuffix "}, %1\n\t" \ +- "st2 {v16." #lnsuffix ", v17." #lnsuffix "}[%2], %0\n\t" \ +- : "=Q"(*__p) \ +- : "Q"(b), "i"(c) \ +- : "v16", "v17"); \ +- } ++__ST4_LANE_FUNC (float32x4x4_t, float32_t, v4sf, sf, f32) ++__ST4_LANE_FUNC (float64x2x4_t, float64_t, v2df, df, f64) ++__ST4_LANE_FUNC (poly8x16x4_t, poly8_t, v16qi, qi, p8) ++__ST4_LANE_FUNC (poly16x8x4_t, poly16_t, v8hi, hi, p16) ++__ST4_LANE_FUNC (int8x16x4_t, int8_t, v16qi, qi, s8) ++__ST4_LANE_FUNC (int16x8x4_t, int16_t, v8hi, hi, s16) ++__ST4_LANE_FUNC (int32x4x4_t, int32_t, v4si, si, s32) ++__ST4_LANE_FUNC (int64x2x4_t, int64_t, v2di, di, s64) ++__ST4_LANE_FUNC (uint8x16x4_t, uint8_t, v16qi, qi, u8) ++__ST4_LANE_FUNC (uint16x8x4_t, uint16_t, v8hi, hi, u16) ++__ST4_LANE_FUNC (uint32x4x4_t, uint32_t, v4si, si, u32) ++__ST4_LANE_FUNC (uint64x2x4_t, uint64_t, v2di, di, u64) + +-__ST2_LANE_FUNC (int8x8x2_t, int8_t, 8b, b, s8,) +-__ST2_LANE_FUNC (float32x2x2_t, float32_t, 2s, s, f32,) +-__ST2_LANE_FUNC (float64x1x2_t, float64_t, 1d, d, f64,) +-__ST2_LANE_FUNC (poly8x8x2_t, poly8_t, 8b, b, p8,) +-__ST2_LANE_FUNC (poly16x4x2_t, poly16_t, 4h, h, p16,) +-__ST2_LANE_FUNC (int16x4x2_t, int16_t, 4h, h, s16,) +-__ST2_LANE_FUNC (int32x2x2_t, int32_t, 2s, s, s32,) +-__ST2_LANE_FUNC (int64x1x2_t, int64_t, 1d, d, s64,) +-__ST2_LANE_FUNC (uint8x8x2_t, uint8_t, 8b, b, u8,) +-__ST2_LANE_FUNC (uint16x4x2_t, uint16_t, 4h, h, u16,) +-__ST2_LANE_FUNC (uint32x2x2_t, uint32_t, 2s, s, u32,) +-__ST2_LANE_FUNC (uint64x1x2_t, uint64_t, 1d, d, u64,) +-__ST2_LANE_FUNC (float32x4x2_t, float32_t, 4s, s, f32, q) +-__ST2_LANE_FUNC (float64x2x2_t, float64_t, 2d, d, f64, q) +-__ST2_LANE_FUNC (poly8x16x2_t, poly8_t, 16b, b, p8, q) +-__ST2_LANE_FUNC (poly16x8x2_t, poly16_t, 8h, h, p16, q) +-__ST2_LANE_FUNC (int8x16x2_t, int8_t, 16b, b, s8, q) +-__ST2_LANE_FUNC (int16x8x2_t, int16_t, 8h, h, s16, q) +-__ST2_LANE_FUNC (int32x4x2_t, int32_t, 4s, s, s32, q) +-__ST2_LANE_FUNC (int64x2x2_t, int64_t, 2d, d, s64, q) +-__ST2_LANE_FUNC (uint8x16x2_t, uint8_t, 16b, b, u8, q) +-__ST2_LANE_FUNC (uint16x8x2_t, uint16_t, 8h, h, u16, q) +-__ST2_LANE_FUNC (uint32x4x2_t, uint32_t, 4s, s, u32, q) +-__ST2_LANE_FUNC (uint64x2x2_t, uint64_t, 2d, d, u64, q) +- +-#define __ST3_LANE_FUNC(intype, ptrtype, regsuffix, \ +- lnsuffix, funcsuffix, Q) \ +- typedef struct { ptrtype __x[3]; } __ST3_LANE_STRUCTURE_##intype; \ +- __extension__ static __inline void \ +- __attribute__ ((__always_inline__)) \ +- vst3 ## Q ## _lane_ ## funcsuffix (ptrtype *ptr, \ +- intype b, const int c) \ +- { \ +- __ST3_LANE_STRUCTURE_##intype *__p = \ +- (__ST3_LANE_STRUCTURE_##intype *)ptr; \ +- __asm__ ("ld1 {v16." #regsuffix " - v18." #regsuffix "}, %1\n\t" \ +- "st3 {v16." #lnsuffix " - v18." #lnsuffix "}[%2], %0\n\t" \ +- : "=Q"(*__p) \ +- : "Q"(b), "i"(c) \ +- : "v16", "v17", "v18"); \ +- } +- +-__ST3_LANE_FUNC (int8x8x3_t, int8_t, 8b, b, s8,) +-__ST3_LANE_FUNC (float32x2x3_t, float32_t, 2s, s, f32,) +-__ST3_LANE_FUNC (float64x1x3_t, float64_t, 1d, d, f64,) +-__ST3_LANE_FUNC (poly8x8x3_t, poly8_t, 8b, b, p8,) +-__ST3_LANE_FUNC (poly16x4x3_t, poly16_t, 4h, h, p16,) +-__ST3_LANE_FUNC (int16x4x3_t, int16_t, 4h, h, s16,) +-__ST3_LANE_FUNC (int32x2x3_t, int32_t, 2s, s, s32,) +-__ST3_LANE_FUNC (int64x1x3_t, int64_t, 1d, d, s64,) +-__ST3_LANE_FUNC (uint8x8x3_t, uint8_t, 8b, b, u8,) +-__ST3_LANE_FUNC (uint16x4x3_t, uint16_t, 4h, h, u16,) +-__ST3_LANE_FUNC (uint32x2x3_t, uint32_t, 2s, s, u32,) +-__ST3_LANE_FUNC (uint64x1x3_t, uint64_t, 1d, d, u64,) +-__ST3_LANE_FUNC (float32x4x3_t, float32_t, 4s, s, f32, q) +-__ST3_LANE_FUNC (float64x2x3_t, float64_t, 2d, d, f64, q) +-__ST3_LANE_FUNC (poly8x16x3_t, poly8_t, 16b, b, p8, q) +-__ST3_LANE_FUNC (poly16x8x3_t, poly16_t, 8h, h, p16, q) +-__ST3_LANE_FUNC (int8x16x3_t, int8_t, 16b, b, s8, q) +-__ST3_LANE_FUNC (int16x8x3_t, int16_t, 8h, h, s16, q) +-__ST3_LANE_FUNC (int32x4x3_t, int32_t, 4s, s, s32, q) +-__ST3_LANE_FUNC (int64x2x3_t, int64_t, 2d, d, s64, q) +-__ST3_LANE_FUNC (uint8x16x3_t, uint8_t, 16b, b, u8, q) +-__ST3_LANE_FUNC (uint16x8x3_t, uint16_t, 8h, h, u16, q) +-__ST3_LANE_FUNC (uint32x4x3_t, uint32_t, 4s, s, u32, q) +-__ST3_LANE_FUNC (uint64x2x3_t, uint64_t, 2d, d, u64, q) +- +-#define __ST4_LANE_FUNC(intype, ptrtype, regsuffix, \ +- lnsuffix, funcsuffix, Q) \ +- typedef struct { ptrtype __x[4]; } __ST4_LANE_STRUCTURE_##intype; \ +- __extension__ static __inline void \ +- __attribute__ ((__always_inline__)) \ +- vst4 ## Q ## _lane_ ## funcsuffix (ptrtype *ptr, \ +- intype b, const int c) \ +- { \ +- __ST4_LANE_STRUCTURE_##intype *__p = \ +- (__ST4_LANE_STRUCTURE_##intype *)ptr; \ +- __asm__ ("ld1 {v16." #regsuffix " - v19." #regsuffix "}, %1\n\t" \ +- "st4 {v16." #lnsuffix " - v19." #lnsuffix "}[%2], %0\n\t" \ +- : "=Q"(*__p) \ +- : "Q"(b), "i"(c) \ +- : "v16", "v17", "v18", "v19"); \ +- } +- +-__ST4_LANE_FUNC (int8x8x4_t, int8_t, 8b, b, s8,) +-__ST4_LANE_FUNC (float32x2x4_t, float32_t, 2s, s, f32,) +-__ST4_LANE_FUNC (float64x1x4_t, float64_t, 1d, d, f64,) +-__ST4_LANE_FUNC (poly8x8x4_t, poly8_t, 8b, b, p8,) +-__ST4_LANE_FUNC (poly16x4x4_t, poly16_t, 4h, h, p16,) +-__ST4_LANE_FUNC (int16x4x4_t, int16_t, 4h, h, s16,) +-__ST4_LANE_FUNC (int32x2x4_t, int32_t, 2s, s, s32,) +-__ST4_LANE_FUNC (int64x1x4_t, int64_t, 1d, d, s64,) +-__ST4_LANE_FUNC (uint8x8x4_t, uint8_t, 8b, b, u8,) +-__ST4_LANE_FUNC (uint16x4x4_t, uint16_t, 4h, h, u16,) +-__ST4_LANE_FUNC (uint32x2x4_t, uint32_t, 2s, s, u32,) +-__ST4_LANE_FUNC (uint64x1x4_t, uint64_t, 1d, d, u64,) +-__ST4_LANE_FUNC (float32x4x4_t, float32_t, 4s, s, f32, q) +-__ST4_LANE_FUNC (float64x2x4_t, float64_t, 2d, d, f64, q) +-__ST4_LANE_FUNC (poly8x16x4_t, poly8_t, 16b, b, p8, q) +-__ST4_LANE_FUNC (poly16x8x4_t, poly16_t, 8h, h, p16, q) +-__ST4_LANE_FUNC (int8x16x4_t, int8_t, 16b, b, s8, q) +-__ST4_LANE_FUNC (int16x8x4_t, int16_t, 8h, h, s16, q) +-__ST4_LANE_FUNC (int32x4x4_t, int32_t, 4s, s, s32, q) +-__ST4_LANE_FUNC (int64x2x4_t, int64_t, 2d, d, s64, q) +-__ST4_LANE_FUNC (uint8x16x4_t, uint8_t, 16b, b, u8, q) +-__ST4_LANE_FUNC (uint16x8x4_t, uint16_t, 8h, h, u16, q) +-__ST4_LANE_FUNC (uint32x4x4_t, uint32_t, 4s, s, u32, q) +-__ST4_LANE_FUNC (uint64x2x4_t, uint64_t, 2d, d, u64, q) +- + __extension__ static __inline int64_t __attribute__ ((__always_inline__)) + vaddlv_s32 (int32x2_t a) + { +@@ -14341,12 +12147,6 @@ + return result; + } + +-__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) +-vpaddd_s64 (int64x2_t __a) +-{ +- return __builtin_aarch64_addpdi (__a); +-} +- + __extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) + vqdmulh_laneq_s16 (int16x4_t __a, int16x8_t __b, const int __c) + { +@@ -15310,121 +13110,103 @@ + __extension__ static __inline int8_t __attribute__ ((__always_inline__)) + vaddv_s8 (int8x8_t __a) + { +- return vget_lane_s8 (__builtin_aarch64_reduc_splus_v8qi (__a), 0); ++ return __builtin_aarch64_reduc_plus_scal_v8qi (__a); + } + + __extension__ static __inline int16_t __attribute__ ((__always_inline__)) + vaddv_s16 (int16x4_t __a) + { +- return vget_lane_s16 (__builtin_aarch64_reduc_splus_v4hi (__a), 0); ++ return __builtin_aarch64_reduc_plus_scal_v4hi (__a); + } + + __extension__ static __inline int32_t __attribute__ ((__always_inline__)) + vaddv_s32 (int32x2_t __a) + { +- return vget_lane_s32 (__builtin_aarch64_reduc_splus_v2si (__a), 0); ++ return __builtin_aarch64_reduc_plus_scal_v2si (__a); + } + + __extension__ static __inline uint8_t __attribute__ ((__always_inline__)) + vaddv_u8 (uint8x8_t __a) + { +- return vget_lane_u8 ((uint8x8_t) +- __builtin_aarch64_reduc_uplus_v8qi ((int8x8_t) __a), +- 0); ++ return (uint8_t) __builtin_aarch64_reduc_plus_scal_v8qi ((int8x8_t) __a); + } + + __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) + vaddv_u16 (uint16x4_t __a) + { +- return vget_lane_u16 ((uint16x4_t) +- __builtin_aarch64_reduc_uplus_v4hi ((int16x4_t) __a), +- 0); ++ return (uint16_t) __builtin_aarch64_reduc_plus_scal_v4hi ((int16x4_t) __a); + } + + __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) + vaddv_u32 (uint32x2_t __a) + { +- return vget_lane_u32 ((uint32x2_t) +- __builtin_aarch64_reduc_uplus_v2si ((int32x2_t) __a), +- 0); ++ return (int32_t) __builtin_aarch64_reduc_plus_scal_v2si ((int32x2_t) __a); + } + + __extension__ static __inline int8_t __attribute__ ((__always_inline__)) + vaddvq_s8 (int8x16_t __a) + { +- return vgetq_lane_s8 (__builtin_aarch64_reduc_splus_v16qi (__a), +- 0); ++ return __builtin_aarch64_reduc_plus_scal_v16qi (__a); + } + + __extension__ static __inline int16_t __attribute__ ((__always_inline__)) + vaddvq_s16 (int16x8_t __a) + { +- return vgetq_lane_s16 (__builtin_aarch64_reduc_splus_v8hi (__a), 0); ++ return __builtin_aarch64_reduc_plus_scal_v8hi (__a); + } + + __extension__ static __inline int32_t __attribute__ ((__always_inline__)) + vaddvq_s32 (int32x4_t __a) + { +- return vgetq_lane_s32 (__builtin_aarch64_reduc_splus_v4si (__a), 0); ++ return __builtin_aarch64_reduc_plus_scal_v4si (__a); + } + + __extension__ static __inline int64_t __attribute__ ((__always_inline__)) + vaddvq_s64 (int64x2_t __a) + { +- return vgetq_lane_s64 (__builtin_aarch64_reduc_splus_v2di (__a), 0); ++ return __builtin_aarch64_reduc_plus_scal_v2di (__a); + } + + __extension__ static __inline uint8_t __attribute__ ((__always_inline__)) + vaddvq_u8 (uint8x16_t __a) + { +- return vgetq_lane_u8 ((uint8x16_t) +- __builtin_aarch64_reduc_uplus_v16qi ((int8x16_t) __a), +- 0); ++ return (uint8_t) __builtin_aarch64_reduc_plus_scal_v16qi ((int8x16_t) __a); + } + + __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) + vaddvq_u16 (uint16x8_t __a) + { +- return vgetq_lane_u16 ((uint16x8_t) +- __builtin_aarch64_reduc_uplus_v8hi ((int16x8_t) __a), +- 0); ++ return (uint16_t) __builtin_aarch64_reduc_plus_scal_v8hi ((int16x8_t) __a); + } + + __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) + vaddvq_u32 (uint32x4_t __a) + { +- return vgetq_lane_u32 ((uint32x4_t) +- __builtin_aarch64_reduc_uplus_v4si ((int32x4_t) __a), +- 0); ++ return (uint32_t) __builtin_aarch64_reduc_plus_scal_v4si ((int32x4_t) __a); + } + + __extension__ static __inline uint64_t __attribute__ ((__always_inline__)) + vaddvq_u64 (uint64x2_t __a) + { +- return vgetq_lane_u64 ((uint64x2_t) +- __builtin_aarch64_reduc_uplus_v2di ((int64x2_t) __a), +- 0); ++ return (uint64_t) __builtin_aarch64_reduc_plus_scal_v2di ((int64x2_t) __a); + } + + __extension__ static __inline float32_t __attribute__ ((__always_inline__)) + vaddv_f32 (float32x2_t __a) + { +- float32x2_t __t = __builtin_aarch64_reduc_splus_v2sf (__a); +- return vget_lane_f32 (__t, 0); ++ return __builtin_aarch64_reduc_plus_scal_v2sf (__a); + } + + __extension__ static __inline float32_t __attribute__ ((__always_inline__)) + vaddvq_f32 (float32x4_t __a) + { +- float32x4_t __t = __builtin_aarch64_reduc_splus_v4sf (__a); +- return vgetq_lane_f32 (__t, 0); ++ return __builtin_aarch64_reduc_plus_scal_v4sf (__a); + } + + __extension__ static __inline float64_t __attribute__ ((__always_inline__)) + vaddvq_f64 (float64x2_t __a) + { +- float64x2_t __t = __builtin_aarch64_reduc_splus_v2df (__a); +- return vgetq_lane_f64 (__t, 0); ++ return __builtin_aarch64_reduc_plus_scal_v2df (__a); + } + + /* vbsl */ +@@ -15706,7 +13488,7 @@ + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vceq_f32 (float32x2_t __a, float32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_cmeqv2sf (__a, __b); ++ return (uint32x2_t) (__a == __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -15718,26 +13500,25 @@ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vceq_p8 (poly8x8_t __a, poly8x8_t __b) + { +- return (uint8x8_t) __builtin_aarch64_cmeqv8qi ((int8x8_t) __a, +- (int8x8_t) __b); ++ return (uint8x8_t) (__a == __b); + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vceq_s8 (int8x8_t __a, int8x8_t __b) + { +- return (uint8x8_t) __builtin_aarch64_cmeqv8qi (__a, __b); ++ return (uint8x8_t) (__a == __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vceq_s16 (int16x4_t __a, int16x4_t __b) + { +- return (uint16x4_t) __builtin_aarch64_cmeqv4hi (__a, __b); ++ return (uint16x4_t) (__a == __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vceq_s32 (int32x2_t __a, int32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_cmeqv2si (__a, __b); ++ return (uint32x2_t) (__a == __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -15749,22 +13530,19 @@ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vceq_u8 (uint8x8_t __a, uint8x8_t __b) + { +- return (uint8x8_t) __builtin_aarch64_cmeqv8qi ((int8x8_t) __a, +- (int8x8_t) __b); ++ return (__a == __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vceq_u16 (uint16x4_t __a, uint16x4_t __b) + { +- return (uint16x4_t) __builtin_aarch64_cmeqv4hi ((int16x4_t) __a, +- (int16x4_t) __b); ++ return (__a == __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vceq_u32 (uint32x2_t __a, uint32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_cmeqv2si ((int32x2_t) __a, +- (int32x2_t) __b); ++ return (__a == __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -15776,72 +13554,67 @@ + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vceqq_f32 (float32x4_t __a, float32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_cmeqv4sf (__a, __b); ++ return (uint32x4_t) (__a == __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vceqq_f64 (float64x2_t __a, float64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_cmeqv2df (__a, __b); ++ return (uint64x2_t) (__a == __b); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vceqq_p8 (poly8x16_t __a, poly8x16_t __b) + { +- return (uint8x16_t) __builtin_aarch64_cmeqv16qi ((int8x16_t) __a, +- (int8x16_t) __b); ++ return (uint8x16_t) (__a == __b); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vceqq_s8 (int8x16_t __a, int8x16_t __b) + { +- return (uint8x16_t) __builtin_aarch64_cmeqv16qi (__a, __b); ++ return (uint8x16_t) (__a == __b); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vceqq_s16 (int16x8_t __a, int16x8_t __b) + { +- return (uint16x8_t) __builtin_aarch64_cmeqv8hi (__a, __b); ++ return (uint16x8_t) (__a == __b); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vceqq_s32 (int32x4_t __a, int32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_cmeqv4si (__a, __b); ++ return (uint32x4_t) (__a == __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vceqq_s64 (int64x2_t __a, int64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_cmeqv2di (__a, __b); ++ return (uint64x2_t) (__a == __b); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vceqq_u8 (uint8x16_t __a, uint8x16_t __b) + { +- return (uint8x16_t) __builtin_aarch64_cmeqv16qi ((int8x16_t) __a, +- (int8x16_t) __b); ++ return (__a == __b); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vceqq_u16 (uint16x8_t __a, uint16x8_t __b) + { +- return (uint16x8_t) __builtin_aarch64_cmeqv8hi ((int16x8_t) __a, +- (int16x8_t) __b); ++ return (__a == __b); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vceqq_u32 (uint32x4_t __a, uint32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_cmeqv4si ((int32x4_t) __a, +- (int32x4_t) __b); ++ return (__a == __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vceqq_u64 (uint64x2_t __a, uint64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_cmeqv2di ((int64x2_t) __a, +- (int64x2_t) __b); ++ return (__a == __b); + } + + /* vceq - scalar. */ +@@ -15875,8 +13648,7 @@ + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vceqz_f32 (float32x2_t __a) + { +- float32x2_t __b = {0.0f, 0.0f}; +- return (uint32x2_t) __builtin_aarch64_cmeqv2sf (__a, __b); ++ return (uint32x2_t) (__a == 0.0f); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -15888,30 +13660,25 @@ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vceqz_p8 (poly8x8_t __a) + { +- poly8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x8_t) __builtin_aarch64_cmeqv8qi ((int8x8_t) __a, +- (int8x8_t) __b); ++ return (uint8x8_t) (__a == 0); + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vceqz_s8 (int8x8_t __a) + { +- int8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x8_t) __builtin_aarch64_cmeqv8qi (__a, __b); ++ return (uint8x8_t) (__a == 0); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vceqz_s16 (int16x4_t __a) + { +- int16x4_t __b = {0, 0, 0, 0}; +- return (uint16x4_t) __builtin_aarch64_cmeqv4hi (__a, __b); ++ return (uint16x4_t) (__a == 0); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vceqz_s32 (int32x2_t __a) + { +- int32x2_t __b = {0, 0}; +- return (uint32x2_t) __builtin_aarch64_cmeqv2si (__a, __b); ++ return (uint32x2_t) (__a == 0); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -15923,25 +13690,19 @@ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vceqz_u8 (uint8x8_t __a) + { +- uint8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x8_t) __builtin_aarch64_cmeqv8qi ((int8x8_t) __a, +- (int8x8_t) __b); ++ return (__a == 0); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vceqz_u16 (uint16x4_t __a) + { +- uint16x4_t __b = {0, 0, 0, 0}; +- return (uint16x4_t) __builtin_aarch64_cmeqv4hi ((int16x4_t) __a, +- (int16x4_t) __b); ++ return (__a == 0); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vceqz_u32 (uint32x2_t __a) + { +- uint32x2_t __b = {0, 0}; +- return (uint32x2_t) __builtin_aarch64_cmeqv2si ((int32x2_t) __a, +- (int32x2_t) __b); ++ return (__a == 0); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -15953,86 +13714,67 @@ + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vceqzq_f32 (float32x4_t __a) + { +- float32x4_t __b = {0.0f, 0.0f, 0.0f, 0.0f}; +- return (uint32x4_t) __builtin_aarch64_cmeqv4sf (__a, __b); ++ return (uint32x4_t) (__a == 0.0f); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vceqzq_f64 (float64x2_t __a) + { +- float64x2_t __b = {0.0, 0.0}; +- return (uint64x2_t) __builtin_aarch64_cmeqv2df (__a, __b); ++ return (uint64x2_t) (__a == 0.0f); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vceqzq_p8 (poly8x16_t __a) + { +- poly8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x16_t) __builtin_aarch64_cmeqv16qi ((int8x16_t) __a, +- (int8x16_t) __b); ++ return (uint8x16_t) (__a == 0); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vceqzq_s8 (int8x16_t __a) + { +- int8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x16_t) __builtin_aarch64_cmeqv16qi (__a, __b); ++ return (uint8x16_t) (__a == 0); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vceqzq_s16 (int16x8_t __a) + { +- int16x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint16x8_t) __builtin_aarch64_cmeqv8hi (__a, __b); ++ return (uint16x8_t) (__a == 0); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vceqzq_s32 (int32x4_t __a) + { +- int32x4_t __b = {0, 0, 0, 0}; +- return (uint32x4_t) __builtin_aarch64_cmeqv4si (__a, __b); ++ return (uint32x4_t) (__a == 0); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vceqzq_s64 (int64x2_t __a) + { +- int64x2_t __b = {0, 0}; +- return (uint64x2_t) __builtin_aarch64_cmeqv2di (__a, __b); ++ return (uint64x2_t) (__a == __AARCH64_INT64_C (0)); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vceqzq_u8 (uint8x16_t __a) + { +- uint8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x16_t) __builtin_aarch64_cmeqv16qi ((int8x16_t) __a, +- (int8x16_t) __b); ++ return (__a == 0); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vceqzq_u16 (uint16x8_t __a) + { +- uint16x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint16x8_t) __builtin_aarch64_cmeqv8hi ((int16x8_t) __a, +- (int16x8_t) __b); ++ return (__a == 0); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vceqzq_u32 (uint32x4_t __a) + { +- uint32x4_t __b = {0, 0, 0, 0}; +- return (uint32x4_t) __builtin_aarch64_cmeqv4si ((int32x4_t) __a, +- (int32x4_t) __b); ++ return (__a == 0); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vceqzq_u64 (uint64x2_t __a) + { +- uint64x2_t __b = {0, 0}; +- return (uint64x2_t) __builtin_aarch64_cmeqv2di ((int64x2_t) __a, +- (int64x2_t) __b); ++ return (__a == __AARCH64_UINT64_C (0)); + } + + /* vceqz - scalar. */ +@@ -16066,7 +13808,7 @@ + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vcge_f32 (float32x2_t __a, float32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_cmgev2sf (__a, __b); ++ return (uint32x2_t) (__a >= __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -16076,28 +13818,21 @@ + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +-vcge_p8 (poly8x8_t __a, poly8x8_t __b) +-{ +- return (uint8x8_t) __builtin_aarch64_cmgev8qi ((int8x8_t) __a, +- (int8x8_t) __b); +-} +- +-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vcge_s8 (int8x8_t __a, int8x8_t __b) + { +- return (uint8x8_t) __builtin_aarch64_cmgev8qi (__a, __b); ++ return (uint8x8_t) (__a >= __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vcge_s16 (int16x4_t __a, int16x4_t __b) + { +- return (uint16x4_t) __builtin_aarch64_cmgev4hi (__a, __b); ++ return (uint16x4_t) (__a >= __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vcge_s32 (int32x2_t __a, int32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_cmgev2si (__a, __b); ++ return (uint32x2_t) (__a >= __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -16109,22 +13844,19 @@ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vcge_u8 (uint8x8_t __a, uint8x8_t __b) + { +- return (uint8x8_t) __builtin_aarch64_cmgeuv8qi ((int8x8_t) __a, +- (int8x8_t) __b); ++ return (__a >= __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vcge_u16 (uint16x4_t __a, uint16x4_t __b) + { +- return (uint16x4_t) __builtin_aarch64_cmgeuv4hi ((int16x4_t) __a, +- (int16x4_t) __b); ++ return (__a >= __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vcge_u32 (uint32x2_t __a, uint32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_cmgeuv2si ((int32x2_t) __a, +- (int32x2_t) __b); ++ return (__a >= __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -16136,72 +13868,61 @@ + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vcgeq_f32 (float32x4_t __a, float32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_cmgev4sf (__a, __b); ++ return (uint32x4_t) (__a >= __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vcgeq_f64 (float64x2_t __a, float64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_cmgev2df (__a, __b); ++ return (uint64x2_t) (__a >= __b); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +-vcgeq_p8 (poly8x16_t __a, poly8x16_t __b) +-{ +- return (uint8x16_t) __builtin_aarch64_cmgev16qi ((int8x16_t) __a, +- (int8x16_t) __b); +-} +- +-__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vcgeq_s8 (int8x16_t __a, int8x16_t __b) + { +- return (uint8x16_t) __builtin_aarch64_cmgev16qi (__a, __b); ++ return (uint8x16_t) (__a >= __b); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vcgeq_s16 (int16x8_t __a, int16x8_t __b) + { +- return (uint16x8_t) __builtin_aarch64_cmgev8hi (__a, __b); ++ return (uint16x8_t) (__a >= __b); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vcgeq_s32 (int32x4_t __a, int32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_cmgev4si (__a, __b); ++ return (uint32x4_t) (__a >= __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vcgeq_s64 (int64x2_t __a, int64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_cmgev2di (__a, __b); ++ return (uint64x2_t) (__a >= __b); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vcgeq_u8 (uint8x16_t __a, uint8x16_t __b) + { +- return (uint8x16_t) __builtin_aarch64_cmgeuv16qi ((int8x16_t) __a, +- (int8x16_t) __b); ++ return (__a >= __b); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vcgeq_u16 (uint16x8_t __a, uint16x8_t __b) + { +- return (uint16x8_t) __builtin_aarch64_cmgeuv8hi ((int16x8_t) __a, +- (int16x8_t) __b); ++ return (__a >= __b); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vcgeq_u32 (uint32x4_t __a, uint32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_cmgeuv4si ((int32x4_t) __a, +- (int32x4_t) __b); ++ return (__a >= __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vcgeq_u64 (uint64x2_t __a, uint64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_cmgeuv2di ((int64x2_t) __a, +- (int64x2_t) __b); ++ return (__a >= __b); + } + + /* vcge - scalar. */ +@@ -16235,8 +13956,7 @@ + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vcgez_f32 (float32x2_t __a) + { +- float32x2_t __b = {0.0f, 0.0f}; +- return (uint32x2_t) __builtin_aarch64_cmgev2sf (__a, __b); ++ return (uint32x2_t) (__a >= 0.0f); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -16246,32 +13966,21 @@ + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +-vcgez_p8 (poly8x8_t __a) +-{ +- poly8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x8_t) __builtin_aarch64_cmgev8qi ((int8x8_t) __a, +- (int8x8_t) __b); +-} +- +-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vcgez_s8 (int8x8_t __a) + { +- int8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x8_t) __builtin_aarch64_cmgev8qi (__a, __b); ++ return (uint8x8_t) (__a >= 0); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vcgez_s16 (int16x4_t __a) + { +- int16x4_t __b = {0, 0, 0, 0}; +- return (uint16x4_t) __builtin_aarch64_cmgev4hi (__a, __b); ++ return (uint16x4_t) (__a >= 0); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vcgez_s32 (int32x2_t __a) + { +- int32x2_t __b = {0, 0}; +- return (uint32x2_t) __builtin_aarch64_cmgev2si (__a, __b); ++ return (uint32x2_t) (__a >= 0); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -16280,121 +13989,42 @@ + return __a >= 0ll ? -1ll : 0ll; + } + +-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +-vcgez_u8 (uint8x8_t __a) +-{ +- uint8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x8_t) __builtin_aarch64_cmgeuv8qi ((int8x8_t) __a, +- (int8x8_t) __b); +-} +- +-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +-vcgez_u16 (uint16x4_t __a) +-{ +- uint16x4_t __b = {0, 0, 0, 0}; +- return (uint16x4_t) __builtin_aarch64_cmgeuv4hi ((int16x4_t) __a, +- (int16x4_t) __b); +-} +- +-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +-vcgez_u32 (uint32x2_t __a) +-{ +- uint32x2_t __b = {0, 0}; +- return (uint32x2_t) __builtin_aarch64_cmgeuv2si ((int32x2_t) __a, +- (int32x2_t) __b); +-} +- +-__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +-vcgez_u64 (uint64x1_t __a) +-{ +- return __a >= 0ll ? -1ll : 0ll; +-} +- + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vcgezq_f32 (float32x4_t __a) + { +- float32x4_t __b = {0.0f, 0.0f, 0.0f, 0.0f}; +- return (uint32x4_t) __builtin_aarch64_cmgev4sf (__a, __b); ++ return (uint32x4_t) (__a >= 0.0f); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vcgezq_f64 (float64x2_t __a) + { +- float64x2_t __b = {0.0, 0.0}; +- return (uint64x2_t) __builtin_aarch64_cmgev2df (__a, __b); ++ return (uint64x2_t) (__a >= 0.0); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +-vcgezq_p8 (poly8x16_t __a) +-{ +- poly8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x16_t) __builtin_aarch64_cmgev16qi ((int8x16_t) __a, +- (int8x16_t) __b); +-} +- +-__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vcgezq_s8 (int8x16_t __a) + { +- int8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x16_t) __builtin_aarch64_cmgev16qi (__a, __b); ++ return (uint8x16_t) (__a >= 0); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vcgezq_s16 (int16x8_t __a) + { +- int16x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint16x8_t) __builtin_aarch64_cmgev8hi (__a, __b); ++ return (uint16x8_t) (__a >= 0); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vcgezq_s32 (int32x4_t __a) + { +- int32x4_t __b = {0, 0, 0, 0}; +- return (uint32x4_t) __builtin_aarch64_cmgev4si (__a, __b); ++ return (uint32x4_t) (__a >= 0); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vcgezq_s64 (int64x2_t __a) + { +- int64x2_t __b = {0, 0}; +- return (uint64x2_t) __builtin_aarch64_cmgev2di (__a, __b); ++ return (uint64x2_t) (__a >= __AARCH64_INT64_C (0)); + } + +-__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +-vcgezq_u8 (uint8x16_t __a) +-{ +- uint8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x16_t) __builtin_aarch64_cmgeuv16qi ((int8x16_t) __a, +- (int8x16_t) __b); +-} +- +-__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) +-vcgezq_u16 (uint16x8_t __a) +-{ +- uint16x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint16x8_t) __builtin_aarch64_cmgeuv8hi ((int16x8_t) __a, +- (int16x8_t) __b); +-} +- +-__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +-vcgezq_u32 (uint32x4_t __a) +-{ +- uint32x4_t __b = {0, 0, 0, 0}; +- return (uint32x4_t) __builtin_aarch64_cmgeuv4si ((int32x4_t) __a, +- (int32x4_t) __b); +-} +- +-__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +-vcgezq_u64 (uint64x2_t __a) +-{ +- uint64x2_t __b = {0, 0}; +- return (uint64x2_t) __builtin_aarch64_cmgeuv2di ((int64x2_t) __a, +- (int64x2_t) __b); +-} +- + /* vcgez - scalar. */ + + __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) +@@ -16409,12 +14039,6 @@ + return __a >= 0 ? -1ll : 0ll; + } + +-__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +-vcgezd_u64 (int64x1_t __a) +-{ +- return __a >= 0 ? -1ll : 0ll; +-} +- + __extension__ static __inline uint64_t __attribute__ ((__always_inline__)) + vcgezd_f64 (float64_t __a) + { +@@ -16426,7 +14050,7 @@ + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vcgt_f32 (float32x2_t __a, float32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_cmgtv2sf (__a, __b); ++ return (uint32x2_t) (__a > __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -16436,28 +14060,21 @@ + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +-vcgt_p8 (poly8x8_t __a, poly8x8_t __b) +-{ +- return (uint8x8_t) __builtin_aarch64_cmgtv8qi ((int8x8_t) __a, +- (int8x8_t) __b); +-} +- +-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vcgt_s8 (int8x8_t __a, int8x8_t __b) + { +- return (uint8x8_t) __builtin_aarch64_cmgtv8qi (__a, __b); ++ return (uint8x8_t) (__a > __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vcgt_s16 (int16x4_t __a, int16x4_t __b) + { +- return (uint16x4_t) __builtin_aarch64_cmgtv4hi (__a, __b); ++ return (uint16x4_t) (__a > __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vcgt_s32 (int32x2_t __a, int32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_cmgtv2si (__a, __b); ++ return (uint32x2_t) (__a > __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -16469,22 +14086,19 @@ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vcgt_u8 (uint8x8_t __a, uint8x8_t __b) + { +- return (uint8x8_t) __builtin_aarch64_cmgtuv8qi ((int8x8_t) __a, +- (int8x8_t) __b); ++ return (__a > __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vcgt_u16 (uint16x4_t __a, uint16x4_t __b) + { +- return (uint16x4_t) __builtin_aarch64_cmgtuv4hi ((int16x4_t) __a, +- (int16x4_t) __b); ++ return (__a > __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vcgt_u32 (uint32x2_t __a, uint32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_cmgtuv2si ((int32x2_t) __a, +- (int32x2_t) __b); ++ return (__a > __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -16496,72 +14110,61 @@ + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vcgtq_f32 (float32x4_t __a, float32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_cmgtv4sf (__a, __b); ++ return (uint32x4_t) (__a > __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vcgtq_f64 (float64x2_t __a, float64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_cmgtv2df (__a, __b); ++ return (uint64x2_t) (__a > __b); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +-vcgtq_p8 (poly8x16_t __a, poly8x16_t __b) +-{ +- return (uint8x16_t) __builtin_aarch64_cmgtv16qi ((int8x16_t) __a, +- (int8x16_t) __b); +-} +- +-__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vcgtq_s8 (int8x16_t __a, int8x16_t __b) + { +- return (uint8x16_t) __builtin_aarch64_cmgtv16qi (__a, __b); ++ return (uint8x16_t) (__a > __b); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vcgtq_s16 (int16x8_t __a, int16x8_t __b) + { +- return (uint16x8_t) __builtin_aarch64_cmgtv8hi (__a, __b); ++ return (uint16x8_t) (__a > __b); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vcgtq_s32 (int32x4_t __a, int32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_cmgtv4si (__a, __b); ++ return (uint32x4_t) (__a > __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vcgtq_s64 (int64x2_t __a, int64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_cmgtv2di (__a, __b); ++ return (uint64x2_t) (__a > __b); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vcgtq_u8 (uint8x16_t __a, uint8x16_t __b) + { +- return (uint8x16_t) __builtin_aarch64_cmgtuv16qi ((int8x16_t) __a, +- (int8x16_t) __b); ++ return (__a > __b); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vcgtq_u16 (uint16x8_t __a, uint16x8_t __b) + { +- return (uint16x8_t) __builtin_aarch64_cmgtuv8hi ((int16x8_t) __a, +- (int16x8_t) __b); ++ return (__a > __b); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vcgtq_u32 (uint32x4_t __a, uint32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_cmgtuv4si ((int32x4_t) __a, +- (int32x4_t) __b); ++ return (__a > __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vcgtq_u64 (uint64x2_t __a, uint64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_cmgtuv2di ((int64x2_t) __a, +- (int64x2_t) __b); ++ return (__a > __b); + } + + /* vcgt - scalar. */ +@@ -16595,8 +14198,7 @@ + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vcgtz_f32 (float32x2_t __a) + { +- float32x2_t __b = {0.0f, 0.0f}; +- return (uint32x2_t) __builtin_aarch64_cmgtv2sf (__a, __b); ++ return (uint32x2_t) (__a > 0.0f); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -16606,32 +14208,21 @@ + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +-vcgtz_p8 (poly8x8_t __a) +-{ +- poly8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x8_t) __builtin_aarch64_cmgtv8qi ((int8x8_t) __a, +- (int8x8_t) __b); +-} +- +-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vcgtz_s8 (int8x8_t __a) + { +- int8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x8_t) __builtin_aarch64_cmgtv8qi (__a, __b); ++ return (uint8x8_t) (__a > 0); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vcgtz_s16 (int16x4_t __a) + { +- int16x4_t __b = {0, 0, 0, 0}; +- return (uint16x4_t) __builtin_aarch64_cmgtv4hi (__a, __b); ++ return (uint16x4_t) (__a > 0); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vcgtz_s32 (int32x2_t __a) + { +- int32x2_t __b = {0, 0}; +- return (uint32x2_t) __builtin_aarch64_cmgtv2si (__a, __b); ++ return (uint32x2_t) (__a > 0); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -16640,121 +14231,42 @@ + return __a > 0ll ? -1ll : 0ll; + } + +-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +-vcgtz_u8 (uint8x8_t __a) +-{ +- uint8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x8_t) __builtin_aarch64_cmgtuv8qi ((int8x8_t) __a, +- (int8x8_t) __b); +-} +- +-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +-vcgtz_u16 (uint16x4_t __a) +-{ +- uint16x4_t __b = {0, 0, 0, 0}; +- return (uint16x4_t) __builtin_aarch64_cmgtuv4hi ((int16x4_t) __a, +- (int16x4_t) __b); +-} +- +-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +-vcgtz_u32 (uint32x2_t __a) +-{ +- uint32x2_t __b = {0, 0}; +- return (uint32x2_t) __builtin_aarch64_cmgtuv2si ((int32x2_t) __a, +- (int32x2_t) __b); +-} +- +-__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +-vcgtz_u64 (uint64x1_t __a) +-{ +- return __a > 0ll ? -1ll : 0ll; +-} +- + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vcgtzq_f32 (float32x4_t __a) + { +- float32x4_t __b = {0.0f, 0.0f, 0.0f, 0.0f}; +- return (uint32x4_t) __builtin_aarch64_cmgtv4sf (__a, __b); ++ return (uint32x4_t) (__a > 0.0f); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vcgtzq_f64 (float64x2_t __a) + { +- float64x2_t __b = {0.0, 0.0}; +- return (uint64x2_t) __builtin_aarch64_cmgtv2df (__a, __b); ++ return (uint64x2_t) (__a > 0.0); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +-vcgtzq_p8 (poly8x16_t __a) +-{ +- poly8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x16_t) __builtin_aarch64_cmgtv16qi ((int8x16_t) __a, +- (int8x16_t) __b); +-} +- +-__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vcgtzq_s8 (int8x16_t __a) + { +- int8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x16_t) __builtin_aarch64_cmgtv16qi (__a, __b); ++ return (uint8x16_t) (__a > 0); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vcgtzq_s16 (int16x8_t __a) + { +- int16x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint16x8_t) __builtin_aarch64_cmgtv8hi (__a, __b); ++ return (uint16x8_t) (__a > 0); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vcgtzq_s32 (int32x4_t __a) + { +- int32x4_t __b = {0, 0, 0, 0}; +- return (uint32x4_t) __builtin_aarch64_cmgtv4si (__a, __b); ++ return (uint32x4_t) (__a > 0); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vcgtzq_s64 (int64x2_t __a) + { +- int64x2_t __b = {0, 0}; +- return (uint64x2_t) __builtin_aarch64_cmgtv2di (__a, __b); ++ return (uint64x2_t) (__a > __AARCH64_INT64_C (0)); + } + +-__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +-vcgtzq_u8 (uint8x16_t __a) +-{ +- uint8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x16_t) __builtin_aarch64_cmgtuv16qi ((int8x16_t) __a, +- (int8x16_t) __b); +-} +- +-__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) +-vcgtzq_u16 (uint16x8_t __a) +-{ +- uint16x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint16x8_t) __builtin_aarch64_cmgtuv8hi ((int16x8_t) __a, +- (int16x8_t) __b); +-} +- +-__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +-vcgtzq_u32 (uint32x4_t __a) +-{ +- uint32x4_t __b = {0, 0, 0, 0}; +- return (uint32x4_t) __builtin_aarch64_cmgtuv4si ((int32x4_t) __a, +- (int32x4_t) __b); +-} +- +-__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +-vcgtzq_u64 (uint64x2_t __a) +-{ +- uint64x2_t __b = {0, 0}; +- return (uint64x2_t) __builtin_aarch64_cmgtuv2di ((int64x2_t) __a, +- (int64x2_t) __b); +-} +- + /* vcgtz - scalar. */ + + __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) +@@ -16769,12 +14281,6 @@ + return __a > 0 ? -1ll : 0ll; + } + +-__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +-vcgtzd_u64 (int64x1_t __a) +-{ +- return __a > 0 ? -1ll : 0ll; +-} +- + __extension__ static __inline uint64_t __attribute__ ((__always_inline__)) + vcgtzd_f64 (float64_t __a) + { +@@ -16786,7 +14292,7 @@ + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vcle_f32 (float32x2_t __a, float32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_cmgev2sf (__b, __a); ++ return (uint32x2_t) (__a <= __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -16796,28 +14302,21 @@ + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +-vcle_p8 (poly8x8_t __a, poly8x8_t __b) +-{ +- return (uint8x8_t) __builtin_aarch64_cmgev8qi ((int8x8_t) __b, +- (int8x8_t) __a); +-} +- +-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vcle_s8 (int8x8_t __a, int8x8_t __b) + { +- return (uint8x8_t) __builtin_aarch64_cmgev8qi (__b, __a); ++ return (uint8x8_t) (__a <= __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vcle_s16 (int16x4_t __a, int16x4_t __b) + { +- return (uint16x4_t) __builtin_aarch64_cmgev4hi (__b, __a); ++ return (uint16x4_t) (__a <= __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vcle_s32 (int32x2_t __a, int32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_cmgev2si (__b, __a); ++ return (uint32x2_t) (__a <= __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -16829,22 +14328,19 @@ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vcle_u8 (uint8x8_t __a, uint8x8_t __b) + { +- return (uint8x8_t) __builtin_aarch64_cmgeuv8qi ((int8x8_t) __b, +- (int8x8_t) __a); ++ return (__a <= __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vcle_u16 (uint16x4_t __a, uint16x4_t __b) + { +- return (uint16x4_t) __builtin_aarch64_cmgeuv4hi ((int16x4_t) __b, +- (int16x4_t) __a); ++ return (__a <= __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vcle_u32 (uint32x2_t __a, uint32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_cmgeuv2si ((int32x2_t) __b, +- (int32x2_t) __a); ++ return (__a <= __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -16856,72 +14352,61 @@ + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vcleq_f32 (float32x4_t __a, float32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_cmgev4sf (__b, __a); ++ return (uint32x4_t) (__a <= __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vcleq_f64 (float64x2_t __a, float64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_cmgev2df (__b, __a); ++ return (uint64x2_t) (__a <= __b); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +-vcleq_p8 (poly8x16_t __a, poly8x16_t __b) +-{ +- return (uint8x16_t) __builtin_aarch64_cmgev16qi ((int8x16_t) __b, +- (int8x16_t) __a); +-} +- +-__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vcleq_s8 (int8x16_t __a, int8x16_t __b) + { +- return (uint8x16_t) __builtin_aarch64_cmgev16qi (__b, __a); ++ return (uint8x16_t) (__a <= __b); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vcleq_s16 (int16x8_t __a, int16x8_t __b) + { +- return (uint16x8_t) __builtin_aarch64_cmgev8hi (__b, __a); ++ return (uint16x8_t) (__a <= __b); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vcleq_s32 (int32x4_t __a, int32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_cmgev4si (__b, __a); ++ return (uint32x4_t) (__a <= __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vcleq_s64 (int64x2_t __a, int64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_cmgev2di (__b, __a); ++ return (uint64x2_t) (__a <= __b); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vcleq_u8 (uint8x16_t __a, uint8x16_t __b) + { +- return (uint8x16_t) __builtin_aarch64_cmgeuv16qi ((int8x16_t) __b, +- (int8x16_t) __a); ++ return (__a <= __b); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vcleq_u16 (uint16x8_t __a, uint16x8_t __b) + { +- return (uint16x8_t) __builtin_aarch64_cmgeuv8hi ((int16x8_t) __b, +- (int16x8_t) __a); ++ return (__a <= __b); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vcleq_u32 (uint32x4_t __a, uint32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_cmgeuv4si ((int32x4_t) __b, +- (int32x4_t) __a); ++ return (__a <= __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vcleq_u64 (uint64x2_t __a, uint64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_cmgeuv2di ((int64x2_t) __b, +- (int64x2_t) __a); ++ return (__a <= __b); + } + + /* vcle - scalar. */ +@@ -16955,8 +14440,7 @@ + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vclez_f32 (float32x2_t __a) + { +- float32x2_t __b = {0.0f, 0.0f}; +- return (uint32x2_t) __builtin_aarch64_cmlev2sf (__a, __b); ++ return (uint32x2_t) (__a <= 0.0f); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -16966,32 +14450,21 @@ + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +-vclez_p8 (poly8x8_t __a) +-{ +- poly8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x8_t) __builtin_aarch64_cmlev8qi ((int8x8_t) __a, +- (int8x8_t) __b); +-} +- +-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vclez_s8 (int8x8_t __a) + { +- int8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x8_t) __builtin_aarch64_cmlev8qi (__a, __b); ++ return (uint8x8_t) (__a <= 0); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vclez_s16 (int16x4_t __a) + { +- int16x4_t __b = {0, 0, 0, 0}; +- return (uint16x4_t) __builtin_aarch64_cmlev4hi (__a, __b); ++ return (uint16x4_t) (__a <= 0); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vclez_s32 (int32x2_t __a) + { +- int32x2_t __b = {0, 0}; +- return (uint32x2_t) __builtin_aarch64_cmlev2si (__a, __b); ++ return (uint32x2_t) (__a <= 0); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -17000,62 +14473,40 @@ + return __a <= 0ll ? -1ll : 0ll; + } + +-__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +-vclez_u64 (uint64x1_t __a) +-{ +- return __a <= 0ll ? -1ll : 0ll; +-} +- + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vclezq_f32 (float32x4_t __a) + { +- float32x4_t __b = {0.0f, 0.0f, 0.0f, 0.0f}; +- return (uint32x4_t) __builtin_aarch64_cmlev4sf (__a, __b); ++ return (uint32x4_t) (__a <= 0.0f); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vclezq_f64 (float64x2_t __a) + { +- float64x2_t __b = {0.0, 0.0}; +- return (uint64x2_t) __builtin_aarch64_cmlev2df (__a, __b); ++ return (uint64x2_t) (__a <= 0.0); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +-vclezq_p8 (poly8x16_t __a) +-{ +- poly8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x16_t) __builtin_aarch64_cmlev16qi ((int8x16_t) __a, +- (int8x16_t) __b); +-} +- +-__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vclezq_s8 (int8x16_t __a) + { +- int8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x16_t) __builtin_aarch64_cmlev16qi (__a, __b); ++ return (uint8x16_t) (__a <= 0); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vclezq_s16 (int16x8_t __a) + { +- int16x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint16x8_t) __builtin_aarch64_cmlev8hi (__a, __b); ++ return (uint16x8_t) (__a <= 0); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vclezq_s32 (int32x4_t __a) + { +- int32x4_t __b = {0, 0, 0, 0}; +- return (uint32x4_t) __builtin_aarch64_cmlev4si (__a, __b); ++ return (uint32x4_t) (__a <= 0); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vclezq_s64 (int64x2_t __a) + { +- int64x2_t __b = {0, 0}; +- return (uint64x2_t) __builtin_aarch64_cmlev2di (__a, __b); ++ return (uint64x2_t) (__a <= __AARCH64_INT64_C (0)); + } + + /* vclez - scalar. */ +@@ -17072,12 +14523,6 @@ + return __a <= 0 ? -1ll : 0ll; + } + +-__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +-vclezd_u64 (int64x1_t __a) +-{ +- return __a <= 0 ? -1ll : 0ll; +-} +- + __extension__ static __inline uint64_t __attribute__ ((__always_inline__)) + vclezd_f64 (float64_t __a) + { +@@ -17089,7 +14534,7 @@ + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vclt_f32 (float32x2_t __a, float32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_cmgtv2sf (__b, __a); ++ return (uint32x2_t) (__a < __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -17099,28 +14544,21 @@ + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +-vclt_p8 (poly8x8_t __a, poly8x8_t __b) +-{ +- return (uint8x8_t) __builtin_aarch64_cmgtv8qi ((int8x8_t) __b, +- (int8x8_t) __a); +-} +- +-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vclt_s8 (int8x8_t __a, int8x8_t __b) + { +- return (uint8x8_t) __builtin_aarch64_cmgtv8qi (__b, __a); ++ return (uint8x8_t) (__a < __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vclt_s16 (int16x4_t __a, int16x4_t __b) + { +- return (uint16x4_t) __builtin_aarch64_cmgtv4hi (__b, __a); ++ return (uint16x4_t) (__a < __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vclt_s32 (int32x2_t __a, int32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_cmgtv2si (__b, __a); ++ return (uint32x2_t) (__a < __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -17132,22 +14570,19 @@ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vclt_u8 (uint8x8_t __a, uint8x8_t __b) + { +- return (uint8x8_t) __builtin_aarch64_cmgtuv8qi ((int8x8_t) __b, +- (int8x8_t) __a); ++ return (__a < __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vclt_u16 (uint16x4_t __a, uint16x4_t __b) + { +- return (uint16x4_t) __builtin_aarch64_cmgtuv4hi ((int16x4_t) __b, +- (int16x4_t) __a); ++ return (__a < __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vclt_u32 (uint32x2_t __a, uint32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_cmgtuv2si ((int32x2_t) __b, +- (int32x2_t) __a); ++ return (__a < __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -17159,72 +14594,61 @@ + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vcltq_f32 (float32x4_t __a, float32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_cmgtv4sf (__b, __a); ++ return (uint32x4_t) (__a < __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vcltq_f64 (float64x2_t __a, float64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_cmgtv2df (__b, __a); ++ return (uint64x2_t) (__a < __b); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +-vcltq_p8 (poly8x16_t __a, poly8x16_t __b) +-{ +- return (uint8x16_t) __builtin_aarch64_cmgtv16qi ((int8x16_t) __b, +- (int8x16_t) __a); +-} +- +-__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vcltq_s8 (int8x16_t __a, int8x16_t __b) + { +- return (uint8x16_t) __builtin_aarch64_cmgtv16qi (__b, __a); ++ return (uint8x16_t) (__a < __b); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vcltq_s16 (int16x8_t __a, int16x8_t __b) + { +- return (uint16x8_t) __builtin_aarch64_cmgtv8hi (__b, __a); ++ return (uint16x8_t) (__a < __b); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vcltq_s32 (int32x4_t __a, int32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_cmgtv4si (__b, __a); ++ return (uint32x4_t) (__a < __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vcltq_s64 (int64x2_t __a, int64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_cmgtv2di (__b, __a); ++ return (uint64x2_t) (__a < __b); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vcltq_u8 (uint8x16_t __a, uint8x16_t __b) + { +- return (uint8x16_t) __builtin_aarch64_cmgtuv16qi ((int8x16_t) __b, +- (int8x16_t) __a); ++ return (__a < __b); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vcltq_u16 (uint16x8_t __a, uint16x8_t __b) + { +- return (uint16x8_t) __builtin_aarch64_cmgtuv8hi ((int16x8_t) __b, +- (int16x8_t) __a); ++ return (__a < __b); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vcltq_u32 (uint32x4_t __a, uint32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_cmgtuv4si ((int32x4_t) __b, +- (int32x4_t) __a); ++ return (__a < __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vcltq_u64 (uint64x2_t __a, uint64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_cmgtuv2di ((int64x2_t) __b, +- (int64x2_t) __a); ++ return (__a < __b); + } + + /* vclt - scalar. */ +@@ -17258,8 +14682,7 @@ + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vcltz_f32 (float32x2_t __a) + { +- float32x2_t __b = {0.0f, 0.0f}; +- return (uint32x2_t) __builtin_aarch64_cmltv2sf (__a, __b); ++ return (uint32x2_t) (__a < 0.0f); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -17269,32 +14692,21 @@ + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +-vcltz_p8 (poly8x8_t __a) +-{ +- poly8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x8_t) __builtin_aarch64_cmltv8qi ((int8x8_t) __a, +- (int8x8_t) __b); +-} +- +-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vcltz_s8 (int8x8_t __a) + { +- int8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x8_t) __builtin_aarch64_cmltv8qi (__a, __b); ++ return (uint8x8_t) (__a < 0); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vcltz_s16 (int16x4_t __a) + { +- int16x4_t __b = {0, 0, 0, 0}; +- return (uint16x4_t) __builtin_aarch64_cmltv4hi (__a, __b); ++ return (uint16x4_t) (__a < 0); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vcltz_s32 (int32x2_t __a) + { +- int32x2_t __b = {0, 0}; +- return (uint32x2_t) __builtin_aarch64_cmltv2si (__a, __b); ++ return (uint32x2_t) (__a < 0); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -17306,53 +14718,37 @@ + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vcltzq_f32 (float32x4_t __a) + { +- float32x4_t __b = {0.0f, 0.0f, 0.0f, 0.0f}; +- return (uint32x4_t) __builtin_aarch64_cmltv4sf (__a, __b); ++ return (uint32x4_t) (__a < 0.0f); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vcltzq_f64 (float64x2_t __a) + { +- float64x2_t __b = {0.0, 0.0}; +- return (uint64x2_t) __builtin_aarch64_cmltv2df (__a, __b); ++ return (uint64x2_t) (__a < 0.0); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +-vcltzq_p8 (poly8x16_t __a) +-{ +- poly8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x16_t) __builtin_aarch64_cmltv16qi ((int8x16_t) __a, +- (int8x16_t) __b); +-} +- +-__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vcltzq_s8 (int8x16_t __a) + { +- int8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint8x16_t) __builtin_aarch64_cmltv16qi (__a, __b); ++ return (uint8x16_t) (__a < 0); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vcltzq_s16 (int16x8_t __a) + { +- int16x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; +- return (uint16x8_t) __builtin_aarch64_cmltv8hi (__a, __b); ++ return (uint16x8_t) (__a < 0); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vcltzq_s32 (int32x4_t __a) + { +- int32x4_t __b = {0, 0, 0, 0}; +- return (uint32x4_t) __builtin_aarch64_cmltv4si (__a, __b); ++ return (uint32x4_t) (__a < 0); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vcltzq_s64 (int64x2_t __a) + { +- int64x2_t __b = {0, 0}; +- return (uint64x2_t) __builtin_aarch64_cmltv2di (__a, __b); ++ return (uint64x2_t) (__a < __AARCH64_INT64_C (0)); + } + + /* vcltz - scalar. */ +@@ -17369,12 +14765,6 @@ + return __a < 0 ? -1ll : 0ll; + } + +-__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +-vcltzd_u64 (int64x1_t __a) +-{ +- return __a < 0 ? -1ll : 0ll; +-} +- + __extension__ static __inline uint64_t __attribute__ ((__always_inline__)) + vcltzd_f64 (float64_t __a) + { +@@ -18483,6 +15873,292 @@ + return __aarch64_vgetq_lane_u64 (__a, __b); + } + ++/* vext */ ++ ++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) ++vext_f32 (float32x2_t __a, float32x2_t __b, __const int __c) ++{ ++ __builtin_aarch64_im_lane_boundsi (__c, 2); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__b, __a, (uint32x2_t) {2-__c, 3-__c}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {__c, __c+1}); ++#endif ++} ++ ++__extension__ static __inline float64x1_t __attribute__ ((__always_inline__)) ++vext_f64 (float64x1_t __a, float64x1_t __b, __const int __c) ++{ ++ /* The only possible index to the assembler instruction returns element 0. */ ++ __builtin_aarch64_im_lane_boundsi (__c, 1); ++ return __a; ++} ++__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) ++vext_p8 (poly8x8_t __a, poly8x8_t __b, __const int __c) ++{ ++ __builtin_aarch64_im_lane_boundsi (__c, 8); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__b, __a, (uint8x8_t) ++ {8-__c, 9-__c, 10-__c, 11-__c, 12-__c, 13-__c, 14-__c, 15-__c}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint8x8_t) {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7}); ++#endif ++} ++ ++__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) ++vext_p16 (poly16x4_t __a, poly16x4_t __b, __const int __c) ++{ ++ __builtin_aarch64_im_lane_boundsi (__c, 4); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__b, __a, ++ (uint16x4_t) {4-__c, 5-__c, 6-__c, 7-__c}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {__c, __c+1, __c+2, __c+3}); ++#endif ++} ++ ++__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) ++vext_s8 (int8x8_t __a, int8x8_t __b, __const int __c) ++{ ++ __builtin_aarch64_im_lane_boundsi (__c, 8); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__b, __a, (uint8x8_t) ++ {8-__c, 9-__c, 10-__c, 11-__c, 12-__c, 13-__c, 14-__c, 15-__c}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint8x8_t) {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7}); ++#endif ++} ++ ++__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) ++vext_s16 (int16x4_t __a, int16x4_t __b, __const int __c) ++{ ++ __builtin_aarch64_im_lane_boundsi (__c, 4); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__b, __a, ++ (uint16x4_t) {4-__c, 5-__c, 6-__c, 7-__c}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {__c, __c+1, __c+2, __c+3}); ++#endif ++} ++ ++__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) ++vext_s32 (int32x2_t __a, int32x2_t __b, __const int __c) ++{ ++ __builtin_aarch64_im_lane_boundsi (__c, 2); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__b, __a, (uint32x2_t) {2-__c, 3-__c}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {__c, __c+1}); ++#endif ++} ++ ++__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) ++vext_s64 (int64x1_t __a, int64x1_t __b, __const int __c) ++{ ++ /* The only possible index to the assembler instruction returns element 0. */ ++ __builtin_aarch64_im_lane_boundsi (__c, 1); ++ return __a; ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vext_u8 (uint8x8_t __a, uint8x8_t __b, __const int __c) ++{ ++ __builtin_aarch64_im_lane_boundsi (__c, 8); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__b, __a, (uint8x8_t) ++ {8-__c, 9-__c, 10-__c, 11-__c, 12-__c, 13-__c, 14-__c, 15-__c}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint8x8_t) {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7}); ++#endif ++} ++ ++__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) ++vext_u16 (uint16x4_t __a, uint16x4_t __b, __const int __c) ++{ ++ __builtin_aarch64_im_lane_boundsi (__c, 4); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__b, __a, ++ (uint16x4_t) {4-__c, 5-__c, 6-__c, 7-__c}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {__c, __c+1, __c+2, __c+3}); ++#endif ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vext_u32 (uint32x2_t __a, uint32x2_t __b, __const int __c) ++{ ++ __builtin_aarch64_im_lane_boundsi (__c, 2); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__b, __a, (uint32x2_t) {2-__c, 3-__c}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {__c, __c+1}); ++#endif ++} ++ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vext_u64 (uint64x1_t __a, uint64x1_t __b, __const int __c) ++{ ++ /* The only possible index to the assembler instruction returns element 0. */ ++ __builtin_aarch64_im_lane_boundsi (__c, 1); ++ return __a; ++} ++ ++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) ++vextq_f32 (float32x4_t __a, float32x4_t __b, __const int __c) ++{ ++ __builtin_aarch64_im_lane_boundsi (__c, 4); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__b, __a, ++ (uint32x4_t) {4-__c, 5-__c, 6-__c, 7-__c}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {__c, __c+1, __c+2, __c+3}); ++#endif ++} ++ ++__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) ++vextq_f64 (float64x2_t __a, float64x2_t __b, __const int __c) ++{ ++ __builtin_aarch64_im_lane_boundsi (__c, 2); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__b, __a, (uint64x2_t) {2-__c, 3-__c}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {__c, __c+1}); ++#endif ++} ++ ++__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) ++vextq_p8 (poly8x16_t __a, poly8x16_t __b, __const int __c) ++{ ++ __builtin_aarch64_im_lane_boundsi (__c, 16); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__b, __a, (uint8x16_t) ++ {16-__c, 17-__c, 18-__c, 19-__c, 20-__c, 21-__c, 22-__c, 23-__c, ++ 24-__c, 25-__c, 26-__c, 27-__c, 28-__c, 29-__c, 30-__c, 31-__c}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, ++ __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15}); ++#endif ++} ++ ++__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) ++vextq_p16 (poly16x8_t __a, poly16x8_t __b, __const int __c) ++{ ++ __builtin_aarch64_im_lane_boundsi (__c, 8); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__b, __a, (uint16x8_t) ++ {8-__c, 9-__c, 10-__c, 11-__c, 12-__c, 13-__c, 14-__c, 15-__c}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint16x8_t) {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7}); ++#endif ++} ++ ++__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) ++vextq_s8 (int8x16_t __a, int8x16_t __b, __const int __c) ++{ ++ __builtin_aarch64_im_lane_boundsi (__c, 16); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__b, __a, (uint8x16_t) ++ {16-__c, 17-__c, 18-__c, 19-__c, 20-__c, 21-__c, 22-__c, 23-__c, ++ 24-__c, 25-__c, 26-__c, 27-__c, 28-__c, 29-__c, 30-__c, 31-__c}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, ++ __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15}); ++#endif ++} ++ ++__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) ++vextq_s16 (int16x8_t __a, int16x8_t __b, __const int __c) ++{ ++ __builtin_aarch64_im_lane_boundsi (__c, 8); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__b, __a, (uint16x8_t) ++ {8-__c, 9-__c, 10-__c, 11-__c, 12-__c, 13-__c, 14-__c, 15-__c}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint16x8_t) {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7}); ++#endif ++} ++ ++__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) ++vextq_s32 (int32x4_t __a, int32x4_t __b, __const int __c) ++{ ++ __builtin_aarch64_im_lane_boundsi (__c, 4); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__b, __a, ++ (uint32x4_t) {4-__c, 5-__c, 6-__c, 7-__c}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {__c, __c+1, __c+2, __c+3}); ++#endif ++} ++ ++__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) ++vextq_s64 (int64x2_t __a, int64x2_t __b, __const int __c) ++{ ++ __builtin_aarch64_im_lane_boundsi (__c, 2); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__b, __a, (uint64x2_t) {2-__c, 3-__c}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {__c, __c+1}); ++#endif ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vextq_u8 (uint8x16_t __a, uint8x16_t __b, __const int __c) ++{ ++ __builtin_aarch64_im_lane_boundsi (__c, 16); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__b, __a, (uint8x16_t) ++ {16-__c, 17-__c, 18-__c, 19-__c, 20-__c, 21-__c, 22-__c, 23-__c, ++ 24-__c, 25-__c, 26-__c, 27-__c, 28-__c, 29-__c, 30-__c, 31-__c}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, ++ __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15}); ++#endif ++} ++ ++__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) ++vextq_u16 (uint16x8_t __a, uint16x8_t __b, __const int __c) ++{ ++ __builtin_aarch64_im_lane_boundsi (__c, 8); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__b, __a, (uint16x8_t) ++ {8-__c, 9-__c, 10-__c, 11-__c, 12-__c, 13-__c, 14-__c, 15-__c}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint16x8_t) {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7}); ++#endif ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vextq_u32 (uint32x4_t __a, uint32x4_t __b, __const int __c) ++{ ++ __builtin_aarch64_im_lane_boundsi (__c, 4); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__b, __a, ++ (uint32x4_t) {4-__c, 5-__c, 6-__c, 7-__c}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {__c, __c+1, __c+2, __c+3}); ++#endif ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vextq_u64 (uint64x2_t __a, uint64x2_t __b, __const int __c) ++{ ++ __builtin_aarch64_im_lane_boundsi (__c, 2); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__b, __a, (uint64x2_t) {2-__c, 3-__c}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {__c, __c+1}); ++#endif ++} ++ + /* vfma_lane */ + + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +@@ -19712,6 +17388,1234 @@ + return ret; + } + ++/* vldn_dup */ ++ ++__extension__ static __inline int8x8x2_t __attribute__ ((__always_inline__)) ++vld2_dup_s8 (const int8_t * __a) ++{ ++ int8x8x2_t ret; ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_ld2rv8qi ((const __builtin_aarch64_simd_qi *) __a); ++ ret.val[0] = (int8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0); ++ ret.val[1] = (int8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1); ++ return ret; ++} ++ ++__extension__ static __inline int16x4x2_t __attribute__ ((__always_inline__)) ++vld2_dup_s16 (const int16_t * __a) ++{ ++ int16x4x2_t ret; ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_ld2rv4hi ((const __builtin_aarch64_simd_hi *) __a); ++ ret.val[0] = (int16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0); ++ ret.val[1] = (int16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1); ++ return ret; ++} ++ ++__extension__ static __inline int32x2x2_t __attribute__ ((__always_inline__)) ++vld2_dup_s32 (const int32_t * __a) ++{ ++ int32x2x2_t ret; ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_ld2rv2si ((const __builtin_aarch64_simd_si *) __a); ++ ret.val[0] = (int32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 0); ++ ret.val[1] = (int32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 1); ++ return ret; ++} ++ ++__extension__ static __inline float32x2x2_t __attribute__ ((__always_inline__)) ++vld2_dup_f32 (const float32_t * __a) ++{ ++ float32x2x2_t ret; ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_ld2rv2sf ((const __builtin_aarch64_simd_sf *) __a); ++ ret.val[0] = (float32x2_t) __builtin_aarch64_get_dregoiv2sf (__o, 0); ++ ret.val[1] = (float32x2_t) __builtin_aarch64_get_dregoiv2sf (__o, 1); ++ return ret; ++} ++ ++__extension__ static __inline float64x1x2_t __attribute__ ((__always_inline__)) ++vld2_dup_f64 (const float64_t * __a) ++{ ++ float64x1x2_t ret; ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_ld2rdf ((const __builtin_aarch64_simd_df *) __a); ++ ret.val[0] = (float64x1_t) {__builtin_aarch64_get_dregoidf (__o, 0)}; ++ ret.val[1] = (float64x1_t) {__builtin_aarch64_get_dregoidf (__o, 1)}; ++ return ret; ++} ++ ++__extension__ static __inline uint8x8x2_t __attribute__ ((__always_inline__)) ++vld2_dup_u8 (const uint8_t * __a) ++{ ++ uint8x8x2_t ret; ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_ld2rv8qi ((const __builtin_aarch64_simd_qi *) __a); ++ ret.val[0] = (uint8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0); ++ ret.val[1] = (uint8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1); ++ return ret; ++} ++ ++__extension__ static __inline uint16x4x2_t __attribute__ ((__always_inline__)) ++vld2_dup_u16 (const uint16_t * __a) ++{ ++ uint16x4x2_t ret; ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_ld2rv4hi ((const __builtin_aarch64_simd_hi *) __a); ++ ret.val[0] = (uint16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0); ++ ret.val[1] = (uint16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1); ++ return ret; ++} ++ ++__extension__ static __inline uint32x2x2_t __attribute__ ((__always_inline__)) ++vld2_dup_u32 (const uint32_t * __a) ++{ ++ uint32x2x2_t ret; ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_ld2rv2si ((const __builtin_aarch64_simd_si *) __a); ++ ret.val[0] = (uint32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 0); ++ ret.val[1] = (uint32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 1); ++ return ret; ++} ++ ++__extension__ static __inline poly8x8x2_t __attribute__ ((__always_inline__)) ++vld2_dup_p8 (const poly8_t * __a) ++{ ++ poly8x8x2_t ret; ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_ld2rv8qi ((const __builtin_aarch64_simd_qi *) __a); ++ ret.val[0] = (poly8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0); ++ ret.val[1] = (poly8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1); ++ return ret; ++} ++ ++__extension__ static __inline poly16x4x2_t __attribute__ ((__always_inline__)) ++vld2_dup_p16 (const poly16_t * __a) ++{ ++ poly16x4x2_t ret; ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_ld2rv4hi ((const __builtin_aarch64_simd_hi *) __a); ++ ret.val[0] = (poly16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0); ++ ret.val[1] = (poly16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1); ++ return ret; ++} ++ ++__extension__ static __inline int64x1x2_t __attribute__ ((__always_inline__)) ++vld2_dup_s64 (const int64_t * __a) ++{ ++ int64x1x2_t ret; ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_ld2rdi ((const __builtin_aarch64_simd_di *) __a); ++ ret.val[0] = (int64x1_t) __builtin_aarch64_get_dregoidi (__o, 0); ++ ret.val[1] = (int64x1_t) __builtin_aarch64_get_dregoidi (__o, 1); ++ return ret; ++} ++ ++__extension__ static __inline uint64x1x2_t __attribute__ ((__always_inline__)) ++vld2_dup_u64 (const uint64_t * __a) ++{ ++ uint64x1x2_t ret; ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_ld2rdi ((const __builtin_aarch64_simd_di *) __a); ++ ret.val[0] = (uint64x1_t) __builtin_aarch64_get_dregoidi (__o, 0); ++ ret.val[1] = (uint64x1_t) __builtin_aarch64_get_dregoidi (__o, 1); ++ return ret; ++} ++ ++__extension__ static __inline int8x16x2_t __attribute__ ((__always_inline__)) ++vld2q_dup_s8 (const int8_t * __a) ++{ ++ int8x16x2_t ret; ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_ld2rv16qi ((const __builtin_aarch64_simd_qi *) __a); ++ ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0); ++ ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1); ++ return ret; ++} ++ ++__extension__ static __inline poly8x16x2_t __attribute__ ((__always_inline__)) ++vld2q_dup_p8 (const poly8_t * __a) ++{ ++ poly8x16x2_t ret; ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_ld2rv16qi ((const __builtin_aarch64_simd_qi *) __a); ++ ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0); ++ ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1); ++ return ret; ++} ++ ++__extension__ static __inline int16x8x2_t __attribute__ ((__always_inline__)) ++vld2q_dup_s16 (const int16_t * __a) ++{ ++ int16x8x2_t ret; ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_ld2rv8hi ((const __builtin_aarch64_simd_hi *) __a); ++ ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0); ++ ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1); ++ return ret; ++} ++ ++__extension__ static __inline poly16x8x2_t __attribute__ ((__always_inline__)) ++vld2q_dup_p16 (const poly16_t * __a) ++{ ++ poly16x8x2_t ret; ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_ld2rv8hi ((const __builtin_aarch64_simd_hi *) __a); ++ ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0); ++ ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1); ++ return ret; ++} ++ ++__extension__ static __inline int32x4x2_t __attribute__ ((__always_inline__)) ++vld2q_dup_s32 (const int32_t * __a) ++{ ++ int32x4x2_t ret; ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_ld2rv4si ((const __builtin_aarch64_simd_si *) __a); ++ ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 0); ++ ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 1); ++ return ret; ++} ++ ++__extension__ static __inline int64x2x2_t __attribute__ ((__always_inline__)) ++vld2q_dup_s64 (const int64_t * __a) ++{ ++ int64x2x2_t ret; ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_ld2rv2di ((const __builtin_aarch64_simd_di *) __a); ++ ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0); ++ ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1); ++ return ret; ++} ++ ++__extension__ static __inline uint8x16x2_t __attribute__ ((__always_inline__)) ++vld2q_dup_u8 (const uint8_t * __a) ++{ ++ uint8x16x2_t ret; ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_ld2rv16qi ((const __builtin_aarch64_simd_qi *) __a); ++ ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0); ++ ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1); ++ return ret; ++} ++ ++__extension__ static __inline uint16x8x2_t __attribute__ ((__always_inline__)) ++vld2q_dup_u16 (const uint16_t * __a) ++{ ++ uint16x8x2_t ret; ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_ld2rv8hi ((const __builtin_aarch64_simd_hi *) __a); ++ ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0); ++ ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1); ++ return ret; ++} ++ ++__extension__ static __inline uint32x4x2_t __attribute__ ((__always_inline__)) ++vld2q_dup_u32 (const uint32_t * __a) ++{ ++ uint32x4x2_t ret; ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_ld2rv4si ((const __builtin_aarch64_simd_si *) __a); ++ ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 0); ++ ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 1); ++ return ret; ++} ++ ++__extension__ static __inline uint64x2x2_t __attribute__ ((__always_inline__)) ++vld2q_dup_u64 (const uint64_t * __a) ++{ ++ uint64x2x2_t ret; ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_ld2rv2di ((const __builtin_aarch64_simd_di *) __a); ++ ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0); ++ ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1); ++ return ret; ++} ++ ++__extension__ static __inline float32x4x2_t __attribute__ ((__always_inline__)) ++vld2q_dup_f32 (const float32_t * __a) ++{ ++ float32x4x2_t ret; ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_ld2rv4sf ((const __builtin_aarch64_simd_sf *) __a); ++ ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregoiv4sf (__o, 0); ++ ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregoiv4sf (__o, 1); ++ return ret; ++} ++ ++__extension__ static __inline float64x2x2_t __attribute__ ((__always_inline__)) ++vld2q_dup_f64 (const float64_t * __a) ++{ ++ float64x2x2_t ret; ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_ld2rv2df ((const __builtin_aarch64_simd_df *) __a); ++ ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregoiv2df (__o, 0); ++ ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregoiv2df (__o, 1); ++ return ret; ++} ++ ++__extension__ static __inline int64x1x3_t __attribute__ ((__always_inline__)) ++vld3_dup_s64 (const int64_t * __a) ++{ ++ int64x1x3_t ret; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld3rdi ((const __builtin_aarch64_simd_di *) __a); ++ ret.val[0] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); ++ ret.val[1] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); ++ ret.val[2] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); ++ return ret; ++} ++ ++__extension__ static __inline uint64x1x3_t __attribute__ ((__always_inline__)) ++vld3_dup_u64 (const uint64_t * __a) ++{ ++ uint64x1x3_t ret; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld3rdi ((const __builtin_aarch64_simd_di *) __a); ++ ret.val[0] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); ++ ret.val[1] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); ++ ret.val[2] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); ++ return ret; ++} ++ ++__extension__ static __inline float64x1x3_t __attribute__ ((__always_inline__)) ++vld3_dup_f64 (const float64_t * __a) ++{ ++ float64x1x3_t ret; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld3rdf ((const __builtin_aarch64_simd_df *) __a); ++ ret.val[0] = (float64x1_t) {__builtin_aarch64_get_dregcidf (__o, 0)}; ++ ret.val[1] = (float64x1_t) {__builtin_aarch64_get_dregcidf (__o, 1)}; ++ ret.val[2] = (float64x1_t) {__builtin_aarch64_get_dregcidf (__o, 2)}; ++ return ret; ++} ++ ++__extension__ static __inline int8x8x3_t __attribute__ ((__always_inline__)) ++vld3_dup_s8 (const int8_t * __a) ++{ ++ int8x8x3_t ret; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld3rv8qi ((const __builtin_aarch64_simd_qi *) __a); ++ ret.val[0] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); ++ ret.val[1] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); ++ ret.val[2] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); ++ return ret; ++} ++ ++__extension__ static __inline poly8x8x3_t __attribute__ ((__always_inline__)) ++vld3_dup_p8 (const poly8_t * __a) ++{ ++ poly8x8x3_t ret; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld3rv8qi ((const __builtin_aarch64_simd_qi *) __a); ++ ret.val[0] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); ++ ret.val[1] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); ++ ret.val[2] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); ++ return ret; ++} ++ ++__extension__ static __inline int16x4x3_t __attribute__ ((__always_inline__)) ++vld3_dup_s16 (const int16_t * __a) ++{ ++ int16x4x3_t ret; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld3rv4hi ((const __builtin_aarch64_simd_hi *) __a); ++ ret.val[0] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); ++ ret.val[1] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); ++ ret.val[2] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); ++ return ret; ++} ++ ++__extension__ static __inline poly16x4x3_t __attribute__ ((__always_inline__)) ++vld3_dup_p16 (const poly16_t * __a) ++{ ++ poly16x4x3_t ret; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld3rv4hi ((const __builtin_aarch64_simd_hi *) __a); ++ ret.val[0] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); ++ ret.val[1] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); ++ ret.val[2] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); ++ return ret; ++} ++ ++__extension__ static __inline int32x2x3_t __attribute__ ((__always_inline__)) ++vld3_dup_s32 (const int32_t * __a) ++{ ++ int32x2x3_t ret; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld3rv2si ((const __builtin_aarch64_simd_si *) __a); ++ ret.val[0] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 0); ++ ret.val[1] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 1); ++ ret.val[2] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 2); ++ return ret; ++} ++ ++__extension__ static __inline uint8x8x3_t __attribute__ ((__always_inline__)) ++vld3_dup_u8 (const uint8_t * __a) ++{ ++ uint8x8x3_t ret; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld3rv8qi ((const __builtin_aarch64_simd_qi *) __a); ++ ret.val[0] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); ++ ret.val[1] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); ++ ret.val[2] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); ++ return ret; ++} ++ ++__extension__ static __inline uint16x4x3_t __attribute__ ((__always_inline__)) ++vld3_dup_u16 (const uint16_t * __a) ++{ ++ uint16x4x3_t ret; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld3rv4hi ((const __builtin_aarch64_simd_hi *) __a); ++ ret.val[0] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); ++ ret.val[1] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); ++ ret.val[2] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); ++ return ret; ++} ++ ++__extension__ static __inline uint32x2x3_t __attribute__ ((__always_inline__)) ++vld3_dup_u32 (const uint32_t * __a) ++{ ++ uint32x2x3_t ret; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld3rv2si ((const __builtin_aarch64_simd_si *) __a); ++ ret.val[0] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 0); ++ ret.val[1] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 1); ++ ret.val[2] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 2); ++ return ret; ++} ++ ++__extension__ static __inline float32x2x3_t __attribute__ ((__always_inline__)) ++vld3_dup_f32 (const float32_t * __a) ++{ ++ float32x2x3_t ret; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld3rv2sf ((const __builtin_aarch64_simd_sf *) __a); ++ ret.val[0] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 0); ++ ret.val[1] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 1); ++ ret.val[2] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 2); ++ return ret; ++} ++ ++__extension__ static __inline int8x16x3_t __attribute__ ((__always_inline__)) ++vld3q_dup_s8 (const int8_t * __a) ++{ ++ int8x16x3_t ret; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld3rv16qi ((const __builtin_aarch64_simd_qi *) __a); ++ ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); ++ ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); ++ ret.val[2] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); ++ return ret; ++} ++ ++__extension__ static __inline poly8x16x3_t __attribute__ ((__always_inline__)) ++vld3q_dup_p8 (const poly8_t * __a) ++{ ++ poly8x16x3_t ret; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld3rv16qi ((const __builtin_aarch64_simd_qi *) __a); ++ ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); ++ ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); ++ ret.val[2] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); ++ return ret; ++} ++ ++__extension__ static __inline int16x8x3_t __attribute__ ((__always_inline__)) ++vld3q_dup_s16 (const int16_t * __a) ++{ ++ int16x8x3_t ret; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld3rv8hi ((const __builtin_aarch64_simd_hi *) __a); ++ ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); ++ ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); ++ ret.val[2] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); ++ return ret; ++} ++ ++__extension__ static __inline poly16x8x3_t __attribute__ ((__always_inline__)) ++vld3q_dup_p16 (const poly16_t * __a) ++{ ++ poly16x8x3_t ret; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld3rv8hi ((const __builtin_aarch64_simd_hi *) __a); ++ ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); ++ ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); ++ ret.val[2] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); ++ return ret; ++} ++ ++__extension__ static __inline int32x4x3_t __attribute__ ((__always_inline__)) ++vld3q_dup_s32 (const int32_t * __a) ++{ ++ int32x4x3_t ret; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld3rv4si ((const __builtin_aarch64_simd_si *) __a); ++ ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0); ++ ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1); ++ ret.val[2] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2); ++ return ret; ++} ++ ++__extension__ static __inline int64x2x3_t __attribute__ ((__always_inline__)) ++vld3q_dup_s64 (const int64_t * __a) ++{ ++ int64x2x3_t ret; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld3rv2di ((const __builtin_aarch64_simd_di *) __a); ++ ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0); ++ ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1); ++ ret.val[2] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2); ++ return ret; ++} ++ ++__extension__ static __inline uint8x16x3_t __attribute__ ((__always_inline__)) ++vld3q_dup_u8 (const uint8_t * __a) ++{ ++ uint8x16x3_t ret; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld3rv16qi ((const __builtin_aarch64_simd_qi *) __a); ++ ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); ++ ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); ++ ret.val[2] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); ++ return ret; ++} ++ ++__extension__ static __inline uint16x8x3_t __attribute__ ((__always_inline__)) ++vld3q_dup_u16 (const uint16_t * __a) ++{ ++ uint16x8x3_t ret; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld3rv8hi ((const __builtin_aarch64_simd_hi *) __a); ++ ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); ++ ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); ++ ret.val[2] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); ++ return ret; ++} ++ ++__extension__ static __inline uint32x4x3_t __attribute__ ((__always_inline__)) ++vld3q_dup_u32 (const uint32_t * __a) ++{ ++ uint32x4x3_t ret; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld3rv4si ((const __builtin_aarch64_simd_si *) __a); ++ ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0); ++ ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1); ++ ret.val[2] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2); ++ return ret; ++} ++ ++__extension__ static __inline uint64x2x3_t __attribute__ ((__always_inline__)) ++vld3q_dup_u64 (const uint64_t * __a) ++{ ++ uint64x2x3_t ret; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld3rv2di ((const __builtin_aarch64_simd_di *) __a); ++ ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0); ++ ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1); ++ ret.val[2] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2); ++ return ret; ++} ++ ++__extension__ static __inline float32x4x3_t __attribute__ ((__always_inline__)) ++vld3q_dup_f32 (const float32_t * __a) ++{ ++ float32x4x3_t ret; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld3rv4sf ((const __builtin_aarch64_simd_sf *) __a); ++ ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 0); ++ ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 1); ++ ret.val[2] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 2); ++ return ret; ++} ++ ++__extension__ static __inline float64x2x3_t __attribute__ ((__always_inline__)) ++vld3q_dup_f64 (const float64_t * __a) ++{ ++ float64x2x3_t ret; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld3rv2df ((const __builtin_aarch64_simd_df *) __a); ++ ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 0); ++ ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 1); ++ ret.val[2] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 2); ++ return ret; ++} ++ ++__extension__ static __inline int64x1x4_t __attribute__ ((__always_inline__)) ++vld4_dup_s64 (const int64_t * __a) ++{ ++ int64x1x4_t ret; ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_ld4rdi ((const __builtin_aarch64_simd_di *) __a); ++ ret.val[0] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 0); ++ ret.val[1] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 1); ++ ret.val[2] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 2); ++ ret.val[3] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 3); ++ return ret; ++} ++ ++__extension__ static __inline uint64x1x4_t __attribute__ ((__always_inline__)) ++vld4_dup_u64 (const uint64_t * __a) ++{ ++ uint64x1x4_t ret; ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_ld4rdi ((const __builtin_aarch64_simd_di *) __a); ++ ret.val[0] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 0); ++ ret.val[1] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 1); ++ ret.val[2] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 2); ++ ret.val[3] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 3); ++ return ret; ++} ++ ++__extension__ static __inline float64x1x4_t __attribute__ ((__always_inline__)) ++vld4_dup_f64 (const float64_t * __a) ++{ ++ float64x1x4_t ret; ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_ld4rdf ((const __builtin_aarch64_simd_df *) __a); ++ ret.val[0] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 0)}; ++ ret.val[1] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 1)}; ++ ret.val[2] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 2)}; ++ ret.val[3] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 3)}; ++ return ret; ++} ++ ++__extension__ static __inline int8x8x4_t __attribute__ ((__always_inline__)) ++vld4_dup_s8 (const int8_t * __a) ++{ ++ int8x8x4_t ret; ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_ld4rv8qi ((const __builtin_aarch64_simd_qi *) __a); ++ ret.val[0] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 0); ++ ret.val[1] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 1); ++ ret.val[2] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 2); ++ ret.val[3] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 3); ++ return ret; ++} ++ ++__extension__ static __inline poly8x8x4_t __attribute__ ((__always_inline__)) ++vld4_dup_p8 (const poly8_t * __a) ++{ ++ poly8x8x4_t ret; ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_ld4rv8qi ((const __builtin_aarch64_simd_qi *) __a); ++ ret.val[0] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 0); ++ ret.val[1] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 1); ++ ret.val[2] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 2); ++ ret.val[3] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 3); ++ return ret; ++} ++ ++__extension__ static __inline int16x4x4_t __attribute__ ((__always_inline__)) ++vld4_dup_s16 (const int16_t * __a) ++{ ++ int16x4x4_t ret; ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_ld4rv4hi ((const __builtin_aarch64_simd_hi *) __a); ++ ret.val[0] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 0); ++ ret.val[1] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 1); ++ ret.val[2] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 2); ++ ret.val[3] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 3); ++ return ret; ++} ++ ++__extension__ static __inline poly16x4x4_t __attribute__ ((__always_inline__)) ++vld4_dup_p16 (const poly16_t * __a) ++{ ++ poly16x4x4_t ret; ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_ld4rv4hi ((const __builtin_aarch64_simd_hi *) __a); ++ ret.val[0] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 0); ++ ret.val[1] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 1); ++ ret.val[2] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 2); ++ ret.val[3] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 3); ++ return ret; ++} ++ ++__extension__ static __inline int32x2x4_t __attribute__ ((__always_inline__)) ++vld4_dup_s32 (const int32_t * __a) ++{ ++ int32x2x4_t ret; ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_ld4rv2si ((const __builtin_aarch64_simd_si *) __a); ++ ret.val[0] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 0); ++ ret.val[1] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 1); ++ ret.val[2] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 2); ++ ret.val[3] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 3); ++ return ret; ++} ++ ++__extension__ static __inline uint8x8x4_t __attribute__ ((__always_inline__)) ++vld4_dup_u8 (const uint8_t * __a) ++{ ++ uint8x8x4_t ret; ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_ld4rv8qi ((const __builtin_aarch64_simd_qi *) __a); ++ ret.val[0] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 0); ++ ret.val[1] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 1); ++ ret.val[2] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 2); ++ ret.val[3] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 3); ++ return ret; ++} ++ ++__extension__ static __inline uint16x4x4_t __attribute__ ((__always_inline__)) ++vld4_dup_u16 (const uint16_t * __a) ++{ ++ uint16x4x4_t ret; ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_ld4rv4hi ((const __builtin_aarch64_simd_hi *) __a); ++ ret.val[0] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 0); ++ ret.val[1] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 1); ++ ret.val[2] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 2); ++ ret.val[3] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 3); ++ return ret; ++} ++ ++__extension__ static __inline uint32x2x4_t __attribute__ ((__always_inline__)) ++vld4_dup_u32 (const uint32_t * __a) ++{ ++ uint32x2x4_t ret; ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_ld4rv2si ((const __builtin_aarch64_simd_si *) __a); ++ ret.val[0] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 0); ++ ret.val[1] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 1); ++ ret.val[2] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 2); ++ ret.val[3] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 3); ++ return ret; ++} ++ ++__extension__ static __inline float32x2x4_t __attribute__ ((__always_inline__)) ++vld4_dup_f32 (const float32_t * __a) ++{ ++ float32x2x4_t ret; ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_ld4rv2sf ((const __builtin_aarch64_simd_sf *) __a); ++ ret.val[0] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 0); ++ ret.val[1] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 1); ++ ret.val[2] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 2); ++ ret.val[3] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 3); ++ return ret; ++} ++ ++__extension__ static __inline int8x16x4_t __attribute__ ((__always_inline__)) ++vld4q_dup_s8 (const int8_t * __a) ++{ ++ int8x16x4_t ret; ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_ld4rv16qi ((const __builtin_aarch64_simd_qi *) __a); ++ ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 0); ++ ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 1); ++ ret.val[2] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 2); ++ ret.val[3] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 3); ++ return ret; ++} ++ ++__extension__ static __inline poly8x16x4_t __attribute__ ((__always_inline__)) ++vld4q_dup_p8 (const poly8_t * __a) ++{ ++ poly8x16x4_t ret; ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_ld4rv16qi ((const __builtin_aarch64_simd_qi *) __a); ++ ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 0); ++ ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 1); ++ ret.val[2] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 2); ++ ret.val[3] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 3); ++ return ret; ++} ++ ++__extension__ static __inline int16x8x4_t __attribute__ ((__always_inline__)) ++vld4q_dup_s16 (const int16_t * __a) ++{ ++ int16x8x4_t ret; ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_ld4rv8hi ((const __builtin_aarch64_simd_hi *) __a); ++ ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 0); ++ ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 1); ++ ret.val[2] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 2); ++ ret.val[3] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 3); ++ return ret; ++} ++ ++__extension__ static __inline poly16x8x4_t __attribute__ ((__always_inline__)) ++vld4q_dup_p16 (const poly16_t * __a) ++{ ++ poly16x8x4_t ret; ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_ld4rv8hi ((const __builtin_aarch64_simd_hi *) __a); ++ ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 0); ++ ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 1); ++ ret.val[2] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 2); ++ ret.val[3] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 3); ++ return ret; ++} ++ ++__extension__ static __inline int32x4x4_t __attribute__ ((__always_inline__)) ++vld4q_dup_s32 (const int32_t * __a) ++{ ++ int32x4x4_t ret; ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_ld4rv4si ((const __builtin_aarch64_simd_si *) __a); ++ ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 0); ++ ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 1); ++ ret.val[2] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 2); ++ ret.val[3] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 3); ++ return ret; ++} ++ ++__extension__ static __inline int64x2x4_t __attribute__ ((__always_inline__)) ++vld4q_dup_s64 (const int64_t * __a) ++{ ++ int64x2x4_t ret; ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_ld4rv2di ((const __builtin_aarch64_simd_di *) __a); ++ ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 0); ++ ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 1); ++ ret.val[2] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 2); ++ ret.val[3] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 3); ++ return ret; ++} ++ ++__extension__ static __inline uint8x16x4_t __attribute__ ((__always_inline__)) ++vld4q_dup_u8 (const uint8_t * __a) ++{ ++ uint8x16x4_t ret; ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_ld4rv16qi ((const __builtin_aarch64_simd_qi *) __a); ++ ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 0); ++ ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 1); ++ ret.val[2] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 2); ++ ret.val[3] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 3); ++ return ret; ++} ++ ++__extension__ static __inline uint16x8x4_t __attribute__ ((__always_inline__)) ++vld4q_dup_u16 (const uint16_t * __a) ++{ ++ uint16x8x4_t ret; ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_ld4rv8hi ((const __builtin_aarch64_simd_hi *) __a); ++ ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 0); ++ ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 1); ++ ret.val[2] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 2); ++ ret.val[3] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 3); ++ return ret; ++} ++ ++__extension__ static __inline uint32x4x4_t __attribute__ ((__always_inline__)) ++vld4q_dup_u32 (const uint32_t * __a) ++{ ++ uint32x4x4_t ret; ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_ld4rv4si ((const __builtin_aarch64_simd_si *) __a); ++ ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 0); ++ ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 1); ++ ret.val[2] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 2); ++ ret.val[3] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 3); ++ return ret; ++} ++ ++__extension__ static __inline uint64x2x4_t __attribute__ ((__always_inline__)) ++vld4q_dup_u64 (const uint64_t * __a) ++{ ++ uint64x2x4_t ret; ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_ld4rv2di ((const __builtin_aarch64_simd_di *) __a); ++ ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 0); ++ ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 1); ++ ret.val[2] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 2); ++ ret.val[3] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 3); ++ return ret; ++} ++ ++__extension__ static __inline float32x4x4_t __attribute__ ((__always_inline__)) ++vld4q_dup_f32 (const float32_t * __a) ++{ ++ float32x4x4_t ret; ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_ld4rv4sf ((const __builtin_aarch64_simd_sf *) __a); ++ ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 0); ++ ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 1); ++ ret.val[2] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 2); ++ ret.val[3] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 3); ++ return ret; ++} ++ ++__extension__ static __inline float64x2x4_t __attribute__ ((__always_inline__)) ++vld4q_dup_f64 (const float64_t * __a) ++{ ++ float64x2x4_t ret; ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_ld4rv2df ((const __builtin_aarch64_simd_df *) __a); ++ ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 0); ++ ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 1); ++ ret.val[2] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 2); ++ ret.val[3] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 3); ++ return ret; ++} ++ ++/* vld2_lane */ ++ ++#define __LD2_LANE_FUNC(intype, vectype, largetype, ptrtype, \ ++ mode, ptrmode, funcsuffix, signedtype) \ ++__extension__ static __inline intype __attribute__ ((__always_inline__)) \ ++vld2_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c) \ ++{ \ ++ __builtin_aarch64_simd_oi __o; \ ++ largetype __temp; \ ++ __temp.val[0] = \ ++ vcombine_##funcsuffix (__b.val[0], vcreate_##funcsuffix (0)); \ ++ __temp.val[1] = \ ++ vcombine_##funcsuffix (__b.val[1], vcreate_##funcsuffix (0)); \ ++ __o = __builtin_aarch64_set_qregoi##mode (__o, \ ++ (signedtype) __temp.val[0], \ ++ 0); \ ++ __o = __builtin_aarch64_set_qregoi##mode (__o, \ ++ (signedtype) __temp.val[1], \ ++ 1); \ ++ __o = __builtin_aarch64_ld2_lane##mode ( \ ++ (__builtin_aarch64_simd_##ptrmode *) __ptr, __o, __c); \ ++ __b.val[0] = (vectype) __builtin_aarch64_get_dregoidi (__o, 0); \ ++ __b.val[1] = (vectype) __builtin_aarch64_get_dregoidi (__o, 1); \ ++ return __b; \ ++} ++ ++__LD2_LANE_FUNC (float32x2x2_t, float32x2_t, float32x4x2_t, float32_t, v4sf, ++ sf, f32, float32x4_t) ++__LD2_LANE_FUNC (poly8x8x2_t, poly8x8_t, poly8x16x2_t, poly8_t, v16qi, qi, p8, ++ int8x16_t) ++__LD2_LANE_FUNC (poly16x4x2_t, poly16x4_t, poly16x8x2_t, poly16_t, v8hi, hi, ++ p16, int16x8_t) ++__LD2_LANE_FUNC (int8x8x2_t, int8x8_t, int8x16x2_t, int8_t, v16qi, qi, s8, ++ int8x16_t) ++__LD2_LANE_FUNC (int16x4x2_t, int16x4_t, int16x8x2_t, int16_t, v8hi, hi, s16, ++ int16x8_t) ++__LD2_LANE_FUNC (int32x2x2_t, int32x2_t, int32x4x2_t, int32_t, v4si, si, s32, ++ int32x4_t) ++__LD2_LANE_FUNC (int64x1x2_t, int64x1_t, int64x2x2_t, int64_t, v2di, di, s64, ++ int64x2_t) ++__LD2_LANE_FUNC (uint8x8x2_t, uint8x8_t, uint8x16x2_t, uint8_t, v16qi, qi, u8, ++ int8x16_t) ++__LD2_LANE_FUNC (uint16x4x2_t, uint16x4_t, uint16x8x2_t, uint16_t, v8hi, hi, ++ u16, int16x8_t) ++__LD2_LANE_FUNC (uint32x2x2_t, uint32x2_t, uint32x4x2_t, uint32_t, v4si, si, ++ u32, int32x4_t) ++__LD2_LANE_FUNC (uint64x1x2_t, uint64x1_t, uint64x2x2_t, uint64_t, v2di, di, ++ u64, int64x2_t) ++ ++#undef __LD2_LANE_FUNC ++ ++__extension__ static __inline float64x1x2_t ++__attribute__ ((__always_inline__)) ++vld2_lane_f64 (const float64_t *ptr, float64x1x2_t b, const int c) ++{ ++ float64x1x2_t result; ++ __asm__ ("ld1 {v16.1d, v17.1d}, %1\n\t" ++ "ld2 {v16.d, v17.d}[%3], %2\n\t" ++ "st1 {v16.1d, v17.1d}, %0\n\t" ++ : "=Q"(result) ++ : "Q"(b), "Q"(*(const float64x1x2_t *)ptr), "i"(c) ++ : "memory", "v16", "v17"); ++ return result; ++} ++ ++ ++ ++/* vld2q_lane */ ++ ++#define __LD2_LANE_FUNC(intype, vtype, ptrtype, mode, ptrmode, funcsuffix) \ ++__extension__ static __inline intype __attribute__ ((__always_inline__)) \ ++vld2q_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c) \ ++{ \ ++ __builtin_aarch64_simd_oi __o; \ ++ intype ret; \ ++ __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[0], 0); \ ++ __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[1], 1); \ ++ __o = __builtin_aarch64_ld2_lane##mode ( \ ++ (__builtin_aarch64_simd_##ptrmode *) __ptr, __o, __c); \ ++ ret.val[0] = (vtype) __builtin_aarch64_get_qregoiv4si (__o, 0); \ ++ ret.val[1] = (vtype) __builtin_aarch64_get_qregoiv4si (__o, 1); \ ++ return ret; \ ++} ++ ++__LD2_LANE_FUNC (float32x4x2_t, float32x4_t, float32_t, v4sf, sf, f32) ++__LD2_LANE_FUNC (poly8x16x2_t, poly8x16_t, poly8_t, v16qi, qi, p8) ++__LD2_LANE_FUNC (poly16x8x2_t, poly16x8_t, poly16_t, v8hi, hi, p16) ++__LD2_LANE_FUNC (int8x16x2_t, int8x16_t, int8_t, v16qi, qi, s8) ++__LD2_LANE_FUNC (int16x8x2_t, int16x8_t, int16_t, v8hi, hi, s16) ++__LD2_LANE_FUNC (int32x4x2_t, int32x4_t, int32_t, v4si, si, s32) ++__LD2_LANE_FUNC (int64x2x2_t, int64x2_t, int64_t, v2di, di, s64) ++__LD2_LANE_FUNC (uint8x16x2_t, uint8x16_t, uint8_t, v16qi, qi, u8) ++__LD2_LANE_FUNC (uint16x8x2_t, uint16x8_t, uint16_t, v8hi, hi, u16) ++__LD2_LANE_FUNC (uint32x4x2_t, uint32x4_t, uint32_t, v4si, si, u32) ++__LD2_LANE_FUNC (uint64x2x2_t, uint64x2_t, uint64_t, v2di, di, u64) ++ ++__extension__ static __inline float64x2x2_t ++__attribute__ ((__always_inline__)) ++vld2q_lane_f64 (const float64_t *ptr, float64x2x2_t b, const int c) ++{ ++ float64x2x2_t result; ++ __asm__ ("ld1 {v16.2d, v17.2d}, %1\n\t" ++ "ld2 {v16.d, v17.d}[%3], %2\n\t" ++ "st1 {v16.2d, v17.2d}, %0\n\t" ++ : "=Q"(result) ++ : "Q"(b), "Q"(*(const float64x2x2_t *)ptr), "i"(c) ++ : "memory", "v16", "v17"); ++ return result; ++} ++ ++ ++#undef __LD2_LANE_FUNC ++ ++/* vld3_lane */ ++ ++#define __LD3_LANE_FUNC(intype, vectype, largetype, ptrtype, \ ++ mode, ptrmode, funcsuffix, signedtype) \ ++__extension__ static __inline intype __attribute__ ((__always_inline__)) \ ++vld3_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c) \ ++{ \ ++ __builtin_aarch64_simd_ci __o; \ ++ largetype __temp; \ ++ __temp.val[0] = \ ++ vcombine_##funcsuffix (__b.val[0], vcreate_##funcsuffix (0)); \ ++ __temp.val[1] = \ ++ vcombine_##funcsuffix (__b.val[1], vcreate_##funcsuffix (0)); \ ++ __temp.val[2] = \ ++ vcombine_##funcsuffix (__b.val[2], vcreate_##funcsuffix (0)); \ ++ __o = __builtin_aarch64_set_qregci##mode (__o, \ ++ (signedtype) __temp.val[0], \ ++ 0); \ ++ __o = __builtin_aarch64_set_qregci##mode (__o, \ ++ (signedtype) __temp.val[1], \ ++ 1); \ ++ __o = __builtin_aarch64_set_qregci##mode (__o, \ ++ (signedtype) __temp.val[2], \ ++ 2); \ ++ __o = __builtin_aarch64_ld3_lane##mode ( \ ++ (__builtin_aarch64_simd_##ptrmode *) __ptr, __o, __c); \ ++ __b.val[0] = (vectype) __builtin_aarch64_get_dregcidi (__o, 0); \ ++ __b.val[1] = (vectype) __builtin_aarch64_get_dregcidi (__o, 1); \ ++ __b.val[2] = (vectype) __builtin_aarch64_get_dregcidi (__o, 2); \ ++ return __b; \ ++} ++ ++__LD3_LANE_FUNC (float32x2x3_t, float32x2_t, float32x4x3_t, float32_t, v4sf, ++ sf, f32, float32x4_t) ++__LD3_LANE_FUNC (poly8x8x3_t, poly8x8_t, poly8x16x3_t, poly8_t, v16qi, qi, p8, ++ int8x16_t) ++__LD3_LANE_FUNC (poly16x4x3_t, poly16x4_t, poly16x8x3_t, poly16_t, v8hi, hi, ++ p16, int16x8_t) ++__LD3_LANE_FUNC (int8x8x3_t, int8x8_t, int8x16x3_t, int8_t, v16qi, qi, s8, ++ int8x16_t) ++__LD3_LANE_FUNC (int16x4x3_t, int16x4_t, int16x8x3_t, int16_t, v8hi, hi, s16, ++ int16x8_t) ++__LD3_LANE_FUNC (int32x2x3_t, int32x2_t, int32x4x3_t, int32_t, v4si, si, s32, ++ int32x4_t) ++__LD3_LANE_FUNC (int64x1x3_t, int64x1_t, int64x2x3_t, int64_t, v2di, di, s64, ++ int64x2_t) ++__LD3_LANE_FUNC (uint8x8x3_t, uint8x8_t, uint8x16x3_t, uint8_t, v16qi, qi, u8, ++ int8x16_t) ++__LD3_LANE_FUNC (uint16x4x3_t, uint16x4_t, uint16x8x3_t, uint16_t, v8hi, hi, ++ u16, int16x8_t) ++__LD3_LANE_FUNC (uint32x2x3_t, uint32x2_t, uint32x4x3_t, uint32_t, v4si, si, ++ u32, int32x4_t) ++__LD3_LANE_FUNC (uint64x1x3_t, uint64x1_t, uint64x2x3_t, uint64_t, v2di, di, ++ u64, int64x2_t) ++ ++#undef __LD3_LANE_FUNC ++ ++__extension__ static __inline float64x1x3_t ++__attribute__ ((__always_inline__)) ++vld3_lane_f64 (const float64_t *ptr, float64x1x3_t b, const int c) ++{ ++ float64x1x3_t result; ++ __asm__ ("ld1 {v16.1d - v18.1d}, %1\n\t" ++ "ld3 {v16.d - v18.d}[%3], %2\n\t" ++ "st1 {v16.1d - v18.1d}, %0\n\t" ++ : "=Q"(result) ++ : "Q"(b), "Q"(*(const float64x1x3_t *)ptr), "i"(c) ++ : "memory", "v16", "v17", "v18"); ++ return result; ++} ++ ++ ++/* vld3q_lane */ ++ ++#define __LD3_LANE_FUNC(intype, vtype, ptrtype, mode, ptrmode, funcsuffix) \ ++__extension__ static __inline intype __attribute__ ((__always_inline__)) \ ++vld3q_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c) \ ++{ \ ++ __builtin_aarch64_simd_ci __o; \ ++ intype ret; \ ++ __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[0], 0); \ ++ __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[1], 1); \ ++ __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[2], 2); \ ++ __o = __builtin_aarch64_ld3_lane##mode ( \ ++ (__builtin_aarch64_simd_##ptrmode *) __ptr, __o, __c); \ ++ ret.val[0] = (vtype) __builtin_aarch64_get_qregciv4si (__o, 0); \ ++ ret.val[1] = (vtype) __builtin_aarch64_get_qregciv4si (__o, 1); \ ++ ret.val[2] = (vtype) __builtin_aarch64_get_qregciv4si (__o, 2); \ ++ return ret; \ ++} ++ ++__LD3_LANE_FUNC (float32x4x3_t, float32x4_t, float32_t, v4sf, sf, f32) ++__LD3_LANE_FUNC (poly8x16x3_t, poly8x16_t, poly8_t, v16qi, qi, p8) ++__LD3_LANE_FUNC (poly16x8x3_t, poly16x8_t, poly16_t, v8hi, hi, p16) ++__LD3_LANE_FUNC (int8x16x3_t, int8x16_t, int8_t, v16qi, qi, s8) ++__LD3_LANE_FUNC (int16x8x3_t, int16x8_t, int16_t, v8hi, hi, s16) ++__LD3_LANE_FUNC (int32x4x3_t, int32x4_t, int32_t, v4si, si, s32) ++__LD3_LANE_FUNC (int64x2x3_t, int64x2_t, int64_t, v2di, di, s64) ++__LD3_LANE_FUNC (uint8x16x3_t, uint8x16_t, uint8_t, v16qi, qi, u8) ++__LD3_LANE_FUNC (uint16x8x3_t, uint16x8_t, uint16_t, v8hi, hi, u16) ++__LD3_LANE_FUNC (uint32x4x3_t, uint32x4_t, uint32_t, v4si, si, u32) ++__LD3_LANE_FUNC (uint64x2x3_t, uint64x2_t, uint64_t, v2di, di, u64) ++ ++__extension__ static __inline float64x2x3_t ++__attribute__ ((__always_inline__)) ++vld3q_lane_f64 (const float64_t *ptr, float64x2x3_t b, const int c) ++{ ++ float64x2x3_t result; ++ __asm__ ("ld1 {v16.2d - v18.2d}, %1\n\t" ++ "ld3 {v16.d - v18.d}[%3], %2\n\t" ++ "st1 {v16.2d - v18.2d}, %0\n\t" ++ : "=Q"(result) ++ : "Q"(b), "Q"(*(const float64x2x3_t *)ptr), "i"(c) ++ : "memory", "v16", "v17", "v18"); ++ return result; ++} ++ ++ ++#undef __LD3_LANE_FUNC ++ ++/* vld4_lane */ ++ ++#define __LD4_LANE_FUNC(intype, vectype, largetype, ptrtype, \ ++ mode, ptrmode, funcsuffix, signedtype) \ ++__extension__ static __inline intype __attribute__ ((__always_inline__)) \ ++vld4_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c) \ ++{ \ ++ __builtin_aarch64_simd_xi __o; \ ++ largetype __temp; \ ++ __temp.val[0] = \ ++ vcombine_##funcsuffix (__b.val[0], vcreate_##funcsuffix (0)); \ ++ __temp.val[1] = \ ++ vcombine_##funcsuffix (__b.val[1], vcreate_##funcsuffix (0)); \ ++ __temp.val[2] = \ ++ vcombine_##funcsuffix (__b.val[2], vcreate_##funcsuffix (0)); \ ++ __temp.val[3] = \ ++ vcombine_##funcsuffix (__b.val[3], vcreate_##funcsuffix (0)); \ ++ __o = __builtin_aarch64_set_qregxi##mode (__o, \ ++ (signedtype) __temp.val[0], \ ++ 0); \ ++ __o = __builtin_aarch64_set_qregxi##mode (__o, \ ++ (signedtype) __temp.val[1], \ ++ 1); \ ++ __o = __builtin_aarch64_set_qregxi##mode (__o, \ ++ (signedtype) __temp.val[2], \ ++ 2); \ ++ __o = __builtin_aarch64_set_qregxi##mode (__o, \ ++ (signedtype) __temp.val[3], \ ++ 3); \ ++ __o = __builtin_aarch64_ld4_lane##mode ( \ ++ (__builtin_aarch64_simd_##ptrmode *) __ptr, __o, __c); \ ++ __b.val[0] = (vectype) __builtin_aarch64_get_dregxidi (__o, 0); \ ++ __b.val[1] = (vectype) __builtin_aarch64_get_dregxidi (__o, 1); \ ++ __b.val[2] = (vectype) __builtin_aarch64_get_dregxidi (__o, 2); \ ++ __b.val[3] = (vectype) __builtin_aarch64_get_dregxidi (__o, 3); \ ++ return __b; \ ++} ++ ++/* vld4q_lane */ ++ ++__LD4_LANE_FUNC (float32x2x4_t, float32x2_t, float32x4x4_t, float32_t, v4sf, ++ sf, f32, float32x4_t) ++__LD4_LANE_FUNC (poly8x8x4_t, poly8x8_t, poly8x16x4_t, poly8_t, v16qi, qi, p8, ++ int8x16_t) ++__LD4_LANE_FUNC (poly16x4x4_t, poly16x4_t, poly16x8x4_t, poly16_t, v8hi, hi, ++ p16, int16x8_t) ++__LD4_LANE_FUNC (int8x8x4_t, int8x8_t, int8x16x4_t, int8_t, v16qi, qi, s8, ++ int8x16_t) ++__LD4_LANE_FUNC (int16x4x4_t, int16x4_t, int16x8x4_t, int16_t, v8hi, hi, s16, ++ int16x8_t) ++__LD4_LANE_FUNC (int32x2x4_t, int32x2_t, int32x4x4_t, int32_t, v4si, si, s32, ++ int32x4_t) ++__LD4_LANE_FUNC (int64x1x4_t, int64x1_t, int64x2x4_t, int64_t, v2di, di, s64, ++ int64x2_t) ++__LD4_LANE_FUNC (uint8x8x4_t, uint8x8_t, uint8x16x4_t, uint8_t, v16qi, qi, u8, ++ int8x16_t) ++__LD4_LANE_FUNC (uint16x4x4_t, uint16x4_t, uint16x8x4_t, uint16_t, v8hi, hi, ++ u16, int16x8_t) ++__LD4_LANE_FUNC (uint32x2x4_t, uint32x2_t, uint32x4x4_t, uint32_t, v4si, si, ++ u32, int32x4_t) ++__LD4_LANE_FUNC (uint64x1x4_t, uint64x1_t, uint64x2x4_t, uint64_t, v2di, di, ++ u64, int64x2_t) ++ ++#undef __LD4_LANE_FUNC ++ ++__extension__ static __inline float64x1x4_t ++__attribute__ ((__always_inline__)) ++vld4_lane_f64 (const float64_t *ptr, float64x1x4_t b, const int c) ++{ ++ float64x1x4_t result; ++ __asm__ ("ld1 {v16.1d - v19.1d}, %1\n\t" ++ "ld4 {v16.d - v19.d}[%3], %2\n\t" ++ "st1 {v16.1d - v19.1d}, %0\n\t" ++ : "=Q"(result) ++ : "Q"(b), "Q"(*(const float64x1x4_t *)ptr), "i"(c) ++ : "memory", "v16", "v17", "v18", "v19"); ++ return result; ++} ++ ++ ++/* vld4q_lane */ ++ ++#define __LD4_LANE_FUNC(intype, vtype, ptrtype, mode, ptrmode, funcsuffix) \ ++__extension__ static __inline intype __attribute__ ((__always_inline__)) \ ++vld4q_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c) \ ++{ \ ++ __builtin_aarch64_simd_xi __o; \ ++ intype ret; \ ++ __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[0], 0); \ ++ __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[1], 1); \ ++ __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[2], 2); \ ++ __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[3], 3); \ ++ __o = __builtin_aarch64_ld4_lane##mode ( \ ++ (__builtin_aarch64_simd_##ptrmode *) __ptr, __o, __c); \ ++ ret.val[0] = (vtype) __builtin_aarch64_get_qregxiv4si (__o, 0); \ ++ ret.val[1] = (vtype) __builtin_aarch64_get_qregxiv4si (__o, 1); \ ++ ret.val[2] = (vtype) __builtin_aarch64_get_qregxiv4si (__o, 2); \ ++ ret.val[3] = (vtype) __builtin_aarch64_get_qregxiv4si (__o, 3); \ ++ return ret; \ ++} ++ ++__LD4_LANE_FUNC (float32x4x4_t, float32x4_t, float32_t, v4sf, sf, f32) ++__LD4_LANE_FUNC (poly8x16x4_t, poly8x16_t, poly8_t, v16qi, qi, p8) ++__LD4_LANE_FUNC (poly16x8x4_t, poly16x8_t, poly16_t, v8hi, hi, p16) ++__LD4_LANE_FUNC (int8x16x4_t, int8x16_t, int8_t, v16qi, qi, s8) ++__LD4_LANE_FUNC (int16x8x4_t, int16x8_t, int16_t, v8hi, hi, s16) ++__LD4_LANE_FUNC (int32x4x4_t, int32x4_t, int32_t, v4si, si, s32) ++__LD4_LANE_FUNC (int64x2x4_t, int64x2_t, int64_t, v2di, di, s64) ++__LD4_LANE_FUNC (uint8x16x4_t, uint8x16_t, uint8_t, v16qi, qi, u8) ++__LD4_LANE_FUNC (uint16x8x4_t, uint16x8_t, uint16_t, v8hi, hi, u16) ++__LD4_LANE_FUNC (uint32x4x4_t, uint32x4_t, uint32_t, v4si, si, u32) ++__LD4_LANE_FUNC (uint64x2x4_t, uint64x2_t, uint64_t, v2di, di, u64) ++ ++__extension__ static __inline float64x2x4_t ++__attribute__ ((__always_inline__)) ++vld4q_lane_f64 (const float64_t *ptr, float64x2x4_t b, const int c) ++{ ++ float64x2x4_t result; ++ __asm__ ("ld1 {v16.2d - v19.2d}, %1\n\t" ++ "ld4 {v16.d - v19.d}[%3], %2\n\t" ++ "st1 {v16.2d - v19.2d}, %0\n\t" ++ : "=Q"(result) ++ : "Q"(b), "Q"(*(const float64x2x4_t *)ptr), "i"(c) ++ : "memory", "v16", "v17", "v18", "v19"); ++ return result; ++} ++ ++#undef __LD4_LANE_FUNC ++ + /* vmax */ + + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +@@ -19835,106 +18739,91 @@ + __extension__ static __inline float32_t __attribute__ ((__always_inline__)) + vmaxv_f32 (float32x2_t __a) + { +- return vget_lane_f32 (__builtin_aarch64_reduc_smax_nan_v2sf (__a), +- 0); ++ return __builtin_aarch64_reduc_smax_nan_scal_v2sf (__a); + } + + __extension__ static __inline int8_t __attribute__ ((__always_inline__)) + vmaxv_s8 (int8x8_t __a) + { +- return vget_lane_s8 (__builtin_aarch64_reduc_smax_v8qi (__a), 0); ++ return __builtin_aarch64_reduc_smax_scal_v8qi (__a); + } + + __extension__ static __inline int16_t __attribute__ ((__always_inline__)) + vmaxv_s16 (int16x4_t __a) + { +- return vget_lane_s16 (__builtin_aarch64_reduc_smax_v4hi (__a), 0); ++ return __builtin_aarch64_reduc_smax_scal_v4hi (__a); + } + + __extension__ static __inline int32_t __attribute__ ((__always_inline__)) + vmaxv_s32 (int32x2_t __a) + { +- return vget_lane_s32 (__builtin_aarch64_reduc_smax_v2si (__a), 0); ++ return __builtin_aarch64_reduc_smax_scal_v2si (__a); + } + + __extension__ static __inline uint8_t __attribute__ ((__always_inline__)) + vmaxv_u8 (uint8x8_t __a) + { +- return vget_lane_u8 ((uint8x8_t) +- __builtin_aarch64_reduc_umax_v8qi ((int8x8_t) __a), +- 0); ++ return __builtin_aarch64_reduc_umax_scal_v8qi_uu (__a); + } + + __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) + vmaxv_u16 (uint16x4_t __a) + { +- return vget_lane_u16 ((uint16x4_t) +- __builtin_aarch64_reduc_umax_v4hi ((int16x4_t) __a), +- 0); ++ return __builtin_aarch64_reduc_umax_scal_v4hi_uu (__a); + } + + __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) + vmaxv_u32 (uint32x2_t __a) + { +- return vget_lane_u32 ((uint32x2_t) +- __builtin_aarch64_reduc_umax_v2si ((int32x2_t) __a), +- 0); ++ return __builtin_aarch64_reduc_umax_scal_v2si_uu (__a); + } + + __extension__ static __inline float32_t __attribute__ ((__always_inline__)) + vmaxvq_f32 (float32x4_t __a) + { +- return vgetq_lane_f32 (__builtin_aarch64_reduc_smax_nan_v4sf (__a), +- 0); ++ return __builtin_aarch64_reduc_smax_nan_scal_v4sf (__a); + } + + __extension__ static __inline float64_t __attribute__ ((__always_inline__)) + vmaxvq_f64 (float64x2_t __a) + { +- return vgetq_lane_f64 (__builtin_aarch64_reduc_smax_nan_v2df (__a), +- 0); ++ return __builtin_aarch64_reduc_smax_nan_scal_v2df (__a); + } + + __extension__ static __inline int8_t __attribute__ ((__always_inline__)) + vmaxvq_s8 (int8x16_t __a) + { +- return vgetq_lane_s8 (__builtin_aarch64_reduc_smax_v16qi (__a), 0); ++ return __builtin_aarch64_reduc_smax_scal_v16qi (__a); + } + + __extension__ static __inline int16_t __attribute__ ((__always_inline__)) + vmaxvq_s16 (int16x8_t __a) + { +- return vgetq_lane_s16 (__builtin_aarch64_reduc_smax_v8hi (__a), 0); ++ return __builtin_aarch64_reduc_smax_scal_v8hi (__a); + } + + __extension__ static __inline int32_t __attribute__ ((__always_inline__)) + vmaxvq_s32 (int32x4_t __a) + { +- return vgetq_lane_s32 (__builtin_aarch64_reduc_smax_v4si (__a), 0); ++ return __builtin_aarch64_reduc_smax_scal_v4si (__a); + } + + __extension__ static __inline uint8_t __attribute__ ((__always_inline__)) + vmaxvq_u8 (uint8x16_t __a) + { +- return vgetq_lane_u8 ((uint8x16_t) +- __builtin_aarch64_reduc_umax_v16qi ((int8x16_t) __a), +- 0); ++ return __builtin_aarch64_reduc_umax_scal_v16qi_uu (__a); + } + + __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) + vmaxvq_u16 (uint16x8_t __a) + { +- return vgetq_lane_u16 ((uint16x8_t) +- __builtin_aarch64_reduc_umax_v8hi ((int16x8_t) __a), +- 0); ++ return __builtin_aarch64_reduc_umax_scal_v8hi_uu (__a); + } + + __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) + vmaxvq_u32 (uint32x4_t __a) + { +- return vgetq_lane_u32 ((uint32x4_t) +- __builtin_aarch64_reduc_umax_v4si ((int32x4_t) __a), +- 0); ++ return __builtin_aarch64_reduc_umax_scal_v4si_uu (__a); + } + + /* vmaxnmv */ +@@ -19942,20 +18831,19 @@ + __extension__ static __inline float32_t __attribute__ ((__always_inline__)) + vmaxnmv_f32 (float32x2_t __a) + { +- return vget_lane_f32 (__builtin_aarch64_reduc_smax_v2sf (__a), +- 0); ++ return __builtin_aarch64_reduc_smax_scal_v2sf (__a); + } + + __extension__ static __inline float32_t __attribute__ ((__always_inline__)) + vmaxnmvq_f32 (float32x4_t __a) + { +- return vgetq_lane_f32 (__builtin_aarch64_reduc_smax_v4sf (__a), 0); ++ return __builtin_aarch64_reduc_smax_scal_v4sf (__a); + } + + __extension__ static __inline float64_t __attribute__ ((__always_inline__)) + vmaxnmvq_f64 (float64x2_t __a) + { +- return vgetq_lane_f64 (__builtin_aarch64_reduc_smax_v2df (__a), 0); ++ return __builtin_aarch64_reduc_smax_scal_v2df (__a); + } + + /* vmin */ +@@ -20081,107 +18969,91 @@ + __extension__ static __inline float32_t __attribute__ ((__always_inline__)) + vminv_f32 (float32x2_t __a) + { +- return vget_lane_f32 (__builtin_aarch64_reduc_smin_nan_v2sf (__a), +- 0); ++ return __builtin_aarch64_reduc_smin_nan_scal_v2sf (__a); + } + + __extension__ static __inline int8_t __attribute__ ((__always_inline__)) + vminv_s8 (int8x8_t __a) + { +- return vget_lane_s8 (__builtin_aarch64_reduc_smin_v8qi (__a), +- 0); ++ return __builtin_aarch64_reduc_smin_scal_v8qi (__a); + } + + __extension__ static __inline int16_t __attribute__ ((__always_inline__)) + vminv_s16 (int16x4_t __a) + { +- return vget_lane_s16 (__builtin_aarch64_reduc_smin_v4hi (__a), 0); ++ return __builtin_aarch64_reduc_smin_scal_v4hi (__a); + } + + __extension__ static __inline int32_t __attribute__ ((__always_inline__)) + vminv_s32 (int32x2_t __a) + { +- return vget_lane_s32 (__builtin_aarch64_reduc_smin_v2si (__a), 0); ++ return __builtin_aarch64_reduc_smin_scal_v2si (__a); + } + + __extension__ static __inline uint8_t __attribute__ ((__always_inline__)) + vminv_u8 (uint8x8_t __a) + { +- return vget_lane_u8 ((uint8x8_t) +- __builtin_aarch64_reduc_umin_v8qi ((int8x8_t) __a), +- 0); ++ return __builtin_aarch64_reduc_umin_scal_v8qi_uu (__a); + } + + __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) + vminv_u16 (uint16x4_t __a) + { +- return vget_lane_u16 ((uint16x4_t) +- __builtin_aarch64_reduc_umin_v4hi ((int16x4_t) __a), +- 0); ++ return __builtin_aarch64_reduc_umin_scal_v4hi_uu (__a); + } + + __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) + vminv_u32 (uint32x2_t __a) + { +- return vget_lane_u32 ((uint32x2_t) +- __builtin_aarch64_reduc_umin_v2si ((int32x2_t) __a), +- 0); ++ return __builtin_aarch64_reduc_umin_scal_v2si_uu (__a); + } + + __extension__ static __inline float32_t __attribute__ ((__always_inline__)) + vminvq_f32 (float32x4_t __a) + { +- return vgetq_lane_f32 (__builtin_aarch64_reduc_smin_nan_v4sf (__a), +- 0); ++ return __builtin_aarch64_reduc_smin_nan_scal_v4sf (__a); + } + + __extension__ static __inline float64_t __attribute__ ((__always_inline__)) + vminvq_f64 (float64x2_t __a) + { +- return vgetq_lane_f64 (__builtin_aarch64_reduc_smin_nan_v2df (__a), +- 0); ++ return __builtin_aarch64_reduc_smin_nan_scal_v2df (__a); + } + + __extension__ static __inline int8_t __attribute__ ((__always_inline__)) + vminvq_s8 (int8x16_t __a) + { +- return vgetq_lane_s8 (__builtin_aarch64_reduc_smin_v16qi (__a), 0); ++ return __builtin_aarch64_reduc_smin_scal_v16qi (__a); + } + + __extension__ static __inline int16_t __attribute__ ((__always_inline__)) + vminvq_s16 (int16x8_t __a) + { +- return vgetq_lane_s16 (__builtin_aarch64_reduc_smin_v8hi (__a), 0); ++ return __builtin_aarch64_reduc_smin_scal_v8hi (__a); + } + + __extension__ static __inline int32_t __attribute__ ((__always_inline__)) + vminvq_s32 (int32x4_t __a) + { +- return vgetq_lane_s32 (__builtin_aarch64_reduc_smin_v4si (__a), 0); ++ return __builtin_aarch64_reduc_smin_scal_v4si (__a); + } + + __extension__ static __inline uint8_t __attribute__ ((__always_inline__)) + vminvq_u8 (uint8x16_t __a) + { +- return vgetq_lane_u8 ((uint8x16_t) +- __builtin_aarch64_reduc_umin_v16qi ((int8x16_t) __a), +- 0); ++ return __builtin_aarch64_reduc_umin_scal_v16qi_uu (__a); + } + + __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) + vminvq_u16 (uint16x8_t __a) + { +- return vgetq_lane_u16 ((uint16x8_t) +- __builtin_aarch64_reduc_umin_v8hi ((int16x8_t) __a), +- 0); ++ return __builtin_aarch64_reduc_umin_scal_v8hi_uu (__a); + } + + __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) + vminvq_u32 (uint32x4_t __a) + { +- return vgetq_lane_u32 ((uint32x4_t) +- __builtin_aarch64_reduc_umin_v4si ((int32x4_t) __a), +- 0); ++ return __builtin_aarch64_reduc_umin_scal_v4si_uu (__a); + } + + /* vminnmv */ +@@ -20189,19 +19061,19 @@ + __extension__ static __inline float32_t __attribute__ ((__always_inline__)) + vminnmv_f32 (float32x2_t __a) + { +- return vget_lane_f32 (__builtin_aarch64_reduc_smin_v2sf (__a), 0); ++ return __builtin_aarch64_reduc_smin_scal_v2sf (__a); + } + + __extension__ static __inline float32_t __attribute__ ((__always_inline__)) + vminnmvq_f32 (float32x4_t __a) + { +- return vgetq_lane_f32 (__builtin_aarch64_reduc_smin_v4sf (__a), 0); ++ return __builtin_aarch64_reduc_smin_scal_v4sf (__a); + } + + __extension__ static __inline float64_t __attribute__ ((__always_inline__)) + vminnmvq_f64 (float64x2_t __a) + { +- return vgetq_lane_f64 (__builtin_aarch64_reduc_smin_v2df (__a), 0); ++ return __builtin_aarch64_reduc_smin_scal_v2df (__a); + } + + /* vmla */ +@@ -20911,6 +19783,65 @@ + return -__a; + } + ++/* vpadd */ ++ ++__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) ++vpadd_s8 (int8x8_t __a, int8x8_t __b) ++{ ++ return __builtin_aarch64_addpv8qi (__a, __b); ++} ++ ++__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) ++vpadd_s16 (int16x4_t __a, int16x4_t __b) ++{ ++ return __builtin_aarch64_addpv4hi (__a, __b); ++} ++ ++__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) ++vpadd_s32 (int32x2_t __a, int32x2_t __b) ++{ ++ return __builtin_aarch64_addpv2si (__a, __b); ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vpadd_u8 (uint8x8_t __a, uint8x8_t __b) ++{ ++ return (uint8x8_t) __builtin_aarch64_addpv8qi ((int8x8_t) __a, ++ (int8x8_t) __b); ++} ++ ++__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) ++vpadd_u16 (uint16x4_t __a, uint16x4_t __b) ++{ ++ return (uint16x4_t) __builtin_aarch64_addpv4hi ((int16x4_t) __a, ++ (int16x4_t) __b); ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vpadd_u32 (uint32x2_t __a, uint32x2_t __b) ++{ ++ return (uint32x2_t) __builtin_aarch64_addpv2si ((int32x2_t) __a, ++ (int32x2_t) __b); ++} ++ ++__extension__ static __inline float64_t __attribute__ ((__always_inline__)) ++vpaddd_f64 (float64x2_t __a) ++{ ++ return __builtin_aarch64_reduc_plus_scal_v2df (__a); ++} ++ ++__extension__ static __inline int64_t __attribute__ ((__always_inline__)) ++vpaddd_s64 (int64x2_t __a) ++{ ++ return __builtin_aarch64_addpdi (__a); ++} ++ ++__extension__ static __inline uint64_t __attribute__ ((__always_inline__)) ++vpaddd_u64 (uint64x2_t __a) ++{ ++ return __builtin_aarch64_addpdi ((int64x2_t) __a); ++} ++ + /* vqabs */ + + __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) +@@ -20937,6 +19868,12 @@ + return (int32_t) __builtin_aarch64_sqabssi (__a); + } + ++__extension__ static __inline int64_t __attribute__ ((__always_inline__)) ++vqabsd_s64 (int64_t __a) ++{ ++ return __builtin_aarch64_sqabsdi (__a); ++} ++ + /* vqadd */ + + __extension__ static __inline int8_t __attribute__ ((__always_inline__)) +@@ -20966,25 +19903,26 @@ + __extension__ static __inline uint8_t __attribute__ ((__always_inline__)) + vqaddb_u8 (uint8_t __a, uint8_t __b) + { +- return (uint8_t) __builtin_aarch64_uqaddqi (__a, __b); ++ return (uint8_t) __builtin_aarch64_uqaddqi_uuu (__a, __b); + } + + __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) + vqaddh_u16 (uint16_t __a, uint16_t __b) + { +- return (uint16_t) __builtin_aarch64_uqaddhi (__a, __b); ++ return (uint16_t) __builtin_aarch64_uqaddhi_uuu (__a, __b); + } + + __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) + vqadds_u32 (uint32_t __a, uint32_t __b) + { +- return (uint32_t) __builtin_aarch64_uqaddsi (__a, __b); ++ return (uint32_t) __builtin_aarch64_uqaddsi_uuu (__a, __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vqaddd_u64 (uint64x1_t __a, uint64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_uqadddi (__a, __b); ++ return (uint64x1_t) __builtin_aarch64_uqadddi_uuu ((uint64_t) __a, ++ (uint64_t) __b); + } + + /* vqdmlal */ +@@ -21399,6 +20337,12 @@ + return __builtin_aarch64_sqdmull_lanehi (__a, __b, __c); + } + ++__extension__ static __inline int32_t __attribute__ ((__always_inline__)) ++vqdmullh_laneq_s16 (int16_t __a, int16x8_t __b, const int __c) ++{ ++ return __builtin_aarch64_sqdmull_laneqhi (__a, __b, __c); ++} ++ + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vqdmulls_s32 (int32_t __a, int32_t __b) + { +@@ -21405,12 +20349,18 @@ + return (int64x1_t) __builtin_aarch64_sqdmullsi (__a, __b); + } + +-__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) ++__extension__ static __inline int64_t __attribute__ ((__always_inline__)) + vqdmulls_lane_s32 (int32_t __a, int32x2_t __b, const int __c) + { + return __builtin_aarch64_sqdmull_lanesi (__a, __b, __c); + } + ++__extension__ static __inline int64_t __attribute__ ((__always_inline__)) ++vqdmulls_laneq_s32 (int32_t __a, int32x4_t __b, const int __c) ++{ ++ return __builtin_aarch64_sqdmull_laneqsi (__a, __b, __c); ++} ++ + /* vqmovn */ + + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +@@ -21549,6 +20499,12 @@ + return (int32_t) __builtin_aarch64_sqnegsi (__a); + } + ++__extension__ static __inline int64_t __attribute__ ((__always_inline__)) ++vqnegd_s64 (int64_t __a) ++{ ++ return __builtin_aarch64_sqnegdi (__a); ++} ++ + /* vqrdmulh */ + + __extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) +@@ -21628,25 +20584,25 @@ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vqrshl_u8 (uint8x8_t __a, int8x8_t __b) + { +- return (uint8x8_t) __builtin_aarch64_uqrshlv8qi ((int8x8_t) __a, __b); ++ return __builtin_aarch64_uqrshlv8qi_uus ( __a, __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vqrshl_u16 (uint16x4_t __a, int16x4_t __b) + { +- return (uint16x4_t) __builtin_aarch64_uqrshlv4hi ((int16x4_t) __a, __b); ++ return __builtin_aarch64_uqrshlv4hi_uus ( __a, __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vqrshl_u32 (uint32x2_t __a, int32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_uqrshlv2si ((int32x2_t) __a, __b); ++ return __builtin_aarch64_uqrshlv2si_uus ( __a, __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vqrshl_u64 (uint64x1_t __a, int64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_uqrshldi ((int64x1_t) __a, __b); ++ return __builtin_aarch64_uqrshldi_uus ( __a, __b); + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +@@ -21676,25 +20632,25 @@ + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vqrshlq_u8 (uint8x16_t __a, int8x16_t __b) + { +- return (uint8x16_t) __builtin_aarch64_uqrshlv16qi ((int8x16_t) __a, __b); ++ return __builtin_aarch64_uqrshlv16qi_uus ( __a, __b); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vqrshlq_u16 (uint16x8_t __a, int16x8_t __b) + { +- return (uint16x8_t) __builtin_aarch64_uqrshlv8hi ((int16x8_t) __a, __b); ++ return __builtin_aarch64_uqrshlv8hi_uus ( __a, __b); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vqrshlq_u32 (uint32x4_t __a, int32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_uqrshlv4si ((int32x4_t) __a, __b); ++ return __builtin_aarch64_uqrshlv4si_uus ( __a, __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vqrshlq_u64 (uint64x2_t __a, int64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_uqrshlv2di ((int64x2_t) __a, __b); ++ return __builtin_aarch64_uqrshlv2di_uus ( __a, __b); + } + + __extension__ static __inline int8_t __attribute__ ((__always_inline__)) +@@ -21724,25 +20680,25 @@ + __extension__ static __inline uint8_t __attribute__ ((__always_inline__)) + vqrshlb_u8 (uint8_t __a, uint8_t __b) + { +- return (uint8_t) __builtin_aarch64_uqrshlqi (__a, __b); ++ return __builtin_aarch64_uqrshlqi_uus (__a, __b); + } + + __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) + vqrshlh_u16 (uint16_t __a, uint16_t __b) + { +- return (uint16_t) __builtin_aarch64_uqrshlhi (__a, __b); ++ return __builtin_aarch64_uqrshlhi_uus (__a, __b); + } + + __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) + vqrshls_u32 (uint32_t __a, uint32_t __b) + { +- return (uint32_t) __builtin_aarch64_uqrshlsi (__a, __b); ++ return __builtin_aarch64_uqrshlsi_uus (__a, __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vqrshld_u64 (uint64x1_t __a, uint64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_uqrshldi (__a, __b); ++ return __builtin_aarch64_uqrshldi_uus (__a, __b); + } + + /* vqrshrn */ +@@ -21768,19 +20724,19 @@ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vqrshrn_n_u16 (uint16x8_t __a, const int __b) + { +- return (uint8x8_t) __builtin_aarch64_uqrshrn_nv8hi ((int16x8_t) __a, __b); ++ return __builtin_aarch64_uqrshrn_nv8hi_uus ( __a, __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vqrshrn_n_u32 (uint32x4_t __a, const int __b) + { +- return (uint16x4_t) __builtin_aarch64_uqrshrn_nv4si ((int32x4_t) __a, __b); ++ return __builtin_aarch64_uqrshrn_nv4si_uus ( __a, __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vqrshrn_n_u64 (uint64x2_t __a, const int __b) + { +- return (uint32x2_t) __builtin_aarch64_uqrshrn_nv2di ((int64x2_t) __a, __b); ++ return __builtin_aarch64_uqrshrn_nv2di_uus ( __a, __b); + } + + __extension__ static __inline int8_t __attribute__ ((__always_inline__)) +@@ -21804,19 +20760,19 @@ + __extension__ static __inline uint8_t __attribute__ ((__always_inline__)) + vqrshrnh_n_u16 (uint16_t __a, const int __b) + { +- return (uint8_t) __builtin_aarch64_uqrshrn_nhi (__a, __b); ++ return __builtin_aarch64_uqrshrn_nhi_uus (__a, __b); + } + + __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) + vqrshrns_n_u32 (uint32_t __a, const int __b) + { +- return (uint16_t) __builtin_aarch64_uqrshrn_nsi (__a, __b); ++ return __builtin_aarch64_uqrshrn_nsi_uus (__a, __b); + } + + __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) + vqrshrnd_n_u64 (uint64x1_t __a, const int __b) + { +- return (uint32_t) __builtin_aarch64_uqrshrn_ndi (__a, __b); ++ return __builtin_aarch64_uqrshrn_ndi_uus (__a, __b); + } + + /* vqrshrun */ +@@ -21886,25 +20842,25 @@ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vqshl_u8 (uint8x8_t __a, int8x8_t __b) + { +- return (uint8x8_t) __builtin_aarch64_uqshlv8qi ((int8x8_t) __a, __b); ++ return __builtin_aarch64_uqshlv8qi_uus ( __a, __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vqshl_u16 (uint16x4_t __a, int16x4_t __b) + { +- return (uint16x4_t) __builtin_aarch64_uqshlv4hi ((int16x4_t) __a, __b); ++ return __builtin_aarch64_uqshlv4hi_uus ( __a, __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vqshl_u32 (uint32x2_t __a, int32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_uqshlv2si ((int32x2_t) __a, __b); ++ return __builtin_aarch64_uqshlv2si_uus ( __a, __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vqshl_u64 (uint64x1_t __a, int64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_uqshldi ((int64x1_t) __a, __b); ++ return __builtin_aarch64_uqshldi_uus ( __a, __b); + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +@@ -21934,25 +20890,25 @@ + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vqshlq_u8 (uint8x16_t __a, int8x16_t __b) + { +- return (uint8x16_t) __builtin_aarch64_uqshlv16qi ((int8x16_t) __a, __b); ++ return __builtin_aarch64_uqshlv16qi_uus ( __a, __b); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vqshlq_u16 (uint16x8_t __a, int16x8_t __b) + { +- return (uint16x8_t) __builtin_aarch64_uqshlv8hi ((int16x8_t) __a, __b); ++ return __builtin_aarch64_uqshlv8hi_uus ( __a, __b); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vqshlq_u32 (uint32x4_t __a, int32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_uqshlv4si ((int32x4_t) __a, __b); ++ return __builtin_aarch64_uqshlv4si_uus ( __a, __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vqshlq_u64 (uint64x2_t __a, int64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_uqshlv2di ((int64x2_t) __a, __b); ++ return __builtin_aarch64_uqshlv2di_uus ( __a, __b); + } + + __extension__ static __inline int8_t __attribute__ ((__always_inline__)) +@@ -21982,25 +20938,25 @@ + __extension__ static __inline uint8_t __attribute__ ((__always_inline__)) + vqshlb_u8 (uint8_t __a, uint8_t __b) + { +- return (uint8_t) __builtin_aarch64_uqshlqi (__a, __b); ++ return __builtin_aarch64_uqshlqi_uus (__a, __b); + } + + __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) + vqshlh_u16 (uint16_t __a, uint16_t __b) + { +- return (uint16_t) __builtin_aarch64_uqshlhi (__a, __b); ++ return __builtin_aarch64_uqshlhi_uus (__a, __b); + } + + __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) + vqshls_u32 (uint32_t __a, uint32_t __b) + { +- return (uint32_t) __builtin_aarch64_uqshlsi (__a, __b); ++ return __builtin_aarch64_uqshlsi_uus (__a, __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vqshld_u64 (uint64x1_t __a, uint64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_uqshldi (__a, __b); ++ return __builtin_aarch64_uqshldi_uus (__a, __b); + } + + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +@@ -22030,25 +20986,25 @@ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vqshl_n_u8 (uint8x8_t __a, const int __b) + { +- return (uint8x8_t) __builtin_aarch64_uqshl_nv8qi ((int8x8_t) __a, __b); ++ return __builtin_aarch64_uqshl_nv8qi_uus (__a, __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vqshl_n_u16 (uint16x4_t __a, const int __b) + { +- return (uint16x4_t) __builtin_aarch64_uqshl_nv4hi ((int16x4_t) __a, __b); ++ return __builtin_aarch64_uqshl_nv4hi_uus (__a, __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vqshl_n_u32 (uint32x2_t __a, const int __b) + { +- return (uint32x2_t) __builtin_aarch64_uqshl_nv2si ((int32x2_t) __a, __b); ++ return __builtin_aarch64_uqshl_nv2si_uus (__a, __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vqshl_n_u64 (uint64x1_t __a, const int __b) + { +- return (uint64x1_t) __builtin_aarch64_uqshl_ndi ((int64x1_t) __a, __b); ++ return __builtin_aarch64_uqshl_ndi_uus (__a, __b); + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +@@ -22078,25 +21034,25 @@ + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vqshlq_n_u8 (uint8x16_t __a, const int __b) + { +- return (uint8x16_t) __builtin_aarch64_uqshl_nv16qi ((int8x16_t) __a, __b); ++ return __builtin_aarch64_uqshl_nv16qi_uus (__a, __b); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vqshlq_n_u16 (uint16x8_t __a, const int __b) + { +- return (uint16x8_t) __builtin_aarch64_uqshl_nv8hi ((int16x8_t) __a, __b); ++ return __builtin_aarch64_uqshl_nv8hi_uus (__a, __b); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vqshlq_n_u32 (uint32x4_t __a, const int __b) + { +- return (uint32x4_t) __builtin_aarch64_uqshl_nv4si ((int32x4_t) __a, __b); ++ return __builtin_aarch64_uqshl_nv4si_uus (__a, __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vqshlq_n_u64 (uint64x2_t __a, const int __b) + { +- return (uint64x2_t) __builtin_aarch64_uqshl_nv2di ((int64x2_t) __a, __b); ++ return __builtin_aarch64_uqshl_nv2di_uus (__a, __b); + } + + __extension__ static __inline int8_t __attribute__ ((__always_inline__)) +@@ -22126,25 +21082,25 @@ + __extension__ static __inline uint8_t __attribute__ ((__always_inline__)) + vqshlb_n_u8 (uint8_t __a, const int __b) + { +- return (uint8_t) __builtin_aarch64_uqshl_nqi (__a, __b); ++ return __builtin_aarch64_uqshl_nqi_uus (__a, __b); + } + + __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) + vqshlh_n_u16 (uint16_t __a, const int __b) + { +- return (uint16_t) __builtin_aarch64_uqshl_nhi (__a, __b); ++ return __builtin_aarch64_uqshl_nhi_uus (__a, __b); + } + + __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) + vqshls_n_u32 (uint32_t __a, const int __b) + { +- return (uint32_t) __builtin_aarch64_uqshl_nsi (__a, __b); ++ return __builtin_aarch64_uqshl_nsi_uus (__a, __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vqshld_n_u64 (uint64x1_t __a, const int __b) + { +- return (uint64x1_t) __builtin_aarch64_uqshl_ndi (__a, __b); ++ return __builtin_aarch64_uqshl_ndi_uus (__a, __b); + } + + /* vqshlu */ +@@ -22152,73 +21108,73 @@ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vqshlu_n_s8 (int8x8_t __a, const int __b) + { +- return (uint8x8_t) __builtin_aarch64_sqshlu_nv8qi (__a, __b); ++ return __builtin_aarch64_sqshlu_nv8qi_uss (__a, __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vqshlu_n_s16 (int16x4_t __a, const int __b) + { +- return (uint16x4_t) __builtin_aarch64_sqshlu_nv4hi (__a, __b); ++ return __builtin_aarch64_sqshlu_nv4hi_uss (__a, __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vqshlu_n_s32 (int32x2_t __a, const int __b) + { +- return (uint32x2_t) __builtin_aarch64_sqshlu_nv2si (__a, __b); ++ return __builtin_aarch64_sqshlu_nv2si_uss (__a, __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vqshlu_n_s64 (int64x1_t __a, const int __b) + { +- return (uint64x1_t) __builtin_aarch64_sqshlu_ndi (__a, __b); ++ return __builtin_aarch64_sqshlu_ndi_uss (__a, __b); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vqshluq_n_s8 (int8x16_t __a, const int __b) + { +- return (uint8x16_t) __builtin_aarch64_sqshlu_nv16qi (__a, __b); ++ return __builtin_aarch64_sqshlu_nv16qi_uss (__a, __b); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vqshluq_n_s16 (int16x8_t __a, const int __b) + { +- return (uint16x8_t) __builtin_aarch64_sqshlu_nv8hi (__a, __b); ++ return __builtin_aarch64_sqshlu_nv8hi_uss (__a, __b); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vqshluq_n_s32 (int32x4_t __a, const int __b) + { +- return (uint32x4_t) __builtin_aarch64_sqshlu_nv4si (__a, __b); ++ return __builtin_aarch64_sqshlu_nv4si_uss (__a, __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vqshluq_n_s64 (int64x2_t __a, const int __b) + { +- return (uint64x2_t) __builtin_aarch64_sqshlu_nv2di (__a, __b); ++ return __builtin_aarch64_sqshlu_nv2di_uss (__a, __b); + } + + __extension__ static __inline int8_t __attribute__ ((__always_inline__)) + vqshlub_n_s8 (int8_t __a, const int __b) + { +- return (int8_t) __builtin_aarch64_sqshlu_nqi (__a, __b); ++ return (int8_t) __builtin_aarch64_sqshlu_nqi_uss (__a, __b); + } + + __extension__ static __inline int16_t __attribute__ ((__always_inline__)) + vqshluh_n_s16 (int16_t __a, const int __b) + { +- return (int16_t) __builtin_aarch64_sqshlu_nhi (__a, __b); ++ return (int16_t) __builtin_aarch64_sqshlu_nhi_uss (__a, __b); + } + + __extension__ static __inline int32_t __attribute__ ((__always_inline__)) + vqshlus_n_s32 (int32_t __a, const int __b) + { +- return (int32_t) __builtin_aarch64_sqshlu_nsi (__a, __b); ++ return (int32_t) __builtin_aarch64_sqshlu_nsi_uss (__a, __b); + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vqshlud_n_s64 (int64x1_t __a, const int __b) + { +- return (int64x1_t) __builtin_aarch64_sqshlu_ndi (__a, __b); ++ return (int64x1_t) __builtin_aarch64_sqshlu_ndi_uss (__a, __b); + } + + /* vqshrn */ +@@ -22244,19 +21200,19 @@ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vqshrn_n_u16 (uint16x8_t __a, const int __b) + { +- return (uint8x8_t) __builtin_aarch64_uqshrn_nv8hi ((int16x8_t) __a, __b); ++ return __builtin_aarch64_uqshrn_nv8hi_uus ( __a, __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vqshrn_n_u32 (uint32x4_t __a, const int __b) + { +- return (uint16x4_t) __builtin_aarch64_uqshrn_nv4si ((int32x4_t) __a, __b); ++ return __builtin_aarch64_uqshrn_nv4si_uus ( __a, __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vqshrn_n_u64 (uint64x2_t __a, const int __b) + { +- return (uint32x2_t) __builtin_aarch64_uqshrn_nv2di ((int64x2_t) __a, __b); ++ return __builtin_aarch64_uqshrn_nv2di_uus ( __a, __b); + } + + __extension__ static __inline int8_t __attribute__ ((__always_inline__)) +@@ -22280,19 +21236,19 @@ + __extension__ static __inline uint8_t __attribute__ ((__always_inline__)) + vqshrnh_n_u16 (uint16_t __a, const int __b) + { +- return (uint8_t) __builtin_aarch64_uqshrn_nhi (__a, __b); ++ return __builtin_aarch64_uqshrn_nhi_uus (__a, __b); + } + + __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) + vqshrns_n_u32 (uint32_t __a, const int __b) + { +- return (uint16_t) __builtin_aarch64_uqshrn_nsi (__a, __b); ++ return __builtin_aarch64_uqshrn_nsi_uus (__a, __b); + } + + __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) + vqshrnd_n_u64 (uint64x1_t __a, const int __b) + { +- return (uint32_t) __builtin_aarch64_uqshrn_ndi (__a, __b); ++ return __builtin_aarch64_uqshrn_ndi_uus (__a, __b); + } + + /* vqshrun */ +@@ -22362,27 +21318,66 @@ + __extension__ static __inline uint8_t __attribute__ ((__always_inline__)) + vqsubb_u8 (uint8_t __a, uint8_t __b) + { +- return (uint8_t) __builtin_aarch64_uqsubqi (__a, __b); ++ return (uint8_t) __builtin_aarch64_uqsubqi_uuu (__a, __b); + } + + __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) + vqsubh_u16 (uint16_t __a, uint16_t __b) + { +- return (uint16_t) __builtin_aarch64_uqsubhi (__a, __b); ++ return (uint16_t) __builtin_aarch64_uqsubhi_uuu (__a, __b); + } + + __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) + vqsubs_u32 (uint32_t __a, uint32_t __b) + { +- return (uint32_t) __builtin_aarch64_uqsubsi (__a, __b); ++ return (uint32_t) __builtin_aarch64_uqsubsi_uuu (__a, __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vqsubd_u64 (uint64x1_t __a, uint64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_uqsubdi (__a, __b); ++ return (uint64x1_t) __builtin_aarch64_uqsubdi_uuu ((uint64_t) __a, ++ (uint64_t) __b); + } + ++/* vrbit */ ++ ++__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) ++vrbit_p8 (poly8x8_t __a) ++{ ++ return (poly8x8_t) __builtin_aarch64_rbitv8qi ((int8x8_t) __a); ++} ++ ++__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) ++vrbit_s8 (int8x8_t __a) ++{ ++ return __builtin_aarch64_rbitv8qi (__a); ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vrbit_u8 (uint8x8_t __a) ++{ ++ return (uint8x8_t) __builtin_aarch64_rbitv8qi ((int8x8_t) __a); ++} ++ ++__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) ++vrbitq_p8 (poly8x16_t __a) ++{ ++ return (poly8x16_t) __builtin_aarch64_rbitv16qi ((int8x16_t)__a); ++} ++ ++__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) ++vrbitq_s8 (int8x16_t __a) ++{ ++ return __builtin_aarch64_rbitv16qi (__a); ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vrbitq_u8 (uint8x16_t __a) ++{ ++ return (uint8x16_t) __builtin_aarch64_rbitv16qi ((int8x16_t) __a); ++} ++ + /* vrecpe */ + + __extension__ static __inline float32_t __attribute__ ((__always_inline__)) +@@ -22461,6 +21456,234 @@ + return __builtin_aarch64_frecpxdf (__a); + } + ++ ++/* vrev */ ++ ++__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) ++vrev16_p8 (poly8x8_t a) ++{ ++ return __builtin_shuffle (a, (uint8x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 }); ++} ++ ++__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) ++vrev16_s8 (int8x8_t a) ++{ ++ return __builtin_shuffle (a, (uint8x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 }); ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vrev16_u8 (uint8x8_t a) ++{ ++ return __builtin_shuffle (a, (uint8x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 }); ++} ++ ++__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) ++vrev16q_p8 (poly8x16_t a) ++{ ++ return __builtin_shuffle (a, ++ (uint8x16_t) { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 }); ++} ++ ++__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) ++vrev16q_s8 (int8x16_t a) ++{ ++ return __builtin_shuffle (a, ++ (uint8x16_t) { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 }); ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vrev16q_u8 (uint8x16_t a) ++{ ++ return __builtin_shuffle (a, ++ (uint8x16_t) { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 }); ++} ++ ++__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) ++vrev32_p8 (poly8x8_t a) ++{ ++ return __builtin_shuffle (a, (uint8x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 }); ++} ++ ++__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) ++vrev32_p16 (poly16x4_t a) ++{ ++ return __builtin_shuffle (a, (uint16x4_t) { 1, 0, 3, 2 }); ++} ++ ++__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) ++vrev32_s8 (int8x8_t a) ++{ ++ return __builtin_shuffle (a, (uint8x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 }); ++} ++ ++__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) ++vrev32_s16 (int16x4_t a) ++{ ++ return __builtin_shuffle (a, (uint16x4_t) { 1, 0, 3, 2 }); ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vrev32_u8 (uint8x8_t a) ++{ ++ return __builtin_shuffle (a, (uint8x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 }); ++} ++ ++__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) ++vrev32_u16 (uint16x4_t a) ++{ ++ return __builtin_shuffle (a, (uint16x4_t) { 1, 0, 3, 2 }); ++} ++ ++__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) ++vrev32q_p8 (poly8x16_t a) ++{ ++ return __builtin_shuffle (a, ++ (uint8x16_t) { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 }); ++} ++ ++__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) ++vrev32q_p16 (poly16x8_t a) ++{ ++ return __builtin_shuffle (a, (uint16x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 }); ++} ++ ++__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) ++vrev32q_s8 (int8x16_t a) ++{ ++ return __builtin_shuffle (a, ++ (uint8x16_t) { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 }); ++} ++ ++__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) ++vrev32q_s16 (int16x8_t a) ++{ ++ return __builtin_shuffle (a, (uint16x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 }); ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vrev32q_u8 (uint8x16_t a) ++{ ++ return __builtin_shuffle (a, ++ (uint8x16_t) { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 }); ++} ++ ++__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) ++vrev32q_u16 (uint16x8_t a) ++{ ++ return __builtin_shuffle (a, (uint16x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 }); ++} ++ ++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) ++vrev64_f32 (float32x2_t a) ++{ ++ return __builtin_shuffle (a, (uint32x2_t) { 1, 0 }); ++} ++ ++__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) ++vrev64_p8 (poly8x8_t a) ++{ ++ return __builtin_shuffle (a, (uint8x8_t) { 7, 6, 5, 4, 3, 2, 1, 0 }); ++} ++ ++__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) ++vrev64_p16 (poly16x4_t a) ++{ ++ return __builtin_shuffle (a, (uint16x4_t) { 3, 2, 1, 0 }); ++} ++ ++__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) ++vrev64_s8 (int8x8_t a) ++{ ++ return __builtin_shuffle (a, (uint8x8_t) { 7, 6, 5, 4, 3, 2, 1, 0 }); ++} ++ ++__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) ++vrev64_s16 (int16x4_t a) ++{ ++ return __builtin_shuffle (a, (uint16x4_t) { 3, 2, 1, 0 }); ++} ++ ++__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) ++vrev64_s32 (int32x2_t a) ++{ ++ return __builtin_shuffle (a, (uint32x2_t) { 1, 0 }); ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vrev64_u8 (uint8x8_t a) ++{ ++ return __builtin_shuffle (a, (uint8x8_t) { 7, 6, 5, 4, 3, 2, 1, 0 }); ++} ++ ++__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) ++vrev64_u16 (uint16x4_t a) ++{ ++ return __builtin_shuffle (a, (uint16x4_t) { 3, 2, 1, 0 }); ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vrev64_u32 (uint32x2_t a) ++{ ++ return __builtin_shuffle (a, (uint32x2_t) { 1, 0 }); ++} ++ ++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) ++vrev64q_f32 (float32x4_t a) ++{ ++ return __builtin_shuffle (a, (uint32x4_t) { 1, 0, 3, 2 }); ++} ++ ++__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) ++vrev64q_p8 (poly8x16_t a) ++{ ++ return __builtin_shuffle (a, ++ (uint8x16_t) { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 }); ++} ++ ++__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) ++vrev64q_p16 (poly16x8_t a) ++{ ++ return __builtin_shuffle (a, (uint16x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 }); ++} ++ ++__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) ++vrev64q_s8 (int8x16_t a) ++{ ++ return __builtin_shuffle (a, ++ (uint8x16_t) { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 }); ++} ++ ++__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) ++vrev64q_s16 (int16x8_t a) ++{ ++ return __builtin_shuffle (a, (uint16x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 }); ++} ++ ++__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) ++vrev64q_s32 (int32x4_t a) ++{ ++ return __builtin_shuffle (a, (uint32x4_t) { 1, 0, 3, 2 }); ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vrev64q_u8 (uint8x16_t a) ++{ ++ return __builtin_shuffle (a, ++ (uint8x16_t) { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 }); ++} ++ ++__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) ++vrev64q_u16 (uint16x8_t a) ++{ ++ return __builtin_shuffle (a, (uint16x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 }); ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vrev64q_u32 (uint32x4_t a) ++{ ++ return __builtin_shuffle (a, (uint32x4_t) { 1, 0, 3, 2 }); ++} ++ + /* vrnd */ + + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +@@ -22469,6 +21692,12 @@ + return __builtin_aarch64_btruncv2sf (__a); + } + ++__extension__ static __inline float64x1_t __attribute__ ((__always_inline__)) ++vrnd_f64 (float64x1_t __a) ++{ ++ return vset_lane_f64 (__builtin_trunc (vget_lane_f64 (__a, 0)), __a, 0); ++} ++ + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vrndq_f32 (float32x4_t __a) + { +@@ -22489,6 +21718,12 @@ + return __builtin_aarch64_roundv2sf (__a); + } + ++__extension__ static __inline float64x1_t __attribute__ ((__always_inline__)) ++vrnda_f64 (float64x1_t __a) ++{ ++ return vset_lane_f64 (__builtin_round (vget_lane_f64 (__a, 0)), __a, 0); ++} ++ + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vrndaq_f32 (float32x4_t __a) + { +@@ -22509,6 +21744,12 @@ + return __builtin_aarch64_nearbyintv2sf (__a); + } + ++__extension__ static __inline float64x1_t __attribute__ ((__always_inline__)) ++vrndi_f64 (float64x1_t __a) ++{ ++ return vset_lane_f64 (__builtin_nearbyint (vget_lane_f64 (__a, 0)), __a, 0); ++} ++ + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vrndiq_f32 (float32x4_t __a) + { +@@ -22529,6 +21770,12 @@ + return __builtin_aarch64_floorv2sf (__a); + } + ++__extension__ static __inline float64x1_t __attribute__ ((__always_inline__)) ++vrndm_f64 (float64x1_t __a) ++{ ++ return vset_lane_f64 (__builtin_floor (vget_lane_f64 (__a, 0)), __a, 0); ++} ++ + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vrndmq_f32 (float32x4_t __a) + { +@@ -22548,6 +21795,13 @@ + { + return __builtin_aarch64_frintnv2sf (__a); + } ++ ++__extension__ static __inline float64x1_t __attribute__ ((__always_inline__)) ++vrndn_f64 (float64x1_t __a) ++{ ++ return __builtin_aarch64_frintndf (__a); ++} ++ + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vrndnq_f32 (float32x4_t __a) + { +@@ -22568,6 +21822,12 @@ + return __builtin_aarch64_ceilv2sf (__a); + } + ++__extension__ static __inline float64x1_t __attribute__ ((__always_inline__)) ++vrndp_f64 (float64x1_t __a) ++{ ++ return vset_lane_f64 (__builtin_ceil (vget_lane_f64 (__a, 0)), __a, 0); ++} ++ + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vrndpq_f32 (float32x4_t __a) + { +@@ -22588,6 +21848,12 @@ + return __builtin_aarch64_rintv2sf (__a); + } + ++__extension__ static __inline float64x1_t __attribute__ ((__always_inline__)) ++vrndx_f64 (float64x1_t __a) ++{ ++ return vset_lane_f64 (__builtin_rint (vget_lane_f64 (__a, 0)), __a, 0); ++} ++ + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vrndxq_f32 (float32x4_t __a) + { +@@ -22629,25 +21895,25 @@ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vrshl_u8 (uint8x8_t __a, int8x8_t __b) + { +- return (uint8x8_t) __builtin_aarch64_urshlv8qi ((int8x8_t) __a, __b); ++ return __builtin_aarch64_urshlv8qi_uus (__a, __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vrshl_u16 (uint16x4_t __a, int16x4_t __b) + { +- return (uint16x4_t) __builtin_aarch64_urshlv4hi ((int16x4_t) __a, __b); ++ return __builtin_aarch64_urshlv4hi_uus (__a, __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vrshl_u32 (uint32x2_t __a, int32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_urshlv2si ((int32x2_t) __a, __b); ++ return __builtin_aarch64_urshlv2si_uus (__a, __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vrshl_u64 (uint64x1_t __a, int64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_urshldi ((int64x1_t) __a, __b); ++ return __builtin_aarch64_urshldi_uus (__a, __b); + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +@@ -22677,25 +21943,25 @@ + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vrshlq_u8 (uint8x16_t __a, int8x16_t __b) + { +- return (uint8x16_t) __builtin_aarch64_urshlv16qi ((int8x16_t) __a, __b); ++ return __builtin_aarch64_urshlv16qi_uus (__a, __b); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vrshlq_u16 (uint16x8_t __a, int16x8_t __b) + { +- return (uint16x8_t) __builtin_aarch64_urshlv8hi ((int16x8_t) __a, __b); ++ return __builtin_aarch64_urshlv8hi_uus (__a, __b); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vrshlq_u32 (uint32x4_t __a, int32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_urshlv4si ((int32x4_t) __a, __b); ++ return __builtin_aarch64_urshlv4si_uus (__a, __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vrshlq_u64 (uint64x2_t __a, int64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_urshlv2di ((int64x2_t) __a, __b); ++ return __builtin_aarch64_urshlv2di_uus (__a, __b); + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) +@@ -22707,7 +21973,7 @@ + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vrshld_u64 (uint64x1_t __a, uint64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_urshldi (__a, __b); ++ return __builtin_aarch64_urshldi_uus (__a, __b); + } + + /* vrshr */ +@@ -22739,25 +22005,25 @@ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vrshr_n_u8 (uint8x8_t __a, const int __b) + { +- return (uint8x8_t) __builtin_aarch64_urshr_nv8qi ((int8x8_t) __a, __b); ++ return __builtin_aarch64_urshr_nv8qi_uus (__a, __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vrshr_n_u16 (uint16x4_t __a, const int __b) + { +- return (uint16x4_t) __builtin_aarch64_urshr_nv4hi ((int16x4_t) __a, __b); ++ return __builtin_aarch64_urshr_nv4hi_uus (__a, __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vrshr_n_u32 (uint32x2_t __a, const int __b) + { +- return (uint32x2_t) __builtin_aarch64_urshr_nv2si ((int32x2_t) __a, __b); ++ return __builtin_aarch64_urshr_nv2si_uus (__a, __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vrshr_n_u64 (uint64x1_t __a, const int __b) + { +- return (uint64x1_t) __builtin_aarch64_urshr_ndi ((int64x1_t) __a, __b); ++ return __builtin_aarch64_urshr_ndi_uus (__a, __b); + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +@@ -22787,25 +22053,25 @@ + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vrshrq_n_u8 (uint8x16_t __a, const int __b) + { +- return (uint8x16_t) __builtin_aarch64_urshr_nv16qi ((int8x16_t) __a, __b); ++ return __builtin_aarch64_urshr_nv16qi_uus (__a, __b); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vrshrq_n_u16 (uint16x8_t __a, const int __b) + { +- return (uint16x8_t) __builtin_aarch64_urshr_nv8hi ((int16x8_t) __a, __b); ++ return __builtin_aarch64_urshr_nv8hi_uus (__a, __b); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vrshrq_n_u32 (uint32x4_t __a, const int __b) + { +- return (uint32x4_t) __builtin_aarch64_urshr_nv4si ((int32x4_t) __a, __b); ++ return __builtin_aarch64_urshr_nv4si_uus (__a, __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vrshrq_n_u64 (uint64x2_t __a, const int __b) + { +- return (uint64x2_t) __builtin_aarch64_urshr_nv2di ((int64x2_t) __a, __b); ++ return __builtin_aarch64_urshr_nv2di_uus (__a, __b); + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) +@@ -22817,7 +22083,7 @@ + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vrshrd_n_u64 (uint64x1_t __a, const int __b) + { +- return (uint64x1_t) __builtin_aarch64_urshr_ndi (__a, __b); ++ return __builtin_aarch64_urshr_ndi_uus (__a, __b); + } + + /* vrsra */ +@@ -22849,29 +22115,25 @@ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vrsra_n_u8 (uint8x8_t __a, uint8x8_t __b, const int __c) + { +- return (uint8x8_t) __builtin_aarch64_ursra_nv8qi ((int8x8_t) __a, +- (int8x8_t) __b, __c); ++ return __builtin_aarch64_ursra_nv8qi_uuus (__a, __b, __c); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vrsra_n_u16 (uint16x4_t __a, uint16x4_t __b, const int __c) + { +- return (uint16x4_t) __builtin_aarch64_ursra_nv4hi ((int16x4_t) __a, +- (int16x4_t) __b, __c); ++ return __builtin_aarch64_ursra_nv4hi_uuus (__a, __b, __c); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vrsra_n_u32 (uint32x2_t __a, uint32x2_t __b, const int __c) + { +- return (uint32x2_t) __builtin_aarch64_ursra_nv2si ((int32x2_t) __a, +- (int32x2_t) __b, __c); ++ return __builtin_aarch64_ursra_nv2si_uuus (__a, __b, __c); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vrsra_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c) + { +- return (uint64x1_t) __builtin_aarch64_ursra_ndi ((int64x1_t) __a, +- (int64x1_t) __b, __c); ++ return __builtin_aarch64_ursra_ndi_uuus (__a, __b, __c); + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +@@ -22901,29 +22163,25 @@ + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vrsraq_n_u8 (uint8x16_t __a, uint8x16_t __b, const int __c) + { +- return (uint8x16_t) __builtin_aarch64_ursra_nv16qi ((int8x16_t) __a, +- (int8x16_t) __b, __c); ++ return __builtin_aarch64_ursra_nv16qi_uuus (__a, __b, __c); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vrsraq_n_u16 (uint16x8_t __a, uint16x8_t __b, const int __c) + { +- return (uint16x8_t) __builtin_aarch64_ursra_nv8hi ((int16x8_t) __a, +- (int16x8_t) __b, __c); ++ return __builtin_aarch64_ursra_nv8hi_uuus (__a, __b, __c); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vrsraq_n_u32 (uint32x4_t __a, uint32x4_t __b, const int __c) + { +- return (uint32x4_t) __builtin_aarch64_ursra_nv4si ((int32x4_t) __a, +- (int32x4_t) __b, __c); ++ return __builtin_aarch64_ursra_nv4si_uuus (__a, __b, __c); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vrsraq_n_u64 (uint64x2_t __a, uint64x2_t __b, const int __c) + { +- return (uint64x2_t) __builtin_aarch64_ursra_nv2di ((int64x2_t) __a, +- (int64x2_t) __b, __c); ++ return __builtin_aarch64_ursra_nv2di_uuus (__a, __b, __c); + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) +@@ -22935,7 +22193,7 @@ + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vrsrad_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c) + { +- return (uint64x1_t) __builtin_aarch64_ursra_ndi (__a, __b, __c); ++ return __builtin_aarch64_ursra_ndi_uuus (__a, __b, __c); + } + + #ifdef __ARM_FEATURE_CRYPTO +@@ -23128,109 +22386,109 @@ + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + vshl_s8 (int8x8_t __a, int8x8_t __b) + { +- return (int8x8_t) __builtin_aarch64_sshlv8qi (__a, __b); ++ return __builtin_aarch64_sshlv8qi (__a, __b); + } + + __extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) + vshl_s16 (int16x4_t __a, int16x4_t __b) + { +- return (int16x4_t) __builtin_aarch64_sshlv4hi (__a, __b); ++ return __builtin_aarch64_sshlv4hi (__a, __b); + } + + __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) + vshl_s32 (int32x2_t __a, int32x2_t __b) + { +- return (int32x2_t) __builtin_aarch64_sshlv2si (__a, __b); ++ return __builtin_aarch64_sshlv2si (__a, __b); + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vshl_s64 (int64x1_t __a, int64x1_t __b) + { +- return (int64x1_t) __builtin_aarch64_sshldi (__a, __b); ++ return __builtin_aarch64_sshldi (__a, __b); + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vshl_u8 (uint8x8_t __a, int8x8_t __b) + { +- return (uint8x8_t) __builtin_aarch64_ushlv8qi ((int8x8_t) __a, __b); ++ return __builtin_aarch64_ushlv8qi_uus (__a, __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vshl_u16 (uint16x4_t __a, int16x4_t __b) + { +- return (uint16x4_t) __builtin_aarch64_ushlv4hi ((int16x4_t) __a, __b); ++ return __builtin_aarch64_ushlv4hi_uus (__a, __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vshl_u32 (uint32x2_t __a, int32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_ushlv2si ((int32x2_t) __a, __b); ++ return __builtin_aarch64_ushlv2si_uus (__a, __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vshl_u64 (uint64x1_t __a, int64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_ushldi ((int64x1_t) __a, __b); ++ return __builtin_aarch64_ushldi_uus (__a, __b); + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vshlq_s8 (int8x16_t __a, int8x16_t __b) + { +- return (int8x16_t) __builtin_aarch64_sshlv16qi (__a, __b); ++ return __builtin_aarch64_sshlv16qi (__a, __b); + } + + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) + vshlq_s16 (int16x8_t __a, int16x8_t __b) + { +- return (int16x8_t) __builtin_aarch64_sshlv8hi (__a, __b); ++ return __builtin_aarch64_sshlv8hi (__a, __b); + } + + __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) + vshlq_s32 (int32x4_t __a, int32x4_t __b) + { +- return (int32x4_t) __builtin_aarch64_sshlv4si (__a, __b); ++ return __builtin_aarch64_sshlv4si (__a, __b); + } + + __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) + vshlq_s64 (int64x2_t __a, int64x2_t __b) + { +- return (int64x2_t) __builtin_aarch64_sshlv2di (__a, __b); ++ return __builtin_aarch64_sshlv2di (__a, __b); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vshlq_u8 (uint8x16_t __a, int8x16_t __b) + { +- return (uint8x16_t) __builtin_aarch64_ushlv16qi ((int8x16_t) __a, __b); ++ return __builtin_aarch64_ushlv16qi_uus (__a, __b); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vshlq_u16 (uint16x8_t __a, int16x8_t __b) + { +- return (uint16x8_t) __builtin_aarch64_ushlv8hi ((int16x8_t) __a, __b); ++ return __builtin_aarch64_ushlv8hi_uus (__a, __b); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vshlq_u32 (uint32x4_t __a, int32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_ushlv4si ((int32x4_t) __a, __b); ++ return __builtin_aarch64_ushlv4si_uus (__a, __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vshlq_u64 (uint64x2_t __a, int64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_ushlv2di ((int64x2_t) __a, __b); ++ return __builtin_aarch64_ushlv2di_uus (__a, __b); + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vshld_s64 (int64x1_t __a, int64x1_t __b) + { +- return (int64x1_t) __builtin_aarch64_sshldi (__a, __b); ++ return __builtin_aarch64_sshldi (__a, __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vshld_u64 (uint64x1_t __a, uint64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_ushldi (__a, __b); ++ return __builtin_aarch64_ushldi_uus (__a, __b); + } + + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) +@@ -23290,19 +22548,19 @@ + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vshll_n_u8 (uint8x8_t __a, const int __b) + { +- return (uint16x8_t) __builtin_aarch64_ushll_nv8qi ((int8x8_t) __a, __b); ++ return __builtin_aarch64_ushll_nv8qi_uus (__a, __b); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vshll_n_u16 (uint16x4_t __a, const int __b) + { +- return (uint32x4_t) __builtin_aarch64_ushll_nv4hi ((int16x4_t) __a, __b); ++ return __builtin_aarch64_ushll_nv4hi_uus (__a, __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vshll_n_u32 (uint32x2_t __a, const int __b) + { +- return (uint64x2_t) __builtin_aarch64_ushll_nv2si ((int32x2_t) __a, __b); ++ return __builtin_aarch64_ushll_nv2si_uus (__a, __b); + } + + /* vshr */ +@@ -23444,29 +22702,25 @@ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vsli_n_u8 (uint8x8_t __a, uint8x8_t __b, const int __c) + { +- return (uint8x8_t) __builtin_aarch64_usli_nv8qi ((int8x8_t) __a, +- (int8x8_t) __b, __c); ++ return __builtin_aarch64_usli_nv8qi_uuus (__a, __b, __c); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vsli_n_u16 (uint16x4_t __a, uint16x4_t __b, const int __c) + { +- return (uint16x4_t) __builtin_aarch64_usli_nv4hi ((int16x4_t) __a, +- (int16x4_t) __b, __c); ++ return __builtin_aarch64_usli_nv4hi_uuus (__a, __b, __c); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vsli_n_u32 (uint32x2_t __a, uint32x2_t __b, const int __c) + { +- return (uint32x2_t) __builtin_aarch64_usli_nv2si ((int32x2_t) __a, +- (int32x2_t) __b, __c); ++ return __builtin_aarch64_usli_nv2si_uuus (__a, __b, __c); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vsli_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c) + { +- return (uint64x1_t) __builtin_aarch64_usli_ndi ((int64x1_t) __a, +- (int64x1_t) __b, __c); ++ return __builtin_aarch64_usli_ndi_uuus (__a, __b, __c); + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +@@ -23496,29 +22750,25 @@ + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vsliq_n_u8 (uint8x16_t __a, uint8x16_t __b, const int __c) + { +- return (uint8x16_t) __builtin_aarch64_usli_nv16qi ((int8x16_t) __a, +- (int8x16_t) __b, __c); ++ return __builtin_aarch64_usli_nv16qi_uuus (__a, __b, __c); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vsliq_n_u16 (uint16x8_t __a, uint16x8_t __b, const int __c) + { +- return (uint16x8_t) __builtin_aarch64_usli_nv8hi ((int16x8_t) __a, +- (int16x8_t) __b, __c); ++ return __builtin_aarch64_usli_nv8hi_uuus (__a, __b, __c); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vsliq_n_u32 (uint32x4_t __a, uint32x4_t __b, const int __c) + { +- return (uint32x4_t) __builtin_aarch64_usli_nv4si ((int32x4_t) __a, +- (int32x4_t) __b, __c); ++ return __builtin_aarch64_usli_nv4si_uuus (__a, __b, __c); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vsliq_n_u64 (uint64x2_t __a, uint64x2_t __b, const int __c) + { +- return (uint64x2_t) __builtin_aarch64_usli_nv2di ((int64x2_t) __a, +- (int64x2_t) __b, __c); ++ return __builtin_aarch64_usli_nv2di_uuus (__a, __b, __c); + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) +@@ -23530,7 +22780,7 @@ + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vslid_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c) + { +- return (uint64x1_t) __builtin_aarch64_usli_ndi (__a, __b, __c); ++ return __builtin_aarch64_usli_ndi_uuus (__a, __b, __c); + } + + /* vsqadd */ +@@ -23538,80 +22788,73 @@ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vsqadd_u8 (uint8x8_t __a, int8x8_t __b) + { +- return (uint8x8_t) __builtin_aarch64_usqaddv8qi ((int8x8_t) __a, +- (int8x8_t) __b); ++ return __builtin_aarch64_usqaddv8qi_uus (__a, __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vsqadd_u16 (uint16x4_t __a, int16x4_t __b) + { +- return (uint16x4_t) __builtin_aarch64_usqaddv4hi ((int16x4_t) __a, +- (int16x4_t) __b); ++ return __builtin_aarch64_usqaddv4hi_uus (__a, __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vsqadd_u32 (uint32x2_t __a, int32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_usqaddv2si ((int32x2_t) __a, +- (int32x2_t) __b); ++ return __builtin_aarch64_usqaddv2si_uus (__a, __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vsqadd_u64 (uint64x1_t __a, int64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_usqadddi ((int64x1_t) __a, __b); ++ return __builtin_aarch64_usqadddi_uus (__a, __b); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vsqaddq_u8 (uint8x16_t __a, int8x16_t __b) + { +- return (uint8x16_t) __builtin_aarch64_usqaddv16qi ((int8x16_t) __a, +- (int8x16_t) __b); ++ return __builtin_aarch64_usqaddv16qi_uus (__a, __b); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vsqaddq_u16 (uint16x8_t __a, int16x8_t __b) + { +- return (uint16x8_t) __builtin_aarch64_usqaddv8hi ((int16x8_t) __a, +- (int16x8_t) __b); ++ return __builtin_aarch64_usqaddv8hi_uus (__a, __b); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vsqaddq_u32 (uint32x4_t __a, int32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_usqaddv4si ((int32x4_t) __a, +- (int32x4_t) __b); ++ return __builtin_aarch64_usqaddv4si_uus (__a, __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vsqaddq_u64 (uint64x2_t __a, int64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_usqaddv2di ((int64x2_t) __a, +- (int64x2_t) __b); ++ return __builtin_aarch64_usqaddv2di_uus (__a, __b); + } + + __extension__ static __inline uint8_t __attribute__ ((__always_inline__)) + vsqaddb_u8 (uint8_t __a, int8_t __b) + { +- return (uint8_t) __builtin_aarch64_usqaddqi ((int8_t) __a, __b); ++ return __builtin_aarch64_usqaddqi_uus (__a, __b); + } + + __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) + vsqaddh_u16 (uint16_t __a, int16_t __b) + { +- return (uint16_t) __builtin_aarch64_usqaddhi ((int16_t) __a, __b); ++ return __builtin_aarch64_usqaddhi_uus (__a, __b); + } + + __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) + vsqadds_u32 (uint32_t __a, int32_t __b) + { +- return (uint32_t) __builtin_aarch64_usqaddsi ((int32_t) __a, __b); ++ return __builtin_aarch64_usqaddsi_uus (__a, __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vsqaddd_u64 (uint64x1_t __a, int64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_usqadddi ((int64x1_t) __a, __b); ++ return __builtin_aarch64_usqadddi_uus (__a, __b); + } + + /* vsqrt */ +@@ -23662,29 +22905,25 @@ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vsra_n_u8 (uint8x8_t __a, uint8x8_t __b, const int __c) + { +- return (uint8x8_t) __builtin_aarch64_usra_nv8qi ((int8x8_t) __a, +- (int8x8_t) __b, __c); ++ return __builtin_aarch64_usra_nv8qi_uuus (__a, __b, __c); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vsra_n_u16 (uint16x4_t __a, uint16x4_t __b, const int __c) + { +- return (uint16x4_t) __builtin_aarch64_usra_nv4hi ((int16x4_t) __a, +- (int16x4_t) __b, __c); ++ return __builtin_aarch64_usra_nv4hi_uuus (__a, __b, __c); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vsra_n_u32 (uint32x2_t __a, uint32x2_t __b, const int __c) + { +- return (uint32x2_t) __builtin_aarch64_usra_nv2si ((int32x2_t) __a, +- (int32x2_t) __b, __c); ++ return __builtin_aarch64_usra_nv2si_uuus (__a, __b, __c); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vsra_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c) + { +- return (uint64x1_t) __builtin_aarch64_usra_ndi ((int64x1_t) __a, +- (int64x1_t) __b, __c); ++ return __builtin_aarch64_usra_ndi_uuus (__a, __b, __c); + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +@@ -23714,29 +22953,25 @@ + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vsraq_n_u8 (uint8x16_t __a, uint8x16_t __b, const int __c) + { +- return (uint8x16_t) __builtin_aarch64_usra_nv16qi ((int8x16_t) __a, +- (int8x16_t) __b, __c); ++ return __builtin_aarch64_usra_nv16qi_uuus (__a, __b, __c); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vsraq_n_u16 (uint16x8_t __a, uint16x8_t __b, const int __c) + { +- return (uint16x8_t) __builtin_aarch64_usra_nv8hi ((int16x8_t) __a, +- (int16x8_t) __b, __c); ++ return __builtin_aarch64_usra_nv8hi_uuus (__a, __b, __c); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vsraq_n_u32 (uint32x4_t __a, uint32x4_t __b, const int __c) + { +- return (uint32x4_t) __builtin_aarch64_usra_nv4si ((int32x4_t) __a, +- (int32x4_t) __b, __c); ++ return __builtin_aarch64_usra_nv4si_uuus (__a, __b, __c); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vsraq_n_u64 (uint64x2_t __a, uint64x2_t __b, const int __c) + { +- return (uint64x2_t) __builtin_aarch64_usra_nv2di ((int64x2_t) __a, +- (int64x2_t) __b, __c); ++ return __builtin_aarch64_usra_nv2di_uuus (__a, __b, __c); + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) +@@ -23748,7 +22983,7 @@ + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vsrad_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c) + { +- return (uint64x1_t) __builtin_aarch64_usra_ndi (__a, __b, __c); ++ return __builtin_aarch64_usra_ndi_uuus (__a, __b, __c); + } + + /* vsri */ +@@ -23780,29 +23015,25 @@ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vsri_n_u8 (uint8x8_t __a, uint8x8_t __b, const int __c) + { +- return (uint8x8_t) __builtin_aarch64_usri_nv8qi ((int8x8_t) __a, +- (int8x8_t) __b, __c); ++ return __builtin_aarch64_usri_nv8qi_uuus (__a, __b, __c); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vsri_n_u16 (uint16x4_t __a, uint16x4_t __b, const int __c) + { +- return (uint16x4_t) __builtin_aarch64_usri_nv4hi ((int16x4_t) __a, +- (int16x4_t) __b, __c); ++ return __builtin_aarch64_usri_nv4hi_uuus (__a, __b, __c); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vsri_n_u32 (uint32x2_t __a, uint32x2_t __b, const int __c) + { +- return (uint32x2_t) __builtin_aarch64_usri_nv2si ((int32x2_t) __a, +- (int32x2_t) __b, __c); ++ return __builtin_aarch64_usri_nv2si_uuus (__a, __b, __c); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vsri_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c) + { +- return (uint64x1_t) __builtin_aarch64_usri_ndi ((int64x1_t) __a, +- (int64x1_t) __b, __c); ++ return __builtin_aarch64_usri_ndi_uuus (__a, __b, __c); + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +@@ -23832,29 +23063,25 @@ + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vsriq_n_u8 (uint8x16_t __a, uint8x16_t __b, const int __c) + { +- return (uint8x16_t) __builtin_aarch64_usri_nv16qi ((int8x16_t) __a, +- (int8x16_t) __b, __c); ++ return __builtin_aarch64_usri_nv16qi_uuus (__a, __b, __c); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vsriq_n_u16 (uint16x8_t __a, uint16x8_t __b, const int __c) + { +- return (uint16x8_t) __builtin_aarch64_usri_nv8hi ((int16x8_t) __a, +- (int16x8_t) __b, __c); ++ return __builtin_aarch64_usri_nv8hi_uuus (__a, __b, __c); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vsriq_n_u32 (uint32x4_t __a, uint32x4_t __b, const int __c) + { +- return (uint32x4_t) __builtin_aarch64_usri_nv4si ((int32x4_t) __a, +- (int32x4_t) __b, __c); ++ return __builtin_aarch64_usri_nv4si_uuus (__a, __b, __c); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vsriq_n_u64 (uint64x2_t __a, uint64x2_t __b, const int __c) + { +- return (uint64x2_t) __builtin_aarch64_usri_nv2di ((int64x2_t) __a, +- (int64x2_t) __b, __c); ++ return __builtin_aarch64_usri_nv2di_uuus (__a, __b, __c); + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) +@@ -23866,7 +23093,7 @@ + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vsrid_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c) + { +- return (uint64x1_t) __builtin_aarch64_usri_ndi (__a, __b, __c); ++ return __builtin_aarch64_usri_ndi_uuus (__a, __b, __c); + } + + /* vst1 */ +@@ -24970,6 +24197,438 @@ + + /* vtrn */ + ++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) ++vtrn1_f32 (float32x2_t __a, float32x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); ++#endif ++} ++ ++__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) ++vtrn1_p8 (poly8x8_t __a, poly8x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); ++#endif ++} ++ ++__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) ++vtrn1_p16 (poly16x4_t __a, poly16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 1, 7, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 2, 6}); ++#endif ++} ++ ++__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) ++vtrn1_s8 (int8x8_t __a, int8x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); ++#endif ++} ++ ++__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) ++vtrn1_s16 (int16x4_t __a, int16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 1, 7, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 2, 6}); ++#endif ++} ++ ++__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) ++vtrn1_s32 (int32x2_t __a, int32x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); ++#endif ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vtrn1_u8 (uint8x8_t __a, uint8x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); ++#endif ++} ++ ++__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) ++vtrn1_u16 (uint16x4_t __a, uint16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 1, 7, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 2, 6}); ++#endif ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vtrn1_u32 (uint32x2_t __a, uint32x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); ++#endif ++} ++ ++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) ++vtrn1q_f32 (float32x4_t __a, float32x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 1, 7, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 2, 6}); ++#endif ++} ++ ++__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) ++vtrn1q_f64 (float64x2_t __a, float64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); ++#endif ++} ++ ++__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) ++vtrn1q_p8 (poly8x16_t __a, poly8x16_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {17, 1, 19, 3, 21, 5, 23, 7, 25, 9, 27, 11, 29, 13, 31, 15}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30}); ++#endif ++} ++ ++__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) ++vtrn1q_p16 (poly16x8_t __a, poly16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); ++#endif ++} ++ ++__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) ++vtrn1q_s8 (int8x16_t __a, int8x16_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {17, 1, 19, 3, 21, 5, 23, 7, 25, 9, 27, 11, 29, 13, 31, 15}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30}); ++#endif ++} ++ ++__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) ++vtrn1q_s16 (int16x8_t __a, int16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); ++#endif ++} ++ ++__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) ++vtrn1q_s32 (int32x4_t __a, int32x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 1, 7, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 2, 6}); ++#endif ++} ++ ++__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) ++vtrn1q_s64 (int64x2_t __a, int64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); ++#endif ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vtrn1q_u8 (uint8x16_t __a, uint8x16_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {17, 1, 19, 3, 21, 5, 23, 7, 25, 9, 27, 11, 29, 13, 31, 15}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30}); ++#endif ++} ++ ++__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) ++vtrn1q_u16 (uint16x8_t __a, uint16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); ++#endif ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vtrn1q_u32 (uint32x4_t __a, uint32x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 1, 7, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 2, 6}); ++#endif ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vtrn1q_u64 (uint64x2_t __a, uint64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); ++#endif ++} ++ ++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) ++vtrn2_f32 (float32x2_t __a, float32x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); ++#endif ++} ++ ++__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) ++vtrn2_p8 (poly8x8_t __a, poly8x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); ++#endif ++} ++ ++__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) ++vtrn2_p16 (poly16x4_t __a, poly16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 6, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 5, 3, 7}); ++#endif ++} ++ ++__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) ++vtrn2_s8 (int8x8_t __a, int8x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); ++#endif ++} ++ ++__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) ++vtrn2_s16 (int16x4_t __a, int16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 6, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 5, 3, 7}); ++#endif ++} ++ ++__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) ++vtrn2_s32 (int32x2_t __a, int32x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); ++#endif ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vtrn2_u8 (uint8x8_t __a, uint8x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); ++#endif ++} ++ ++__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) ++vtrn2_u16 (uint16x4_t __a, uint16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 6, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 5, 3, 7}); ++#endif ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vtrn2_u32 (uint32x2_t __a, uint32x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); ++#endif ++} ++ ++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) ++vtrn2q_f32 (float32x4_t __a, float32x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 6, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 5, 3, 7}); ++#endif ++} ++ ++__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) ++vtrn2q_f64 (float64x2_t __a, float64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); ++#endif ++} ++ ++__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) ++vtrn2q_p8 (poly8x16_t __a, poly8x16_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {16, 0, 18, 2, 20, 4, 22, 6, 24, 8, 26, 10, 28, 12, 30, 14}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31}); ++#endif ++} ++ ++__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) ++vtrn2q_p16 (poly16x8_t __a, poly16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); ++#endif ++} ++ ++__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) ++vtrn2q_s8 (int8x16_t __a, int8x16_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {16, 0, 18, 2, 20, 4, 22, 6, 24, 8, 26, 10, 28, 12, 30, 14}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31}); ++#endif ++} ++ ++__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) ++vtrn2q_s16 (int16x8_t __a, int16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); ++#endif ++} ++ ++__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) ++vtrn2q_s32 (int32x4_t __a, int32x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 6, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 5, 3, 7}); ++#endif ++} ++ ++__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) ++vtrn2q_s64 (int64x2_t __a, int64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); ++#endif ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vtrn2q_u8 (uint8x16_t __a, uint8x16_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {16, 0, 18, 2, 20, 4, 22, 6, 24, 8, 26, 10, 28, 12, 30, 14}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31}); ++#endif ++} ++ ++__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) ++vtrn2q_u16 (uint16x8_t __a, uint16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); ++#endif ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vtrn2q_u32 (uint32x4_t __a, uint32x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 6, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 5, 3, 7}); ++#endif ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vtrn2q_u64 (uint64x2_t __a, uint64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); ++#endif ++} ++ + __extension__ static __inline float32x2x2_t __attribute__ ((__always_inline__)) + vtrn_f32 (float32x2_t a, float32x2_t b) + { +@@ -25083,19 +24742,19 @@ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vtst_s8 (int8x8_t __a, int8x8_t __b) + { +- return (uint8x8_t) __builtin_aarch64_cmtstv8qi (__a, __b); ++ return (uint8x8_t) ((__a & __b) != 0); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vtst_s16 (int16x4_t __a, int16x4_t __b) + { +- return (uint16x4_t) __builtin_aarch64_cmtstv4hi (__a, __b); ++ return (uint16x4_t) ((__a & __b) != 0); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vtst_s32 (int32x2_t __a, int32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_cmtstv2si (__a, __b); ++ return (uint32x2_t) ((__a & __b) != 0); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -25107,22 +24766,19 @@ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vtst_u8 (uint8x8_t __a, uint8x8_t __b) + { +- return (uint8x8_t) __builtin_aarch64_cmtstv8qi ((int8x8_t) __a, +- (int8x8_t) __b); ++ return ((__a & __b) != 0); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vtst_u16 (uint16x4_t __a, uint16x4_t __b) + { +- return (uint16x4_t) __builtin_aarch64_cmtstv4hi ((int16x4_t) __a, +- (int16x4_t) __b); ++ return ((__a & __b) != 0); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vtst_u32 (uint32x2_t __a, uint32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_cmtstv2si ((int32x2_t) __a, +- (int32x2_t) __b); ++ return ((__a & __b) != 0); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -25134,53 +24790,49 @@ + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vtstq_s8 (int8x16_t __a, int8x16_t __b) + { +- return (uint8x16_t) __builtin_aarch64_cmtstv16qi (__a, __b); ++ return (uint8x16_t) ((__a & __b) != 0); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vtstq_s16 (int16x8_t __a, int16x8_t __b) + { +- return (uint16x8_t) __builtin_aarch64_cmtstv8hi (__a, __b); ++ return (uint16x8_t) ((__a & __b) != 0); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vtstq_s32 (int32x4_t __a, int32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_cmtstv4si (__a, __b); ++ return (uint32x4_t) ((__a & __b) != 0); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vtstq_s64 (int64x2_t __a, int64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_cmtstv2di (__a, __b); ++ return (uint64x2_t) ((__a & __b) != __AARCH64_INT64_C (0)); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vtstq_u8 (uint8x16_t __a, uint8x16_t __b) + { +- return (uint8x16_t) __builtin_aarch64_cmtstv16qi ((int8x16_t) __a, +- (int8x16_t) __b); ++ return ((__a & __b) != 0); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vtstq_u16 (uint16x8_t __a, uint16x8_t __b) + { +- return (uint16x8_t) __builtin_aarch64_cmtstv8hi ((int16x8_t) __a, +- (int16x8_t) __b); ++ return ((__a & __b) != 0); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vtstq_u32 (uint32x4_t __a, uint32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_cmtstv4si ((int32x4_t) __a, +- (int32x4_t) __b); ++ return ((__a & __b) != 0); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vtstq_u64 (uint64x2_t __a, uint64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_cmtstv2di ((int64x2_t) __a, +- (int64x2_t) __b); ++ return ((__a & __b) != __AARCH64_UINT64_C (0)); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +@@ -25200,73 +24852,73 @@ + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + vuqadd_s8 (int8x8_t __a, uint8x8_t __b) + { +- return (int8x8_t) __builtin_aarch64_suqaddv8qi (__a, (int8x8_t) __b); ++ return __builtin_aarch64_suqaddv8qi_ssu (__a, __b); + } + + __extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) + vuqadd_s16 (int16x4_t __a, uint16x4_t __b) + { +- return (int16x4_t) __builtin_aarch64_suqaddv4hi (__a, (int16x4_t) __b); ++ return __builtin_aarch64_suqaddv4hi_ssu (__a, __b); + } + + __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) + vuqadd_s32 (int32x2_t __a, uint32x2_t __b) + { +- return (int32x2_t) __builtin_aarch64_suqaddv2si (__a, (int32x2_t) __b); ++ return __builtin_aarch64_suqaddv2si_ssu (__a, __b); + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vuqadd_s64 (int64x1_t __a, uint64x1_t __b) + { +- return (int64x1_t) __builtin_aarch64_suqadddi (__a, (int64x1_t) __b); ++ return __builtin_aarch64_suqadddi_ssu (__a, __b); + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vuqaddq_s8 (int8x16_t __a, uint8x16_t __b) + { +- return (int8x16_t) __builtin_aarch64_suqaddv16qi (__a, (int8x16_t) __b); ++ return __builtin_aarch64_suqaddv16qi_ssu (__a, __b); + } + + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) + vuqaddq_s16 (int16x8_t __a, uint16x8_t __b) + { +- return (int16x8_t) __builtin_aarch64_suqaddv8hi (__a, (int16x8_t) __b); ++ return __builtin_aarch64_suqaddv8hi_ssu (__a, __b); + } + + __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) + vuqaddq_s32 (int32x4_t __a, uint32x4_t __b) + { +- return (int32x4_t) __builtin_aarch64_suqaddv4si (__a, (int32x4_t) __b); ++ return __builtin_aarch64_suqaddv4si_ssu (__a, __b); + } + + __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) + vuqaddq_s64 (int64x2_t __a, uint64x2_t __b) + { +- return (int64x2_t) __builtin_aarch64_suqaddv2di (__a, (int64x2_t) __b); ++ return __builtin_aarch64_suqaddv2di_ssu (__a, __b); + } + + __extension__ static __inline int8_t __attribute__ ((__always_inline__)) + vuqaddb_s8 (int8_t __a, uint8_t __b) + { +- return (int8_t) __builtin_aarch64_suqaddqi (__a, (int8_t) __b); ++ return __builtin_aarch64_suqaddqi_ssu (__a, __b); + } + + __extension__ static __inline int16_t __attribute__ ((__always_inline__)) + vuqaddh_s16 (int16_t __a, uint16_t __b) + { +- return (int16_t) __builtin_aarch64_suqaddhi (__a, (int16_t) __b); ++ return __builtin_aarch64_suqaddhi_ssu (__a, __b); + } + + __extension__ static __inline int32_t __attribute__ ((__always_inline__)) + vuqadds_s32 (int32_t __a, uint32_t __b) + { +- return (int32_t) __builtin_aarch64_suqaddsi (__a, (int32_t) __b); ++ return __builtin_aarch64_suqaddsi_ssu (__a, __b); + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vuqaddd_s64 (int64x1_t __a, uint64x1_t __b) + { +- return (int64x1_t) __builtin_aarch64_suqadddi (__a, (int64x1_t) __b); ++ return __builtin_aarch64_suqadddi_ssu (__a, __b); + } + + #define __DEFINTERLEAVE(op, rettype, intype, funcsuffix, Q) \ +@@ -25300,10 +24952,880 @@ + + /* vuzp */ + ++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) ++vuzp1_f32 (float32x2_t __a, float32x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); ++#endif ++} ++ ++__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) ++vuzp1_p8 (poly8x8_t __a, poly8x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); ++#endif ++} ++ ++__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) ++vuzp1_p16 (poly16x4_t __a, poly16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 7, 1, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 2, 4, 6}); ++#endif ++} ++ ++__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) ++vuzp1_s8 (int8x8_t __a, int8x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); ++#endif ++} ++ ++__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) ++vuzp1_s16 (int16x4_t __a, int16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 7, 1, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 2, 4, 6}); ++#endif ++} ++ ++__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) ++vuzp1_s32 (int32x2_t __a, int32x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); ++#endif ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vuzp1_u8 (uint8x8_t __a, uint8x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); ++#endif ++} ++ ++__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) ++vuzp1_u16 (uint16x4_t __a, uint16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 7, 1, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 2, 4, 6}); ++#endif ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vuzp1_u32 (uint32x2_t __a, uint32x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); ++#endif ++} ++ ++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) ++vuzp1q_f32 (float32x4_t __a, float32x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 7, 1, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 2, 4, 6}); ++#endif ++} ++ ++__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) ++vuzp1q_f64 (float64x2_t __a, float64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); ++#endif ++} ++ ++__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) ++vuzp1q_p8 (poly8x16_t __a, poly8x16_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {17, 19, 21, 23, 25, 27, 29, 31, 1, 3, 5, 7, 9, 11, 13, 15}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30}); ++#endif ++} ++ ++__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) ++vuzp1q_p16 (poly16x8_t __a, poly16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); ++#endif ++} ++ ++__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) ++vuzp1q_s8 (int8x16_t __a, int8x16_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {17, 19, 21, 23, 25, 27, 29, 31, 1, 3, 5, 7, 9, 11, 13, 15}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30}); ++#endif ++} ++ ++__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) ++vuzp1q_s16 (int16x8_t __a, int16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); ++#endif ++} ++ ++__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) ++vuzp1q_s32 (int32x4_t __a, int32x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 7, 1, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 2, 4, 6}); ++#endif ++} ++ ++__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) ++vuzp1q_s64 (int64x2_t __a, int64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); ++#endif ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vuzp1q_u8 (uint8x16_t __a, uint8x16_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {17, 19, 21, 23, 25, 27, 29, 31, 1, 3, 5, 7, 9, 11, 13, 15}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30}); ++#endif ++} ++ ++__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) ++vuzp1q_u16 (uint16x8_t __a, uint16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); ++#endif ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vuzp1q_u32 (uint32x4_t __a, uint32x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 7, 1, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 2, 4, 6}); ++#endif ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vuzp1q_u64 (uint64x2_t __a, uint64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); ++#endif ++} ++ ++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) ++vuzp2_f32 (float32x2_t __a, float32x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); ++#endif ++} ++ ++__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) ++vuzp2_p8 (poly8x8_t __a, poly8x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); ++#endif ++} ++ ++__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) ++vuzp2_p16 (poly16x4_t __a, poly16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 6, 0, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 3, 5, 7}); ++#endif ++} ++ ++__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) ++vuzp2_s8 (int8x8_t __a, int8x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); ++#endif ++} ++ ++__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) ++vuzp2_s16 (int16x4_t __a, int16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 6, 0, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 3, 5, 7}); ++#endif ++} ++ ++__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) ++vuzp2_s32 (int32x2_t __a, int32x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); ++#endif ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vuzp2_u8 (uint8x8_t __a, uint8x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); ++#endif ++} ++ ++__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) ++vuzp2_u16 (uint16x4_t __a, uint16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 6, 0, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 3, 5, 7}); ++#endif ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vuzp2_u32 (uint32x2_t __a, uint32x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); ++#endif ++} ++ ++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) ++vuzp2q_f32 (float32x4_t __a, float32x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 6, 0, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 3, 5, 7}); ++#endif ++} ++ ++__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) ++vuzp2q_f64 (float64x2_t __a, float64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); ++#endif ++} ++ ++__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) ++vuzp2q_p8 (poly8x16_t __a, poly8x16_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {16, 18, 20, 22, 24, 26, 28, 30, 0, 2, 4, 6, 8, 10, 12, 14}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}); ++#endif ++} ++ ++__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) ++vuzp2q_p16 (poly16x8_t __a, poly16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); ++#endif ++} ++ ++__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) ++vuzp2q_s8 (int8x16_t __a, int8x16_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {16, 18, 20, 22, 24, 26, 28, 30, 0, 2, 4, 6, 8, 10, 12, 14}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}); ++#endif ++} ++ ++__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) ++vuzp2q_s16 (int16x8_t __a, int16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); ++#endif ++} ++ ++__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) ++vuzp2q_s32 (int32x4_t __a, int32x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 6, 0, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 3, 5, 7}); ++#endif ++} ++ ++__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) ++vuzp2q_s64 (int64x2_t __a, int64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); ++#endif ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vuzp2q_u8 (uint8x16_t __a, uint8x16_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {16, 18, 20, 22, 24, 26, 28, 30, 0, 2, 4, 6, 8, 10, 12, 14}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}); ++#endif ++} ++ ++__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) ++vuzp2q_u16 (uint16x8_t __a, uint16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); ++#endif ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vuzp2q_u32 (uint32x4_t __a, uint32x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 6, 0, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 3, 5, 7}); ++#endif ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vuzp2q_u64 (uint64x2_t __a, uint64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); ++#endif ++} ++ + __INTERLEAVE_LIST (uzp) + + /* vzip */ + ++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) ++vzip1_f32 (float32x2_t __a, float32x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); ++#endif ++} ++ ++__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) ++vzip1_p8 (poly8x8_t __a, poly8x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {12, 4, 13, 5, 14, 6, 15, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); ++#endif ++} ++ ++__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) ++vzip1_p16 (poly16x4_t __a, poly16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {6, 2, 7, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 1, 5}); ++#endif ++} ++ ++__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) ++vzip1_s8 (int8x8_t __a, int8x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {12, 4, 13, 5, 14, 6, 15, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); ++#endif ++} ++ ++__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) ++vzip1_s16 (int16x4_t __a, int16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {6, 2, 7, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 1, 5}); ++#endif ++} ++ ++__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) ++vzip1_s32 (int32x2_t __a, int32x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); ++#endif ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vzip1_u8 (uint8x8_t __a, uint8x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {12, 4, 13, 5, 14, 6, 15, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); ++#endif ++} ++ ++__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) ++vzip1_u16 (uint16x4_t __a, uint16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {6, 2, 7, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 1, 5}); ++#endif ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vzip1_u32 (uint32x2_t __a, uint32x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); ++#endif ++} ++ ++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) ++vzip1q_f32 (float32x4_t __a, float32x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {6, 2, 7, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 1, 5}); ++#endif ++} ++ ++__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) ++vzip1q_f64 (float64x2_t __a, float64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); ++#endif ++} ++ ++__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) ++vzip1q_p8 (poly8x16_t __a, poly8x16_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {24, 8, 25, 9, 26, 10, 27, 11, 28, 12, 29, 13, 30, 14, 31, 15}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}); ++#endif ++} ++ ++__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) ++vzip1q_p16 (poly16x8_t __a, poly16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) ++ {12, 4, 13, 5, 14, 6, 15, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); ++#endif ++} ++ ++__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) ++vzip1q_s8 (int8x16_t __a, int8x16_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {24, 8, 25, 9, 26, 10, 27, 11, 28, 12, 29, 13, 30, 14, 31, 15}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}); ++#endif ++} ++ ++__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) ++vzip1q_s16 (int16x8_t __a, int16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) ++ {12, 4, 13, 5, 14, 6, 15, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); ++#endif ++} ++ ++__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) ++vzip1q_s32 (int32x4_t __a, int32x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {6, 2, 7, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 1, 5}); ++#endif ++} ++ ++__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) ++vzip1q_s64 (int64x2_t __a, int64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); ++#endif ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vzip1q_u8 (uint8x16_t __a, uint8x16_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {24, 8, 25, 9, 26, 10, 27, 11, 28, 12, 29, 13, 30, 14, 31, 15}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}); ++#endif ++} ++ ++__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) ++vzip1q_u16 (uint16x8_t __a, uint16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) ++ {12, 4, 13, 5, 14, 6, 15, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); ++#endif ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vzip1q_u32 (uint32x4_t __a, uint32x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {6, 2, 7, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 1, 5}); ++#endif ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vzip1q_u64 (uint64x2_t __a, uint64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); ++#endif ++} ++ ++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) ++vzip2_f32 (float32x2_t __a, float32x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); ++#endif ++} ++ ++__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) ++vzip2_p8 (poly8x8_t __a, poly8x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {4, 12, 5, 13, 6, 14, 7, 15}); ++#endif ++} ++ ++__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) ++vzip2_p16 (poly16x4_t __a, poly16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 5, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {2, 6, 3, 7}); ++#endif ++} ++ ++__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) ++vzip2_s8 (int8x8_t __a, int8x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {4, 12, 5, 13, 6, 14, 7, 15}); ++#endif ++} ++ ++__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) ++vzip2_s16 (int16x4_t __a, int16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 5, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {2, 6, 3, 7}); ++#endif ++} ++ ++__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) ++vzip2_s32 (int32x2_t __a, int32x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); ++#endif ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vzip2_u8 (uint8x8_t __a, uint8x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {4, 12, 5, 13, 6, 14, 7, 15}); ++#endif ++} ++ ++__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) ++vzip2_u16 (uint16x4_t __a, uint16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 5, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {2, 6, 3, 7}); ++#endif ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vzip2_u32 (uint32x2_t __a, uint32x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); ++#endif ++} ++ ++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) ++vzip2q_f32 (float32x4_t __a, float32x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 5, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {2, 6, 3, 7}); ++#endif ++} ++ ++__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) ++vzip2q_f64 (float64x2_t __a, float64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); ++#endif ++} ++ ++__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) ++vzip2q_p8 (poly8x16_t __a, poly8x16_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {16, 0, 17, 1, 18, 2, 19, 3, 20, 4, 21, 5, 22, 6, 23, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31}); ++#endif ++} ++ ++__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) ++vzip2q_p16 (poly16x8_t __a, poly16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) ++ {4, 12, 5, 13, 6, 14, 7, 15}); ++#endif ++} ++ ++__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) ++vzip2q_s8 (int8x16_t __a, int8x16_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {16, 0, 17, 1, 18, 2, 19, 3, 20, 4, 21, 5, 22, 6, 23, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31}); ++#endif ++} ++ ++__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) ++vzip2q_s16 (int16x8_t __a, int16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) ++ {4, 12, 5, 13, 6, 14, 7, 15}); ++#endif ++} ++ ++__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) ++vzip2q_s32 (int32x4_t __a, int32x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 5, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {2, 6, 3, 7}); ++#endif ++} ++ ++__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) ++vzip2q_s64 (int64x2_t __a, int64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); ++#endif ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vzip2q_u8 (uint8x16_t __a, uint8x16_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {16, 0, 17, 1, 18, 2, 19, 3, 20, 4, 21, 5, 22, 6, 23, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31}); ++#endif ++} ++ ++__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) ++vzip2q_u16 (uint16x8_t __a, uint16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) ++ {4, 12, 5, 13, 6, 14, 7, 15}); ++#endif ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vzip2q_u32 (uint32x4_t __a, uint32x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 5, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {2, 6, 3, 7}); ++#endif ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vzip2q_u64 (uint64x2_t __a, uint64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); ++#endif ++} ++ + __INTERLEAVE_LIST (zip) + + #undef __INTERLEAVE_LIST +--- a/src/gcc/config/aarch64/t-aarch64-linux ++++ b/src/gcc/config/aarch64/t-aarch64-linux +@@ -22,10 +22,7 @@ + LIB1ASMFUNCS = _aarch64_sync_cache_range + + AARCH_BE = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1, $(tm_defines)),_be) +-MULTILIB_OSDIRNAMES = .=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu) ++MULTILIB_OSDIRNAMES = mabi.lp64=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu) + MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu) + +-# Disable the multilib for linux-gnu targets for the time being; focus +-# on the baremetal targets. +-MULTILIB_OPTIONS = +-MULTILIB_DIRNAMES = ++MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32 +--- a/src/gcc/config/aarch64/aarch64.md ++++ b/src/gcc/config/aarch64/aarch64.md +@@ -67,7 +67,14 @@ + + (define_c_enum "unspec" [ + UNSPEC_CASESI +- UNSPEC_CLS ++ UNSPEC_CRC32B ++ UNSPEC_CRC32CB ++ UNSPEC_CRC32CH ++ UNSPEC_CRC32CW ++ UNSPEC_CRC32CX ++ UNSPEC_CRC32H ++ UNSPEC_CRC32W ++ UNSPEC_CRC32X + UNSPEC_FRECPE + UNSPEC_FRECPS + UNSPEC_FRECPX +@@ -83,8 +90,14 @@ + UNSPEC_GOTTINYPIC + UNSPEC_LD1 + UNSPEC_LD2 ++ UNSPEC_LD2_DUP + UNSPEC_LD3 ++ UNSPEC_LD3_DUP + UNSPEC_LD4 ++ UNSPEC_LD4_DUP ++ UNSPEC_LD2_LANE ++ UNSPEC_LD3_LANE ++ UNSPEC_LD4_LANE + UNSPEC_MB + UNSPEC_NOP + UNSPEC_PRLG_STK +@@ -93,20 +106,27 @@ + UNSPEC_SISD_SSHL + UNSPEC_SISD_USHL + UNSPEC_SSHL_2S +- UNSPEC_SSHR64 + UNSPEC_ST1 + UNSPEC_ST2 + UNSPEC_ST3 + UNSPEC_ST4 ++ UNSPEC_ST2_LANE ++ UNSPEC_ST3_LANE ++ UNSPEC_ST4_LANE + UNSPEC_TLS + UNSPEC_TLSDESC + UNSPEC_USHL_2S +- UNSPEC_USHR64 + UNSPEC_VSTRUCTDUMMY ++ UNSPEC_SP_SET ++ UNSPEC_SP_TEST + ]) + + (define_c_enum "unspecv" [ + UNSPECV_EH_RETURN ; Represent EH_RETURN ++ UNSPECV_GET_FPCR ; Represent fetch of FPCR content. ++ UNSPECV_SET_FPCR ; Represent assign of FPCR content. ++ UNSPECV_GET_FPSR ; Represent fetch of FPSR content. ++ UNSPECV_SET_FPSR ; Represent assign of FPSR content. + ] + ) + +@@ -155,17 +175,11 @@ + ;; Processor types. + (include "aarch64-tune.md") + +-;; True if the generic scheduling description should be used. +- +-(define_attr "generic_sched" "yes,no" +- (const (if_then_else +- (eq_attr "tune" "cortexa53,cortexa15") +- (const_string "no") +- (const_string "yes")))) +- + ;; Scheduling + (include "../arm/cortex-a53.md") +-(include "../arm/cortex-a15.md") ++(include "../arm/cortex-a57.md") ++(include "thunderx.md") ++(include "../arm/xgene1.md") + + ;; ------------------------------------------------------------------- + ;; Jumps and other miscellaneous insns +@@ -514,6 +528,10 @@ + (use (match_operand 2 "" ""))])] + "" + { ++ if (!REG_P (XEXP (operands[0], 0)) ++ && (GET_CODE (XEXP (operands[0], 0)) != SYMBOL_REF)) ++ XEXP (operands[0], 0) = force_reg (Pmode, XEXP (operands[0], 0)); ++ + if (operands[2] == NULL_RTX) + operands[2] = const0_rtx; + } +@@ -527,6 +545,10 @@ + (use (match_operand 3 "" ""))])] + "" + { ++ if (!REG_P (XEXP (operands[1], 0)) ++ && (GET_CODE (XEXP (operands[1], 0)) != SYMBOL_REF)) ++ XEXP (operands[1], 0) = force_reg (Pmode, XEXP (operands[1], 0)); ++ + if (operands[3] == NULL_RTX) + operands[3] = const0_rtx; + } +@@ -533,25 +555,29 @@ + ) + + (define_insn "*sibcall_insn" +- [(call (mem:DI (match_operand:DI 0 "" "X")) ++ [(call (mem:DI (match_operand:DI 0 "aarch64_call_insn_operand" "Ucs, Usf")) + (match_operand 1 "" "")) + (return) + (use (match_operand 2 "" ""))] +- "GET_CODE (operands[0]) == SYMBOL_REF" +- "b\\t%a0" +- [(set_attr "type" "branch")] +- ++ "SIBLING_CALL_P (insn)" ++ "@ ++ br\\t%0 ++ b\\t%a0" ++ [(set_attr "type" "branch, branch")] + ) + + (define_insn "*sibcall_value_insn" + [(set (match_operand 0 "" "") +- (call (mem:DI (match_operand 1 "" "X")) ++ (call (mem:DI ++ (match_operand:DI 1 "aarch64_call_insn_operand" "Ucs, Usf")) + (match_operand 2 "" ""))) + (return) + (use (match_operand 3 "" ""))] +- "GET_CODE (operands[1]) == SYMBOL_REF" +- "b\\t%a1" +- [(set_attr "type" "branch")] ++ "SIBLING_CALL_P (insn)" ++ "@ ++ br\\t%1 ++ b\\t%a1" ++ [(set_attr "type" "branch, branch")] + ) + + ;; Call subroutine returning any type. +@@ -641,17 +667,20 @@ + if (GET_CODE (operands[0]) == MEM && operands[1] != const0_rtx) + operands[1] = force_reg (mode, operands[1]); + +- if (CONSTANT_P (operands[1])) +- { +- aarch64_expand_mov_immediate (operands[0], operands[1]); +- DONE; +- } ++ /* FIXME: RR we still need to fix up what we are doing with ++ symbol_refs and other types of constants. */ ++ if (CONSTANT_P (operands[1]) ++ && !CONST_INT_P (operands[1])) ++ { ++ aarch64_expand_mov_immediate (operands[0], operands[1]); ++ DONE; ++ } + " + ) + +-(define_insn "*movsi_aarch64" +- [(set (match_operand:SI 0 "nonimmediate_operand" "=r,k,r,r,r,*w,m, m,r,r ,*w, r,*w") +- (match_operand:SI 1 "aarch64_mov_operand" " r,r,k,M,m, m,rZ,*w,S,Ush,rZ,*w,*w"))] ++(define_insn_and_split "*movsi_aarch64" ++ [(set (match_operand:SI 0 "nonimmediate_operand" "=r,k,r,r,r,r,*w,m, m,r,r ,*w, r,*w") ++ (match_operand:SI 1 "aarch64_mov_operand" " r,r,k,M,n,m, m,rZ,*w,S,Ush,rZ,*w,*w"))] + "(register_operand (operands[0], SImode) + || aarch64_reg_or_zero (operands[1], SImode))" + "@ +@@ -659,6 +688,7 @@ + mov\\t%w0, %w1 + mov\\t%w0, %w1 + mov\\t%w0, %1 ++ # + ldr\\t%w0, %1 + ldr\\t%s0, %1 + str\\t%w1, %0 +@@ -668,14 +698,21 @@ + fmov\\t%s0, %w1 + fmov\\t%w0, %s1 + fmov\\t%s0, %s1" +- [(set_attr "type" "mov_reg,mov_reg,mov_reg,mov_imm,load1,load1,store1,store1,\ +- adr,adr,fmov,fmov,fmov") +- (set_attr "fp" "*,*,*,*,*,yes,*,yes,*,*,yes,yes,yes")] ++ "CONST_INT_P (operands[1]) && !aarch64_move_imm (INTVAL (operands[1]), SImode) ++ && GP_REGNUM_P (REGNO (operands[0]))" ++ [(const_int 0)] ++ "{ ++ aarch64_expand_mov_immediate (operands[0], operands[1]); ++ DONE; ++ }" ++ [(set_attr "type" "mov_reg,mov_reg,mov_reg,mov_imm,mov_imm,load1,load1,store1,store1,\ ++ adr,adr,f_mcr,f_mrc,fmov") ++ (set_attr "fp" "*,*,*,*,*,*,yes,*,yes,*,*,yes,yes,yes")] + ) + +-(define_insn "*movdi_aarch64" +- [(set (match_operand:DI 0 "nonimmediate_operand" "=r,k,r,r,r,*w,m, m,r,r, *w, r,*w,w") +- (match_operand:DI 1 "aarch64_mov_operand" " r,r,k,N,m, m,rZ,*w,S,Ush,rZ,*w,*w,Dd"))] ++(define_insn_and_split "*movdi_aarch64" ++ [(set (match_operand:DI 0 "nonimmediate_operand" "=r,k,r,r,r,r,*w,m, m,r,r, *w, r,*w,w") ++ (match_operand:DI 1 "aarch64_mov_operand" " r,r,k,N,n,m, m,rZ,*w,S,Ush,rZ,*w,*w,Dd"))] + "(register_operand (operands[0], DImode) + || aarch64_reg_or_zero (operands[1], DImode))" + "@ +@@ -683,6 +720,7 @@ + mov\\t%0, %x1 + mov\\t%x0, %1 + mov\\t%x0, %1 ++ # + ldr\\t%x0, %1 + ldr\\t%d0, %1 + str\\t%x1, %0 +@@ -693,10 +731,17 @@ + fmov\\t%x0, %d1 + fmov\\t%d0, %d1 + movi\\t%d0, %1" +- [(set_attr "type" "mov_reg,mov_reg,mov_reg,mov_imm,load1,load1,store1,store1,\ +- adr,adr,fmov,fmov,fmov,fmov") +- (set_attr "fp" "*,*,*,*,*,yes,*,yes,*,*,yes,yes,yes,*") +- (set_attr "simd" "*,*,*,*,*,*,*,*,*,*,*,*,*,yes")] ++ "(CONST_INT_P (operands[1]) && !aarch64_move_imm (INTVAL (operands[1]), DImode)) ++ && GP_REGNUM_P (REGNO (operands[0]))" ++ [(const_int 0)] ++ "{ ++ aarch64_expand_mov_immediate (operands[0], operands[1]); ++ DONE; ++ }" ++ [(set_attr "type" "mov_reg,mov_reg,mov_reg,mov_imm,mov_imm,load1,load1,store1,store1,\ ++ adr,adr,f_mcr,f_mrc,fmov,fmov") ++ (set_attr "fp" "*,*,*,*,*,*,yes,*,yes,*,*,yes,yes,yes,*") ++ (set_attr "simd" "*,*,*,*,*,*,*,*,*,*,*,*,*,*,yes")] + ) + + (define_insn "insv_imm" +@@ -789,7 +834,7 @@ + str\\t%w1, %0 + mov\\t%w0, %w1" + [(set_attr "type" "f_mcr,f_mrc,fmov,fconsts,\ +- f_loads,f_stores,f_loads,f_stores,fmov")] ++ f_loads,f_stores,f_loads,f_stores,mov_reg")] + ) + + (define_insn "*movdf_aarch64" +@@ -863,6 +908,24 @@ + } + ) + ++;; 0 is dst ++;; 1 is src ++;; 2 is size of move in bytes ++;; 3 is alignment ++ ++(define_expand "movmemdi" ++ [(match_operand:BLK 0 "memory_operand") ++ (match_operand:BLK 1 "memory_operand") ++ (match_operand:DI 2 "immediate_operand") ++ (match_operand:DI 3 "immediate_operand")] ++ "!STRICT_ALIGNMENT" ++{ ++ if (aarch64_expand_movmem (operands)) ++ DONE; ++ FAIL; ++} ++) ++ + ;; Operands 1 and 3 are tied together by the final condition; so we allow + ;; fairly lax checking on the second memory operation. + (define_insn "load_pair" +@@ -923,31 +986,45 @@ + [(set_attr "type" "neon_store1_2reg")] + ) + +-;; Load pair with writeback. This is primarily used in function epilogues +-;; when restoring [fp,lr] ++;; Load pair with post-index writeback. This is primarily used in function ++;; epilogues. + (define_insn "loadwb_pair_" + [(parallel + [(set (match_operand:P 0 "register_operand" "=k") + (plus:P (match_operand:P 1 "register_operand" "0") +- (match_operand:P 4 "const_int_operand" "n"))) ++ (match_operand:P 4 "aarch64_mem_pair_offset" "n"))) + (set (match_operand:GPI 2 "register_operand" "=r") +- (mem:GPI (plus:P (match_dup 1) +- (match_dup 4)))) ++ (mem:GPI (match_dup 1))) + (set (match_operand:GPI 3 "register_operand" "=r") + (mem:GPI (plus:P (match_dup 1) + (match_operand:P 5 "const_int_operand" "n"))))])] +- "INTVAL (operands[5]) == INTVAL (operands[4]) + GET_MODE_SIZE (mode)" ++ "INTVAL (operands[5]) == GET_MODE_SIZE (mode)" + "ldp\\t%2, %3, [%1], %4" + [(set_attr "type" "load2")] + ) + +-;; Store pair with writeback. This is primarily used in function prologues +-;; when saving [fp,lr] ++(define_insn "loadwb_pair_" ++ [(parallel ++ [(set (match_operand:P 0 "register_operand" "=k") ++ (plus:P (match_operand:P 1 "register_operand" "0") ++ (match_operand:P 4 "aarch64_mem_pair_offset" "n"))) ++ (set (match_operand:GPF 2 "register_operand" "=w") ++ (mem:GPF (match_dup 1))) ++ (set (match_operand:GPF 3 "register_operand" "=w") ++ (mem:GPF (plus:P (match_dup 1) ++ (match_operand:P 5 "const_int_operand" "n"))))])] ++ "INTVAL (operands[5]) == GET_MODE_SIZE (mode)" ++ "ldp\\t%2, %3, [%1], %4" ++ [(set_attr "type" "neon_load1_2reg")] ++) ++ ++;; Store pair with pre-index writeback. This is primarily used in function ++;; prologues. + (define_insn "storewb_pair_" + [(parallel + [(set (match_operand:P 0 "register_operand" "=&k") + (plus:P (match_operand:P 1 "register_operand" "0") +- (match_operand:P 4 "const_int_operand" "n"))) ++ (match_operand:P 4 "aarch64_mem_pair_offset" "n"))) + (set (mem:GPI (plus:P (match_dup 0) + (match_dup 4))) + (match_operand:GPI 2 "register_operand" "r")) +@@ -959,6 +1036,22 @@ + [(set_attr "type" "store2")] + ) + ++(define_insn "storewb_pair_" ++ [(parallel ++ [(set (match_operand:P 0 "register_operand" "=&k") ++ (plus:P (match_operand:P 1 "register_operand" "0") ++ (match_operand:P 4 "aarch64_mem_pair_offset" "n"))) ++ (set (mem:GPF (plus:P (match_dup 0) ++ (match_dup 4))) ++ (match_operand:GPF 2 "register_operand" "w")) ++ (set (mem:GPF (plus:P (match_dup 0) ++ (match_operand:P 5 "const_int_operand" "n"))) ++ (match_operand:GPF 3 "register_operand" "w"))])] ++ "INTVAL (operands[5]) == INTVAL (operands[4]) + GET_MODE_SIZE (mode)" ++ "stp\\t%2, %3, [%0, %4]!" ++ [(set_attr "type" "neon_store1_2reg")] ++) ++ + ;; ------------------------------------------------------------------- + ;; Sign/Zero extension + ;; ------------------------------------------------------------------- +@@ -1063,16 +1156,18 @@ + + (define_insn "*addsi3_aarch64" + [(set +- (match_operand:SI 0 "register_operand" "=rk,rk,rk") ++ (match_operand:SI 0 "register_operand" "=rk,rk,w,rk") + (plus:SI +- (match_operand:SI 1 "register_operand" "%rk,rk,rk") +- (match_operand:SI 2 "aarch64_plus_operand" "I,r,J")))] ++ (match_operand:SI 1 "register_operand" "%rk,rk,w,rk") ++ (match_operand:SI 2 "aarch64_plus_operand" "I,r,w,J")))] + "" + "@ + add\\t%w0, %w1, %2 + add\\t%w0, %w1, %w2 ++ add\\t%0.2s, %1.2s, %2.2s + sub\\t%w0, %w1, #%n2" +- [(set_attr "type" "alu_imm,alu_reg,alu_imm")] ++ [(set_attr "type" "alu_imm,alu_reg,neon_add,alu_imm") ++ (set_attr "simd" "*,*,yes,*")] + ) + + ;; zero_extend version of above +@@ -1092,10 +1187,10 @@ + + (define_insn "*adddi3_aarch64" + [(set +- (match_operand:DI 0 "register_operand" "=rk,rk,rk,!w") ++ (match_operand:DI 0 "register_operand" "=rk,rk,rk,w") + (plus:DI +- (match_operand:DI 1 "register_operand" "%rk,rk,rk,!w") +- (match_operand:DI 2 "aarch64_plus_operand" "I,r,J,!w")))] ++ (match_operand:DI 1 "register_operand" "%rk,rk,rk,w") ++ (match_operand:DI 2 "aarch64_plus_operand" "I,r,J,w")))] + "" + "@ + add\\t%x0, %x1, %2 +@@ -1106,7 +1201,26 @@ + (set_attr "simd" "*,*,*,yes")] + ) + +-(define_insn "*add3_compare0" ++(define_expand "addti3" ++ [(set (match_operand:TI 0 "register_operand" "") ++ (plus:TI (match_operand:TI 1 "register_operand" "") ++ (match_operand:TI 2 "register_operand" "")))] ++ "" ++{ ++ rtx low = gen_reg_rtx (DImode); ++ emit_insn (gen_adddi3_compare0 (low, gen_lowpart (DImode, operands[1]), ++ gen_lowpart (DImode, operands[2]))); ++ ++ rtx high = gen_reg_rtx (DImode); ++ emit_insn (gen_adddi3_carryin (high, gen_highpart (DImode, operands[1]), ++ gen_highpart (DImode, operands[2]))); ++ ++ emit_move_insn (gen_lowpart (DImode, operands[0]), low); ++ emit_move_insn (gen_highpart (DImode, operands[0]), high); ++ DONE; ++}) ++ ++(define_insn "add3_compare0" + [(set (reg:CC_NZ CC_REGNUM) + (compare:CC_NZ + (plus:GPI (match_operand:GPI 1 "register_operand" "%r,r,r") +@@ -1390,7 +1504,7 @@ + [(set_attr "type" "alu_ext")] + ) + +-(define_insn "*add3_carryin" ++(define_insn "add3_carryin" + [(set + (match_operand:GPI 0 "register_operand" "=r") + (plus:GPI (geu:GPI (reg:CC CC_REGNUM) (const_int 0)) +@@ -1547,9 +1661,9 @@ + ) + + (define_insn "subdi3" +- [(set (match_operand:DI 0 "register_operand" "=rk,!w") +- (minus:DI (match_operand:DI 1 "register_operand" "r,!w") +- (match_operand:DI 2 "register_operand" "r,!w")))] ++ [(set (match_operand:DI 0 "register_operand" "=rk,w") ++ (minus:DI (match_operand:DI 1 "register_operand" "r,w") ++ (match_operand:DI 2 "register_operand" "r,w")))] + "" + "@ + sub\\t%x0, %x1, %x2 +@@ -1558,8 +1672,26 @@ + (set_attr "simd" "*,yes")] + ) + ++(define_expand "subti3" ++ [(set (match_operand:TI 0 "register_operand" "") ++ (minus:TI (match_operand:TI 1 "register_operand" "") ++ (match_operand:TI 2 "register_operand" "")))] ++ "" ++{ ++ rtx low = gen_reg_rtx (DImode); ++ emit_insn (gen_subdi3_compare0 (low, gen_lowpart (DImode, operands[1]), ++ gen_lowpart (DImode, operands[2]))); + +-(define_insn "*sub3_compare0" ++ rtx high = gen_reg_rtx (DImode); ++ emit_insn (gen_subdi3_carryin (high, gen_highpart (DImode, operands[1]), ++ gen_highpart (DImode, operands[2]))); ++ ++ emit_move_insn (gen_lowpart (DImode, operands[0]), low); ++ emit_move_insn (gen_highpart (DImode, operands[0]), high); ++ DONE; ++}) ++ ++(define_insn "sub3_compare0" + [(set (reg:CC_NZ CC_REGNUM) + (compare:CC_NZ (minus:GPI (match_operand:GPI 1 "register_operand" "r") + (match_operand:GPI 2 "register_operand" "r")) +@@ -1706,7 +1838,7 @@ + [(set_attr "type" "alu_ext")] + ) + +-(define_insn "*sub3_carryin" ++(define_insn "sub3_carryin" + [(set + (match_operand:GPI 0 "register_operand" "=r") + (minus:GPI (minus:GPI +@@ -1765,9 +1897,8 @@ + ) + + (define_insn_and_split "absdi2" +- [(set (match_operand:DI 0 "register_operand" "=r,w") +- (abs:DI (match_operand:DI 1 "register_operand" "r,w"))) +- (clobber (match_scratch:DI 2 "=&r,X"))] ++ [(set (match_operand:DI 0 "register_operand" "=&r,w") ++ (abs:DI (match_operand:DI 1 "register_operand" "r,w")))] + "" + "@ + # +@@ -1777,7 +1908,7 @@ + && GP_REGNUM_P (REGNO (operands[1]))" + [(const_int 0)] + { +- emit_insn (gen_rtx_SET (VOIDmode, operands[2], ++ emit_insn (gen_rtx_SET (VOIDmode, operands[0], + gen_rtx_XOR (DImode, + gen_rtx_ASHIFTRT (DImode, + operands[1], +@@ -1786,7 +1917,7 @@ + emit_insn (gen_rtx_SET (VOIDmode, + operands[0], + gen_rtx_MINUS (DImode, +- operands[2], ++ operands[0], + gen_rtx_ASHIFTRT (DImode, + operands[1], + GEN_INT (63))))); +@@ -1935,7 +2066,7 @@ + [(set_attr "type" "mul")] + ) + +-(define_insn "*madd" ++(define_insn "madd" + [(set (match_operand:GPI 0 "register_operand" "=r") + (plus:GPI (mult:GPI (match_operand:GPI 1 "register_operand" "r") + (match_operand:GPI 2 "register_operand" "r")) +@@ -2045,6 +2176,48 @@ + [(set_attr "type" "mull")] + ) + ++(define_expand "mulditi3" ++ [(set (match_operand:TI 0 "register_operand") ++ (mult:TI (ANY_EXTEND:TI (match_operand:DI 1 "register_operand")) ++ (ANY_EXTEND:TI (match_operand:DI 2 "register_operand"))))] ++ "" ++{ ++ rtx low = gen_reg_rtx (DImode); ++ emit_insn (gen_muldi3 (low, operands[1], operands[2])); ++ ++ rtx high = gen_reg_rtx (DImode); ++ emit_insn (gen_muldi3_highpart (high, operands[1], operands[2])); ++ ++ emit_move_insn (gen_lowpart (DImode, operands[0]), low); ++ emit_move_insn (gen_highpart (DImode, operands[0]), high); ++ DONE; ++}) ++ ++;; The default expansion of multi3 using umuldi3_highpart will perform ++;; the additions in an order that fails to combine into two madd insns. ++(define_expand "multi3" ++ [(set (match_operand:TI 0 "register_operand") ++ (mult:TI (match_operand:TI 1 "register_operand") ++ (match_operand:TI 2 "register_operand")))] ++ "" ++{ ++ rtx l0 = gen_reg_rtx (DImode); ++ rtx l1 = gen_lowpart (DImode, operands[1]); ++ rtx l2 = gen_lowpart (DImode, operands[2]); ++ rtx h0 = gen_reg_rtx (DImode); ++ rtx h1 = gen_highpart (DImode, operands[1]); ++ rtx h2 = gen_highpart (DImode, operands[2]); ++ ++ emit_insn (gen_muldi3 (l0, l1, l2)); ++ emit_insn (gen_umuldi3_highpart (h0, l1, l2)); ++ emit_insn (gen_madddi (h0, h1, l2, h0)); ++ emit_insn (gen_madddi (h0, l1, h2, h0)); ++ ++ emit_move_insn (gen_lowpart (DImode, operands[0]), l0); ++ emit_move_insn (gen_highpart (DImode, operands[0]), h0); ++ DONE; ++}) ++ + (define_insn "muldi3_highpart" + [(set (match_operand:DI 0 "register_operand" "=r") + (truncate:DI +@@ -2345,11 +2518,46 @@ + } + ) + ++(define_expand "movcc" ++ [(set (match_operand:GPF 0 "register_operand" "") ++ (if_then_else:GPF (match_operand 1 "aarch64_comparison_operator" "") ++ (match_operand:GPF 2 "register_operand" "") ++ (match_operand:GPF 3 "register_operand" "")))] ++ "" ++ { ++ rtx ccreg; ++ enum rtx_code code = GET_CODE (operands[1]); ++ ++ if (code == UNEQ || code == LTGT) ++ FAIL; ++ ++ ccreg = aarch64_gen_compare_reg (code, XEXP (operands[1], 0), ++ XEXP (operands[1], 1)); ++ operands[1] = gen_rtx_fmt_ee (code, VOIDmode, ccreg, const0_rtx); ++ } ++) ++ ++ ++;; CRC32 instructions. ++(define_insn "aarch64_" ++ [(set (match_operand:SI 0 "register_operand" "=r") ++ (unspec:SI [(match_operand:SI 1 "register_operand" "r") ++ (match_operand: 2 "register_operand" "r")] ++ CRC))] ++ "TARGET_CRC32" ++ { ++ if (GET_MODE_BITSIZE (GET_MODE (operands[2])) >= 64) ++ return "\\t%w0, %w1, %x2"; ++ else ++ return "\\t%w0, %w1, %w2"; ++ } ++ [(set_attr "type" "crc")] ++) ++ + (define_insn "*csinc2_insn" + [(set (match_operand:GPI 0 "register_operand" "=r") +- (plus:GPI (match_operator:GPI 2 "aarch64_comparison_operator" +- [(match_operand:CC 3 "cc_register" "") (const_int 0)]) +- (match_operand:GPI 1 "register_operand" "r")))] ++ (plus:GPI (match_operand 2 "aarch64_comparison_operation" "") ++ (match_operand:GPI 1 "register_operand" "r")))] + "" + "csinc\\t%0, %1, %1, %M2" + [(set_attr "type" "csel")] +@@ -2358,13 +2566,12 @@ + (define_insn "csinc3_insn" + [(set (match_operand:GPI 0 "register_operand" "=r") + (if_then_else:GPI +- (match_operator:GPI 1 "aarch64_comparison_operator" +- [(match_operand:CC 2 "cc_register" "") (const_int 0)]) +- (plus:GPI (match_operand:GPI 3 "register_operand" "r") ++ (match_operand 1 "aarch64_comparison_operation" "") ++ (plus:GPI (match_operand:GPI 2 "register_operand" "r") + (const_int 1)) +- (match_operand:GPI 4 "aarch64_reg_or_zero" "rZ")))] ++ (match_operand:GPI 3 "aarch64_reg_or_zero" "rZ")))] + "" +- "csinc\\t%0, %4, %3, %M1" ++ "csinc\\t%0, %3, %2, %M1" + [(set_attr "type" "csel")] + ) + +@@ -2371,12 +2578,11 @@ + (define_insn "*csinv3_insn" + [(set (match_operand:GPI 0 "register_operand" "=r") + (if_then_else:GPI +- (match_operator:GPI 1 "aarch64_comparison_operator" +- [(match_operand:CC 2 "cc_register" "") (const_int 0)]) +- (not:GPI (match_operand:GPI 3 "register_operand" "r")) +- (match_operand:GPI 4 "aarch64_reg_or_zero" "rZ")))] ++ (match_operand 1 "aarch64_comparison_operation" "") ++ (not:GPI (match_operand:GPI 2 "register_operand" "r")) ++ (match_operand:GPI 3 "aarch64_reg_or_zero" "rZ")))] + "" +- "csinv\\t%0, %4, %3, %M1" ++ "csinv\\t%0, %3, %2, %M1" + [(set_attr "type" "csel")] + ) + +@@ -2383,12 +2589,11 @@ + (define_insn "*csneg3_insn" + [(set (match_operand:GPI 0 "register_operand" "=r") + (if_then_else:GPI +- (match_operator:GPI 1 "aarch64_comparison_operator" +- [(match_operand:CC 2 "cc_register" "") (const_int 0)]) +- (neg:GPI (match_operand:GPI 3 "register_operand" "r")) +- (match_operand:GPI 4 "aarch64_reg_or_zero" "rZ")))] ++ (match_operand 1 "aarch64_comparison_operation" "") ++ (neg:GPI (match_operand:GPI 2 "register_operand" "r")) ++ (match_operand:GPI 3 "aarch64_reg_or_zero" "rZ")))] + "" +- "csneg\\t%0, %4, %3, %M1" ++ "csneg\\t%0, %3, %2, %M1" + [(set_attr "type" "csel")] + ) + +@@ -2397,12 +2602,16 @@ + ;; ------------------------------------------------------------------- + + (define_insn "3" +- [(set (match_operand:GPI 0 "register_operand" "=r,rk") +- (LOGICAL:GPI (match_operand:GPI 1 "register_operand" "%r,r") +- (match_operand:GPI 2 "aarch64_logical_operand" "r,")))] ++ [(set (match_operand:GPI 0 "register_operand" "=r,rk,w") ++ (LOGICAL:GPI (match_operand:GPI 1 "register_operand" "%r,r,w") ++ (match_operand:GPI 2 "aarch64_logical_operand" "r,,w")))] + "" +- "\\t%0, %1, %2" +- [(set_attr "type" "logic_reg,logic_imm")] ++ "@ ++ \\t%0, %1, %2 ++ \\t%0, %1, %2 ++ \\t%0., %1., %2." ++ [(set_attr "type" "logic_reg,logic_imm,neon_logic") ++ (set_attr "simd" "*,*,yes")] + ) + + ;; zero_extend version of above +@@ -2486,7 +2695,18 @@ + [(set_attr "type" "logic_shift_imm")] + ) + +-;; zero_extend version of above ++(define_insn "*_rol3" ++ [(set (match_operand:GPI 0 "register_operand" "=r") ++ (LOGICAL:GPI (rotate:GPI ++ (match_operand:GPI 1 "register_operand" "r") ++ (match_operand:QI 2 "aarch64_shift_imm_" "n")) ++ (match_operand:GPI 3 "register_operand" "r")))] ++ "" ++ "\\t%0, %3, %1, ror ( - %2)" ++ [(set_attr "type" "logic_shift_imm")] ++) ++ ++;; zero_extend versions of above + (define_insn "*_si3_uxtw" + [(set (match_operand:DI 0 "register_operand" "=r") + (zero_extend:DI +@@ -2499,12 +2719,27 @@ + [(set_attr "type" "logic_shift_imm")] + ) + ++(define_insn "*_rolsi3_uxtw" ++ [(set (match_operand:DI 0 "register_operand" "=r") ++ (zero_extend:DI ++ (LOGICAL:SI (rotate:SI ++ (match_operand:SI 1 "register_operand" "r") ++ (match_operand:QI 2 "aarch64_shift_imm_si" "n")) ++ (match_operand:SI 3 "register_operand" "r"))))] ++ "" ++ "\\t%w0, %w3, %w1, ror (32 - %2)" ++ [(set_attr "type" "logic_shift_imm")] ++) ++ + (define_insn "one_cmpl2" +- [(set (match_operand:GPI 0 "register_operand" "=r") +- (not:GPI (match_operand:GPI 1 "register_operand" "r")))] ++ [(set (match_operand:GPI 0 "register_operand" "=r,w") ++ (not:GPI (match_operand:GPI 1 "register_operand" "r,w")))] + "" +- "mvn\\t%0, %1" +- [(set_attr "type" "logic_reg")] ++ "@ ++ mvn\\t%0, %1 ++ mvn\\t%0.8b, %1.8b" ++ [(set_attr "type" "logic_reg,neon_logic") ++ (set_attr "simd" "*,yes")] + ) + + (define_insn "*one_cmpl_2" +@@ -2516,16 +2751,38 @@ + [(set_attr "type" "logic_shift_imm")] + ) + +-(define_insn "*_one_cmpl3" +- [(set (match_operand:GPI 0 "register_operand" "=r") +- (LOGICAL:GPI (not:GPI +- (match_operand:GPI 1 "register_operand" "r")) +- (match_operand:GPI 2 "register_operand" "r")))] ++;; Binary logical operators negating one operand, i.e. (a & !b), (a | !b). ++ ++(define_insn "*_one_cmpl3" ++ [(set (match_operand:GPI 0 "register_operand" "=r,w") ++ (NLOGICAL:GPI (not:GPI (match_operand:GPI 1 "register_operand" "r,w")) ++ (match_operand:GPI 2 "register_operand" "r,w")))] + "" +- "\\t%0, %2, %1" +- [(set_attr "type" "logic_reg")] ++ "@ ++ \\t%0, %2, %1 ++ \\t%0., %2., %1." ++ [(set_attr "type" "logic_reg,neon_logic") ++ (set_attr "simd" "*,yes")] + ) + ++;; (xor (not a) b) is simplify_rtx-ed down to (not (xor a b)). ++;; eon does not operate on SIMD registers so the vector variant must be split. ++(define_insn_and_split "*xor_one_cmpl3" ++ [(set (match_operand:GPI 0 "register_operand" "=r,w") ++ (not:GPI (xor:GPI (match_operand:GPI 1 "register_operand" "r,?w") ++ (match_operand:GPI 2 "register_operand" "r,w"))))] ++ "" ++ "eon\\t%0, %1, %2" ;; For GPR registers (only). ++ "reload_completed && (which_alternative == 1)" ;; For SIMD registers. ++ [(set (match_operand:GPI 0 "register_operand" "=w") ++ (xor:GPI (match_operand:GPI 1 "register_operand" "w") ++ (match_operand:GPI 2 "register_operand" "w"))) ++ (set (match_dup 0) (not:GPI (match_dup 0)))] ++ "" ++ [(set_attr "type" "logic_reg,multiple") ++ (set_attr "simd" "*,yes")] ++) ++ + (define_insn "*and_one_cmpl3_compare0" + [(set (reg:CC_NZ CC_REGNUM) + (compare:CC_NZ +@@ -2555,6 +2812,18 @@ + [(set_attr "type" "logics_reg")] + ) + ++(define_insn "*and_one_cmpl3_compare0_no_reuse" ++ [(set (reg:CC_NZ CC_REGNUM) ++ (compare:CC_NZ ++ (and:GPI (not:GPI ++ (match_operand:GPI 0 "register_operand" "r")) ++ (match_operand:GPI 1 "register_operand" "r")) ++ (const_int 0)))] ++ "" ++ "bics\\tzr, %1, %0" ++ [(set_attr "type" "logics_reg")] ++) ++ + (define_insn "*_one_cmpl_3" + [(set (match_operand:GPI 0 "register_operand" "=r") + (LOGICAL:GPI (not:GPI +@@ -2604,6 +2873,20 @@ + [(set_attr "type" "logics_shift_imm")] + ) + ++(define_insn "*and_one_cmpl_3_compare0_no_reuse" ++ [(set (reg:CC_NZ CC_REGNUM) ++ (compare:CC_NZ ++ (and:GPI (not:GPI ++ (SHIFT:GPI ++ (match_operand:GPI 0 "register_operand" "r") ++ (match_operand:QI 1 "aarch64_shift_imm_" "n"))) ++ (match_operand:GPI 2 "register_operand" "r")) ++ (const_int 0)))] ++ "" ++ "bics\\tzr, %2, %0, %1" ++ [(set_attr "type" "logics_shift_imm")] ++) ++ + (define_insn "clz2" + [(set (match_operand:GPI 0 "register_operand" "=r") + (clz:GPI (match_operand:GPI 1 "register_operand" "r")))] +@@ -2622,7 +2905,7 @@ + + emit_insn (gen_rbit2 (operands[0], operands[1])); + emit_insn (gen_clz2 (operands[0], operands[0])); +- emit_insn (gen_csinc3_insn (operands[0], x, ccreg, operands[0], const0_rtx)); ++ emit_insn (gen_csinc3_insn (operands[0], x, operands[0], const0_rtx)); + DONE; + } + ) +@@ -2629,7 +2912,7 @@ + + (define_insn "clrsb2" + [(set (match_operand:GPI 0 "register_operand" "=r") +- (unspec:GPI [(match_operand:GPI 1 "register_operand" "r")] UNSPEC_CLS))] ++ (clrsb:GPI (match_operand:GPI 1 "register_operand" "r")))] + "" + "cls\\t%0, %1" + [(set_attr "type" "clz")] +@@ -3129,7 +3412,7 @@ + [(set (zero_extract:GPI (match_operand:GPI 0 "register_operand" "+r") + (match_operand 1 "const_int_operand" "n") + (const_int 0)) +- (zero_extract:GPI (match_operand:GPI 2 "register_operand" "+r") ++ (zero_extract:GPI (match_operand:GPI 2 "register_operand" "r") + (match_dup 1) + (match_operand 3 "const_int_operand" "n")))] + "!(UINTVAL (operands[1]) == 0 +@@ -3184,6 +3467,38 @@ + [(set_attr "type" "rev")] + ) + ++;; There are no canonicalisation rules for the position of the lshiftrt, ashift ++;; operations within an IOR/AND RTX, therefore we have two patterns matching ++;; each valid permutation. ++ ++(define_insn "rev162" ++ [(set (match_operand:GPI 0 "register_operand" "=r") ++ (ior:GPI (and:GPI (ashift:GPI (match_operand:GPI 1 "register_operand" "r") ++ (const_int 8)) ++ (match_operand:GPI 3 "const_int_operand" "n")) ++ (and:GPI (lshiftrt:GPI (match_dup 1) ++ (const_int 8)) ++ (match_operand:GPI 2 "const_int_operand" "n"))))] ++ "aarch_rev16_shleft_mask_imm_p (operands[3], mode) ++ && aarch_rev16_shright_mask_imm_p (operands[2], mode)" ++ "rev16\\t%0, %1" ++ [(set_attr "type" "rev")] ++) ++ ++(define_insn "rev162_alt" ++ [(set (match_operand:GPI 0 "register_operand" "=r") ++ (ior:GPI (and:GPI (lshiftrt:GPI (match_operand:GPI 1 "register_operand" "r") ++ (const_int 8)) ++ (match_operand:GPI 2 "const_int_operand" "n")) ++ (and:GPI (ashift:GPI (match_dup 1) ++ (const_int 8)) ++ (match_operand:GPI 3 "const_int_operand" "n"))))] ++ "aarch_rev16_shleft_mask_imm_p (operands[3], mode) ++ && aarch_rev16_shright_mask_imm_p (operands[2], mode)" ++ "rev16\\t%0, %1" ++ [(set_attr "type" "rev")] ++) ++ + ;; zero_extend version of above + (define_insn "*bswapsi2_uxtw" + [(set (match_operand:DI 0 "register_operand" "=r") +@@ -3198,7 +3513,7 @@ + ;; ------------------------------------------------------------------- + + ;; frint floating-point round to integral standard patterns. +-;; Expands to btrunc, ceil, floor, nearbyint, rint, round. ++;; Expands to btrunc, ceil, floor, nearbyint, rint, round, frintn. + + (define_insn "2" + [(set (match_operand:GPF 0 "register_operand" "=w") +@@ -3309,20 +3624,24 @@ + [(set_attr "type" "f_cvtf2i")] + ) + +-(define_insn "float2" +- [(set (match_operand:GPF 0 "register_operand" "=w") +- (float:GPF (match_operand:GPI 1 "register_operand" "r")))] +- "TARGET_FLOAT" +- "scvtf\\t%0, %1" +- [(set_attr "type" "f_cvti2f")] ++(define_insn "2" ++ [(set (match_operand:GPF 0 "register_operand" "=w,w") ++ (FLOATUORS:GPF (match_operand: 1 "register_operand" "w,r")))] ++ "" ++ "@ ++ cvtf\t%0, %1 ++ cvtf\t%0, %1" ++ [(set_attr "simd" "yes,no") ++ (set_attr "fp" "no,yes") ++ (set_attr "type" "neon_int_to_fp_,f_cvti2f")] + ) + +-(define_insn "floatuns2" ++(define_insn "2" + [(set (match_operand:GPF 0 "register_operand" "=w") +- (unsigned_float:GPF (match_operand:GPI 1 "register_operand" "r")))] ++ (FLOATUORS:GPF (match_operand: 1 "register_operand" "r")))] + "TARGET_FLOAT" +- "ucvtf\\t%0, %1" +- [(set_attr "type" "f_cvt")] ++ "cvtf\t%0, %1" ++ [(set_attr "type" "f_cvti2f")] + ) + + ;; ------------------------------------------------------------------- +@@ -3494,7 +3813,7 @@ + (truncate:DI (match_operand:TI 1 "register_operand" "w"))))] + "reload_completed || reload_in_progress" + "fmov\\t%d0, %d1" +- [(set_attr "type" "f_mcr") ++ [(set_attr "type" "fmov") + (set_attr "length" "4") + ]) + +@@ -3592,36 +3911,63 @@ + [(set_attr "type" "call") + (set_attr "length" "16")]) + +-(define_insn "tlsie_small" +- [(set (match_operand:DI 0 "register_operand" "=r") +- (unspec:DI [(match_operand:DI 1 "aarch64_tls_ie_symref" "S")] ++(define_insn "tlsie_small_" ++ [(set (match_operand:PTR 0 "register_operand" "=r") ++ (unspec:PTR [(match_operand 1 "aarch64_tls_ie_symref" "S")] + UNSPEC_GOTSMALLTLS))] + "" +- "adrp\\t%0, %A1\;ldr\\t%0, [%0, #%L1]" ++ "adrp\\t%0, %A1\;ldr\\t%0, [%0, #%L1]" + [(set_attr "type" "load1") + (set_attr "length" "8")] + ) + +-(define_insn "tlsle_small" ++(define_insn "tlsie_small_sidi" + [(set (match_operand:DI 0 "register_operand" "=r") +- (unspec:DI [(match_operand:DI 1 "register_operand" "r") +- (match_operand:DI 2 "aarch64_tls_le_symref" "S")] ++ (zero_extend:DI ++ (unspec:SI [(match_operand 1 "aarch64_tls_ie_symref" "S")] ++ UNSPEC_GOTSMALLTLS)))] ++ "" ++ "adrp\\t%0, %A1\;ldr\\t%w0, [%0, #%L1]" ++ [(set_attr "type" "load1") ++ (set_attr "length" "8")] ++) ++ ++(define_expand "tlsle_small" ++ [(set (match_operand 0 "register_operand" "=r") ++ (unspec [(match_operand 1 "register_operand" "r") ++ (match_operand 2 "aarch64_tls_le_symref" "S")] ++ UNSPEC_GOTSMALLTLS))] ++ "" ++{ ++ enum machine_mode mode = GET_MODE (operands[0]); ++ emit_insn ((mode == DImode ++ ? gen_tlsle_small_di ++ : gen_tlsle_small_si) (operands[0], ++ operands[1], ++ operands[2])); ++ DONE; ++}) ++ ++(define_insn "tlsle_small_" ++ [(set (match_operand:P 0 "register_operand" "=r") ++ (unspec:P [(match_operand:P 1 "register_operand" "r") ++ (match_operand 2 "aarch64_tls_le_symref" "S")] + UNSPEC_GOTSMALLTLS))] + "" +- "add\\t%0, %1, #%G2\;add\\t%0, %0, #%L2" ++ "add\\t%0, %1, #%G2\;add\\t%0, %0, #%L2" + [(set_attr "type" "alu_reg") + (set_attr "length" "8")] + ) + +-(define_insn "tlsdesc_small" +- [(set (reg:DI R0_REGNUM) +- (unspec:DI [(match_operand:DI 0 "aarch64_valid_symref" "S")] ++(define_insn "tlsdesc_small_" ++ [(set (reg:PTR R0_REGNUM) ++ (unspec:PTR [(match_operand 0 "aarch64_valid_symref" "S")] + UNSPEC_TLSDESC)) + (clobber (reg:DI LR_REGNUM)) + (clobber (reg:CC CC_REGNUM)) + (clobber (match_scratch:DI 1 "=r"))] + "TARGET_TLS_DESC" +- "adrp\\tx0, %A0\;ldr\\t%1, [x0, #%L0]\;add\\tx0, x0, %L0\;.tlsdesccall\\t%0\;blr\\t%1" ++ "adrp\\tx0, %A0\;ldr\\t%1, [x0, #%L0]\;add\\t0, 0, %L0\;.tlsdesccall\\t%0\;blr\\t%1" + [(set_attr "type" "call") + (set_attr "length" "16")]) + +@@ -3646,6 +3992,135 @@ + DONE; + }) + ++;; Named patterns for stack smashing protection. ++(define_expand "stack_protect_set" ++ [(match_operand 0 "memory_operand") ++ (match_operand 1 "memory_operand")] ++ "" ++{ ++ enum machine_mode mode = GET_MODE (operands[0]); ++ ++ emit_insn ((mode == DImode ++ ? gen_stack_protect_set_di ++ : gen_stack_protect_set_si) (operands[0], operands[1])); ++ DONE; ++}) ++ ++(define_insn "stack_protect_set_" ++ [(set (match_operand:PTR 0 "memory_operand" "=m") ++ (unspec:PTR [(match_operand:PTR 1 "memory_operand" "m")] ++ UNSPEC_SP_SET)) ++ (set (match_scratch:PTR 2 "=&r") (const_int 0))] ++ "" ++ "ldr\\t%2, %1\;str\\t%2, %0\;mov\t%2,0" ++ [(set_attr "length" "12") ++ (set_attr "type" "multiple")]) ++ ++(define_expand "stack_protect_test" ++ [(match_operand 0 "memory_operand") ++ (match_operand 1 "memory_operand") ++ (match_operand 2)] ++ "" ++{ ++ rtx result; ++ enum machine_mode mode = GET_MODE (operands[0]); ++ ++ result = gen_reg_rtx(mode); ++ ++ emit_insn ((mode == DImode ++ ? gen_stack_protect_test_di ++ : gen_stack_protect_test_si) (result, ++ operands[0], ++ operands[1])); ++ ++ if (mode == DImode) ++ emit_jump_insn (gen_cbranchdi4 (gen_rtx_EQ (VOIDmode, result, const0_rtx), ++ result, const0_rtx, operands[2])); ++ else ++ emit_jump_insn (gen_cbranchsi4 (gen_rtx_EQ (VOIDmode, result, const0_rtx), ++ result, const0_rtx, operands[2])); ++ DONE; ++}) ++ ++(define_insn "stack_protect_test_" ++ [(set (match_operand:PTR 0 "register_operand" "=r") ++ (unspec:PTR [(match_operand:PTR 1 "memory_operand" "m") ++ (match_operand:PTR 2 "memory_operand" "m")] ++ UNSPEC_SP_TEST)) ++ (clobber (match_scratch:PTR 3 "=&r"))] ++ "" ++ "ldr\t%3, %x1\;ldr\t%0, %x2\;eor\t%0, %3, %0" ++ [(set_attr "length" "12") ++ (set_attr "type" "multiple")]) ++ ++;; Write Floating-point Control Register. ++(define_insn "set_fpcr" ++ [(unspec_volatile [(match_operand:SI 0 "register_operand" "r")] UNSPECV_SET_FPCR)] ++ "" ++ "msr\\tfpcr, %0" ++ [(set_attr "type" "mrs")]) ++ ++;; Read Floating-point Control Register. ++(define_insn "get_fpcr" ++ [(set (match_operand:SI 0 "register_operand" "=r") ++ (unspec_volatile:SI [(const_int 0)] UNSPECV_GET_FPCR))] ++ "" ++ "mrs\\t%0, fpcr" ++ [(set_attr "type" "mrs")]) ++ ++;; Write Floating-point Status Register. ++(define_insn "set_fpsr" ++ [(unspec_volatile [(match_operand:SI 0 "register_operand" "r")] UNSPECV_SET_FPSR)] ++ "" ++ "msr\\tfpsr, %0" ++ [(set_attr "type" "mrs")]) ++ ++;; Read Floating-point Status Register. ++(define_insn "get_fpsr" ++ [(set (match_operand:SI 0 "register_operand" "=r") ++ (unspec_volatile:SI [(const_int 0)] UNSPECV_GET_FPSR))] ++ "" ++ "mrs\\t%0, fpsr" ++ [(set_attr "type" "mrs")]) ++ ++ ++;; Define the subtract-one-and-jump insns so loop.c ++;; knows what to generate. ++(define_expand "doloop_end" ++ [(use (match_operand 0 "" "")) ; loop pseudo ++ (use (match_operand 1 "" ""))] ; label ++ "optimize > 0 && flag_modulo_sched" ++{ ++ rtx s0; ++ rtx bcomp; ++ rtx loc_ref; ++ rtx cc_reg; ++ rtx insn; ++ rtx cmp; ++ ++ /* Currently SMS relies on the do-loop pattern to recognize loops ++ where (1) the control part consists of all insns defining and/or ++ using a certain 'count' register and (2) the loop count can be ++ adjusted by modifying this register prior to the loop. ++ ??? The possible introduction of a new block to initialize the ++ new IV can potentially affect branch optimizations. */ ++ ++ if (GET_MODE (operands[0]) != DImode) ++ FAIL; ++ ++ s0 = operands [0]; ++ insn = emit_insn (gen_adddi3_compare0 (s0, s0, GEN_INT (-1))); ++ ++ cmp = XVECEXP (PATTERN (insn), 0, 0); ++ cc_reg = SET_DEST (cmp); ++ bcomp = gen_rtx_NE (VOIDmode, cc_reg, const0_rtx); ++ loc_ref = gen_rtx_LABEL_REF (VOIDmode, operands [1]); ++ emit_jump_insn (gen_rtx_SET (VOIDmode, pc_rtx, ++ gen_rtx_IF_THEN_ELSE (VOIDmode, bcomp, ++ loc_ref, pc_rtx))); ++ DONE; ++}) ++ + ;; AdvSIMD Stuff + (include "aarch64-simd.md") + +--- a/src/gcc/config/aarch64/t-aarch64 ++++ b/src/gcc/config/aarch64/t-aarch64 +@@ -31,10 +31,17 @@ + $(SYSTEM_H) coretypes.h $(TM_H) \ + $(RTL_H) $(TREE_H) expr.h $(TM_P_H) $(RECOG_H) langhooks.h \ + $(DIAGNOSTIC_CORE_H) $(OPTABS_H) \ +- $(srcdir)/config/aarch64/aarch64-simd-builtins.def ++ $(srcdir)/config/aarch64/aarch64-simd-builtins.def \ ++ aarch64-builtin-iterators.h + $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ + $(srcdir)/config/aarch64/aarch64-builtins.c + ++aarch64-builtin-iterators.h: $(srcdir)/config/aarch64/geniterators.sh \ ++ $(srcdir)/config/aarch64/iterators.md ++ $(SHELL) $(srcdir)/config/aarch64/geniterators.sh \ ++ $(srcdir)/config/aarch64/iterators.md > \ ++ aarch64-builtin-iterators.h ++ + aarch-common.o: $(srcdir)/config/arm/aarch-common.c $(CONFIG_H) $(SYSTEM_H) \ + coretypes.h $(TM_H) $(TM_P_H) $(RTL_H) $(TREE_H) output.h $(C_COMMON_H) + $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ +--- a/src/gcc/config/aarch64/arm_acle.h ++++ b/src/gcc/config/aarch64/arm_acle.h +@@ -0,0 +1,90 @@ ++/* AArch64 Non-NEON ACLE intrinsics include file. ++ ++ Copyright (C) 2014 Free Software Foundation, Inc. ++ Contributed by ARM Ltd. ++ ++ This file is part of GCC. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published ++ by the Free Software Foundation; either version 3, or (at your ++ option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ Under Section 7 of GPL version 3, you are granted additional ++ permissions described in the GCC Runtime Library Exception, version ++ 3.1, as published by the Free Software Foundation. ++ ++ You should have received a copy of the GNU General Public License and ++ a copy of the GCC Runtime Library Exception along with this program; ++ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++ . */ ++ ++#ifndef _GCC_ARM_ACLE_H ++#define _GCC_ARM_ACLE_H ++ ++#include ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++#ifdef __ARM_FEATURE_CRC32 ++__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) ++__crc32b (uint32_t __a, uint8_t __b) ++{ ++ return __builtin_aarch64_crc32b (__a, __b); ++} ++ ++__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) ++__crc32cb (uint32_t __a, uint8_t __b) ++{ ++ return __builtin_aarch64_crc32cb (__a, __b); ++} ++ ++__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) ++__crc32ch (uint32_t __a, uint16_t __b) ++{ ++ return __builtin_aarch64_crc32ch (__a, __b); ++} ++ ++__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) ++__crc32cw (uint32_t __a, uint32_t __b) ++{ ++ return __builtin_aarch64_crc32cw (__a, __b); ++} ++ ++__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) ++__crc32cd (uint32_t __a, uint64_t __b) ++{ ++ return __builtin_aarch64_crc32cx (__a, __b); ++} ++ ++__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) ++__crc32h (uint32_t __a, uint16_t __b) ++{ ++ return __builtin_aarch64_crc32h (__a, __b); ++} ++ ++__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) ++__crc32w (uint32_t __a, uint32_t __b) ++{ ++ return __builtin_aarch64_crc32w (__a, __b); ++} ++ ++__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) ++__crc32d (uint32_t __a, uint64_t __b) ++{ ++ return __builtin_aarch64_crc32x (__a, __b); ++} ++ ++#endif ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif +--- a/src/gcc/config/aarch64/aarch64-cost-tables.h ++++ b/src/gcc/config/aarch64/aarch64-cost-tables.h +@@ -0,0 +1,131 @@ ++/* RTX cost tables for AArch64. ++ ++ Copyright (C) 2014 Free Software Foundation, Inc. ++ ++ This file is part of GCC. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published ++ by the Free Software Foundation; either version 3, or (at your ++ option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#ifndef GCC_AARCH64_COST_TABLES_H ++#define GCC_AARCH64_COST_TABLES_H ++ ++#include "config/arm/aarch-cost-tables.h" ++ ++/* ThunderX does not have implement AArch32. */ ++const struct cpu_cost_table thunderx_extra_costs = ++{ ++ /* ALU */ ++ { ++ 0, /* Arith. */ ++ 0, /* Logical. */ ++ 0, /* Shift. */ ++ 0, /* Shift_reg. */ ++ COSTS_N_INSNS (1), /* Arith_shift. */ ++ COSTS_N_INSNS (1), /* Arith_shift_reg. */ ++ COSTS_N_INSNS (1), /* UNUSED: Log_shift. */ ++ COSTS_N_INSNS (1), /* UNUSED: Log_shift_reg. */ ++ 0, /* Extend. */ ++ COSTS_N_INSNS (1), /* Extend_arith. */ ++ 0, /* Bfi. */ ++ 0, /* Bfx. */ ++ COSTS_N_INSNS (5), /* Clz. */ ++ 0, /* rev. */ ++ 0, /* UNUSED: non_exec. */ ++ false /* UNUSED: non_exec_costs_exec. */ ++ }, ++ { ++ /* MULT SImode */ ++ { ++ COSTS_N_INSNS (3), /* Simple. */ ++ 0, /* Flag_setting. */ ++ 0, /* Extend. */ ++ 0, /* Add. */ ++ COSTS_N_INSNS (1), /* Extend_add. */ ++ COSTS_N_INSNS (21) /* Idiv. */ ++ }, ++ /* MULT DImode */ ++ { ++ COSTS_N_INSNS (3), /* Simple. */ ++ 0, /* Flag_setting. */ ++ 0, /* Extend. */ ++ 0, /* Add. */ ++ COSTS_N_INSNS (1), /* Extend_add. */ ++ COSTS_N_INSNS (37) /* Idiv. */ ++ }, ++ }, ++ /* LD/ST */ ++ { ++ COSTS_N_INSNS (2), /* Load. */ ++ COSTS_N_INSNS (2), /* Load_sign_extend. */ ++ COSTS_N_INSNS (2), /* Ldrd. */ ++ 0, /* N/A: Ldm_1st. */ ++ 0, /* N/A: Ldm_regs_per_insn_1st. */ ++ 0, /* N/A: Ldm_regs_per_insn_subsequent. */ ++ COSTS_N_INSNS (3), /* Loadf. */ ++ COSTS_N_INSNS (3), /* Loadd. */ ++ 0, /* N/A: Load_unaligned. */ ++ 0, /* Store. */ ++ 0, /* Strd. */ ++ 0, /* N/A: Stm_1st. */ ++ 0, /* N/A: Stm_regs_per_insn_1st. */ ++ 0, /* N/A: Stm_regs_per_insn_subsequent. */ ++ 0, /* Storef. */ ++ 0, /* Stored. */ ++ COSTS_N_INSNS (1) /* Store_unaligned. */ ++ }, ++ { ++ /* FP SFmode */ ++ { ++ COSTS_N_INSNS (11), /* Div. */ ++ COSTS_N_INSNS (5), /* Mult. */ ++ COSTS_N_INSNS (5), /* Mult_addsub. */ ++ COSTS_N_INSNS (5), /* Fma. */ ++ COSTS_N_INSNS (3), /* Addsub. */ ++ 0, /* Fpconst. */ ++ COSTS_N_INSNS (1), /* Neg. */ ++ 0, /* Compare. */ ++ COSTS_N_INSNS (5), /* Widen. */ ++ COSTS_N_INSNS (5), /* Narrow. */ ++ COSTS_N_INSNS (5), /* Toint. */ ++ COSTS_N_INSNS (5), /* Fromint. */ ++ COSTS_N_INSNS (1) /* Roundint. */ ++ }, ++ /* FP DFmode */ ++ { ++ COSTS_N_INSNS (21), /* Div. */ ++ COSTS_N_INSNS (5), /* Mult. */ ++ COSTS_N_INSNS (5), /* Mult_addsub. */ ++ COSTS_N_INSNS (5), /* Fma. */ ++ COSTS_N_INSNS (3), /* Addsub. */ ++ 0, /* Fpconst. */ ++ COSTS_N_INSNS (1), /* Neg. */ ++ 0, /* Compare. */ ++ COSTS_N_INSNS (5), /* Widen. */ ++ COSTS_N_INSNS (5), /* Narrow. */ ++ COSTS_N_INSNS (5), /* Toint. */ ++ COSTS_N_INSNS (5), /* Fromint. */ ++ COSTS_N_INSNS (1) /* Roundint. */ ++ } ++ }, ++ /* Vector */ ++ { ++ COSTS_N_INSNS (1) /* Alu. */ ++ } ++}; ++ ++ ++ ++#endif ++ +--- a/src/gcc/config/aarch64/aarch64-cores.def ++++ b/src/gcc/config/aarch64/aarch64-cores.def +@@ -34,9 +34,13 @@ + + /* V8 Architecture Processors. */ + +-AARCH64_CORE("cortex-a53", cortexa53, cortexa53, 8, AARCH64_FL_FPSIMD | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, cortexa53) +-AARCH64_CORE("cortex-a57", cortexa15, cortexa15, 8, AARCH64_FL_FPSIMD | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, cortexa57) ++AARCH64_CORE("cortex-a53", cortexa53, cortexa53, 8, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa53) ++AARCH64_CORE("cortex-a57", cortexa57, cortexa57, 8, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa57) ++AARCH64_CORE("cortex-a72", cortexa72, cortexa57, 8, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa57) ++AARCH64_CORE("thunderx", thunderx, thunderx, 8, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderx) ++AARCH64_CORE("xgene1", xgene1, xgene1, 8, AARCH64_FL_FOR_ARCH8, xgene1) + + /* V8 big.LITTLE implementations. */ + +-AARCH64_CORE("cortex-a57.cortex-a53", cortexa57cortexa53, cortexa53, 8, AARCH64_FL_FPSIMD | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, cortexa57) ++AARCH64_CORE("cortex-a57.cortex-a53", cortexa57cortexa53, cortexa53, 8, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa57) ++AARCH64_CORE("cortex-a72.cortex-a53", cortexa72cortexa53, cortexa53, 8, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa57) +--- a/src/gcc/config/aarch64/atomics.md ++++ b/src/gcc/config/aarch64/atomics.md +@@ -119,7 +119,7 @@ + [(set (match_operand:ALLI 0 "aarch64_sync_memory_operand" "+Q") + (unspec_volatile:ALLI + [(atomic_op:ALLI (match_dup 0) +- (match_operand:ALLI 1 "" "rn")) ++ (match_operand:ALLI 1 "" "r")) + (match_operand:SI 2 "const_int_operand")] ;; model + UNSPECV_ATOMIC_OP)) + (clobber (reg:CC CC_REGNUM)) +@@ -141,7 +141,7 @@ + (unspec_volatile:ALLI + [(not:ALLI + (and:ALLI (match_dup 0) +- (match_operand:ALLI 1 "aarch64_logical_operand" "rn"))) ++ (match_operand:ALLI 1 "aarch64_logical_operand" "r"))) + (match_operand:SI 2 "const_int_operand")] ;; model + UNSPECV_ATOMIC_OP)) + (clobber (reg:CC CC_REGNUM)) +@@ -164,7 +164,7 @@ + (set (match_dup 1) + (unspec_volatile:ALLI + [(atomic_op:ALLI (match_dup 1) +- (match_operand:ALLI 2 "" "rn")) ++ (match_operand:ALLI 2 "" "r")) + (match_operand:SI 3 "const_int_operand")] ;; model + UNSPECV_ATOMIC_OP)) + (clobber (reg:CC CC_REGNUM)) +@@ -188,7 +188,7 @@ + (unspec_volatile:ALLI + [(not:ALLI + (and:ALLI (match_dup 1) +- (match_operand:ALLI 2 "aarch64_logical_operand" "rn"))) ++ (match_operand:ALLI 2 "aarch64_logical_operand" "r"))) + (match_operand:SI 3 "const_int_operand")] ;; model + UNSPECV_ATOMIC_OP)) + (clobber (reg:CC CC_REGNUM)) +@@ -209,7 +209,7 @@ + [(set (match_operand:ALLI 0 "register_operand" "=&r") + (atomic_op:ALLI + (match_operand:ALLI 1 "aarch64_sync_memory_operand" "+Q") +- (match_operand:ALLI 2 "" "rn"))) ++ (match_operand:ALLI 2 "" "r"))) + (set (match_dup 1) + (unspec_volatile:ALLI + [(match_dup 1) (match_dup 2) +@@ -233,7 +233,7 @@ + (not:ALLI + (and:ALLI + (match_operand:ALLI 1 "aarch64_sync_memory_operand" "+Q") +- (match_operand:ALLI 2 "aarch64_logical_operand" "rn")))) ++ (match_operand:ALLI 2 "aarch64_logical_operand" "r")))) + (set (match_dup 1) + (unspec_volatile:ALLI + [(match_dup 1) (match_dup 2) +--- a/src/gcc/config/aarch64/aarch64-tune.md ++++ b/src/gcc/config/aarch64/aarch64-tune.md +@@ -1,5 +1,5 @@ + ;; -*- buffer-read-only: t -*- + ;; Generated automatically by gentune.sh from aarch64-cores.def + (define_attr "tune" +- "cortexa53,cortexa15,cortexa57cortexa53" ++ "cortexa53,cortexa57,cortexa72,thunderx,xgene1,cortexa57cortexa53,cortexa72cortexa53" + (const (symbol_ref "((enum attr_tune) aarch64_tune)"))) +--- a/src/gcc/config/aarch64/aarch64-builtins.c ++++ b/src/gcc/config/aarch64/aarch64-builtins.c +@@ -47,52 +47,27 @@ + #include "gimple.h" + #include "gimple-iterator.h" + +-enum aarch64_simd_builtin_type_mode +-{ +- T_V8QI, +- T_V4HI, +- T_V2SI, +- T_V2SF, +- T_DI, +- T_DF, +- T_V16QI, +- T_V8HI, +- T_V4SI, +- T_V4SF, +- T_V2DI, +- T_V2DF, +- T_TI, +- T_EI, +- T_OI, +- T_XI, +- T_SI, +- T_SF, +- T_HI, +- T_QI, +- T_MAX +-}; +- +-#define v8qi_UP T_V8QI +-#define v4hi_UP T_V4HI +-#define v2si_UP T_V2SI +-#define v2sf_UP T_V2SF +-#define di_UP T_DI +-#define df_UP T_DF +-#define v16qi_UP T_V16QI +-#define v8hi_UP T_V8HI +-#define v4si_UP T_V4SI +-#define v4sf_UP T_V4SF +-#define v2di_UP T_V2DI +-#define v2df_UP T_V2DF +-#define ti_UP T_TI +-#define ei_UP T_EI +-#define oi_UP T_OI +-#define xi_UP T_XI +-#define si_UP T_SI +-#define sf_UP T_SF +-#define hi_UP T_HI +-#define qi_UP T_QI +- ++#define v8qi_UP V8QImode ++#define v4hi_UP V4HImode ++#define v2si_UP V2SImode ++#define v2sf_UP V2SFmode ++#define di_UP DImode ++#define df_UP DFmode ++#define v16qi_UP V16QImode ++#define v8hi_UP V8HImode ++#define v4si_UP V4SImode ++#define v4sf_UP V4SFmode ++#define v2di_UP V2DImode ++#define v2df_UP V2DFmode ++#define ti_UP TImode ++#define ei_UP EImode ++#define oi_UP OImode ++#define ci_UP CImode ++#define xi_UP XImode ++#define si_UP SImode ++#define sf_UP SFmode ++#define hi_UP HImode ++#define qi_UP QImode + #define UP(X) X##_UP + + #define SIMD_MAX_BUILTIN_ARGS 5 +@@ -107,8 +82,6 @@ + qualifier_const = 0x2, /* 1 << 1 */ + /* T *foo. */ + qualifier_pointer = 0x4, /* 1 << 2 */ +- /* const T *foo. */ +- qualifier_const_pointer = 0x6, /* qualifier_const | qualifier_pointer */ + /* Used when expanding arguments if an operand could + be an immediate. */ + qualifier_immediate = 0x8, /* 1 << 3 */ +@@ -123,7 +96,7 @@ + qualifier_map_mode = 0x80, /* 1 << 7 */ + /* qualifier_pointer | qualifier_map_mode */ + qualifier_pointer_map_mode = 0x84, +- /* qualifier_const_pointer | qualifier_map_mode */ ++ /* qualifier_const | qualifier_pointer | qualifier_map_mode */ + qualifier_const_pointer_map_mode = 0x86, + /* Polynomial types. */ + qualifier_poly = 0x100 +@@ -132,7 +105,7 @@ + typedef struct + { + const char *name; +- enum aarch64_simd_builtin_type_mode mode; ++ enum machine_mode mode; + const enum insn_code code; + unsigned int fcode; + enum aarch64_type_qualifiers *qualifiers; +@@ -147,16 +120,49 @@ + = { qualifier_unsigned, qualifier_unsigned }; + #define TYPES_UNOPU (aarch64_types_unopu_qualifiers) + #define TYPES_CREATE (aarch64_types_unop_qualifiers) +-#define TYPES_REINTERP (aarch64_types_unop_qualifiers) ++#define TYPES_REINTERP_SS (aarch64_types_unop_qualifiers) + static enum aarch64_type_qualifiers ++aarch64_types_unop_su_qualifiers[SIMD_MAX_BUILTIN_ARGS] ++ = { qualifier_none, qualifier_unsigned }; ++#define TYPES_REINTERP_SU (aarch64_types_unop_su_qualifiers) ++static enum aarch64_type_qualifiers ++aarch64_types_unop_sp_qualifiers[SIMD_MAX_BUILTIN_ARGS] ++ = { qualifier_none, qualifier_poly }; ++#define TYPES_REINTERP_SP (aarch64_types_unop_sp_qualifiers) ++static enum aarch64_type_qualifiers ++aarch64_types_unop_us_qualifiers[SIMD_MAX_BUILTIN_ARGS] ++ = { qualifier_unsigned, qualifier_none }; ++#define TYPES_REINTERP_US (aarch64_types_unop_us_qualifiers) ++static enum aarch64_type_qualifiers ++aarch64_types_unop_ps_qualifiers[SIMD_MAX_BUILTIN_ARGS] ++ = { qualifier_poly, qualifier_none }; ++#define TYPES_REINTERP_PS (aarch64_types_unop_ps_qualifiers) ++static enum aarch64_type_qualifiers + aarch64_types_binop_qualifiers[SIMD_MAX_BUILTIN_ARGS] + = { qualifier_none, qualifier_none, qualifier_maybe_immediate }; + #define TYPES_BINOP (aarch64_types_binop_qualifiers) + static enum aarch64_type_qualifiers ++aarch64_types_cmtst_qualifiers[SIMD_MAX_BUILTIN_ARGS] ++ = { qualifier_none, qualifier_none, qualifier_none, ++ qualifier_internal, qualifier_internal }; ++#define TYPES_TST (aarch64_types_cmtst_qualifiers) ++static enum aarch64_type_qualifiers ++aarch64_types_binopv_qualifiers[SIMD_MAX_BUILTIN_ARGS] ++ = { qualifier_void, qualifier_none, qualifier_none }; ++#define TYPES_BINOPV (aarch64_types_binopv_qualifiers) ++static enum aarch64_type_qualifiers + aarch64_types_binopu_qualifiers[SIMD_MAX_BUILTIN_ARGS] + = { qualifier_unsigned, qualifier_unsigned, qualifier_unsigned }; + #define TYPES_BINOPU (aarch64_types_binopu_qualifiers) + static enum aarch64_type_qualifiers ++aarch64_types_binop_uus_qualifiers[SIMD_MAX_BUILTIN_ARGS] ++ = { qualifier_unsigned, qualifier_unsigned, qualifier_none }; ++#define TYPES_BINOP_UUS (aarch64_types_binop_uus_qualifiers) ++static enum aarch64_type_qualifiers ++aarch64_types_binop_ssu_qualifiers[SIMD_MAX_BUILTIN_ARGS] ++ = { qualifier_none, qualifier_none, qualifier_unsigned }; ++#define TYPES_BINOP_SSU (aarch64_types_binop_ssu_qualifiers) ++static enum aarch64_type_qualifiers + aarch64_types_binopp_qualifiers[SIMD_MAX_BUILTIN_ARGS] + = { qualifier_poly, qualifier_poly, qualifier_poly }; + #define TYPES_BINOPP (aarch64_types_binopp_qualifiers) +@@ -172,10 +178,10 @@ + #define TYPES_TERNOPU (aarch64_types_ternopu_qualifiers) + + static enum aarch64_type_qualifiers +-aarch64_types_quadop_qualifiers[SIMD_MAX_BUILTIN_ARGS] ++aarch64_types_ternop_lane_qualifiers[SIMD_MAX_BUILTIN_ARGS] + = { qualifier_none, qualifier_none, qualifier_none, +- qualifier_none, qualifier_none }; +-#define TYPES_QUADOP (aarch64_types_quadop_qualifiers) ++ qualifier_none, qualifier_immediate }; ++#define TYPES_TERNOP_LANE (aarch64_types_ternop_lane_qualifiers) + + static enum aarch64_type_qualifiers + aarch64_types_getlane_qualifiers[SIMD_MAX_BUILTIN_ARGS] +@@ -183,9 +189,14 @@ + #define TYPES_GETLANE (aarch64_types_getlane_qualifiers) + #define TYPES_SHIFTIMM (aarch64_types_getlane_qualifiers) + static enum aarch64_type_qualifiers ++aarch64_types_shift_to_unsigned_qualifiers[SIMD_MAX_BUILTIN_ARGS] ++ = { qualifier_unsigned, qualifier_none, qualifier_immediate }; ++#define TYPES_SHIFTIMM_USS (aarch64_types_shift_to_unsigned_qualifiers) ++static enum aarch64_type_qualifiers + aarch64_types_unsigned_shift_qualifiers[SIMD_MAX_BUILTIN_ARGS] + = { qualifier_unsigned, qualifier_unsigned, qualifier_immediate }; + #define TYPES_USHIFTIMM (aarch64_types_unsigned_shift_qualifiers) ++ + static enum aarch64_type_qualifiers + aarch64_types_setlane_qualifiers[SIMD_MAX_BUILTIN_ARGS] + = { qualifier_none, qualifier_none, qualifier_none, qualifier_immediate }; +@@ -194,6 +205,13 @@ + #define TYPES_SHIFTACC (aarch64_types_setlane_qualifiers) + + static enum aarch64_type_qualifiers ++aarch64_types_unsigned_shiftacc_qualifiers[SIMD_MAX_BUILTIN_ARGS] ++ = { qualifier_unsigned, qualifier_unsigned, qualifier_unsigned, ++ qualifier_immediate }; ++#define TYPES_USHIFTACC (aarch64_types_unsigned_shiftacc_qualifiers) ++ ++ ++static enum aarch64_type_qualifiers + aarch64_types_combine_qualifiers[SIMD_MAX_BUILTIN_ARGS] + = { qualifier_none, qualifier_none, qualifier_none }; + #define TYPES_COMBINE (aarch64_types_combine_qualifiers) +@@ -203,6 +221,11 @@ + = { qualifier_none, qualifier_const_pointer_map_mode }; + #define TYPES_LOAD1 (aarch64_types_load1_qualifiers) + #define TYPES_LOADSTRUCT (aarch64_types_load1_qualifiers) ++static enum aarch64_type_qualifiers ++aarch64_types_loadstruct_lane_qualifiers[SIMD_MAX_BUILTIN_ARGS] ++ = { qualifier_none, qualifier_const_pointer_map_mode, ++ qualifier_none, qualifier_none }; ++#define TYPES_LOADSTRUCT_LANE (aarch64_types_loadstruct_lane_qualifiers) + + static enum aarch64_type_qualifiers + aarch64_types_bsl_p_qualifiers[SIMD_MAX_BUILTIN_ARGS] +@@ -230,6 +253,11 @@ + = { qualifier_void, qualifier_pointer_map_mode, qualifier_none }; + #define TYPES_STORE1 (aarch64_types_store1_qualifiers) + #define TYPES_STORESTRUCT (aarch64_types_store1_qualifiers) ++static enum aarch64_type_qualifiers ++aarch64_types_storestruct_lane_qualifiers[SIMD_MAX_BUILTIN_ARGS] ++ = { qualifier_void, qualifier_pointer_map_mode, ++ qualifier_none, qualifier_none }; ++#define TYPES_STORESTRUCT_LANE (aarch64_types_storestruct_lane_qualifiers) + + #define CF0(N, X) CODE_FOR_aarch64_##N##X + #define CF1(N, X) CODE_FOR_##N##X##1 +@@ -239,7 +267,7 @@ + #define CF10(N, X) CODE_FOR_##N##X + + #define VAR1(T, N, MAP, A) \ +- {#N, UP (A), CF##MAP (N, A), 0, TYPES_##T}, ++ {#N #A, UP (A), CF##MAP (N, A), 0, TYPES_##T}, + #define VAR2(T, N, MAP, A, B) \ + VAR1 (T, N, MAP, A) \ + VAR1 (T, N, MAP, B) +@@ -274,96 +302,34 @@ + VAR11 (T, N, MAP, A, B, C, D, E, F, G, H, I, J, K) \ + VAR1 (T, N, MAP, L) + +-/* BUILTIN_ macros should expand to cover the same range of +- modes as is given for each define_mode_iterator in +- config/aarch64/iterators.md. */ ++#include "aarch64-builtin-iterators.h" + +-#define BUILTIN_DX(T, N, MAP) \ +- VAR2 (T, N, MAP, di, df) +-#define BUILTIN_GPF(T, N, MAP) \ +- VAR2 (T, N, MAP, sf, df) +-#define BUILTIN_SDQ_I(T, N, MAP) \ +- VAR4 (T, N, MAP, qi, hi, si, di) +-#define BUILTIN_SD_HSI(T, N, MAP) \ +- VAR2 (T, N, MAP, hi, si) +-#define BUILTIN_V2F(T, N, MAP) \ +- VAR2 (T, N, MAP, v2sf, v2df) +-#define BUILTIN_VALL(T, N, MAP) \ +- VAR10 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v2si, \ +- v4si, v2di, v2sf, v4sf, v2df) +-#define BUILTIN_VALLDI(T, N, MAP) \ +- VAR11 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v2si, \ +- v4si, v2di, v2sf, v4sf, v2df, di) +-#define BUILTIN_VALLDIF(T, N, MAP) \ +- VAR12 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v2si, \ +- v4si, v2di, v2sf, v4sf, v2df, di, df) +-#define BUILTIN_VB(T, N, MAP) \ +- VAR2 (T, N, MAP, v8qi, v16qi) +-#define BUILTIN_VD(T, N, MAP) \ +- VAR4 (T, N, MAP, v8qi, v4hi, v2si, v2sf) +-#define BUILTIN_VDC(T, N, MAP) \ +- VAR6 (T, N, MAP, v8qi, v4hi, v2si, v2sf, di, df) +-#define BUILTIN_VDIC(T, N, MAP) \ +- VAR3 (T, N, MAP, v8qi, v4hi, v2si) +-#define BUILTIN_VDN(T, N, MAP) \ +- VAR3 (T, N, MAP, v4hi, v2si, di) +-#define BUILTIN_VDQ(T, N, MAP) \ +- VAR7 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v2si, v4si, v2di) +-#define BUILTIN_VDQF(T, N, MAP) \ +- VAR3 (T, N, MAP, v2sf, v4sf, v2df) +-#define BUILTIN_VDQH(T, N, MAP) \ +- VAR2 (T, N, MAP, v4hi, v8hi) +-#define BUILTIN_VDQHS(T, N, MAP) \ +- VAR4 (T, N, MAP, v4hi, v8hi, v2si, v4si) +-#define BUILTIN_VDQIF(T, N, MAP) \ +- VAR9 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v2si, v4si, v2sf, v4sf, v2df) +-#define BUILTIN_VDQM(T, N, MAP) \ +- VAR6 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v2si, v4si) +-#define BUILTIN_VDQV(T, N, MAP) \ +- VAR5 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v4si) +-#define BUILTIN_VDQQH(T, N, MAP) \ +- VAR4 (T, N, MAP, v8qi, v16qi, v4hi, v8hi) +-#define BUILTIN_VDQ_BHSI(T, N, MAP) \ +- VAR6 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v2si, v4si) +-#define BUILTIN_VDQ_I(T, N, MAP) \ +- VAR7 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v2si, v4si, v2di) +-#define BUILTIN_VDW(T, N, MAP) \ +- VAR3 (T, N, MAP, v8qi, v4hi, v2si) +-#define BUILTIN_VD_BHSI(T, N, MAP) \ +- VAR3 (T, N, MAP, v8qi, v4hi, v2si) +-#define BUILTIN_VD_HSI(T, N, MAP) \ +- VAR2 (T, N, MAP, v4hi, v2si) +-#define BUILTIN_VD_RE(T, N, MAP) \ +- VAR6 (T, N, MAP, v8qi, v4hi, v2si, v2sf, di, df) +-#define BUILTIN_VQ(T, N, MAP) \ +- VAR6 (T, N, MAP, v16qi, v8hi, v4si, v2di, v4sf, v2df) +-#define BUILTIN_VQN(T, N, MAP) \ +- VAR3 (T, N, MAP, v8hi, v4si, v2di) +-#define BUILTIN_VQW(T, N, MAP) \ +- VAR3 (T, N, MAP, v16qi, v8hi, v4si) +-#define BUILTIN_VQ_HSI(T, N, MAP) \ +- VAR2 (T, N, MAP, v8hi, v4si) +-#define BUILTIN_VQ_S(T, N, MAP) \ +- VAR6 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v2si, v4si) +-#define BUILTIN_VSDQ_HSI(T, N, MAP) \ +- VAR6 (T, N, MAP, v4hi, v8hi, v2si, v4si, hi, si) +-#define BUILTIN_VSDQ_I(T, N, MAP) \ +- VAR11 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v2si, v4si, v2di, qi, hi, si, di) +-#define BUILTIN_VSDQ_I_BHSI(T, N, MAP) \ +- VAR10 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v2si, v4si, v2di, qi, hi, si) +-#define BUILTIN_VSDQ_I_DI(T, N, MAP) \ +- VAR8 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v2si, v4si, v2di, di) +-#define BUILTIN_VSD_HSI(T, N, MAP) \ +- VAR4 (T, N, MAP, v4hi, v2si, hi, si) +-#define BUILTIN_VSQN_HSDI(T, N, MAP) \ +- VAR6 (T, N, MAP, v8hi, v4si, v2di, hi, si, di) +-#define BUILTIN_VSTRUCT(T, N, MAP) \ +- VAR3 (T, N, MAP, oi, ci, xi) +- + static aarch64_simd_builtin_datum aarch64_simd_builtin_data[] = { + #include "aarch64-simd-builtins.def" + }; + ++/* There's only 8 CRC32 builtins. Probably not worth their own .def file. */ ++#define AARCH64_CRC32_BUILTINS \ ++ CRC32_BUILTIN (crc32b, QI) \ ++ CRC32_BUILTIN (crc32h, HI) \ ++ CRC32_BUILTIN (crc32w, SI) \ ++ CRC32_BUILTIN (crc32x, DI) \ ++ CRC32_BUILTIN (crc32cb, QI) \ ++ CRC32_BUILTIN (crc32ch, HI) \ ++ CRC32_BUILTIN (crc32cw, SI) \ ++ CRC32_BUILTIN (crc32cx, DI) ++ ++typedef struct ++{ ++ const char *name; ++ enum machine_mode mode; ++ const enum insn_code icode; ++ unsigned int fcode; ++} aarch64_crc_builtin_datum; ++ ++#define CRC32_BUILTIN(N, M) \ ++ AARCH64_BUILTIN_##N, ++ + #undef VAR1 + #define VAR1(T, N, MAP, A) \ + AARCH64_SIMD_BUILTIN_##T##_##N##A, +@@ -371,13 +337,32 @@ + enum aarch64_builtins + { + AARCH64_BUILTIN_MIN, ++ ++ AARCH64_BUILTIN_GET_FPCR, ++ AARCH64_BUILTIN_SET_FPCR, ++ AARCH64_BUILTIN_GET_FPSR, ++ AARCH64_BUILTIN_SET_FPSR, ++ + AARCH64_SIMD_BUILTIN_BASE, + #include "aarch64-simd-builtins.def" + AARCH64_SIMD_BUILTIN_MAX = AARCH64_SIMD_BUILTIN_BASE + + ARRAY_SIZE (aarch64_simd_builtin_data), ++ AARCH64_CRC32_BUILTIN_BASE, ++ AARCH64_CRC32_BUILTINS ++ AARCH64_CRC32_BUILTIN_MAX, + AARCH64_BUILTIN_MAX + }; + ++#undef CRC32_BUILTIN ++#define CRC32_BUILTIN(N, M) \ ++ {"__builtin_aarch64_"#N, M##mode, CODE_FOR_aarch64_##N, AARCH64_BUILTIN_##N}, ++ ++static aarch64_crc_builtin_datum aarch64_crc_builtin_data[] = { ++ AARCH64_CRC32_BUILTINS ++}; ++ ++#undef CRC32_BUILTIN ++ + static GTY(()) tree aarch64_builtin_decls[AARCH64_BUILTIN_MAX]; + + #define NUM_DREG_TYPES 6 +@@ -639,25 +624,10 @@ + bool print_type_signature_p = false; + char type_signature[SIMD_MAX_BUILTIN_ARGS] = { 0 }; + aarch64_simd_builtin_datum *d = &aarch64_simd_builtin_data[i]; +- const char *const modenames[] = +- { +- "v8qi", "v4hi", "v2si", "v2sf", "di", "df", +- "v16qi", "v8hi", "v4si", "v4sf", "v2di", "v2df", +- "ti", "ei", "oi", "xi", "si", "sf", "hi", "qi" +- }; +- const enum machine_mode modes[] = +- { +- V8QImode, V4HImode, V2SImode, V2SFmode, DImode, DFmode, +- V16QImode, V8HImode, V4SImode, V4SFmode, V2DImode, +- V2DFmode, TImode, EImode, OImode, XImode, SImode, +- SFmode, HImode, QImode +- }; + char namebuf[60]; + tree ftype = NULL; + tree fndecl = NULL; + +- gcc_assert (ARRAY_SIZE (modenames) == T_MAX); +- + d->fcode = fcode; + + /* We must track two variables here. op_num is +@@ -705,7 +675,7 @@ + /* Some builtins have different user-facing types + for certain arguments, encoded in d->mode. */ + if (qualifiers & qualifier_map_mode) +- op_mode = modes[d->mode]; ++ op_mode = d->mode; + + /* For pointers, we want a pointer to the basic type + of the vector. */ +@@ -737,11 +707,11 @@ + gcc_assert (ftype != NULL); + + if (print_type_signature_p) +- snprintf (namebuf, sizeof (namebuf), "__builtin_aarch64_%s%s_%s", +- d->name, modenames[d->mode], type_signature); ++ snprintf (namebuf, sizeof (namebuf), "__builtin_aarch64_%s_%s", ++ d->name, type_signature); + else +- snprintf (namebuf, sizeof (namebuf), "__builtin_aarch64_%s%s", +- d->name, modenames[d->mode]); ++ snprintf (namebuf, sizeof (namebuf), "__builtin_aarch64_%s", ++ d->name); + + fndecl = add_builtin_function (namebuf, ftype, fcode, BUILT_IN_MD, + NULL, NULL_TREE); +@@ -749,11 +719,49 @@ + } + } + ++static void ++aarch64_init_crc32_builtins () ++{ ++ tree usi_type = aarch64_build_unsigned_type (SImode); ++ unsigned int i = 0; ++ ++ for (i = 0; i < ARRAY_SIZE (aarch64_crc_builtin_data); ++i) ++ { ++ aarch64_crc_builtin_datum* d = &aarch64_crc_builtin_data[i]; ++ tree argtype = aarch64_build_unsigned_type (d->mode); ++ tree ftype = build_function_type_list (usi_type, usi_type, argtype, NULL_TREE); ++ tree fndecl = add_builtin_function (d->name, ftype, d->fcode, ++ BUILT_IN_MD, NULL, NULL_TREE); ++ ++ aarch64_builtin_decls[d->fcode] = fndecl; ++ } ++} ++ + void + aarch64_init_builtins (void) + { ++ tree ftype_set_fpr ++ = build_function_type_list (void_type_node, unsigned_type_node, NULL); ++ tree ftype_get_fpr ++ = build_function_type_list (unsigned_type_node, NULL); ++ ++ aarch64_builtin_decls[AARCH64_BUILTIN_GET_FPCR] ++ = add_builtin_function ("__builtin_aarch64_get_fpcr", ftype_get_fpr, ++ AARCH64_BUILTIN_GET_FPCR, BUILT_IN_MD, NULL, NULL_TREE); ++ aarch64_builtin_decls[AARCH64_BUILTIN_SET_FPCR] ++ = add_builtin_function ("__builtin_aarch64_set_fpcr", ftype_set_fpr, ++ AARCH64_BUILTIN_SET_FPCR, BUILT_IN_MD, NULL, NULL_TREE); ++ aarch64_builtin_decls[AARCH64_BUILTIN_GET_FPSR] ++ = add_builtin_function ("__builtin_aarch64_get_fpsr", ftype_get_fpr, ++ AARCH64_BUILTIN_GET_FPSR, BUILT_IN_MD, NULL, NULL_TREE); ++ aarch64_builtin_decls[AARCH64_BUILTIN_SET_FPSR] ++ = add_builtin_function ("__builtin_aarch64_set_fpsr", ftype_set_fpr, ++ AARCH64_BUILTIN_SET_FPSR, BUILT_IN_MD, NULL, NULL_TREE); ++ + if (TARGET_SIMD) + aarch64_init_simd_builtins (); ++ if (TARGET_CRC32) ++ aarch64_init_crc32_builtins (); + } + + tree +@@ -774,9 +782,8 @@ + + static rtx + aarch64_simd_expand_args (rtx target, int icode, int have_retval, +- tree exp, ...) ++ tree exp, builtin_simd_arg *args) + { +- va_list ap; + rtx pat; + tree arg[SIMD_MAX_BUILTIN_ARGS]; + rtx op[SIMD_MAX_BUILTIN_ARGS]; +@@ -790,11 +797,9 @@ + || !(*insn_data[icode].operand[0].predicate) (target, tmode))) + target = gen_reg_rtx (tmode); + +- va_start (ap, exp); +- + for (;;) + { +- builtin_simd_arg thisarg = (builtin_simd_arg) va_arg (ap, int); ++ builtin_simd_arg thisarg = args[argc]; + + if (thisarg == SIMD_ARG_STOP) + break; +@@ -818,8 +823,11 @@ + case SIMD_ARG_CONSTANT: + if (!(*insn_data[icode].operand[argc + have_retval].predicate) + (op[argc], mode[argc])) ++ { + error_at (EXPR_LOCATION (exp), "incompatible type for argument %d, " + "expected %", argc + 1); ++ return const0_rtx; ++ } + break; + + case SIMD_ARG_STOP: +@@ -830,8 +838,6 @@ + } + } + +- va_end (ap); +- + if (have_retval) + switch (argc) + { +@@ -886,7 +892,7 @@ + } + + if (!pat) +- return 0; ++ return NULL_RTX; + + emit_insn (pat); + +@@ -945,14 +951,45 @@ + /* The interface to aarch64_simd_expand_args expects a 0 if + the function is void, and a 1 if it is not. */ + return aarch64_simd_expand_args +- (target, icode, !is_void, exp, +- args[1], +- args[2], +- args[3], +- args[4], +- SIMD_ARG_STOP); ++ (target, icode, !is_void, exp, &args[1]); + } + ++rtx ++aarch64_crc32_expand_builtin (int fcode, tree exp, rtx target) ++{ ++ rtx pat; ++ aarch64_crc_builtin_datum *d ++ = &aarch64_crc_builtin_data[fcode - (AARCH64_CRC32_BUILTIN_BASE + 1)]; ++ enum insn_code icode = d->icode; ++ tree arg0 = CALL_EXPR_ARG (exp, 0); ++ tree arg1 = CALL_EXPR_ARG (exp, 1); ++ rtx op0 = expand_normal (arg0); ++ rtx op1 = expand_normal (arg1); ++ enum machine_mode tmode = insn_data[icode].operand[0].mode; ++ enum machine_mode mode0 = insn_data[icode].operand[1].mode; ++ enum machine_mode mode1 = insn_data[icode].operand[2].mode; ++ ++ if (! target ++ || GET_MODE (target) != tmode ++ || ! (*insn_data[icode].operand[0].predicate) (target, tmode)) ++ target = gen_reg_rtx (tmode); ++ ++ gcc_assert ((GET_MODE (op0) == mode0 || GET_MODE (op0) == VOIDmode) ++ && (GET_MODE (op1) == mode1 || GET_MODE (op1) == VOIDmode)); ++ ++ if (! (*insn_data[icode].operand[1].predicate) (op0, mode0)) ++ op0 = copy_to_mode_reg (mode0, op0); ++ if (! (*insn_data[icode].operand[2].predicate) (op1, mode1)) ++ op1 = copy_to_mode_reg (mode1, op1); ++ ++ pat = GEN_FCN (icode) (target, op0, op1); ++ if (!pat) ++ return NULL_RTX; ++ ++ emit_insn (pat); ++ return target; ++} ++ + /* Expand an expression EXP that calls a built-in function, + with result going to TARGET if that's convenient. */ + rtx +@@ -964,11 +1001,43 @@ + { + tree fndecl = TREE_OPERAND (CALL_EXPR_FN (exp), 0); + int fcode = DECL_FUNCTION_CODE (fndecl); ++ int icode; ++ rtx pat, op0; ++ tree arg0; + +- if (fcode >= AARCH64_SIMD_BUILTIN_BASE) ++ switch (fcode) ++ { ++ case AARCH64_BUILTIN_GET_FPCR: ++ case AARCH64_BUILTIN_SET_FPCR: ++ case AARCH64_BUILTIN_GET_FPSR: ++ case AARCH64_BUILTIN_SET_FPSR: ++ if ((fcode == AARCH64_BUILTIN_GET_FPCR) ++ || (fcode == AARCH64_BUILTIN_GET_FPSR)) ++ { ++ icode = (fcode == AARCH64_BUILTIN_GET_FPSR) ? ++ CODE_FOR_get_fpsr : CODE_FOR_get_fpcr; ++ target = gen_reg_rtx (SImode); ++ pat = GEN_FCN (icode) (target); ++ } ++ else ++ { ++ target = NULL_RTX; ++ icode = (fcode == AARCH64_BUILTIN_SET_FPSR) ? ++ CODE_FOR_set_fpsr : CODE_FOR_set_fpcr; ++ arg0 = CALL_EXPR_ARG (exp, 0); ++ op0 = expand_normal (arg0); ++ pat = GEN_FCN (icode) (op0); ++ } ++ emit_insn (pat); ++ return target; ++ } ++ ++ if (fcode >= AARCH64_SIMD_BUILTIN_BASE && fcode <= AARCH64_SIMD_BUILTIN_MAX) + return aarch64_simd_expand_builtin (fcode, exp, target); ++ else if (fcode >= AARCH64_CRC32_BUILTIN_BASE && fcode <= AARCH64_CRC32_BUILTIN_MAX) ++ return aarch64_crc32_expand_builtin (fcode, exp, target); + +- return NULL_RTX; ++ gcc_unreachable (); + } + + tree +@@ -1033,6 +1102,14 @@ + return aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_UNOP_clzv4si]; + return NULL_TREE; + } ++ case BUILT_IN_CTZ: ++ { ++ if (AARCH64_CHECK_BUILTIN_MODE (2, S)) ++ return aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_UNOP_ctzv2si]; ++ else if (AARCH64_CHECK_BUILTIN_MODE (4, S)) ++ return aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_UNOP_ctzv4si]; ++ return NULL_TREE; ++ } + #undef AARCH64_CHECK_BUILTIN_MODE + #define AARCH64_CHECK_BUILTIN_MODE(C, N) \ + (out_mode == N##Imode && out_n == C \ +@@ -1086,7 +1163,29 @@ + + return aarch64_builtin_decls[builtin]; + } +- ++ case BUILT_IN_BSWAP16: ++#undef AARCH64_CHECK_BUILTIN_MODE ++#define AARCH64_CHECK_BUILTIN_MODE(C, N) \ ++ (out_mode == N##Imode && out_n == C \ ++ && in_mode == N##Imode && in_n == C) ++ if (AARCH64_CHECK_BUILTIN_MODE (4, H)) ++ return aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_UNOPU_bswapv4hi]; ++ else if (AARCH64_CHECK_BUILTIN_MODE (8, H)) ++ return aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_UNOPU_bswapv8hi]; ++ else ++ return NULL_TREE; ++ case BUILT_IN_BSWAP32: ++ if (AARCH64_CHECK_BUILTIN_MODE (2, S)) ++ return aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_UNOPU_bswapv2si]; ++ else if (AARCH64_CHECK_BUILTIN_MODE (4, S)) ++ return aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_UNOPU_bswapv4si]; ++ else ++ return NULL_TREE; ++ case BUILT_IN_BSWAP64: ++ if (AARCH64_CHECK_BUILTIN_MODE (2, D)) ++ return aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_UNOPU_bswapv2di]; ++ else ++ return NULL_TREE; + default: + return NULL_TREE; + } +@@ -1108,25 +1207,28 @@ + + switch (fcode) + { +- BUILTIN_VALLDI (UNOP, abs, 2) ++ BUILTIN_VDQF (UNOP, abs, 2) + return fold_build1 (ABS_EXPR, type, args[0]); + break; +- BUILTIN_VALLDI (BINOP, cmge, 0) +- return fold_build2 (GE_EXPR, type, args[0], args[1]); +- break; +- BUILTIN_VALLDI (BINOP, cmgt, 0) +- return fold_build2 (GT_EXPR, type, args[0], args[1]); +- break; +- BUILTIN_VALLDI (BINOP, cmeq, 0) +- return fold_build2 (EQ_EXPR, type, args[0], args[1]); +- break; +- BUILTIN_VSDQ_I_DI (BINOP, cmtst, 0) +- { +- tree and_node = fold_build2 (BIT_AND_EXPR, type, args[0], args[1]); +- tree vec_zero_node = build_zero_cst (type); +- return fold_build2 (NE_EXPR, type, and_node, vec_zero_node); +- break; +- } ++ VAR1 (REINTERP_SS, reinterpretdi, 0, df) ++ VAR1 (REINTERP_SS, reinterpretv8qi, 0, df) ++ VAR1 (REINTERP_SS, reinterpretv4hi, 0, df) ++ VAR1 (REINTERP_SS, reinterpretv2si, 0, df) ++ VAR1 (REINTERP_SS, reinterpretv2sf, 0, df) ++ BUILTIN_VD (REINTERP_SS, reinterpretdf, 0) ++ BUILTIN_VD (REINTERP_SU, reinterpretdf, 0) ++ VAR1 (REINTERP_US, reinterpretdi, 0, df) ++ VAR1 (REINTERP_US, reinterpretv8qi, 0, df) ++ VAR1 (REINTERP_US, reinterpretv4hi, 0, df) ++ VAR1 (REINTERP_US, reinterpretv2si, 0, df) ++ VAR1 (REINTERP_US, reinterpretv2sf, 0, df) ++ BUILTIN_VD (REINTERP_SP, reinterpretdf, 0) ++ VAR1 (REINTERP_PS, reinterpretdi, 0, df) ++ VAR1 (REINTERP_PS, reinterpretv8qi, 0, df) ++ VAR1 (REINTERP_PS, reinterpretv4hi, 0, df) ++ VAR1 (REINTERP_PS, reinterpretv2si, 0, df) ++ VAR1 (REINTERP_PS, reinterpretv2sf, 0, df) ++ return fold_build1 (VIEW_CONVERT_EXPR, type, args[0]); + VAR1 (UNOP, floatv2si, 2, v2sf) + VAR1 (UNOP, floatv4si, 2, v4sf) + VAR1 (UNOP, floatv2di, 2, v2df) +@@ -1146,6 +1248,7 @@ + tree call = gimple_call_fn (stmt); + tree fndecl; + gimple new_stmt = NULL; ++ + if (call) + { + fndecl = gimple_call_fndecl (stmt); +@@ -1157,16 +1260,20 @@ + ? gimple_call_arg_ptr (stmt, 0) + : &error_mark_node); + ++ /* We use gimple's REDUC_(PLUS|MIN|MAX)_EXPRs for float, signed int ++ and unsigned int; it will distinguish according to the types of ++ the arguments to the __builtin. */ + switch (fcode) + { +- BUILTIN_VALL (UNOP, reduc_splus_, 10) +- new_stmt = gimple_build_assign_with_ops ( ++ BUILTIN_VALL (UNOP, reduc_plus_scal_, 10) ++ new_stmt = gimple_build_assign_with_ops ( + REDUC_PLUS_EXPR, + gimple_call_lhs (stmt), + args[0], + NULL_TREE); + break; +- BUILTIN_VDQIF (UNOP, reduc_smax_, 10) ++ BUILTIN_VDQIF (UNOP, reduc_smax_scal_, 10) ++ BUILTIN_VDQ_BHSI (UNOPU, reduc_umax_scal_, 10) + new_stmt = gimple_build_assign_with_ops ( + REDUC_MAX_EXPR, + gimple_call_lhs (stmt), +@@ -1173,7 +1280,8 @@ + args[0], + NULL_TREE); + break; +- BUILTIN_VDQIF (UNOP, reduc_smin_, 10) ++ BUILTIN_VDQIF (UNOP, reduc_smin_scal_, 10) ++ BUILTIN_VDQ_BHSI (UNOPU, reduc_umin_scal_, 10) + new_stmt = gimple_build_assign_with_ops ( + REDUC_MIN_EXPR, + gimple_call_lhs (stmt), +@@ -1196,43 +1304,108 @@ + return changed; + } + ++void ++aarch64_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update) ++{ ++ const unsigned AARCH64_FE_INVALID = 1; ++ const unsigned AARCH64_FE_DIVBYZERO = 2; ++ const unsigned AARCH64_FE_OVERFLOW = 4; ++ const unsigned AARCH64_FE_UNDERFLOW = 8; ++ const unsigned AARCH64_FE_INEXACT = 16; ++ const unsigned HOST_WIDE_INT AARCH64_FE_ALL_EXCEPT = (AARCH64_FE_INVALID ++ | AARCH64_FE_DIVBYZERO ++ | AARCH64_FE_OVERFLOW ++ | AARCH64_FE_UNDERFLOW ++ | AARCH64_FE_INEXACT); ++ const unsigned HOST_WIDE_INT AARCH64_FE_EXCEPT_SHIFT = 8; ++ tree fenv_cr, fenv_sr, get_fpcr, set_fpcr, mask_cr, mask_sr; ++ tree ld_fenv_cr, ld_fenv_sr, masked_fenv_cr, masked_fenv_sr, hold_fnclex_cr; ++ tree hold_fnclex_sr, new_fenv_var, reload_fenv, restore_fnenv, get_fpsr, set_fpsr; ++ tree update_call, atomic_feraiseexcept, hold_fnclex, masked_fenv, ld_fenv; ++ ++ /* Generate the equivalence of : ++ unsigned int fenv_cr; ++ fenv_cr = __builtin_aarch64_get_fpcr (); ++ ++ unsigned int fenv_sr; ++ fenv_sr = __builtin_aarch64_get_fpsr (); ++ ++ Now set all exceptions to non-stop ++ unsigned int mask_cr ++ = ~(AARCH64_FE_ALL_EXCEPT << AARCH64_FE_EXCEPT_SHIFT); ++ unsigned int masked_cr; ++ masked_cr = fenv_cr & mask_cr; ++ ++ And clear all exception flags ++ unsigned int maske_sr = ~AARCH64_FE_ALL_EXCEPT; ++ unsigned int masked_cr; ++ masked_sr = fenv_sr & mask_sr; ++ ++ __builtin_aarch64_set_cr (masked_cr); ++ __builtin_aarch64_set_sr (masked_sr); */ ++ ++ fenv_cr = create_tmp_var (unsigned_type_node, NULL); ++ fenv_sr = create_tmp_var (unsigned_type_node, NULL); ++ ++ get_fpcr = aarch64_builtin_decls[AARCH64_BUILTIN_GET_FPCR]; ++ set_fpcr = aarch64_builtin_decls[AARCH64_BUILTIN_SET_FPCR]; ++ get_fpsr = aarch64_builtin_decls[AARCH64_BUILTIN_GET_FPSR]; ++ set_fpsr = aarch64_builtin_decls[AARCH64_BUILTIN_SET_FPSR]; ++ ++ mask_cr = build_int_cst (unsigned_type_node, ++ ~(AARCH64_FE_ALL_EXCEPT << AARCH64_FE_EXCEPT_SHIFT)); ++ mask_sr = build_int_cst (unsigned_type_node, ++ ~(AARCH64_FE_ALL_EXCEPT)); ++ ++ ld_fenv_cr = build2 (MODIFY_EXPR, unsigned_type_node, ++ fenv_cr, build_call_expr (get_fpcr, 0)); ++ ld_fenv_sr = build2 (MODIFY_EXPR, unsigned_type_node, ++ fenv_sr, build_call_expr (get_fpsr, 0)); ++ ++ masked_fenv_cr = build2 (BIT_AND_EXPR, unsigned_type_node, fenv_cr, mask_cr); ++ masked_fenv_sr = build2 (BIT_AND_EXPR, unsigned_type_node, fenv_sr, mask_sr); ++ ++ hold_fnclex_cr = build_call_expr (set_fpcr, 1, masked_fenv_cr); ++ hold_fnclex_sr = build_call_expr (set_fpsr, 1, masked_fenv_sr); ++ ++ hold_fnclex = build2 (COMPOUND_EXPR, void_type_node, hold_fnclex_cr, ++ hold_fnclex_sr); ++ masked_fenv = build2 (COMPOUND_EXPR, void_type_node, masked_fenv_cr, ++ masked_fenv_sr); ++ ld_fenv = build2 (COMPOUND_EXPR, void_type_node, ld_fenv_cr, ld_fenv_sr); ++ ++ *hold = build2 (COMPOUND_EXPR, void_type_node, ++ build2 (COMPOUND_EXPR, void_type_node, masked_fenv, ld_fenv), ++ hold_fnclex); ++ ++ /* Store the value of masked_fenv to clear the exceptions: ++ __builtin_aarch64_set_fpsr (masked_fenv_sr); */ ++ ++ *clear = build_call_expr (set_fpsr, 1, masked_fenv_sr); ++ ++ /* Generate the equivalent of : ++ unsigned int new_fenv_var; ++ new_fenv_var = __builtin_aarch64_get_fpsr (); ++ ++ __builtin_aarch64_set_fpsr (fenv_sr); ++ ++ __atomic_feraiseexcept (new_fenv_var); */ ++ ++ new_fenv_var = create_tmp_var (unsigned_type_node, NULL); ++ reload_fenv = build2 (MODIFY_EXPR, unsigned_type_node, ++ new_fenv_var, build_call_expr (get_fpsr, 0)); ++ restore_fnenv = build_call_expr (set_fpsr, 1, fenv_sr); ++ atomic_feraiseexcept = builtin_decl_implicit (BUILT_IN_ATOMIC_FERAISEEXCEPT); ++ update_call = build_call_expr (atomic_feraiseexcept, 1, ++ fold_convert (integer_type_node, new_fenv_var)); ++ *update = build2 (COMPOUND_EXPR, void_type_node, ++ build2 (COMPOUND_EXPR, void_type_node, ++ reload_fenv, restore_fnenv), update_call); ++} ++ ++ + #undef AARCH64_CHECK_BUILTIN_MODE + #undef AARCH64_FIND_FRINT_VARIANT +-#undef BUILTIN_DX +-#undef BUILTIN_SDQ_I +-#undef BUILTIN_SD_HSI +-#undef BUILTIN_V2F +-#undef BUILTIN_VALL +-#undef BUILTIN_VB +-#undef BUILTIN_VD +-#undef BUILTIN_VDC +-#undef BUILTIN_VDIC +-#undef BUILTIN_VDN +-#undef BUILTIN_VDQ +-#undef BUILTIN_VDQF +-#undef BUILTIN_VDQH +-#undef BUILTIN_VDQHS +-#undef BUILTIN_VDQIF +-#undef BUILTIN_VDQM +-#undef BUILTIN_VDQV +-#undef BUILTIN_VDQ_BHSI +-#undef BUILTIN_VDQ_I +-#undef BUILTIN_VDW +-#undef BUILTIN_VD_BHSI +-#undef BUILTIN_VD_HSI +-#undef BUILTIN_VD_RE +-#undef BUILTIN_VQ +-#undef BUILTIN_VQN +-#undef BUILTIN_VQW +-#undef BUILTIN_VQ_HSI +-#undef BUILTIN_VQ_S +-#undef BUILTIN_VSDQ_HSI +-#undef BUILTIN_VSDQ_I +-#undef BUILTIN_VSDQ_I_BHSI +-#undef BUILTIN_VSDQ_I_DI +-#undef BUILTIN_VSD_HSI +-#undef BUILTIN_VSQN_HSDI +-#undef BUILTIN_VSTRUCT + #undef CF0 + #undef CF1 + #undef CF2 +@@ -1251,3 +1424,4 @@ + #undef VAR10 + #undef VAR11 + ++#include "gt-aarch64-builtins.h" +--- a/src/gcc/config/aarch64/thunderx.md ++++ b/src/gcc/config/aarch64/thunderx.md +@@ -0,0 +1,260 @@ ++;; Cavium ThunderX pipeline description ++;; Copyright (C) 2014 Free Software Foundation, Inc. ++;; ++;; Written by Andrew Pinski ++ ++;; This file is part of GCC. ++ ++;; GCC is free software; you can redistribute it and/or modify ++;; it under the terms of the GNU General Public License as published by ++;; the Free Software Foundation; either version 3, or (at your option) ++;; any later version. ++ ++;; GCC is distributed in the hope that it will be useful, ++;; but WITHOUT ANY WARRANTY; without even the implied warranty of ++;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++;; GNU General Public License for more details. ++ ++;; You should have received a copy of the GNU General Public License ++;; along with GCC; see the file COPYING3. If not see ++;; . ++;; Copyright (C) 2004, 2005, 2006 Cavium Networks. ++ ++ ++;; Thunder is a dual-issue processor that can issue all instructions on ++;; pipe0 and a subset on pipe1. ++ ++ ++(define_automaton "thunderx_main, thunderx_mult, thunderx_divide, thunderx_simd") ++ ++(define_cpu_unit "thunderx_pipe0" "thunderx_main") ++(define_cpu_unit "thunderx_pipe1" "thunderx_main") ++(define_cpu_unit "thunderx_mult" "thunderx_mult") ++(define_cpu_unit "thunderx_divide" "thunderx_divide") ++(define_cpu_unit "thunderx_simd" "thunderx_simd") ++ ++(define_insn_reservation "thunderx_add" 1 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "adc_imm,adc_reg,adr,alu_imm,alu_reg,alus_imm,alus_reg,extend,logic_imm,logic_reg,logics_imm,logics_reg,mov_imm,mov_reg")) ++ "thunderx_pipe0 | thunderx_pipe1") ++ ++(define_insn_reservation "thunderx_shift" 1 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "bfm,extend,shift_imm,shift_reg")) ++ "thunderx_pipe0 | thunderx_pipe1") ++ ++ ++;; Arthimentic instructions with an extra shift or extend is two cycles. ++;; FIXME: This needs more attributes on aarch64 than what is currently there; ++;; this is conserative for now. ++;; Except this is not correct as this is only for !(LSL && shift by 0/1/2/3) ++;; Except this is not correct as this is only for !(zero extend) ++ ++(define_insn_reservation "thunderx_arith_shift" 2 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "alu_ext,alu_shift_imm,alu_shift_reg,alus_ext,logic_shift_imm,logic_shift_reg,logics_shift_imm,logics_shift_reg,alus_shift_imm")) ++ "thunderx_pipe0 | thunderx_pipe1") ++ ++(define_insn_reservation "thunderx_csel" 2 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "csel")) ++ "thunderx_pipe0 | thunderx_pipe1") ++ ++;; Multiply and mulitply accumulate and count leading zeros can only happen on pipe 1 ++ ++(define_insn_reservation "thunderx_mul" 4 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "mul,muls,mla,mlas,clz,smull,umull,smlal,umlal")) ++ "thunderx_pipe1 + thunderx_mult") ++ ++;; Multiply high instructions take an extra cycle and cause the muliply unit to ++;; be busy for an extra cycle. ++ ++;(define_insn_reservation "thunderx_mul_high" 5 ++; (and (eq_attr "tune" "thunderx") ++; (eq_attr "type" "smull,umull")) ++; "thunderx_pipe1 + thunderx_mult") ++ ++(define_insn_reservation "thunderx_div32" 22 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "udiv,sdiv")) ++ "thunderx_pipe1 + thunderx_divide, thunderx_divide * 21") ++ ++;(define_insn_reservation "thunderx_div64" 38 ++; (and (eq_attr "tune" "thunderx") ++; (eq_attr "type" "udiv,sdiv") ++; (eq_attr "mode" "DI")) ++; "thunderx_pipe1 + thunderx_divide, thunderx_divide * 34") ++ ++;; Stores take one cycle in pipe 0 ++(define_insn_reservation "thunderx_store" 1 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "store1")) ++ "thunderx_pipe0") ++ ++;; Store pair are single issued ++(define_insn_reservation "thunderx_storepair" 1 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "store2")) ++ "thunderx_pipe0 + thunderx_pipe1") ++ ++ ++;; loads (and load pairs) from L1 take 3 cycles in pipe 0 ++(define_insn_reservation "thunderx_load" 3 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "load1, load2")) ++ "thunderx_pipe0") ++ ++(define_insn_reservation "thunderx_brj" 1 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "branch,trap,call")) ++ "thunderx_pipe1") ++ ++;; FPU ++ ++(define_insn_reservation "thunderx_fadd" 4 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "faddd,fadds")) ++ "thunderx_pipe1") ++ ++(define_insn_reservation "thunderx_fconst" 1 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "fconsts,fconstd")) ++ "thunderx_pipe1") ++ ++;; Moves between fp are 2 cycles including min/max/select/abs/neg ++(define_insn_reservation "thunderx_fmov" 2 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "fmov,f_minmaxs,f_minmaxd,fcsel,ffarithd,ffariths")) ++ "thunderx_pipe1") ++ ++(define_insn_reservation "thunderx_fmovgpr" 2 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "f_mrc, f_mcr")) ++ "thunderx_pipe1") ++ ++(define_insn_reservation "thunderx_fmul" 6 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "fmacs,fmacd,fmuls,fmuld")) ++ "thunderx_pipe1") ++ ++(define_insn_reservation "thunderx_fdivs" 12 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "fdivs")) ++ "thunderx_pipe1 + thunderx_divide, thunderx_divide*8") ++ ++(define_insn_reservation "thunderx_fdivd" 22 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "fdivd")) ++ "thunderx_pipe1 + thunderx_divide, thunderx_divide*18") ++ ++(define_insn_reservation "thunderx_fsqrts" 17 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "fsqrts")) ++ "thunderx_pipe1 + thunderx_divide, thunderx_divide*13") ++ ++(define_insn_reservation "thunderx_fsqrtd" 28 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "fsqrtd")) ++ "thunderx_pipe1 + thunderx_divide, thunderx_divide*31") ++ ++;; The rounding conversion inside fp is 4 cycles ++(define_insn_reservation "thunderx_frint" 4 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "f_rints,f_rintd")) ++ "thunderx_pipe1") ++ ++;; Float to integer with a move from int to/from float is 6 cycles ++(define_insn_reservation "thunderx_f_cvt" 6 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "f_cvt,f_cvtf2i,f_cvti2f")) ++ "thunderx_pipe1") ++ ++;; FP/SIMD load/stores happen in pipe 0 ++;; 64bit Loads register/pairs are 4 cycles from L1 ++(define_insn_reservation "thunderx_64simd_fp_load" 4 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "f_loadd,f_loads,neon_load1_1reg,\ ++ neon_load1_1reg_q,neon_load1_2reg")) ++ "thunderx_pipe0") ++ ++;; 128bit load pair is singled issue and 4 cycles from L1 ++(define_insn_reservation "thunderx_128simd_pair_load" 4 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "neon_load1_2reg_q")) ++ "thunderx_pipe0+thunderx_pipe1") ++ ++;; FP/SIMD Stores takes one cycle in pipe 0 ++(define_insn_reservation "thunderx_simd_fp_store" 1 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "f_stored,f_stores,neon_store1_1reg,neon_store1_1reg_q")) ++ "thunderx_pipe0") ++ ++;; 64bit neon store pairs are single issue for one cycle ++(define_insn_reservation "thunderx_64neon_storepair" 1 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "neon_store1_2reg")) ++ "thunderx_pipe0 + thunderx_pipe1") ++ ++;; 128bit neon store pair are single issued for two cycles ++(define_insn_reservation "thunderx_128neon_storepair" 2 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "neon_store1_2reg_q")) ++ "(thunderx_pipe0 + thunderx_pipe1)*2") ++ ++ ++;; SIMD/NEON (q forms take an extra cycle) ++ ++;; Thunder simd move instruction types - 2/3 cycles ++(define_insn_reservation "thunderx_neon_move" 2 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "neon_logic, neon_bsl, neon_fp_compare_s, \ ++ neon_fp_compare_d, neon_move")) ++ "thunderx_pipe1 + thunderx_simd") ++ ++(define_insn_reservation "thunderx_neon_move_q" 3 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "neon_logic_q, neon_bsl_q, neon_fp_compare_s_q, \ ++ neon_fp_compare_d_q, neon_move_q")) ++ "thunderx_pipe1 + thunderx_simd, thunderx_simd") ++ ++ ++;; Thunder simd simple/add instruction types - 4/5 cycles ++ ++(define_insn_reservation "thunderx_neon_add" 4 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "neon_reduc_add, neon_reduc_minmax, neon_fp_reduc_add_s, \ ++ neon_fp_reduc_add_d, neon_fp_to_int_s, neon_fp_to_int_d, \ ++ neon_add_halve, neon_sub_halve, neon_qadd, neon_compare, \ ++ neon_compare_zero, neon_minmax, neon_abd, neon_add, neon_sub, \ ++ neon_fp_minmax_s, neon_fp_minmax_d, neon_reduc_add, neon_cls, \ ++ neon_qabs, neon_qneg, neon_fp_addsub_s, neon_fp_addsub_d")) ++ "thunderx_pipe1 + thunderx_simd") ++ ++;; BIG NOTE: neon_add_long/neon_sub_long don't have a q form which is incorrect ++ ++(define_insn_reservation "thunderx_neon_add_q" 5 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "neon_reduc_add_q, neon_reduc_minmax_q, neon_fp_reduc_add_s_q, \ ++ neon_fp_reduc_add_d_q, neon_fp_to_int_s_q, neon_fp_to_int_d_q, \ ++ neon_add_halve_q, neon_sub_halve_q, neon_qadd_q, neon_compare_q, \ ++ neon_compare_zero_q, neon_minmax_q, neon_abd_q, neon_add_q, neon_sub_q, \ ++ neon_fp_minmax_s_q, neon_fp_minmax_d_q, neon_reduc_add_q, neon_cls_q, \ ++ neon_qabs_q, neon_qneg_q, neon_fp_addsub_s_q, neon_fp_addsub_d_q, \ ++ neon_add_long, neon_sub_long")) ++ "thunderx_pipe1 + thunderx_simd, thunderx_simd") ++ ++ ++;; Thunder 128bit SIMD reads the upper halve in cycle 2 and writes in the last cycle ++(define_bypass 2 "thunderx_neon_move_q" "thunderx_neon_move_q, thunderx_neon_add_q") ++(define_bypass 4 "thunderx_neon_add_q" "thunderx_neon_move_q, thunderx_neon_add_q") ++ ++;; Assume both pipes are needed for unknown and multiple-instruction ++;; patterns. ++ ++(define_insn_reservation "thunderx_unknown" 1 ++ (and (eq_attr "tune" "thunderx") ++ (eq_attr "type" "untyped,multiple")) ++ "thunderx_pipe0 + thunderx_pipe1") ++ ++ +--- a/src/gcc/config/aarch64/aarch64-opts.h ++++ b/src/gcc/config/aarch64/aarch64-opts.h +@@ -25,7 +25,7 @@ + /* The various cores that implement AArch64. */ + enum aarch64_processor + { +-#define AARCH64_CORE(NAME, INTERNAL_IDENT, IDENT, ARCH, FLAGS, COSTS) \ ++#define AARCH64_CORE(NAME, INTERNAL_IDENT, SCHED, ARCH, FLAGS, COSTS) \ + INTERNAL_IDENT, + #include "aarch64-cores.def" + #undef AARCH64_CORE +--- a/src/gcc/config/aarch64/aarch64-protos.h ++++ b/src/gcc/config/aarch64/aarch64-protos.h +@@ -108,9 +108,22 @@ + cost models and vectors for address cost calculations, register + move costs and memory move costs. */ + ++/* Scaled addressing modes can vary cost depending on the mode of the ++ value to be loaded/stored. QImode values cannot use scaled ++ addressing modes. */ ++ ++struct scale_addr_mode_cost ++{ ++ const int hi; ++ const int si; ++ const int di; ++ const int ti; ++}; ++ + /* Additional cost for addresses. */ + struct cpu_addrcost_table + { ++ const struct scale_addr_mode_cost addr_scale_costs; + const int pre_modify; + const int post_modify; + const int register_offset; +@@ -157,9 +170,14 @@ + const struct cpu_vector_cost *const vec_costs; + const int memmov_cost; + const int issue_rate; ++ const unsigned int fuseable_ops; ++ const int int_reassoc_width; ++ const int fp_reassoc_width; ++ const int vec_reassoc_width; + }; + + HOST_WIDE_INT aarch64_initial_elimination_offset (unsigned, unsigned); ++int aarch64_get_condition_code (rtx); + bool aarch64_bitmask_imm (HOST_WIDE_INT val, enum machine_mode); + bool aarch64_cannot_change_mode_class (enum machine_mode, + enum machine_mode, +@@ -166,7 +184,9 @@ + enum reg_class); + enum aarch64_symbol_type + aarch64_classify_symbolic_expression (rtx, enum aarch64_symbol_context); ++bool aarch64_const_vec_all_same_int_p (rtx, HOST_WIDE_INT); + bool aarch64_constant_address_p (rtx); ++bool aarch64_expand_movmem (rtx *); + bool aarch64_float_const_zero_rtx_p (rtx); + bool aarch64_function_arg_regno_p (unsigned); + bool aarch64_gen_movmemqi (rtx *); +@@ -175,9 +195,12 @@ + bool aarch64_is_long_call_p (rtx); + bool aarch64_label_mentioned_p (rtx); + bool aarch64_legitimate_pic_operand_p (rtx); ++bool aarch64_modes_tieable_p (enum machine_mode mode1, ++ enum machine_mode mode2); + bool aarch64_move_imm (HOST_WIDE_INT, enum machine_mode); + bool aarch64_mov_operand_p (rtx, enum aarch64_symbol_context, + enum machine_mode); ++bool aarch64_offset_7bit_signed_scaled_p (enum machine_mode, HOST_WIDE_INT); + char *aarch64_output_scalar_simd_mov_immediate (rtx, enum machine_mode); + char *aarch64_output_simd_mov_immediate (rtx, enum machine_mode, unsigned); + bool aarch64_pad_arg_upward (enum machine_mode, const_tree); +@@ -184,6 +207,8 @@ + bool aarch64_pad_reg_upward (enum machine_mode, const_tree, bool); + bool aarch64_regno_ok_for_base_p (int, bool); + bool aarch64_regno_ok_for_index_p (int, bool); ++bool aarch64_simd_check_vect_par_cnst_half (rtx op, enum machine_mode mode, ++ bool high); + bool aarch64_simd_imm_scalar_p (rtx x, enum machine_mode mode); + bool aarch64_simd_imm_zero_p (rtx, enum machine_mode); + bool aarch64_simd_scalar_immediate_valid_for_move (rtx, enum machine_mode); +@@ -195,11 +220,13 @@ + const char *aarch64_output_casesi (rtx *); + const char *aarch64_rewrite_selected_cpu (const char *name); + +-enum aarch64_symbol_type aarch64_classify_symbol (rtx, ++enum aarch64_symbol_type aarch64_classify_symbol (rtx, rtx, + enum aarch64_symbol_context); + enum aarch64_symbol_type aarch64_classify_tls_symbol (rtx); + enum reg_class aarch64_regno_regclass (unsigned); + int aarch64_asm_preferred_eh_data_format (int, int); ++enum machine_mode aarch64_hard_regno_caller_save_mode (unsigned, unsigned, ++ enum machine_mode); + int aarch64_hard_regno_mode_ok (unsigned, enum machine_mode); + int aarch64_hard_regno_nregs (unsigned, enum machine_mode); + int aarch64_simd_attr_length_move (rtx); +@@ -231,7 +258,6 @@ + /* Initialize builtins for SIMD intrinsics. */ + void init_aarch64_simd_builtins (void); + +-void aarch64_simd_const_bounds (rtx, HOST_WIDE_INT, HOST_WIDE_INT); + void aarch64_simd_disambiguate_copy (rtx *, rtx *, rtx *, unsigned int); + + /* Emit code to place a AdvSIMD pair result in memory locations (with equal +@@ -291,4 +317,5 @@ + extern void aarch64_final_prescan_insn (rtx); + extern bool + aarch64_expand_vec_perm_const (rtx target, rtx op0, rtx op1, rtx sel); ++void aarch64_atomic_assign_expand_fenv (tree *, tree *, tree *); + #endif /* GCC_AARCH64_PROTOS_H */ +--- a/src/gcc/config/aarch64/aarch64-simd-builtins.def ++++ b/src/gcc/config/aarch64/aarch64-simd-builtins.def +@@ -46,37 +46,46 @@ + BUILTIN_VD_BHSI (BINOP, addp, 0) + VAR1 (UNOP, addp, 0, di) + BUILTIN_VDQ_BHSI (UNOP, clz, 2) ++ BUILTIN_VS (UNOP, ctz, 2) + +- BUILTIN_VALL (GETLANE, get_lane, 0) +- VAR1 (GETLANE, get_lane, 0, di) + BUILTIN_VALL (GETLANE, be_checked_get_lane, 0) + +- BUILTIN_VD_RE (REINTERP, reinterpretdi, 0) +- BUILTIN_VDC (REINTERP, reinterpretv8qi, 0) +- BUILTIN_VDC (REINTERP, reinterpretv4hi, 0) +- BUILTIN_VDC (REINTERP, reinterpretv2si, 0) +- BUILTIN_VDC (REINTERP, reinterpretv2sf, 0) +- BUILTIN_VQ (REINTERP, reinterpretv16qi, 0) +- BUILTIN_VQ (REINTERP, reinterpretv8hi, 0) +- BUILTIN_VQ (REINTERP, reinterpretv4si, 0) +- BUILTIN_VQ (REINTERP, reinterpretv4sf, 0) +- BUILTIN_VQ (REINTERP, reinterpretv2di, 0) +- BUILTIN_VQ (REINTERP, reinterpretv2df, 0) ++ VAR1 (REINTERP_SS, reinterpretdi, 0, df) ++ VAR1 (REINTERP_SS, reinterpretv8qi, 0, df) ++ VAR1 (REINTERP_SS, reinterpretv4hi, 0, df) ++ VAR1 (REINTERP_SS, reinterpretv2si, 0, df) ++ VAR1 (REINTERP_SS, reinterpretv2sf, 0, df) ++ BUILTIN_VD (REINTERP_SS, reinterpretdf, 0) + +- BUILTIN_VDQ_I (BINOP, dup_lane, 0) ++ BUILTIN_VD (REINTERP_SU, reinterpretdf, 0) ++ ++ VAR1 (REINTERP_US, reinterpretdi, 0, df) ++ VAR1 (REINTERP_US, reinterpretv8qi, 0, df) ++ VAR1 (REINTERP_US, reinterpretv4hi, 0, df) ++ VAR1 (REINTERP_US, reinterpretv2si, 0, df) ++ VAR1 (REINTERP_US, reinterpretv2sf, 0, df) ++ ++ BUILTIN_VD (REINTERP_SP, reinterpretdf, 0) ++ ++ VAR1 (REINTERP_PS, reinterpretdi, 0, df) ++ VAR1 (REINTERP_PS, reinterpretv8qi, 0, df) ++ VAR1 (REINTERP_PS, reinterpretv4hi, 0, df) ++ VAR1 (REINTERP_PS, reinterpretv2si, 0, df) ++ VAR1 (REINTERP_PS, reinterpretv2sf, 0, df) ++ + /* Implemented by aarch64_qshl. */ + BUILTIN_VSDQ_I (BINOP, sqshl, 0) +- BUILTIN_VSDQ_I (BINOP, uqshl, 0) ++ BUILTIN_VSDQ_I (BINOP_UUS, uqshl, 0) + BUILTIN_VSDQ_I (BINOP, sqrshl, 0) +- BUILTIN_VSDQ_I (BINOP, uqrshl, 0) ++ BUILTIN_VSDQ_I (BINOP_UUS, uqrshl, 0) + /* Implemented by aarch64_. */ + BUILTIN_VSDQ_I (BINOP, sqadd, 0) +- BUILTIN_VSDQ_I (BINOP, uqadd, 0) ++ BUILTIN_VSDQ_I (BINOPU, uqadd, 0) + BUILTIN_VSDQ_I (BINOP, sqsub, 0) +- BUILTIN_VSDQ_I (BINOP, uqsub, 0) ++ BUILTIN_VSDQ_I (BINOPU, uqsub, 0) + /* Implemented by aarch64_qadd. */ +- BUILTIN_VSDQ_I (BINOP, suqadd, 0) +- BUILTIN_VSDQ_I (BINOP, usqadd, 0) ++ BUILTIN_VSDQ_I (BINOP_SSU, suqadd, 0) ++ BUILTIN_VSDQ_I (BINOP_UUS, usqadd, 0) + + /* Implemented by aarch64_get_dreg. */ + BUILTIN_VDC (GETLANE, get_dregoi, 0) +@@ -98,6 +107,14 @@ + BUILTIN_VQ (LOADSTRUCT, ld2, 0) + BUILTIN_VQ (LOADSTRUCT, ld3, 0) + BUILTIN_VQ (LOADSTRUCT, ld4, 0) ++ /* Implemented by aarch64_ldr. */ ++ BUILTIN_VALLDIF (LOADSTRUCT, ld2r, 0) ++ BUILTIN_VALLDIF (LOADSTRUCT, ld3r, 0) ++ BUILTIN_VALLDIF (LOADSTRUCT, ld4r, 0) ++ /* Implemented by aarch64_ld_lane. */ ++ BUILTIN_VQ (LOADSTRUCT_LANE, ld2_lane, 0) ++ BUILTIN_VQ (LOADSTRUCT_LANE, ld3_lane, 0) ++ BUILTIN_VQ (LOADSTRUCT_LANE, ld4_lane, 0) + /* Implemented by aarch64_st. */ + BUILTIN_VDC (STORESTRUCT, st2, 0) + BUILTIN_VDC (STORESTRUCT, st3, 0) +@@ -107,6 +124,10 @@ + BUILTIN_VQ (STORESTRUCT, st3, 0) + BUILTIN_VQ (STORESTRUCT, st4, 0) + ++ BUILTIN_VQ (STORESTRUCT_LANE, st2_lane, 0) ++ BUILTIN_VQ (STORESTRUCT_LANE, st3_lane, 0) ++ BUILTIN_VQ (STORESTRUCT_LANE, st4_lane, 0) ++ + BUILTIN_VQW (BINOP, saddl2, 0) + BUILTIN_VQW (BINOP, uaddl2, 0) + BUILTIN_VQW (BINOP, ssubl2, 0) +@@ -142,19 +163,19 @@ + BUILTIN_VSQN_HSDI (UNOP, sqmovn, 0) + BUILTIN_VSQN_HSDI (UNOP, uqmovn, 0) + /* Implemented by aarch64_s. */ +- BUILTIN_VSDQ_I_BHSI (UNOP, sqabs, 0) +- BUILTIN_VSDQ_I_BHSI (UNOP, sqneg, 0) ++ BUILTIN_VSDQ_I (UNOP, sqabs, 0) ++ BUILTIN_VSDQ_I (UNOP, sqneg, 0) + +- BUILTIN_VSD_HSI (QUADOP, sqdmlal_lane, 0) +- BUILTIN_VSD_HSI (QUADOP, sqdmlsl_lane, 0) +- BUILTIN_VSD_HSI (QUADOP, sqdmlal_laneq, 0) +- BUILTIN_VSD_HSI (QUADOP, sqdmlsl_laneq, 0) ++ BUILTIN_VSD_HSI (TERNOP_LANE, sqdmlal_lane, 0) ++ BUILTIN_VSD_HSI (TERNOP_LANE, sqdmlsl_lane, 0) ++ BUILTIN_VSD_HSI (TERNOP_LANE, sqdmlal_laneq, 0) ++ BUILTIN_VSD_HSI (TERNOP_LANE, sqdmlsl_laneq, 0) + BUILTIN_VQ_HSI (TERNOP, sqdmlal2, 0) + BUILTIN_VQ_HSI (TERNOP, sqdmlsl2, 0) +- BUILTIN_VQ_HSI (QUADOP, sqdmlal2_lane, 0) +- BUILTIN_VQ_HSI (QUADOP, sqdmlsl2_lane, 0) +- BUILTIN_VQ_HSI (QUADOP, sqdmlal2_laneq, 0) +- BUILTIN_VQ_HSI (QUADOP, sqdmlsl2_laneq, 0) ++ BUILTIN_VQ_HSI (TERNOP_LANE, sqdmlal2_lane, 0) ++ BUILTIN_VQ_HSI (TERNOP_LANE, sqdmlsl2_lane, 0) ++ BUILTIN_VQ_HSI (TERNOP_LANE, sqdmlal2_laneq, 0) ++ BUILTIN_VQ_HSI (TERNOP_LANE, sqdmlsl2_laneq, 0) + BUILTIN_VQ_HSI (TERNOP, sqdmlal2_n, 0) + BUILTIN_VQ_HSI (TERNOP, sqdmlsl2_n, 0) + /* Implemented by aarch64_sqdmll. */ +@@ -166,7 +187,7 @@ + + BUILTIN_VSD_HSI (BINOP, sqdmull, 0) + BUILTIN_VSD_HSI (TERNOP, sqdmull_lane, 0) +- BUILTIN_VD_HSI (TERNOP, sqdmull_laneq, 0) ++ BUILTIN_VSD_HSI (TERNOP, sqdmull_laneq, 0) + BUILTIN_VD_HSI (BINOP, sqdmull_n, 0) + BUILTIN_VQ_HSI (BINOP, sqdmull2, 0) + BUILTIN_VQ_HSI (TERNOP, sqdmull2_lane, 0) +@@ -186,9 +207,9 @@ + BUILTIN_VSDQ_I_DI (BINOP, ashl, 3) + /* Implemented by aarch64_shl. */ + BUILTIN_VSDQ_I_DI (BINOP, sshl, 0) +- BUILTIN_VSDQ_I_DI (BINOP, ushl, 0) ++ BUILTIN_VSDQ_I_DI (BINOP_UUS, ushl, 0) + BUILTIN_VSDQ_I_DI (BINOP, srshl, 0) +- BUILTIN_VSDQ_I_DI (BINOP, urshl, 0) ++ BUILTIN_VSDQ_I_DI (BINOP_UUS, urshl, 0) + + BUILTIN_VDQ_I (SHIFTIMM, ashr, 3) + VAR1 (SHIFTIMM, ashr_simd, 0, di) +@@ -196,15 +217,15 @@ + VAR1 (USHIFTIMM, lshr_simd, 0, di) + /* Implemented by aarch64_shr_n. */ + BUILTIN_VSDQ_I_DI (SHIFTIMM, srshr_n, 0) +- BUILTIN_VSDQ_I_DI (SHIFTIMM, urshr_n, 0) ++ BUILTIN_VSDQ_I_DI (USHIFTIMM, urshr_n, 0) + /* Implemented by aarch64_sra_n. */ + BUILTIN_VSDQ_I_DI (SHIFTACC, ssra_n, 0) +- BUILTIN_VSDQ_I_DI (SHIFTACC, usra_n, 0) ++ BUILTIN_VSDQ_I_DI (USHIFTACC, usra_n, 0) + BUILTIN_VSDQ_I_DI (SHIFTACC, srsra_n, 0) +- BUILTIN_VSDQ_I_DI (SHIFTACC, ursra_n, 0) ++ BUILTIN_VSDQ_I_DI (USHIFTACC, ursra_n, 0) + /* Implemented by aarch64_shll_n. */ + BUILTIN_VDW (SHIFTIMM, sshll_n, 0) +- BUILTIN_VDW (SHIFTIMM, ushll_n, 0) ++ BUILTIN_VDW (USHIFTIMM, ushll_n, 0) + /* Implemented by aarch64_shll2_n. */ + BUILTIN_VQW (SHIFTIMM, sshll2_n, 0) + BUILTIN_VQW (SHIFTIMM, ushll2_n, 0) +@@ -212,42 +233,30 @@ + BUILTIN_VSQN_HSDI (SHIFTIMM, sqshrun_n, 0) + BUILTIN_VSQN_HSDI (SHIFTIMM, sqrshrun_n, 0) + BUILTIN_VSQN_HSDI (SHIFTIMM, sqshrn_n, 0) +- BUILTIN_VSQN_HSDI (SHIFTIMM, uqshrn_n, 0) ++ BUILTIN_VSQN_HSDI (USHIFTIMM, uqshrn_n, 0) + BUILTIN_VSQN_HSDI (SHIFTIMM, sqrshrn_n, 0) +- BUILTIN_VSQN_HSDI (SHIFTIMM, uqrshrn_n, 0) ++ BUILTIN_VSQN_HSDI (USHIFTIMM, uqrshrn_n, 0) + /* Implemented by aarch64_si_n. */ + BUILTIN_VSDQ_I_DI (SHIFTINSERT, ssri_n, 0) +- BUILTIN_VSDQ_I_DI (SHIFTINSERT, usri_n, 0) ++ BUILTIN_VSDQ_I_DI (USHIFTACC, usri_n, 0) + BUILTIN_VSDQ_I_DI (SHIFTINSERT, ssli_n, 0) +- BUILTIN_VSDQ_I_DI (SHIFTINSERT, usli_n, 0) ++ BUILTIN_VSDQ_I_DI (USHIFTACC, usli_n, 0) + /* Implemented by aarch64_qshl_n. */ +- BUILTIN_VSDQ_I (SHIFTIMM, sqshlu_n, 0) ++ BUILTIN_VSDQ_I (SHIFTIMM_USS, sqshlu_n, 0) + BUILTIN_VSDQ_I (SHIFTIMM, sqshl_n, 0) +- BUILTIN_VSDQ_I (SHIFTIMM, uqshl_n, 0) ++ BUILTIN_VSDQ_I (USHIFTIMM, uqshl_n, 0) + +- /* Implemented by aarch64_cm. */ +- BUILTIN_VALLDI (BINOP, cmeq, 0) +- BUILTIN_VALLDI (BINOP, cmge, 0) +- BUILTIN_VALLDI (BINOP, cmgt, 0) +- BUILTIN_VALLDI (BINOP, cmle, 0) +- BUILTIN_VALLDI (BINOP, cmlt, 0) +- /* Implemented by aarch64_cm. */ +- BUILTIN_VSDQ_I_DI (BINOP, cmgeu, 0) +- BUILTIN_VSDQ_I_DI (BINOP, cmgtu, 0) +- BUILTIN_VSDQ_I_DI (BINOP, cmtst, 0) ++ /* Implemented by aarch64_reduc_plus_. */ ++ BUILTIN_VALL (UNOP, reduc_plus_scal_, 10) + +- /* Implemented by reduc_plus_. */ +- BUILTIN_VALL (UNOP, reduc_splus_, 10) +- BUILTIN_VDQ (UNOP, reduc_uplus_, 10) ++ /* Implemented by reduc__scal_ (producing scalar). */ ++ BUILTIN_VDQIF (UNOP, reduc_smax_scal_, 10) ++ BUILTIN_VDQIF (UNOP, reduc_smin_scal_, 10) ++ BUILTIN_VDQ_BHSI (UNOPU, reduc_umax_scal_, 10) ++ BUILTIN_VDQ_BHSI (UNOPU, reduc_umin_scal_, 10) ++ BUILTIN_VDQF (UNOP, reduc_smax_nan_scal_, 10) ++ BUILTIN_VDQF (UNOP, reduc_smin_nan_scal_, 10) + +- /* Implemented by reduc__. */ +- BUILTIN_VDQIF (UNOP, reduc_smax_, 10) +- BUILTIN_VDQIF (UNOP, reduc_smin_, 10) +- BUILTIN_VDQ_BHSI (UNOP, reduc_umax_, 10) +- BUILTIN_VDQ_BHSI (UNOP, reduc_umin_, 10) +- BUILTIN_VDQF (UNOP, reduc_smax_nan_, 10) +- BUILTIN_VDQF (UNOP, reduc_smin_nan_, 10) +- + /* Implemented by 3. + smax variants map to fmaxnm, + smax_nan variants map to fmax. */ +@@ -265,7 +274,7 @@ + BUILTIN_VDQF (UNOP, nearbyint, 2) + BUILTIN_VDQF (UNOP, rint, 2) + BUILTIN_VDQF (UNOP, round, 2) +- BUILTIN_VDQF (UNOP, frintn, 2) ++ BUILTIN_VDQF_DF (UNOP, frintn, 2) + + /* Implemented by l2. */ + VAR1 (UNOP, lbtruncv2sf, 2, v2si) +@@ -330,6 +339,10 @@ + VAR1 (UNOP, floatunsv4si, 2, v4sf) + VAR1 (UNOP, floatunsv2di, 2, v2df) + ++ VAR5 (UNOPU, bswap, 10, v4hi, v8hi, v2si, v4si, v2di) ++ ++ BUILTIN_VB (UNOP, rbit, 0) ++ + /* Implemented by + aarch64_. */ + BUILTIN_VALL (BINOP, zip1, 0) +@@ -393,3 +406,6 @@ + /* Implemented by aarch64_crypto_pmull. */ + VAR1 (BINOPP, crypto_pmull, 0, di) + VAR1 (BINOPP, crypto_pmull, 0, v2di) ++ ++ /* Meta-op to check lane bounds of immediate in aarch64_expand_builtin. */ ++ VAR1 (BINOPV, im_lane_bound, 0, si) +--- a/src/gcc/config/aarch64/constraints.md ++++ b/src/gcc/config/aarch64/constraints.md +@@ -21,6 +21,9 @@ + (define_register_constraint "k" "STACK_REG" + "@internal The stack register.") + ++(define_register_constraint "Ucs" "CALLER_SAVE_REGS" ++ "@internal The caller save registers.") ++ + (define_register_constraint "w" "FP_REGS" + "Floating point and SIMD vector registers.") + +@@ -92,6 +95,10 @@ + (and (match_code "const_int") + (match_test "(unsigned HOST_WIDE_INT) ival < 64"))) + ++(define_constraint "Usf" ++ "@internal Usf is a symbol reference." ++ (match_code "symbol_ref")) ++ + (define_constraint "UsM" + "@internal + A constraint that matches the immediate constant -1." +--- a/src/gcc/config/aarch64/aarch64.c ++++ b/src/gcc/config/aarch64/aarch64.c +@@ -62,7 +62,10 @@ + #include "dwarf2.h" + #include "cfgloop.h" + #include "tree-vectorizer.h" +-#include "config/arm/aarch-cost-tables.h" ++#include "aarch64-cost-tables.h" ++#include "dumpfile.h" ++#include "tm-constrs.h" ++#include "sched-int.h" + + /* Defined for convenience. */ + #define POINTER_BYTES (POINTER_SIZE / BITS_PER_UNIT) +@@ -136,12 +139,13 @@ + static void aarch64_override_options_after_change (void); + static bool aarch64_vector_mode_supported_p (enum machine_mode); + static unsigned bit_count (unsigned HOST_WIDE_INT); +-static bool aarch64_const_vec_all_same_int_p (rtx, +- HOST_WIDE_INT, HOST_WIDE_INT); +- + static bool aarch64_vectorize_vec_perm_const_ok (enum machine_mode vmode, + const unsigned char *sel); ++static int aarch64_address_cost (rtx, enum machine_mode, addr_space_t, bool); + ++/* Major revision number of the ARM Architecture implemented by the target. */ ++unsigned aarch64_architecture_version; ++ + /* The processor for which instructions should be scheduled. */ + enum aarch64_processor aarch64_tune = cortexa53; + +@@ -171,6 +175,15 @@ + #endif + static const struct cpu_addrcost_table generic_addrcost_table = + { ++#if HAVE_DESIGNATED_INITIALIZERS ++ .addr_scale_costs = ++#endif ++ { ++ NAMED_PARAM (hi, 0), ++ NAMED_PARAM (si, 0), ++ NAMED_PARAM (di, 0), ++ NAMED_PARAM (ti, 0), ++ }, + NAMED_PARAM (pre_modify, 0), + NAMED_PARAM (post_modify, 0), + NAMED_PARAM (register_offset, 0), +@@ -181,17 +194,96 @@ + #if HAVE_DESIGNATED_INITIALIZERS && GCC_VERSION >= 2007 + __extension__ + #endif ++static const struct cpu_addrcost_table cortexa57_addrcost_table = ++{ ++#if HAVE_DESIGNATED_INITIALIZERS ++ .addr_scale_costs = ++#endif ++ { ++ NAMED_PARAM (hi, 1), ++ NAMED_PARAM (si, 0), ++ NAMED_PARAM (di, 0), ++ NAMED_PARAM (ti, 1), ++ }, ++ NAMED_PARAM (pre_modify, 0), ++ NAMED_PARAM (post_modify, 0), ++ NAMED_PARAM (register_offset, 0), ++ NAMED_PARAM (register_extend, 0), ++ NAMED_PARAM (imm_offset, 0), ++}; ++ ++#if HAVE_DESIGNATED_INITIALIZERS && GCC_VERSION >= 2007 ++__extension__ ++#endif ++static const struct cpu_addrcost_table xgene1_addrcost_table = ++{ ++#if HAVE_DESIGNATED_INITIALIZERS ++ .addr_scale_costs = ++#endif ++ { ++ NAMED_PARAM (hi, 1), ++ NAMED_PARAM (si, 0), ++ NAMED_PARAM (di, 0), ++ NAMED_PARAM (ti, 1), ++ }, ++ NAMED_PARAM (pre_modify, 1), ++ NAMED_PARAM (post_modify, 0), ++ NAMED_PARAM (register_offset, 0), ++ NAMED_PARAM (register_extend, 1), ++ NAMED_PARAM (imm_offset, 0), ++}; ++ ++#if HAVE_DESIGNATED_INITIALIZERS && GCC_VERSION >= 2007 ++__extension__ ++#endif + static const struct cpu_regmove_cost generic_regmove_cost = + { + NAMED_PARAM (GP2GP, 1), ++ /* Avoid the use of slow int<->fp moves for spilling by setting ++ their cost higher than memmov_cost. */ ++ NAMED_PARAM (GP2FP, 5), ++ NAMED_PARAM (FP2GP, 5), ++ NAMED_PARAM (FP2FP, 2) ++}; ++ ++static const struct cpu_regmove_cost cortexa57_regmove_cost = ++{ ++ NAMED_PARAM (GP2GP, 1), ++ /* Avoid the use of slow int<->fp moves for spilling by setting ++ their cost higher than memmov_cost. */ ++ NAMED_PARAM (GP2FP, 5), ++ NAMED_PARAM (FP2GP, 5), ++ NAMED_PARAM (FP2FP, 2) ++}; ++ ++static const struct cpu_regmove_cost cortexa53_regmove_cost = ++{ ++ NAMED_PARAM (GP2GP, 1), ++ /* Avoid the use of slow int<->fp moves for spilling by setting ++ their cost higher than memmov_cost. */ ++ NAMED_PARAM (GP2FP, 5), ++ NAMED_PARAM (FP2GP, 5), ++ NAMED_PARAM (FP2FP, 2) ++}; ++ ++static const struct cpu_regmove_cost thunderx_regmove_cost = ++{ ++ NAMED_PARAM (GP2GP, 2), + NAMED_PARAM (GP2FP, 2), +- NAMED_PARAM (FP2GP, 2), +- /* We currently do not provide direct support for TFmode Q->Q move. +- Therefore we need to raise the cost above 2 in order to have +- reload handle the situation. */ ++ NAMED_PARAM (FP2GP, 6), + NAMED_PARAM (FP2FP, 4) + }; + ++static const struct cpu_regmove_cost xgene1_regmove_cost = ++{ ++ NAMED_PARAM (GP2GP, 1), ++ /* Avoid the use of slow int<->fp moves for spilling by setting ++ their cost higher than memmov_cost. */ ++ NAMED_PARAM (GP2FP, 8), ++ NAMED_PARAM (FP2GP, 8), ++ NAMED_PARAM (FP2FP, 2) ++}; ++ + /* Generic costs for vector insn classes. */ + #if HAVE_DESIGNATED_INITIALIZERS && GCC_VERSION >= 2007 + __extension__ +@@ -212,9 +304,56 @@ + NAMED_PARAM (cond_not_taken_branch_cost, 1) + }; + ++/* Generic costs for vector insn classes. */ + #if HAVE_DESIGNATED_INITIALIZERS && GCC_VERSION >= 2007 + __extension__ + #endif ++static const struct cpu_vector_cost cortexa57_vector_cost = ++{ ++ NAMED_PARAM (scalar_stmt_cost, 1), ++ NAMED_PARAM (scalar_load_cost, 4), ++ NAMED_PARAM (scalar_store_cost, 1), ++ NAMED_PARAM (vec_stmt_cost, 3), ++ NAMED_PARAM (vec_to_scalar_cost, 8), ++ NAMED_PARAM (scalar_to_vec_cost, 8), ++ NAMED_PARAM (vec_align_load_cost, 5), ++ NAMED_PARAM (vec_unalign_load_cost, 5), ++ NAMED_PARAM (vec_unalign_store_cost, 1), ++ NAMED_PARAM (vec_store_cost, 1), ++ NAMED_PARAM (cond_taken_branch_cost, 1), ++ NAMED_PARAM (cond_not_taken_branch_cost, 1) ++}; ++ ++/* Generic costs for vector insn classes. */ ++#if HAVE_DESIGNATED_INITIALIZERS && GCC_VERSION >= 2007 ++__extension__ ++#endif ++static const struct cpu_vector_cost xgene1_vector_cost = ++{ ++ NAMED_PARAM (scalar_stmt_cost, 1), ++ NAMED_PARAM (scalar_load_cost, 5), ++ NAMED_PARAM (scalar_store_cost, 1), ++ NAMED_PARAM (vec_stmt_cost, 2), ++ NAMED_PARAM (vec_to_scalar_cost, 4), ++ NAMED_PARAM (scalar_to_vec_cost, 4), ++ NAMED_PARAM (vec_align_load_cost, 10), ++ NAMED_PARAM (vec_unalign_load_cost, 10), ++ NAMED_PARAM (vec_unalign_store_cost, 2), ++ NAMED_PARAM (vec_store_cost, 2), ++ NAMED_PARAM (cond_taken_branch_cost, 2), ++ NAMED_PARAM (cond_not_taken_branch_cost, 1) ++}; ++ ++#define AARCH64_FUSE_NOTHING (0) ++#define AARCH64_FUSE_MOV_MOVK (1 << 0) ++#define AARCH64_FUSE_ADRP_ADD (1 << 1) ++#define AARCH64_FUSE_MOVK_MOVK (1 << 2) ++#define AARCH64_FUSE_ADRP_LDR (1 << 3) ++#define AARCH64_FUSE_CMP_BRANCH (1 << 4) ++ ++#if HAVE_DESIGNATED_INITIALIZERS && GCC_VERSION >= 2007 ++__extension__ ++#endif + static const struct tune_params generic_tunings = + { + &cortexa57_extra_costs, +@@ -222,7 +361,11 @@ + &generic_regmove_cost, + &generic_vector_cost, + NAMED_PARAM (memmov_cost, 4), +- NAMED_PARAM (issue_rate, 2) ++ NAMED_PARAM (issue_rate, 2), ++ NAMED_PARAM (fuseable_ops, AARCH64_FUSE_NOTHING), ++ 2, /* int_reassoc_width. */ ++ 4, /* fp_reassoc_width. */ ++ 1 /* vec_reassoc_width. */ + }; + + static const struct tune_params cortexa53_tunings = +@@ -229,22 +372,59 @@ + { + &cortexa53_extra_costs, + &generic_addrcost_table, +- &generic_regmove_cost, ++ &cortexa53_regmove_cost, + &generic_vector_cost, + NAMED_PARAM (memmov_cost, 4), +- NAMED_PARAM (issue_rate, 2) ++ NAMED_PARAM (issue_rate, 2), ++ NAMED_PARAM (fuseable_ops, (AARCH64_FUSE_MOV_MOVK | AARCH64_FUSE_ADRP_ADD ++ | AARCH64_FUSE_MOVK_MOVK | AARCH64_FUSE_ADRP_LDR)), ++ 2, /* int_reassoc_width. */ ++ 4, /* fp_reassoc_width. */ ++ 1 /* vec_reassoc_width. */ + }; + + static const struct tune_params cortexa57_tunings = + { + &cortexa57_extra_costs, ++ &cortexa57_addrcost_table, ++ &cortexa57_regmove_cost, ++ &cortexa57_vector_cost, ++ NAMED_PARAM (memmov_cost, 4), ++ NAMED_PARAM (issue_rate, 3), ++ NAMED_PARAM (fuseable_ops, (AARCH64_FUSE_MOV_MOVK | AARCH64_FUSE_ADRP_ADD | AARCH64_FUSE_MOVK_MOVK)), ++ 2, /* int_reassoc_width. */ ++ 4, /* fp_reassoc_width. */ ++ 1 /* vec_reassoc_width. */ ++}; ++ ++static const struct tune_params thunderx_tunings = ++{ ++ &thunderx_extra_costs, + &generic_addrcost_table, +- &generic_regmove_cost, ++ &thunderx_regmove_cost, + &generic_vector_cost, +- NAMED_PARAM (memmov_cost, 4), +- NAMED_PARAM (issue_rate, 3) ++ NAMED_PARAM (memmov_cost, 6), ++ NAMED_PARAM (issue_rate, 2), ++ NAMED_PARAM (fuseable_ops, AARCH64_FUSE_CMP_BRANCH), ++ 2, /* int_reassoc_width. */ ++ 4, /* fp_reassoc_width. */ ++ 1 /* vec_reassoc_width. */ + }; + ++static const struct tune_params xgene1_tunings = ++{ ++ &xgene1_extra_costs, ++ &xgene1_addrcost_table, ++ &xgene1_regmove_cost, ++ &xgene1_vector_cost, ++ NAMED_PARAM (memmov_cost, 6), ++ NAMED_PARAM (issue_rate, 4), ++ NAMED_PARAM (fuseable_ops, AARCH64_FUSE_NOTHING), ++ 2, /* int_reassoc_width. */ ++ 4, /* fp_reassoc_width. */ ++ 1 /* vec_reassoc_width. */ ++}; ++ + /* A processor implementing AArch64. */ + struct processor + { +@@ -251,6 +431,7 @@ + const char *const name; + enum aarch64_processor core; + const char *arch; ++ unsigned architecture_version; + const unsigned long flags; + const struct tune_params *const tune; + }; +@@ -258,12 +439,12 @@ + /* Processor cores implementing AArch64. */ + static const struct processor all_cores[] = + { +-#define AARCH64_CORE(NAME, X, IDENT, ARCH, FLAGS, COSTS) \ +- {NAME, IDENT, #ARCH, FLAGS | AARCH64_FL_FOR_ARCH##ARCH, &COSTS##_tunings}, ++#define AARCH64_CORE(NAME, IDENT, SCHED, ARCH, FLAGS, COSTS) \ ++ {NAME, SCHED, #ARCH, ARCH, FLAGS, &COSTS##_tunings}, + #include "aarch64-cores.def" + #undef AARCH64_CORE +- {"generic", cortexa53, "8", AARCH64_FL_FPSIMD | AARCH64_FL_FOR_ARCH8, &generic_tunings}, +- {NULL, aarch64_none, NULL, 0, NULL} ++ {"generic", cortexa53, "8", 8, AARCH64_FL_FOR_ARCH8, &generic_tunings}, ++ {NULL, aarch64_none, NULL, 0, 0, NULL} + }; + + /* Architectures implementing AArch64. */ +@@ -270,10 +451,10 @@ + static const struct processor all_architectures[] = + { + #define AARCH64_ARCH(NAME, CORE, ARCH, FLAGS) \ +- {NAME, CORE, #ARCH, FLAGS, NULL}, ++ {NAME, CORE, #ARCH, ARCH, FLAGS, NULL}, + #include "aarch64-arches.def" + #undef AARCH64_ARCH +- {NULL, aarch64_none, NULL, 0, NULL} ++ {NULL, aarch64_none, NULL, 0, 0, NULL} + }; + + /* Target specification. These are populated as commandline arguments +@@ -332,6 +513,25 @@ + "hi", "ls", "ge", "lt", "gt", "le", "al", "nv" + }; + ++static unsigned int ++aarch64_min_divisions_for_recip_mul (enum machine_mode mode ATTRIBUTE_UNUSED) ++{ ++ return 2; ++} ++ ++static int ++aarch64_reassociation_width (unsigned opc ATTRIBUTE_UNUSED, ++ enum machine_mode mode) ++{ ++ if (VECTOR_MODE_P (mode)) ++ return aarch64_tune_params->vec_reassoc_width; ++ if (INTEGRAL_MODE_P (mode)) ++ return aarch64_tune_params->int_reassoc_width; ++ if (FLOAT_MODE_P (mode)) ++ return aarch64_tune_params->fp_reassoc_width; ++ return 1; ++} ++ + /* Provide a mapping from gcc register numbers to dwarf register numbers. */ + unsigned + aarch64_dbx_register_number (unsigned regno) +@@ -424,6 +624,24 @@ + return 0; + } + ++/* Implement HARD_REGNO_CALLER_SAVE_MODE. */ ++enum machine_mode ++aarch64_hard_regno_caller_save_mode (unsigned regno, unsigned nregs, ++ enum machine_mode mode) ++{ ++ /* Handle modes that fit within single registers. */ ++ if (nregs == 1 && GET_MODE_SIZE (mode) <= 16) ++ { ++ if (GET_MODE_SIZE (mode) >= 4) ++ return mode; ++ else ++ return SImode; ++ } ++ /* Fall back to generic for multi-reg and very large modes. */ ++ else ++ return choose_hard_reg_mode (regno, nregs, false); ++} ++ + /* Return true if calls to DECL should be treated as + long-calls (ie called via a register). */ + static bool +@@ -444,7 +662,7 @@ + represent an expression that matches an extend operation. The + operands represent the paramters from + +- (extract (mult (reg) (mult_imm)) (extract_imm) (const_int 0)). */ ++ (extract:MODE (mult (reg) (MULT_IMM)) (EXTRACT_IMM) (const_int 0)). */ + bool + aarch64_is_extend_from_extract (enum machine_mode mode, rtx mult_imm, + rtx extract_imm) +@@ -636,12 +854,24 @@ + + case SYMBOL_SMALL_TLSDESC: + { +- rtx x0 = gen_rtx_REG (Pmode, R0_REGNUM); ++ enum machine_mode mode = GET_MODE (dest); ++ rtx x0 = gen_rtx_REG (mode, R0_REGNUM); + rtx tp; + +- emit_insn (gen_tlsdesc_small (imm)); ++ gcc_assert (mode == Pmode || mode == ptr_mode); ++ ++ /* In ILP32, the got entry is always of SImode size. Unlike ++ small GOT, the dest is fixed at reg 0. */ ++ if (TARGET_ILP32) ++ emit_insn (gen_tlsdesc_small_si (imm)); ++ else ++ emit_insn (gen_tlsdesc_small_di (imm)); + tp = aarch64_load_tp (NULL); +- emit_insn (gen_rtx_SET (Pmode, dest, gen_rtx_PLUS (Pmode, tp, x0))); ++ ++ if (mode != Pmode) ++ tp = gen_lowpart (mode, tp); ++ ++ emit_insn (gen_rtx_SET (mode, dest, gen_rtx_PLUS (mode, tp, x0))); + set_unique_reg_note (get_last_insn (), REG_EQUIV, imm); + return; + } +@@ -648,10 +878,34 @@ + + case SYMBOL_SMALL_GOTTPREL: + { +- rtx tmp_reg = gen_reg_rtx (Pmode); ++ /* In ILP32, the mode of dest can be either SImode or DImode, ++ while the got entry is always of SImode size. The mode of ++ dest depends on how dest is used: if dest is assigned to a ++ pointer (e.g. in the memory), it has SImode; it may have ++ DImode if dest is dereferenced to access the memeory. ++ This is why we have to handle three different tlsie_small ++ patterns here (two patterns for ILP32). */ ++ enum machine_mode mode = GET_MODE (dest); ++ rtx tmp_reg = gen_reg_rtx (mode); + rtx tp = aarch64_load_tp (NULL); +- emit_insn (gen_tlsie_small (tmp_reg, imm)); +- emit_insn (gen_rtx_SET (Pmode, dest, gen_rtx_PLUS (Pmode, tp, tmp_reg))); ++ ++ if (mode == ptr_mode) ++ { ++ if (mode == DImode) ++ emit_insn (gen_tlsie_small_di (tmp_reg, imm)); ++ else ++ { ++ emit_insn (gen_tlsie_small_si (tmp_reg, imm)); ++ tp = gen_lowpart (mode, tp); ++ } ++ } ++ else ++ { ++ gcc_assert (mode == Pmode); ++ emit_insn (gen_tlsie_small_sidi (tmp_reg, imm)); ++ } ++ ++ emit_insn (gen_rtx_SET (mode, dest, gen_rtx_PLUS (mode, tp, tmp_reg))); + set_unique_reg_note (get_last_insn (), REG_EQUIV, imm); + return; + } +@@ -893,10 +1147,10 @@ + return plus_constant (mode, reg, offset); + } + +-void +-aarch64_expand_mov_immediate (rtx dest, rtx imm) ++static int ++aarch64_internal_mov_immediate (rtx dest, rtx imm, bool generate, ++ machine_mode mode) + { +- enum machine_mode mode = GET_MODE (dest); + unsigned HOST_WIDE_INT mask; + int i; + bool first; +@@ -903,86 +1157,15 @@ + unsigned HOST_WIDE_INT val; + bool subtargets; + rtx subtarget; +- int one_match, zero_match; ++ int one_match, zero_match, first_not_ffff_match; ++ int num_insns = 0; + +- gcc_assert (mode == SImode || mode == DImode); +- +- /* Check on what type of symbol it is. */ +- if (GET_CODE (imm) == SYMBOL_REF +- || GET_CODE (imm) == LABEL_REF +- || GET_CODE (imm) == CONST) +- { +- rtx mem, base, offset; +- enum aarch64_symbol_type sty; +- +- /* If we have (const (plus symbol offset)), separate out the offset +- before we start classifying the symbol. */ +- split_const (imm, &base, &offset); +- +- sty = aarch64_classify_symbol (base, SYMBOL_CONTEXT_ADR); +- switch (sty) +- { +- case SYMBOL_FORCE_TO_MEM: +- if (offset != const0_rtx +- && targetm.cannot_force_const_mem (mode, imm)) +- { +- gcc_assert (can_create_pseudo_p ()); +- base = aarch64_force_temporary (mode, dest, base); +- base = aarch64_add_offset (mode, NULL, base, INTVAL (offset)); +- aarch64_emit_move (dest, base); +- return; +- } +- mem = force_const_mem (ptr_mode, imm); +- gcc_assert (mem); +- if (mode != ptr_mode) +- mem = gen_rtx_ZERO_EXTEND (mode, mem); +- emit_insn (gen_rtx_SET (VOIDmode, dest, mem)); +- return; +- +- case SYMBOL_SMALL_TLSGD: +- case SYMBOL_SMALL_TLSDESC: +- case SYMBOL_SMALL_GOTTPREL: +- case SYMBOL_SMALL_GOT: +- case SYMBOL_TINY_GOT: +- if (offset != const0_rtx) +- { +- gcc_assert(can_create_pseudo_p ()); +- base = aarch64_force_temporary (mode, dest, base); +- base = aarch64_add_offset (mode, NULL, base, INTVAL (offset)); +- aarch64_emit_move (dest, base); +- return; +- } +- /* FALLTHRU */ +- +- case SYMBOL_SMALL_TPREL: +- case SYMBOL_SMALL_ABSOLUTE: +- case SYMBOL_TINY_ABSOLUTE: +- aarch64_load_symref_appropriately (dest, imm, sty); +- return; +- +- default: +- gcc_unreachable (); +- } +- } +- + if (CONST_INT_P (imm) && aarch64_move_imm (INTVAL (imm), mode)) + { +- emit_insn (gen_rtx_SET (VOIDmode, dest, imm)); +- return; +- } +- +- if (!CONST_INT_P (imm)) +- { +- if (GET_CODE (imm) == HIGH) ++ if (generate) + emit_insn (gen_rtx_SET (VOIDmode, dest, imm)); +- else +- { +- rtx mem = force_const_mem (mode, imm); +- gcc_assert (mem); +- emit_insn (gen_rtx_SET (VOIDmode, dest, mem)); +- } +- +- return; ++ num_insns++; ++ return num_insns; + } + + if (mode == SImode) +@@ -990,10 +1173,15 @@ + /* We know we can't do this in 1 insn, and we must be able to do it + in two; so don't mess around looking for sequences that don't buy + us anything. */ +- emit_insn (gen_rtx_SET (VOIDmode, dest, GEN_INT (INTVAL (imm) & 0xffff))); +- emit_insn (gen_insv_immsi (dest, GEN_INT (16), +- GEN_INT ((INTVAL (imm) >> 16) & 0xffff))); +- return; ++ if (generate) ++ { ++ emit_insn (gen_rtx_SET (VOIDmode, dest, ++ GEN_INT (INTVAL (imm) & 0xffff))); ++ emit_insn (gen_insv_immsi (dest, GEN_INT (16), ++ GEN_INT ((INTVAL (imm) >> 16) & 0xffff))); ++ } ++ num_insns += 2; ++ return num_insns; + } + + /* Remaining cases are all for DImode. */ +@@ -1004,29 +1192,34 @@ + one_match = 0; + zero_match = 0; + mask = 0xffff; ++ first_not_ffff_match = -1; + + for (i = 0; i < 64; i += 16, mask <<= 16) + { +- if ((val & mask) == 0) +- zero_match++; +- else if ((val & mask) == mask) ++ if ((val & mask) == mask) + one_match++; ++ else ++ { ++ if (first_not_ffff_match < 0) ++ first_not_ffff_match = i; ++ if ((val & mask) == 0) ++ zero_match++; ++ } + } + + if (one_match == 2) + { +- mask = 0xffff; +- for (i = 0; i < 64; i += 16, mask <<= 16) ++ /* Set one of the quarters and then insert back into result. */ ++ mask = 0xffffll << first_not_ffff_match; ++ if (generate) + { +- if ((val & mask) != mask) +- { +- emit_insn (gen_rtx_SET (VOIDmode, dest, GEN_INT (val | mask))); +- emit_insn (gen_insv_immdi (dest, GEN_INT (i), +- GEN_INT ((val >> i) & 0xffff))); +- return; +- } ++ emit_insn (gen_rtx_SET (VOIDmode, dest, GEN_INT (val | mask))); ++ emit_insn (gen_insv_immdi (dest, GEN_INT (first_not_ffff_match), ++ GEN_INT ((val >> first_not_ffff_match) ++ & 0xffff))); + } +- gcc_unreachable (); ++ num_insns += 2; ++ return num_insns; + } + + if (zero_match == 2) +@@ -1039,42 +1232,55 @@ + + if (aarch64_uimm12_shift (val - (val & mask))) + { +- subtarget = subtargets ? gen_reg_rtx (DImode) : dest; +- +- emit_insn (gen_rtx_SET (VOIDmode, subtarget, GEN_INT (val & mask))); +- emit_insn (gen_adddi3 (dest, subtarget, +- GEN_INT (val - (val & mask)))); +- return; ++ if (generate) ++ { ++ subtarget = subtargets ? gen_reg_rtx (DImode) : dest; ++ emit_insn (gen_rtx_SET (VOIDmode, subtarget, ++ GEN_INT (val & mask))); ++ emit_insn (gen_adddi3 (dest, subtarget, ++ GEN_INT (val - (val & mask)))); ++ } ++ num_insns += 2; ++ return num_insns; + } + else if (aarch64_uimm12_shift (-(val - ((val + comp) & mask)))) + { +- subtarget = subtargets ? gen_reg_rtx (DImode) : dest; +- +- emit_insn (gen_rtx_SET (VOIDmode, subtarget, +- GEN_INT ((val + comp) & mask))); +- emit_insn (gen_adddi3 (dest, subtarget, +- GEN_INT (val - ((val + comp) & mask)))); +- return; ++ if (generate) ++ { ++ subtarget = subtargets ? gen_reg_rtx (DImode) : dest; ++ emit_insn (gen_rtx_SET (VOIDmode, subtarget, ++ GEN_INT ((val + comp) & mask))); ++ emit_insn (gen_adddi3 (dest, subtarget, ++ GEN_INT (val - ((val + comp) & mask)))); ++ } ++ num_insns += 2; ++ return num_insns; + } + else if (aarch64_uimm12_shift (val - ((val - comp) | ~mask))) + { +- subtarget = subtargets ? gen_reg_rtx (DImode) : dest; +- +- emit_insn (gen_rtx_SET (VOIDmode, subtarget, +- GEN_INT ((val - comp) | ~mask))); +- emit_insn (gen_adddi3 (dest, subtarget, +- GEN_INT (val - ((val - comp) | ~mask)))); +- return; ++ if (generate) ++ { ++ subtarget = subtargets ? gen_reg_rtx (DImode) : dest; ++ emit_insn (gen_rtx_SET (VOIDmode, subtarget, ++ GEN_INT ((val - comp) | ~mask))); ++ emit_insn (gen_adddi3 (dest, subtarget, ++ GEN_INT (val - ((val - comp) | ~mask)))); ++ } ++ num_insns += 2; ++ return num_insns; + } + else if (aarch64_uimm12_shift (-(val - (val | ~mask)))) + { +- subtarget = subtargets ? gen_reg_rtx (DImode) : dest; +- +- emit_insn (gen_rtx_SET (VOIDmode, subtarget, +- GEN_INT (val | ~mask))); +- emit_insn (gen_adddi3 (dest, subtarget, +- GEN_INT (val - (val | ~mask)))); +- return; ++ if (generate) ++ { ++ subtarget = subtargets ? gen_reg_rtx (DImode) : dest; ++ emit_insn (gen_rtx_SET (VOIDmode, subtarget, ++ GEN_INT (val | ~mask))); ++ emit_insn (gen_adddi3 (dest, subtarget, ++ GEN_INT (val - (val | ~mask)))); ++ } ++ num_insns += 2; ++ return num_insns; + } + } + +@@ -1088,12 +1294,16 @@ + if (aarch64_uimm12_shift (val - aarch64_bitmasks[i]) + || aarch64_uimm12_shift (-val + aarch64_bitmasks[i])) + { +- subtarget = subtargets ? gen_reg_rtx (DImode) : dest; +- emit_insn (gen_rtx_SET (VOIDmode, subtarget, +- GEN_INT (aarch64_bitmasks[i]))); +- emit_insn (gen_adddi3 (dest, subtarget, +- GEN_INT (val - aarch64_bitmasks[i]))); +- return; ++ if (generate) ++ { ++ subtarget = subtargets ? gen_reg_rtx (DImode) : dest; ++ emit_insn (gen_rtx_SET (VOIDmode, subtarget, ++ GEN_INT (aarch64_bitmasks[i]))); ++ emit_insn (gen_adddi3 (dest, subtarget, ++ GEN_INT (val - aarch64_bitmasks[i]))); ++ } ++ num_insns += 2; ++ return num_insns; + } + + for (j = 0; j < 64; j += 16, mask <<= 16) +@@ -1100,11 +1310,15 @@ + { + if ((aarch64_bitmasks[i] & ~mask) == (val & ~mask)) + { +- emit_insn (gen_rtx_SET (VOIDmode, dest, +- GEN_INT (aarch64_bitmasks[i]))); +- emit_insn (gen_insv_immdi (dest, GEN_INT (j), +- GEN_INT ((val >> j) & 0xffff))); +- return; ++ if (generate) ++ { ++ emit_insn (gen_rtx_SET (VOIDmode, dest, ++ GEN_INT (aarch64_bitmasks[i]))); ++ emit_insn (gen_insv_immdi (dest, GEN_INT (j), ++ GEN_INT ((val >> j) & 0xffff))); ++ } ++ num_insns += 2; ++ return num_insns; + } + } + } +@@ -1119,12 +1333,16 @@ + for (j = i + 1; j < AARCH64_NUM_BITMASKS; j++) + if (val == (aarch64_bitmasks[i] | aarch64_bitmasks[j])) + { +- subtarget = subtargets ? gen_reg_rtx (mode) : dest; +- emit_insn (gen_rtx_SET (VOIDmode, subtarget, +- GEN_INT (aarch64_bitmasks[i]))); +- emit_insn (gen_iordi3 (dest, subtarget, +- GEN_INT (aarch64_bitmasks[j]))); +- return; ++ if (generate) ++ { ++ subtarget = subtargets ? gen_reg_rtx (mode) : dest; ++ emit_insn (gen_rtx_SET (VOIDmode, subtarget, ++ GEN_INT (aarch64_bitmasks[i]))); ++ emit_insn (gen_iordi3 (dest, subtarget, ++ GEN_INT (aarch64_bitmasks[j]))); ++ } ++ num_insns += 2; ++ return num_insns; + } + } + else if ((val & aarch64_bitmasks[i]) == val) +@@ -1134,17 +1352,44 @@ + for (j = i + 1; j < AARCH64_NUM_BITMASKS; j++) + if (val == (aarch64_bitmasks[j] & aarch64_bitmasks[i])) + { +- +- subtarget = subtargets ? gen_reg_rtx (mode) : dest; +- emit_insn (gen_rtx_SET (VOIDmode, subtarget, +- GEN_INT (aarch64_bitmasks[j]))); +- emit_insn (gen_anddi3 (dest, subtarget, +- GEN_INT (aarch64_bitmasks[i]))); +- return; ++ if (generate) ++ { ++ subtarget = subtargets ? gen_reg_rtx (mode) : dest; ++ emit_insn (gen_rtx_SET (VOIDmode, subtarget, ++ GEN_INT (aarch64_bitmasks[j]))); ++ emit_insn (gen_anddi3 (dest, subtarget, ++ GEN_INT (aarch64_bitmasks[i]))); ++ } ++ num_insns += 2; ++ return num_insns; + } + } + } + ++ if (one_match > zero_match) ++ { ++ /* Set either first three quarters or all but the third. */ ++ mask = 0xffffll << (16 - first_not_ffff_match); ++ if (generate) ++ emit_insn (gen_rtx_SET (VOIDmode, dest, ++ GEN_INT (val | mask | 0xffffffff00000000ull))); ++ num_insns ++; ++ ++ /* Now insert other two quarters. */ ++ for (i = first_not_ffff_match + 16, mask <<= (first_not_ffff_match << 1); ++ i < 64; i += 16, mask <<= 16) ++ { ++ if ((val & mask) != mask) ++ { ++ if (generate) ++ emit_insn (gen_insv_immdi (dest, GEN_INT (i), ++ GEN_INT ((val >> i) & 0xffff))); ++ num_insns ++; ++ } ++ } ++ return num_insns; ++ } ++ + simple_sequence: + first = true; + mask = 0xffff; +@@ -1154,30 +1399,113 @@ + { + if (first) + { +- emit_insn (gen_rtx_SET (VOIDmode, dest, +- GEN_INT (val & mask))); ++ if (generate) ++ emit_insn (gen_rtx_SET (VOIDmode, dest, ++ GEN_INT (val & mask))); ++ num_insns ++; + first = false; + } + else +- emit_insn (gen_insv_immdi (dest, GEN_INT (i), +- GEN_INT ((val >> i) & 0xffff))); ++ { ++ if (generate) ++ emit_insn (gen_insv_immdi (dest, GEN_INT (i), ++ GEN_INT ((val >> i) & 0xffff))); ++ num_insns ++; ++ } + } + } ++ ++ return num_insns; + } + +-static bool +-aarch64_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED) ++ ++void ++aarch64_expand_mov_immediate (rtx dest, rtx imm) + { +- /* Indirect calls are not currently supported. */ +- if (decl == NULL) +- return false; ++ machine_mode mode = GET_MODE (dest); + +- /* Cannot tail-call to long-calls, since these are outside of the +- range of a branch instruction (we could handle this if we added +- support for indirect tail-calls. */ +- if (aarch64_decl_is_long_call_p (decl)) +- return false; ++ gcc_assert (mode == SImode || mode == DImode); + ++ /* Check on what type of symbol it is. */ ++ if (GET_CODE (imm) == SYMBOL_REF ++ || GET_CODE (imm) == LABEL_REF ++ || GET_CODE (imm) == CONST) ++ { ++ rtx mem, base, offset; ++ enum aarch64_symbol_type sty; ++ ++ /* If we have (const (plus symbol offset)), separate out the offset ++ before we start classifying the symbol. */ ++ split_const (imm, &base, &offset); ++ ++ sty = aarch64_classify_symbol (base, offset, SYMBOL_CONTEXT_ADR); ++ switch (sty) ++ { ++ case SYMBOL_FORCE_TO_MEM: ++ if (offset != const0_rtx ++ && targetm.cannot_force_const_mem (mode, imm)) ++ { ++ gcc_assert (can_create_pseudo_p ()); ++ base = aarch64_force_temporary (mode, dest, base); ++ base = aarch64_add_offset (mode, NULL, base, INTVAL (offset)); ++ aarch64_emit_move (dest, base); ++ return; ++ } ++ mem = force_const_mem (ptr_mode, imm); ++ gcc_assert (mem); ++ if (mode != ptr_mode) ++ mem = gen_rtx_ZERO_EXTEND (mode, mem); ++ emit_insn (gen_rtx_SET (VOIDmode, dest, mem)); ++ return; ++ ++ case SYMBOL_SMALL_TLSGD: ++ case SYMBOL_SMALL_TLSDESC: ++ case SYMBOL_SMALL_GOTTPREL: ++ case SYMBOL_SMALL_GOT: ++ case SYMBOL_TINY_GOT: ++ if (offset != const0_rtx) ++ { ++ gcc_assert(can_create_pseudo_p ()); ++ base = aarch64_force_temporary (mode, dest, base); ++ base = aarch64_add_offset (mode, NULL, base, INTVAL (offset)); ++ aarch64_emit_move (dest, base); ++ return; ++ } ++ /* FALLTHRU */ ++ ++ case SYMBOL_SMALL_TPREL: ++ case SYMBOL_SMALL_ABSOLUTE: ++ case SYMBOL_TINY_ABSOLUTE: ++ aarch64_load_symref_appropriately (dest, imm, sty); ++ return; ++ ++ default: ++ gcc_unreachable (); ++ } ++ } ++ ++ if (!CONST_INT_P (imm)) ++ { ++ if (GET_CODE (imm) == HIGH) ++ emit_insn (gen_rtx_SET (VOIDmode, dest, imm)); ++ else ++ { ++ rtx mem = force_const_mem (mode, imm); ++ gcc_assert (mem); ++ emit_insn (gen_rtx_SET (VOIDmode, dest, mem)); ++ } ++ ++ return; ++ } ++ ++ aarch64_internal_mov_immediate (dest, imm, true, GET_MODE (dest)); ++} ++ ++static bool ++aarch64_function_ok_for_sibcall (tree decl ATTRIBUTE_UNUSED, ++ tree exp ATTRIBUTE_UNUSED) ++{ ++ /* Currently, always true. */ + return true; + } + +@@ -1692,11 +2020,6 @@ + static bool + aarch64_frame_pointer_required (void) + { +- /* If the function contains dynamic stack allocations, we need to +- use the frame pointer to access the static parts of the frame. */ +- if (cfun->calls_alloca) +- return true; +- + /* In aarch64_override_options_after_change + flag_omit_leaf_frame_pointer turns off the frame pointer by + default. Turn it back on now if we've not got a leaf +@@ -1720,268 +2043,313 @@ + if (reload_completed && cfun->machine->frame.laid_out) + return; + +- cfun->machine->frame.fp_lr_offset = 0; ++#define SLOT_NOT_REQUIRED (-2) ++#define SLOT_REQUIRED (-1) + ++ cfun->machine->frame.wb_candidate1 = FIRST_PSEUDO_REGISTER; ++ cfun->machine->frame.wb_candidate2 = FIRST_PSEUDO_REGISTER; ++ + /* First mark all the registers that really need to be saved... */ + for (regno = R0_REGNUM; regno <= R30_REGNUM; regno++) +- cfun->machine->frame.reg_offset[regno] = -1; ++ cfun->machine->frame.reg_offset[regno] = SLOT_NOT_REQUIRED; + + for (regno = V0_REGNUM; regno <= V31_REGNUM; regno++) +- cfun->machine->frame.reg_offset[regno] = -1; ++ cfun->machine->frame.reg_offset[regno] = SLOT_NOT_REQUIRED; + + /* ... that includes the eh data registers (if needed)... */ + if (crtl->calls_eh_return) + for (regno = 0; EH_RETURN_DATA_REGNO (regno) != INVALID_REGNUM; regno++) +- cfun->machine->frame.reg_offset[EH_RETURN_DATA_REGNO (regno)] = 0; ++ cfun->machine->frame.reg_offset[EH_RETURN_DATA_REGNO (regno)] ++ = SLOT_REQUIRED; + + /* ... and any callee saved register that dataflow says is live. */ + for (regno = R0_REGNUM; regno <= R30_REGNUM; regno++) + if (df_regs_ever_live_p (regno) +- && !call_used_regs[regno]) +- cfun->machine->frame.reg_offset[regno] = 0; ++ && (regno == R30_REGNUM ++ || !call_used_regs[regno])) ++ cfun->machine->frame.reg_offset[regno] = SLOT_REQUIRED; + + for (regno = V0_REGNUM; regno <= V31_REGNUM; regno++) + if (df_regs_ever_live_p (regno) + && !call_used_regs[regno]) +- cfun->machine->frame.reg_offset[regno] = 0; ++ cfun->machine->frame.reg_offset[regno] = SLOT_REQUIRED; + + if (frame_pointer_needed) + { +- cfun->machine->frame.reg_offset[R30_REGNUM] = 0; ++ /* FP and LR are placed in the linkage record. */ + cfun->machine->frame.reg_offset[R29_REGNUM] = 0; ++ cfun->machine->frame.wb_candidate1 = R29_REGNUM; ++ cfun->machine->frame.reg_offset[R30_REGNUM] = UNITS_PER_WORD; ++ cfun->machine->frame.wb_candidate2 = R30_REGNUM; + cfun->machine->frame.hardfp_offset = 2 * UNITS_PER_WORD; ++ offset += 2 * UNITS_PER_WORD; + } + + /* Now assign stack slots for them. */ +- for (regno = R0_REGNUM; regno <= R28_REGNUM; regno++) +- if (cfun->machine->frame.reg_offset[regno] != -1) ++ for (regno = R0_REGNUM; regno <= R30_REGNUM; regno++) ++ if (cfun->machine->frame.reg_offset[regno] == SLOT_REQUIRED) + { + cfun->machine->frame.reg_offset[regno] = offset; ++ if (cfun->machine->frame.wb_candidate1 == FIRST_PSEUDO_REGISTER) ++ cfun->machine->frame.wb_candidate1 = regno; ++ else if (cfun->machine->frame.wb_candidate2 == FIRST_PSEUDO_REGISTER) ++ cfun->machine->frame.wb_candidate2 = regno; + offset += UNITS_PER_WORD; + } + + for (regno = V0_REGNUM; regno <= V31_REGNUM; regno++) +- if (cfun->machine->frame.reg_offset[regno] != -1) ++ if (cfun->machine->frame.reg_offset[regno] == SLOT_REQUIRED) + { + cfun->machine->frame.reg_offset[regno] = offset; ++ if (cfun->machine->frame.wb_candidate1 == FIRST_PSEUDO_REGISTER) ++ cfun->machine->frame.wb_candidate1 = regno; ++ else if (cfun->machine->frame.wb_candidate2 == FIRST_PSEUDO_REGISTER ++ && cfun->machine->frame.wb_candidate1 >= V0_REGNUM) ++ cfun->machine->frame.wb_candidate2 = regno; + offset += UNITS_PER_WORD; + } + +- if (frame_pointer_needed) +- { +- cfun->machine->frame.reg_offset[R29_REGNUM] = offset; +- offset += UNITS_PER_WORD; +- cfun->machine->frame.fp_lr_offset = UNITS_PER_WORD; +- } +- +- if (cfun->machine->frame.reg_offset[R30_REGNUM] != -1) +- { +- cfun->machine->frame.reg_offset[R30_REGNUM] = offset; +- offset += UNITS_PER_WORD; +- cfun->machine->frame.fp_lr_offset += UNITS_PER_WORD; +- } +- + cfun->machine->frame.padding0 = + (AARCH64_ROUND_UP (offset, STACK_BOUNDARY / BITS_PER_UNIT) - offset); + offset = AARCH64_ROUND_UP (offset, STACK_BOUNDARY / BITS_PER_UNIT); + + cfun->machine->frame.saved_regs_size = offset; ++ ++ cfun->machine->frame.hard_fp_offset ++ = AARCH64_ROUND_UP (cfun->machine->frame.saved_varargs_size ++ + get_frame_size () ++ + cfun->machine->frame.saved_regs_size, ++ STACK_BOUNDARY / BITS_PER_UNIT); ++ ++ cfun->machine->frame.frame_size ++ = AARCH64_ROUND_UP (cfun->machine->frame.hard_fp_offset ++ + crtl->outgoing_args_size, ++ STACK_BOUNDARY / BITS_PER_UNIT); ++ + cfun->machine->frame.laid_out = true; + } + +-/* Make the last instruction frame-related and note that it performs +- the operation described by FRAME_PATTERN. */ ++static bool ++aarch64_register_saved_on_entry (int regno) ++{ ++ return cfun->machine->frame.reg_offset[regno] >= 0; ++} + ++static unsigned ++aarch64_next_callee_save (unsigned regno, unsigned limit) ++{ ++ while (regno <= limit && !aarch64_register_saved_on_entry (regno)) ++ regno ++; ++ return regno; ++} ++ + static void +-aarch64_set_frame_expr (rtx frame_pattern) ++aarch64_pushwb_single_reg (enum machine_mode mode, unsigned regno, ++ HOST_WIDE_INT adjustment) ++ { ++ rtx base_rtx = stack_pointer_rtx; ++ rtx insn, reg, mem; ++ ++ reg = gen_rtx_REG (mode, regno); ++ mem = gen_rtx_PRE_MODIFY (Pmode, base_rtx, ++ plus_constant (Pmode, base_rtx, -adjustment)); ++ mem = gen_rtx_MEM (mode, mem); ++ ++ insn = emit_move_insn (mem, reg); ++ RTX_FRAME_RELATED_P (insn) = 1; ++} ++ ++static rtx ++aarch64_gen_storewb_pair (enum machine_mode mode, rtx base, rtx reg, rtx reg2, ++ HOST_WIDE_INT adjustment) + { ++ switch (mode) ++ { ++ case DImode: ++ return gen_storewb_pairdi_di (base, base, reg, reg2, ++ GEN_INT (-adjustment), ++ GEN_INT (UNITS_PER_WORD - adjustment)); ++ case DFmode: ++ return gen_storewb_pairdf_di (base, base, reg, reg2, ++ GEN_INT (-adjustment), ++ GEN_INT (UNITS_PER_WORD - adjustment)); ++ default: ++ gcc_unreachable (); ++ } ++} ++ ++static void ++aarch64_pushwb_pair_reg (enum machine_mode mode, unsigned regno1, ++ unsigned regno2, HOST_WIDE_INT adjustment) ++{ + rtx insn; ++ rtx reg1 = gen_rtx_REG (mode, regno1); ++ rtx reg2 = gen_rtx_REG (mode, regno2); + +- insn = get_last_insn (); ++ insn = emit_insn (aarch64_gen_storewb_pair (mode, stack_pointer_rtx, reg1, ++ reg2, adjustment)); ++ RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 2)) = 1; ++ ++ RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 1)) = 1; + RTX_FRAME_RELATED_P (insn) = 1; +- RTX_FRAME_RELATED_P (frame_pattern) = 1; +- REG_NOTES (insn) = alloc_EXPR_LIST (REG_FRAME_RELATED_EXPR, +- frame_pattern, +- REG_NOTES (insn)); + } + +-static bool +-aarch64_register_saved_on_entry (int regno) ++static rtx ++aarch64_gen_loadwb_pair (enum machine_mode mode, rtx base, rtx reg, rtx reg2, ++ HOST_WIDE_INT adjustment) + { +- return cfun->machine->frame.reg_offset[regno] != -1; ++ switch (mode) ++ { ++ case DImode: ++ return gen_loadwb_pairdi_di (base, base, reg, reg2, GEN_INT (adjustment), ++ GEN_INT (UNITS_PER_WORD)); ++ case DFmode: ++ return gen_loadwb_pairdf_di (base, base, reg, reg2, GEN_INT (adjustment), ++ GEN_INT (UNITS_PER_WORD)); ++ default: ++ gcc_unreachable (); ++ } + } + ++static rtx ++aarch64_gen_store_pair (enum machine_mode mode, rtx mem1, rtx reg1, rtx mem2, ++ rtx reg2) ++{ ++ switch (mode) ++ { ++ case DImode: ++ return gen_store_pairdi (mem1, reg1, mem2, reg2); + +-static void +-aarch64_save_or_restore_fprs (int start_offset, int increment, +- bool restore, rtx base_rtx) ++ case DFmode: ++ return gen_store_pairdf (mem1, reg1, mem2, reg2); + ++ default: ++ gcc_unreachable (); ++ } ++} ++ ++static rtx ++aarch64_gen_load_pair (enum machine_mode mode, rtx reg1, rtx mem1, rtx reg2, ++ rtx mem2) + { ++ switch (mode) ++ { ++ case DImode: ++ return gen_load_pairdi (reg1, mem1, reg2, mem2); ++ ++ case DFmode: ++ return gen_load_pairdf (reg1, mem1, reg2, mem2); ++ ++ default: ++ gcc_unreachable (); ++ } ++} ++ ++ ++static void ++aarch64_save_callee_saves (enum machine_mode mode, HOST_WIDE_INT start_offset, ++ unsigned start, unsigned limit, bool skip_wb) ++{ ++ rtx insn; ++ rtx (*gen_mem_ref) (enum machine_mode, rtx) = (frame_pointer_needed ++ ? gen_frame_mem : gen_rtx_MEM); + unsigned regno; + unsigned regno2; +- rtx insn; +- rtx (*gen_mem_ref)(enum machine_mode, rtx) +- = (frame_pointer_needed)? gen_frame_mem : gen_rtx_MEM; + +- +- for (regno = V0_REGNUM; regno <= V31_REGNUM; regno++) ++ for (regno = aarch64_next_callee_save (start, limit); ++ regno <= limit; ++ regno = aarch64_next_callee_save (regno + 1, limit)) + { +- if (aarch64_register_saved_on_entry (regno)) +- { +- rtx mem; +- mem = gen_mem_ref (DFmode, +- plus_constant (Pmode, +- base_rtx, +- start_offset)); ++ rtx reg, mem; ++ HOST_WIDE_INT offset; + +- for (regno2 = regno + 1; +- regno2 <= V31_REGNUM +- && !aarch64_register_saved_on_entry (regno2); +- regno2++) +- { +- /* Empty loop. */ +- } +- if (regno2 <= V31_REGNUM && +- aarch64_register_saved_on_entry (regno2)) +- { +- rtx mem2; +- /* Next highest register to be saved. */ +- mem2 = gen_mem_ref (DFmode, +- plus_constant +- (Pmode, +- base_rtx, +- start_offset + increment)); +- if (restore == false) +- { +- insn = emit_insn +- ( gen_store_pairdf (mem, gen_rtx_REG (DFmode, regno), +- mem2, gen_rtx_REG (DFmode, regno2))); ++ if (skip_wb ++ && (regno == cfun->machine->frame.wb_candidate1 ++ || regno == cfun->machine->frame.wb_candidate2)) ++ continue; + +- } +- else +- { +- insn = emit_insn +- ( gen_load_pairdf (gen_rtx_REG (DFmode, regno), mem, +- gen_rtx_REG (DFmode, regno2), mem2)); ++ reg = gen_rtx_REG (mode, regno); ++ offset = start_offset + cfun->machine->frame.reg_offset[regno]; ++ mem = gen_mem_ref (mode, plus_constant (Pmode, stack_pointer_rtx, ++ offset)); + +- add_reg_note (insn, REG_CFA_RESTORE, +- gen_rtx_REG (DFmode, regno)); +- add_reg_note (insn, REG_CFA_RESTORE, +- gen_rtx_REG (DFmode, regno2)); +- } ++ regno2 = aarch64_next_callee_save (regno + 1, limit); + +- /* The first part of a frame-related parallel insn +- is always assumed to be relevant to the frame +- calculations; subsequent parts, are only +- frame-related if explicitly marked. */ +- RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 1)) = 1; +- regno = regno2; +- start_offset += increment * 2; +- } +- else +- { +- if (restore == false) +- insn = emit_move_insn (mem, gen_rtx_REG (DFmode, regno)); +- else +- { +- insn = emit_move_insn (gen_rtx_REG (DFmode, regno), mem); +- add_reg_note (insn, REG_CFA_RESTORE, +- gen_rtx_REG (DImode, regno)); +- } +- start_offset += increment; +- } +- RTX_FRAME_RELATED_P (insn) = 1; ++ if (regno2 <= limit ++ && ((cfun->machine->frame.reg_offset[regno] + UNITS_PER_WORD) ++ == cfun->machine->frame.reg_offset[regno2])) ++ ++ { ++ rtx reg2 = gen_rtx_REG (mode, regno2); ++ rtx mem2; ++ ++ offset = start_offset + cfun->machine->frame.reg_offset[regno2]; ++ mem2 = gen_mem_ref (mode, plus_constant (Pmode, stack_pointer_rtx, ++ offset)); ++ insn = emit_insn (aarch64_gen_store_pair (mode, mem, reg, mem2, ++ reg2)); ++ ++ /* The first part of a frame-related parallel insn is ++ always assumed to be relevant to the frame ++ calculations; subsequent parts, are only ++ frame-related if explicitly marked. */ ++ RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 1)) = 1; ++ regno = regno2; + } ++ else ++ insn = emit_move_insn (mem, reg); ++ ++ RTX_FRAME_RELATED_P (insn) = 1; + } +- + } + +- +-/* offset from the stack pointer of where the saves and +- restore's have to happen. */ + static void +-aarch64_save_or_restore_callee_save_registers (HOST_WIDE_INT offset, +- bool restore) ++aarch64_restore_callee_saves (enum machine_mode mode, ++ HOST_WIDE_INT start_offset, unsigned start, ++ unsigned limit, bool skip_wb, rtx *cfi_ops) + { +- rtx insn; + rtx base_rtx = stack_pointer_rtx; +- HOST_WIDE_INT start_offset = offset; +- HOST_WIDE_INT increment = UNITS_PER_WORD; +- rtx (*gen_mem_ref)(enum machine_mode, rtx) = (frame_pointer_needed)? gen_frame_mem : gen_rtx_MEM; +- unsigned limit = (frame_pointer_needed)? R28_REGNUM: R30_REGNUM; ++ rtx (*gen_mem_ref) (enum machine_mode, rtx) = (frame_pointer_needed ++ ? gen_frame_mem : gen_rtx_MEM); + unsigned regno; + unsigned regno2; ++ HOST_WIDE_INT offset; + +- for (regno = R0_REGNUM; regno <= limit; regno++) ++ for (regno = aarch64_next_callee_save (start, limit); ++ regno <= limit; ++ regno = aarch64_next_callee_save (regno + 1, limit)) + { +- if (aarch64_register_saved_on_entry (regno)) +- { +- rtx mem; +- mem = gen_mem_ref (Pmode, +- plus_constant (Pmode, +- base_rtx, +- start_offset)); ++ rtx reg, mem; + +- for (regno2 = regno + 1; +- regno2 <= limit +- && !aarch64_register_saved_on_entry (regno2); +- regno2++) +- { +- /* Empty loop. */ +- } +- if (regno2 <= limit && +- aarch64_register_saved_on_entry (regno2)) +- { +- rtx mem2; +- /* Next highest register to be saved. */ +- mem2 = gen_mem_ref (Pmode, +- plus_constant +- (Pmode, +- base_rtx, +- start_offset + increment)); +- if (restore == false) +- { +- insn = emit_insn +- ( gen_store_pairdi (mem, gen_rtx_REG (DImode, regno), +- mem2, gen_rtx_REG (DImode, regno2))); ++ if (skip_wb ++ && (regno == cfun->machine->frame.wb_candidate1 ++ || regno == cfun->machine->frame.wb_candidate2)) ++ continue; + +- } +- else +- { +- insn = emit_insn +- ( gen_load_pairdi (gen_rtx_REG (DImode, regno), mem, +- gen_rtx_REG (DImode, regno2), mem2)); ++ reg = gen_rtx_REG (mode, regno); ++ offset = start_offset + cfun->machine->frame.reg_offset[regno]; ++ mem = gen_mem_ref (mode, plus_constant (Pmode, base_rtx, offset)); + +- add_reg_note (insn, REG_CFA_RESTORE, gen_rtx_REG (DImode, regno)); +- add_reg_note (insn, REG_CFA_RESTORE, gen_rtx_REG (DImode, regno2)); +- } ++ regno2 = aarch64_next_callee_save (regno + 1, limit); + +- /* The first part of a frame-related parallel insn +- is always assumed to be relevant to the frame +- calculations; subsequent parts, are only +- frame-related if explicitly marked. */ +- RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, +- 1)) = 1; +- regno = regno2; +- start_offset += increment * 2; +- } +- else +- { +- if (restore == false) +- insn = emit_move_insn (mem, gen_rtx_REG (DImode, regno)); +- else +- { +- insn = emit_move_insn (gen_rtx_REG (DImode, regno), mem); +- add_reg_note (insn, REG_CFA_RESTORE, gen_rtx_REG (DImode, regno)); +- } +- start_offset += increment; +- } +- RTX_FRAME_RELATED_P (insn) = 1; ++ if (regno2 <= limit ++ && ((cfun->machine->frame.reg_offset[regno] + UNITS_PER_WORD) ++ == cfun->machine->frame.reg_offset[regno2])) ++ { ++ rtx reg2 = gen_rtx_REG (mode, regno2); ++ rtx mem2; ++ ++ offset = start_offset + cfun->machine->frame.reg_offset[regno2]; ++ mem2 = gen_mem_ref (mode, plus_constant (Pmode, base_rtx, offset)); ++ emit_insn (aarch64_gen_load_pair (mode, reg, mem, reg2, mem2)); ++ ++ *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg2, *cfi_ops); ++ regno = regno2; + } ++ else ++ emit_move_insn (reg, mem); ++ *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg, *cfi_ops); + } +- +- aarch64_save_or_restore_fprs (start_offset, increment, restore, base_rtx); +- + } + + /* AArch64 stack frames generated by this compiler look like: +@@ -1990,37 +2358,35 @@ + | | + | incoming stack arguments | + | | +- +-------------------------------+ <-- arg_pointer_rtx +- | | ++ +-------------------------------+ ++ | | <-- incoming stack pointer (aligned) + | callee-allocated save area | + | for register varargs | + | | +- +-------------------------------+ <-- frame_pointer_rtx ++ +-------------------------------+ ++ | local variables | <-- frame_pointer_rtx + | | +- | local variables | +- | | + +-------------------------------+ + | padding0 | \ + +-------------------------------+ | +- | | | +- | | | + | callee-saved registers | | frame.saved_regs_size +- | | | + +-------------------------------+ | + | LR' | | + +-------------------------------+ | +- | FP' | / +- P +-------------------------------+ <-- hard_frame_pointer_rtx ++ | FP' | / <- hard_frame_pointer_rtx (aligned) ++ +-------------------------------+ + | dynamic allocation | + +-------------------------------+ +- | | +- | outgoing stack arguments | +- | | +- +-------------------------------+ <-- stack_pointer_rtx ++ | padding | ++ +-------------------------------+ ++ | outgoing stack arguments | <-- arg_pointer ++ | | ++ +-------------------------------+ ++ | | <-- stack_pointer_rtx (aligned) + +- Dynamic stack allocations such as alloca insert data at point P. +- They decrease stack_pointer_rtx but leave frame_pointer_rtx and +- hard_frame_pointer_rtx unchanged. */ ++ Dynamic stack allocations via alloca() decrease stack_pointer_rtx ++ but leave frame_pointer_rtx and hard_frame_pointer_rtx ++ unchanged. */ + + /* Generate the prologue instructions for entry into a function. + Establish the stack frame by decreasing the stack pointer with a +@@ -2038,27 +2404,20 @@ + + sub sp, sp, + */ +- HOST_WIDE_INT original_frame_size; /* local variables + vararg save */ + HOST_WIDE_INT frame_size, offset; +- HOST_WIDE_INT fp_offset; /* FP offset from SP */ ++ HOST_WIDE_INT fp_offset; /* Offset from hard FP to SP. */ ++ HOST_WIDE_INT hard_fp_offset; + rtx insn; + + aarch64_layout_frame (); +- original_frame_size = get_frame_size () + cfun->machine->saved_varargs_size; +- gcc_assert ((!cfun->machine->saved_varargs_size || cfun->stdarg) +- && (cfun->stdarg || !cfun->machine->saved_varargs_size)); +- frame_size = (original_frame_size + cfun->machine->frame.saved_regs_size +- + crtl->outgoing_args_size); +- offset = frame_size = AARCH64_ROUND_UP (frame_size, +- STACK_BOUNDARY / BITS_PER_UNIT); + ++ offset = frame_size = cfun->machine->frame.frame_size; ++ hard_fp_offset = cfun->machine->frame.hard_fp_offset; ++ fp_offset = frame_size - hard_fp_offset; ++ + if (flag_stack_usage_info) + current_function_static_stack_size = frame_size; + +- fp_offset = (offset +- - original_frame_size +- - cfun->machine->frame.saved_regs_size); +- + /* Store pairs and load pairs have a range only -512 to 504. */ + if (offset >= 512) + { +@@ -2068,7 +2427,7 @@ + register area. This will allow the pre-index write-back + store pair instructions to be used for setting up the stack frame + efficiently. */ +- offset = original_frame_size + cfun->machine->frame.saved_regs_size; ++ offset = hard_fp_offset; + if (offset >= 512) + offset = cfun->machine->frame.saved_regs_size; + +@@ -2079,29 +2438,29 @@ + { + rtx op0 = gen_rtx_REG (Pmode, IP0_REGNUM); + emit_move_insn (op0, GEN_INT (-frame_size)); +- emit_insn (gen_add2_insn (stack_pointer_rtx, op0)); +- aarch64_set_frame_expr (gen_rtx_SET +- (Pmode, stack_pointer_rtx, +- plus_constant (Pmode, +- stack_pointer_rtx, +- -frame_size))); ++ insn = emit_insn (gen_add2_insn (stack_pointer_rtx, op0)); ++ ++ add_reg_note (insn, REG_CFA_ADJUST_CFA, ++ gen_rtx_SET (VOIDmode, stack_pointer_rtx, ++ plus_constant (Pmode, stack_pointer_rtx, ++ -frame_size))); ++ RTX_FRAME_RELATED_P (insn) = 1; + } + else if (frame_size > 0) + { +- if ((frame_size & 0xfff) != frame_size) ++ int hi_ofs = frame_size & 0xfff000; ++ int lo_ofs = frame_size & 0x000fff; ++ ++ if (hi_ofs) + { + insn = emit_insn (gen_add2_insn +- (stack_pointer_rtx, +- GEN_INT (-(frame_size +- & ~(HOST_WIDE_INT)0xfff)))); ++ (stack_pointer_rtx, GEN_INT (-hi_ofs))); + RTX_FRAME_RELATED_P (insn) = 1; + } +- if ((frame_size & 0xfff) != 0) ++ if (lo_ofs) + { + insn = emit_insn (gen_add2_insn +- (stack_pointer_rtx, +- GEN_INT (-(frame_size +- & (HOST_WIDE_INT)0xfff)))); ++ (stack_pointer_rtx, GEN_INT (-lo_ofs))); + RTX_FRAME_RELATED_P (insn) = 1; + } + } +@@ -2111,12 +2470,11 @@ + + if (offset > 0) + { +- /* Save the frame pointer and lr if the frame pointer is needed +- first. Make the frame pointer point to the location of the +- old frame pointer on the stack. */ ++ bool skip_wb = false; ++ + if (frame_pointer_needed) + { +- rtx mem_fp, mem_lr; ++ skip_wb = true; + + if (fp_offset) + { +@@ -2123,67 +2481,52 @@ + insn = emit_insn (gen_add2_insn (stack_pointer_rtx, + GEN_INT (-offset))); + RTX_FRAME_RELATED_P (insn) = 1; +- aarch64_set_frame_expr (gen_rtx_SET +- (Pmode, stack_pointer_rtx, +- gen_rtx_MINUS (Pmode, +- stack_pointer_rtx, +- GEN_INT (offset)))); +- mem_fp = gen_frame_mem (DImode, +- plus_constant (Pmode, +- stack_pointer_rtx, +- fp_offset)); +- mem_lr = gen_frame_mem (DImode, +- plus_constant (Pmode, +- stack_pointer_rtx, +- fp_offset +- + UNITS_PER_WORD)); +- insn = emit_insn (gen_store_pairdi (mem_fp, +- hard_frame_pointer_rtx, +- mem_lr, +- gen_rtx_REG (DImode, +- LR_REGNUM))); ++ ++ aarch64_save_callee_saves (DImode, fp_offset, R29_REGNUM, ++ R30_REGNUM, false); + } + else +- { +- insn = emit_insn (gen_storewb_pairdi_di +- (stack_pointer_rtx, stack_pointer_rtx, +- hard_frame_pointer_rtx, +- gen_rtx_REG (DImode, LR_REGNUM), +- GEN_INT (-offset), +- GEN_INT (GET_MODE_SIZE (DImode) - offset))); +- RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 2)) = 1; +- } ++ aarch64_pushwb_pair_reg (DImode, R29_REGNUM, R30_REGNUM, offset); + +- /* The first part of a frame-related parallel insn is always +- assumed to be relevant to the frame calculations; +- subsequent parts, are only frame-related if explicitly +- marked. */ +- RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 1)) = 1; +- RTX_FRAME_RELATED_P (insn) = 1; +- + /* Set up frame pointer to point to the location of the + previous frame pointer on the stack. */ + insn = emit_insn (gen_add3_insn (hard_frame_pointer_rtx, + stack_pointer_rtx, + GEN_INT (fp_offset))); +- aarch64_set_frame_expr (gen_rtx_SET +- (Pmode, hard_frame_pointer_rtx, +- plus_constant (Pmode, +- stack_pointer_rtx, +- fp_offset))); + RTX_FRAME_RELATED_P (insn) = 1; +- insn = emit_insn (gen_stack_tie (stack_pointer_rtx, +- hard_frame_pointer_rtx)); ++ emit_insn (gen_stack_tie (stack_pointer_rtx, hard_frame_pointer_rtx)); + } + else + { +- insn = emit_insn (gen_add2_insn (stack_pointer_rtx, +- GEN_INT (-offset))); +- RTX_FRAME_RELATED_P (insn) = 1; ++ unsigned reg1 = cfun->machine->frame.wb_candidate1; ++ unsigned reg2 = cfun->machine->frame.wb_candidate2; ++ ++ if (fp_offset ++ || reg1 == FIRST_PSEUDO_REGISTER ++ || (reg2 == FIRST_PSEUDO_REGISTER ++ && offset >= 256)) ++ { ++ insn = emit_insn (gen_add2_insn (stack_pointer_rtx, ++ GEN_INT (-offset))); ++ RTX_FRAME_RELATED_P (insn) = 1; ++ } ++ else ++ { ++ enum machine_mode mode1 = (reg1 <= R30_REGNUM) ? DImode : DFmode; ++ ++ skip_wb = true; ++ ++ if (reg2 == FIRST_PSEUDO_REGISTER) ++ aarch64_pushwb_single_reg (mode1, reg1, offset); ++ else ++ aarch64_pushwb_pair_reg (mode1, reg1, reg2, offset); ++ } + } + +- aarch64_save_or_restore_callee_save_registers +- (fp_offset + cfun->machine->frame.hardfp_offset, 0); ++ aarch64_save_callee_saves (DImode, fp_offset, R0_REGNUM, R30_REGNUM, ++ skip_wb); ++ aarch64_save_callee_saves (DFmode, fp_offset, V0_REGNUM, V31_REGNUM, ++ skip_wb); + } + + /* when offset >= 512, +@@ -2204,28 +2547,24 @@ + void + aarch64_expand_epilogue (bool for_sibcall) + { +- HOST_WIDE_INT original_frame_size, frame_size, offset; ++ HOST_WIDE_INT frame_size, offset; + HOST_WIDE_INT fp_offset; ++ HOST_WIDE_INT hard_fp_offset; + rtx insn; +- rtx cfa_reg; ++ /* We need to add memory barrier to prevent read from deallocated stack. */ ++ bool need_barrier_p = (get_frame_size () != 0 ++ || cfun->machine->frame.saved_varargs_size); + + aarch64_layout_frame (); +- original_frame_size = get_frame_size () + cfun->machine->saved_varargs_size; +- frame_size = (original_frame_size + cfun->machine->frame.saved_regs_size +- + crtl->outgoing_args_size); +- offset = frame_size = AARCH64_ROUND_UP (frame_size, +- STACK_BOUNDARY / BITS_PER_UNIT); + +- fp_offset = (offset +- - original_frame_size +- - cfun->machine->frame.saved_regs_size); ++ offset = frame_size = cfun->machine->frame.frame_size; ++ hard_fp_offset = cfun->machine->frame.hard_fp_offset; ++ fp_offset = frame_size - hard_fp_offset; + +- cfa_reg = frame_pointer_needed ? hard_frame_pointer_rtx : stack_pointer_rtx; +- + /* Store pairs and load pairs have a range only -512 to 504. */ + if (offset >= 512) + { +- offset = original_frame_size + cfun->machine->frame.saved_regs_size; ++ offset = hard_fp_offset; + if (offset >= 512) + offset = cfun->machine->frame.saved_regs_size; + +@@ -2249,74 +2588,59 @@ + if (frame_pointer_needed + && (crtl->outgoing_args_size || cfun->calls_alloca)) + { ++ if (cfun->calls_alloca) ++ emit_insn (gen_stack_tie (stack_pointer_rtx, stack_pointer_rtx)); ++ + insn = emit_insn (gen_add3_insn (stack_pointer_rtx, + hard_frame_pointer_rtx, +- GEN_INT (- fp_offset))); +- RTX_FRAME_RELATED_P (insn) = 1; +- /* As SP is set to (FP - fp_offset), according to the rules in +- dwarf2cfi.c:dwarf2out_frame_debug_expr, CFA should be calculated +- from the value of SP from now on. */ +- cfa_reg = stack_pointer_rtx; ++ GEN_INT (0))); ++ offset = offset - fp_offset; + } + +- aarch64_save_or_restore_callee_save_registers +- (fp_offset + cfun->machine->frame.hardfp_offset, 1); +- +- /* Restore the frame pointer and lr if the frame pointer is needed. */ + if (offset > 0) + { ++ unsigned reg1 = cfun->machine->frame.wb_candidate1; ++ unsigned reg2 = cfun->machine->frame.wb_candidate2; ++ bool skip_wb = true; ++ rtx cfi_ops = NULL; ++ + if (frame_pointer_needed) ++ fp_offset = 0; ++ else if (fp_offset ++ || reg1 == FIRST_PSEUDO_REGISTER ++ || (reg2 == FIRST_PSEUDO_REGISTER ++ && offset >= 256)) ++ skip_wb = false; ++ ++ aarch64_restore_callee_saves (DImode, fp_offset, R0_REGNUM, R30_REGNUM, ++ skip_wb, &cfi_ops); ++ aarch64_restore_callee_saves (DFmode, fp_offset, V0_REGNUM, V31_REGNUM, ++ skip_wb, &cfi_ops); ++ ++ if (need_barrier_p) ++ emit_insn (gen_stack_tie (stack_pointer_rtx, stack_pointer_rtx)); ++ ++ if (skip_wb) + { +- rtx mem_fp, mem_lr; ++ enum machine_mode mode1 = (reg1 <= R30_REGNUM) ? DImode : DFmode; ++ rtx rreg1 = gen_rtx_REG (mode1, reg1); + +- if (fp_offset) ++ cfi_ops = alloc_reg_note (REG_CFA_RESTORE, rreg1, cfi_ops); ++ if (reg2 == FIRST_PSEUDO_REGISTER) + { +- mem_fp = gen_frame_mem (DImode, +- plus_constant (Pmode, +- stack_pointer_rtx, +- fp_offset)); +- mem_lr = gen_frame_mem (DImode, +- plus_constant (Pmode, +- stack_pointer_rtx, +- fp_offset +- + UNITS_PER_WORD)); +- insn = emit_insn (gen_load_pairdi (hard_frame_pointer_rtx, +- mem_fp, +- gen_rtx_REG (DImode, +- LR_REGNUM), +- mem_lr)); ++ rtx mem = plus_constant (Pmode, stack_pointer_rtx, offset); ++ mem = gen_rtx_POST_MODIFY (Pmode, stack_pointer_rtx, mem); ++ mem = gen_rtx_MEM (mode1, mem); ++ insn = emit_move_insn (rreg1, mem); + } + else + { +- insn = emit_insn (gen_loadwb_pairdi_di +- (stack_pointer_rtx, +- stack_pointer_rtx, +- hard_frame_pointer_rtx, +- gen_rtx_REG (DImode, LR_REGNUM), +- GEN_INT (offset), +- GEN_INT (GET_MODE_SIZE (DImode) + offset))); +- RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 2)) = 1; +- add_reg_note (insn, REG_CFA_ADJUST_CFA, +- (gen_rtx_SET (Pmode, stack_pointer_rtx, +- plus_constant (Pmode, cfa_reg, +- offset)))); +- } ++ rtx rreg2 = gen_rtx_REG (mode1, reg2); + +- /* The first part of a frame-related parallel insn +- is always assumed to be relevant to the frame +- calculations; subsequent parts, are only +- frame-related if explicitly marked. */ +- RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 1)) = 1; +- RTX_FRAME_RELATED_P (insn) = 1; +- add_reg_note (insn, REG_CFA_RESTORE, hard_frame_pointer_rtx); +- add_reg_note (insn, REG_CFA_RESTORE, +- gen_rtx_REG (DImode, LR_REGNUM)); +- +- if (fp_offset) +- { +- insn = emit_insn (gen_add2_insn (stack_pointer_rtx, +- GEN_INT (offset))); +- RTX_FRAME_RELATED_P (insn) = 1; ++ cfi_ops = alloc_reg_note (REG_CFA_RESTORE, rreg2, cfi_ops); ++ insn = emit_insn (aarch64_gen_loadwb_pair ++ (mode1, stack_pointer_rtx, rreg1, ++ rreg2, offset)); + } + } + else +@@ -2323,79 +2647,60 @@ + { + insn = emit_insn (gen_add2_insn (stack_pointer_rtx, + GEN_INT (offset))); +- RTX_FRAME_RELATED_P (insn) = 1; + } +- } + +- /* Stack adjustment for exception handler. */ +- if (crtl->calls_eh_return) +- { +- /* We need to unwind the stack by the offset computed by +- EH_RETURN_STACKADJ_RTX. However, at this point the CFA is +- based on SP. Ideally we would update the SP and define the +- CFA along the lines of: +- +- SP = SP + EH_RETURN_STACKADJ_RTX +- (regnote CFA = SP - EH_RETURN_STACKADJ_RTX) +- +- However the dwarf emitter only understands a constant +- register offset. +- +- The solution chosen here is to use the otherwise unused IP0 +- as a temporary register to hold the current SP value. The +- CFA is described using IP0 then SP is modified. */ +- +- rtx ip0 = gen_rtx_REG (DImode, IP0_REGNUM); +- +- insn = emit_move_insn (ip0, stack_pointer_rtx); +- add_reg_note (insn, REG_CFA_DEF_CFA, ip0); ++ /* Reset the CFA to be SP + FRAME_SIZE. */ ++ rtx new_cfa = stack_pointer_rtx; ++ if (frame_size > 0) ++ new_cfa = plus_constant (Pmode, new_cfa, frame_size); ++ cfi_ops = alloc_reg_note (REG_CFA_DEF_CFA, new_cfa, cfi_ops); ++ REG_NOTES (insn) = cfi_ops; + RTX_FRAME_RELATED_P (insn) = 1; +- +- emit_insn (gen_add2_insn (stack_pointer_rtx, EH_RETURN_STACKADJ_RTX)); +- +- /* Ensure the assignment to IP0 does not get optimized away. */ +- emit_use (ip0); + } + +- if (frame_size > -1) ++ if (frame_size > 0) + { ++ if (need_barrier_p) ++ emit_insn (gen_stack_tie (stack_pointer_rtx, stack_pointer_rtx)); ++ + if (frame_size >= 0x1000000) + { + rtx op0 = gen_rtx_REG (Pmode, IP0_REGNUM); + emit_move_insn (op0, GEN_INT (frame_size)); +- emit_insn (gen_add2_insn (stack_pointer_rtx, op0)); +- aarch64_set_frame_expr (gen_rtx_SET +- (Pmode, stack_pointer_rtx, +- plus_constant (Pmode, +- stack_pointer_rtx, +- frame_size))); ++ insn = emit_insn (gen_add2_insn (stack_pointer_rtx, op0)); + } +- else if (frame_size > 0) ++ else + { +- if ((frame_size & 0xfff) != 0) ++ int hi_ofs = frame_size & 0xfff000; ++ int lo_ofs = frame_size & 0x000fff; ++ ++ if (hi_ofs && lo_ofs) + { + insn = emit_insn (gen_add2_insn +- (stack_pointer_rtx, +- GEN_INT ((frame_size +- & (HOST_WIDE_INT) 0xfff)))); ++ (stack_pointer_rtx, GEN_INT (hi_ofs))); + RTX_FRAME_RELATED_P (insn) = 1; ++ frame_size = lo_ofs; + } +- if ((frame_size & 0xfff) != frame_size) +- { +- insn = emit_insn (gen_add2_insn +- (stack_pointer_rtx, +- GEN_INT ((frame_size +- & ~ (HOST_WIDE_INT) 0xfff)))); +- RTX_FRAME_RELATED_P (insn) = 1; +- } ++ insn = emit_insn (gen_add2_insn ++ (stack_pointer_rtx, GEN_INT (frame_size))); + } + +- aarch64_set_frame_expr (gen_rtx_SET (Pmode, stack_pointer_rtx, +- plus_constant (Pmode, +- stack_pointer_rtx, +- offset))); ++ /* Reset the CFA to be SP + 0. */ ++ add_reg_note (insn, REG_CFA_DEF_CFA, stack_pointer_rtx); ++ RTX_FRAME_RELATED_P (insn) = 1; + } + ++ /* Stack adjustment for exception handler. */ ++ if (crtl->calls_eh_return) ++ { ++ /* We need to unwind the stack by the offset computed by ++ EH_RETURN_STACKADJ_RTX. We have already reset the CFA ++ to be SP; letting the CFA move during this adjustment ++ is just as correct as retaining the CFA from the body ++ of the function. Therefore, do nothing special. */ ++ emit_insn (gen_add2_insn (stack_pointer_rtx, EH_RETURN_STACKADJ_RTX)); ++ } ++ + emit_use (gen_rtx_REG (DImode, LR_REGNUM)); + if (!for_sibcall) + emit_jump_insn (ret_rtx); +@@ -2407,17 +2712,13 @@ + rtx + aarch64_final_eh_return_addr (void) + { +- HOST_WIDE_INT original_frame_size, frame_size, offset, fp_offset; ++ HOST_WIDE_INT fp_offset; ++ + aarch64_layout_frame (); +- original_frame_size = get_frame_size () + cfun->machine->saved_varargs_size; +- frame_size = (original_frame_size + cfun->machine->frame.saved_regs_size +- + crtl->outgoing_args_size); +- offset = frame_size = AARCH64_ROUND_UP (frame_size, +- STACK_BOUNDARY / BITS_PER_UNIT); +- fp_offset = offset +- - original_frame_size +- - cfun->machine->frame.saved_regs_size; + ++ fp_offset = cfun->machine->frame.frame_size ++ - cfun->machine->frame.hard_fp_offset; ++ + if (cfun->machine->frame.reg_offset[LR_REGNUM] < 0) + return gen_rtx_REG (DImode, LR_REGNUM); + +@@ -2453,12 +2754,22 @@ + - 2 * UNITS_PER_WORD)); + } + +-/* Output code to build up a constant in a register. */ +-static void +-aarch64_build_constant (int regnum, HOST_WIDE_INT val) ++/* Possibly output code to build up a constant in a register. For ++ the benefit of the costs infrastructure, returns the number of ++ instructions which would be emitted. GENERATE inhibits or ++ enables code generation. */ ++ ++static int ++aarch64_build_constant (int regnum, HOST_WIDE_INT val, bool generate) + { ++ int insns = 0; ++ + if (aarch64_bitmask_imm (val, DImode)) +- emit_move_insn (gen_rtx_REG (Pmode, regnum), GEN_INT (val)); ++ { ++ if (generate) ++ emit_move_insn (gen_rtx_REG (Pmode, regnum), GEN_INT (val)); ++ insns = 1; ++ } + else + { + int i; +@@ -2489,15 +2800,19 @@ + the same. */ + if (ncount < zcount) + { +- emit_move_insn (gen_rtx_REG (Pmode, regnum), +- GEN_INT (val | ~(HOST_WIDE_INT) 0xffff)); ++ if (generate) ++ emit_move_insn (gen_rtx_REG (Pmode, regnum), ++ GEN_INT (val | ~(HOST_WIDE_INT) 0xffff)); + tval = 0xffff; ++ insns++; + } + else + { +- emit_move_insn (gen_rtx_REG (Pmode, regnum), +- GEN_INT (val & 0xffff)); ++ if (generate) ++ emit_move_insn (gen_rtx_REG (Pmode, regnum), ++ GEN_INT (val & 0xffff)); + tval = 0; ++ insns++; + } + + val >>= 16; +@@ -2505,11 +2820,17 @@ + for (i = 16; i < 64; i += 16) + { + if ((val & 0xffff) != tval) +- emit_insn (gen_insv_immdi (gen_rtx_REG (Pmode, regnum), +- GEN_INT (i), GEN_INT (val & 0xffff))); ++ { ++ if (generate) ++ emit_insn (gen_insv_immdi (gen_rtx_REG (Pmode, regnum), ++ GEN_INT (i), ++ GEN_INT (val & 0xffff))); ++ insns++; ++ } + val >>= 16; + } + } ++ return insns; + } + + static void +@@ -2524,7 +2845,7 @@ + + if (mdelta >= 4096 * 4096) + { +- aarch64_build_constant (scratchreg, delta); ++ (void) aarch64_build_constant (scratchreg, delta, true); + emit_insn (gen_add3_insn (this_rtx, this_rtx, scratch_rtx)); + } + else if (mdelta > 0) +@@ -2598,7 +2919,7 @@ + addr = plus_constant (Pmode, temp0, vcall_offset); + else + { +- aarch64_build_constant (IP1_REGNUM, vcall_offset); ++ (void) aarch64_build_constant (IP1_REGNUM, vcall_offset, true); + addr = gen_rtx_PLUS (Pmode, temp0, temp1); + } + +@@ -2787,7 +3108,7 @@ + split_const (x, &base, &offset); + if (GET_CODE (base) == SYMBOL_REF || GET_CODE (base) == LABEL_REF) + { +- if (aarch64_classify_symbol (base, SYMBOL_CONTEXT_ADR) ++ if (aarch64_classify_symbol (base, offset, SYMBOL_CONTEXT_ADR) + != SYMBOL_FORCE_TO_MEM) + return true; + else +@@ -3015,8 +3336,8 @@ + return false; + } + +-static inline bool +-offset_7bit_signed_scaled_p (enum machine_mode mode, HOST_WIDE_INT offset) ++bool ++aarch64_offset_7bit_signed_scaled_p (enum machine_mode mode, HOST_WIDE_INT offset) + { + return (offset >= -64 * GET_MODE_SIZE (mode) + && offset < 64 * GET_MODE_SIZE (mode) +@@ -3050,11 +3371,11 @@ + enum rtx_code code = GET_CODE (x); + rtx op0, op1; + bool allow_reg_index_p = +- outer_code != PARALLEL && GET_MODE_SIZE(mode) != 16; +- ++ outer_code != PARALLEL && (GET_MODE_SIZE (mode) != 16 ++ || aarch64_vector_mode_supported_p (mode)); + /* Don't support anything other than POST_INC or REG addressing for + AdvSIMD. */ +- if (aarch64_vector_mode_p (mode) ++ if (aarch64_vect_struct_mode_p (mode) + && (code != POST_INC && code != REG)) + return false; + +@@ -3070,6 +3391,21 @@ + case PLUS: + op0 = XEXP (x, 0); + op1 = XEXP (x, 1); ++ ++ if (! strict_p ++ && REG_P (op0) ++ && (op0 == virtual_stack_vars_rtx ++ || op0 == frame_pointer_rtx ++ || op0 == arg_pointer_rtx) ++ && CONST_INT_P (op1)) ++ { ++ info->type = ADDRESS_REG_IMM; ++ info->base = op0; ++ info->offset = op1; ++ ++ return true; ++ } ++ + if (GET_MODE_SIZE (mode) != 0 + && CONST_INT_P (op1) + && aarch64_base_register_rtx_p (op0, strict_p)) +@@ -3088,12 +3424,12 @@ + We conservatively require an offset representable in either mode. + */ + if (mode == TImode || mode == TFmode) +- return (offset_7bit_signed_scaled_p (mode, offset) ++ return (aarch64_offset_7bit_signed_scaled_p (mode, offset) + && offset_9bit_signed_unscaled_p (mode, offset)); + + if (outer_code == PARALLEL) + return ((GET_MODE_SIZE (mode) == 4 || GET_MODE_SIZE (mode) == 8) +- && offset_7bit_signed_scaled_p (mode, offset)); ++ && aarch64_offset_7bit_signed_scaled_p (mode, offset)); + else + return (offset_9bit_signed_unscaled_p (mode, offset) + || offset_12bit_unsigned_scaled_p (mode, offset)); +@@ -3148,12 +3484,12 @@ + We conservatively require an offset representable in either mode. + */ + if (mode == TImode || mode == TFmode) +- return (offset_7bit_signed_scaled_p (mode, offset) ++ return (aarch64_offset_7bit_signed_scaled_p (mode, offset) + && offset_9bit_signed_unscaled_p (mode, offset)); + + if (outer_code == PARALLEL) + return ((GET_MODE_SIZE (mode) == 4 || GET_MODE_SIZE (mode) == 8) +- && offset_7bit_signed_scaled_p (mode, offset)); ++ && aarch64_offset_7bit_signed_scaled_p (mode, offset)); + else + return offset_9bit_signed_unscaled_p (mode, offset); + } +@@ -3186,7 +3522,7 @@ + rtx sym, offs; + split_const (info->offset, &sym, &offs); + if (GET_CODE (sym) == SYMBOL_REF +- && (aarch64_classify_symbol (sym, SYMBOL_CONTEXT_MEM) ++ && (aarch64_classify_symbol (sym, offs, SYMBOL_CONTEXT_MEM) + == SYMBOL_SMALL_ABSOLUTE)) + { + /* The symbol and offset must be aligned to the access size. */ +@@ -3243,7 +3579,7 @@ + rtx offset; + + split_const (x, &x, &offset); +- return aarch64_classify_symbol (x, context); ++ return aarch64_classify_symbol (x, offset, context); + } + + +@@ -3337,7 +3673,7 @@ + the comparison will have to be swapped when we emit the assembly + code. */ + if ((GET_MODE (x) == SImode || GET_MODE (x) == DImode) +- && (GET_CODE (y) == REG || GET_CODE (y) == SUBREG) ++ && (REG_P (y) || GET_CODE (y) == SUBREG) + && (GET_CODE (x) == ASHIFT || GET_CODE (x) == ASHIFTRT + || GET_CODE (x) == LSHIFTRT + || GET_CODE (x) == ZERO_EXTEND || GET_CODE (x) == SIGN_EXTEND)) +@@ -3346,7 +3682,7 @@ + /* Similarly for a negated operand, but we can only do this for + equalities. */ + if ((GET_MODE (x) == SImode || GET_MODE (x) == DImode) +- && (GET_CODE (y) == REG || GET_CODE (y) == SUBREG) ++ && (REG_P (y) || GET_CODE (y) == SUBREG) + && (code == EQ || code == NE) + && GET_CODE (x) == NEG) + return CC_Zmode; +@@ -3363,7 +3699,7 @@ + return CCmode; + } + +-static unsigned ++int + aarch64_get_condition_code (rtx x) + { + enum machine_mode mode = GET_MODE (XEXP (x, 0)); +@@ -3390,7 +3726,7 @@ + case UNLE: return AARCH64_LE; + case UNGT: return AARCH64_HI; + case UNGE: return AARCH64_PL; +- default: gcc_unreachable (); ++ default: return -1; + } + break; + +@@ -3407,7 +3743,7 @@ + case GTU: return AARCH64_HI; + case LEU: return AARCH64_LS; + case LTU: return AARCH64_CC; +- default: gcc_unreachable (); ++ default: return -1; + } + break; + +@@ -3426,7 +3762,7 @@ + case GTU: return AARCH64_CC; + case LEU: return AARCH64_CS; + case LTU: return AARCH64_HI; +- default: gcc_unreachable (); ++ default: return -1; + } + break; + +@@ -3437,7 +3773,7 @@ + case EQ: return AARCH64_EQ; + case GE: return AARCH64_PL; + case LT: return AARCH64_MI; +- default: gcc_unreachable (); ++ default: return -1; + } + break; + +@@ -3446,16 +3782,46 @@ + { + case NE: return AARCH64_NE; + case EQ: return AARCH64_EQ; +- default: gcc_unreachable (); ++ default: return -1; + } + break; + + default: +- gcc_unreachable (); ++ return -1; + break; + } + } + ++bool ++aarch64_const_vec_all_same_in_range_p (rtx x, ++ HOST_WIDE_INT minval, ++ HOST_WIDE_INT maxval) ++{ ++ HOST_WIDE_INT firstval; ++ int count, i; ++ ++ if (GET_CODE (x) != CONST_VECTOR ++ || GET_MODE_CLASS (GET_MODE (x)) != MODE_VECTOR_INT) ++ return false; ++ ++ firstval = INTVAL (CONST_VECTOR_ELT (x, 0)); ++ if (firstval < minval || firstval > maxval) ++ return false; ++ ++ count = CONST_VECTOR_NUNITS (x); ++ for (i = 1; i < count; i++) ++ if (INTVAL (CONST_VECTOR_ELT (x, i)) != firstval) ++ return false; ++ ++ return true; ++} ++ ++bool ++aarch64_const_vec_all_same_int_p (rtx x, HOST_WIDE_INT val) ++{ ++ return aarch64_const_vec_all_same_in_range_p (x, val, val); ++} ++ + static unsigned + bit_count (unsigned HOST_WIDE_INT value) + { +@@ -3506,7 +3872,7 @@ + { + int n; + +- if (GET_CODE (x) != CONST_INT ++ if (!CONST_INT_P (x) + || (n = exact_log2 (INTVAL (x) & ~7)) <= 0) + { + output_operand_lossage ("invalid operand for '%%%c'", code); +@@ -3536,7 +3902,7 @@ + int n; + + /* Print N such that 2^N == X. */ +- if (GET_CODE (x) != CONST_INT || (n = exact_log2 (INTVAL (x))) < 0) ++ if (!CONST_INT_P (x) || (n = exact_log2 (INTVAL (x))) < 0) + { + output_operand_lossage ("invalid operand for '%%%c'", code); + return; +@@ -3548,7 +3914,7 @@ + + case 'P': + /* Print the number of non-zero bits in X (a const_int). */ +- if (GET_CODE (x) != CONST_INT) ++ if (!CONST_INT_P (x)) + { + output_operand_lossage ("invalid operand for '%%%c'", code); + return; +@@ -3559,7 +3925,7 @@ + + case 'H': + /* Print the higher numbered register of a pair (TImode) of regs. */ +- if (GET_CODE (x) != REG || !GP_REGNUM_P (REGNO (x) + 1)) ++ if (!REG_P (x) || !GP_REGNUM_P (REGNO (x) + 1)) + { + output_operand_lossage ("invalid operand for '%%%c'", code); + return; +@@ -3569,39 +3935,48 @@ + break; + + case 'm': +- /* Print a condition (eq, ne, etc). */ ++ { ++ int cond_code; ++ /* Print a condition (eq, ne, etc). */ + +- /* CONST_TRUE_RTX means always -- that's the default. */ +- if (x == const_true_rtx) +- return; +- +- if (!COMPARISON_P (x)) +- { +- output_operand_lossage ("invalid operand for '%%%c'", code); ++ /* CONST_TRUE_RTX means always -- that's the default. */ ++ if (x == const_true_rtx) + return; +- } + +- fputs (aarch64_condition_codes[aarch64_get_condition_code (x)], f); ++ if (!COMPARISON_P (x)) ++ { ++ output_operand_lossage ("invalid operand for '%%%c'", code); ++ return; ++ } ++ ++ cond_code = aarch64_get_condition_code (x); ++ gcc_assert (cond_code >= 0); ++ fputs (aarch64_condition_codes[cond_code], f); ++ } + break; + + case 'M': +- /* Print the inverse of a condition (eq <-> ne, etc). */ ++ { ++ int cond_code; ++ /* Print the inverse of a condition (eq <-> ne, etc). */ + +- /* CONST_TRUE_RTX means never -- that's the default. */ +- if (x == const_true_rtx) +- { +- fputs ("nv", f); +- return; +- } ++ /* CONST_TRUE_RTX means never -- that's the default. */ ++ if (x == const_true_rtx) ++ { ++ fputs ("nv", f); ++ return; ++ } + +- if (!COMPARISON_P (x)) +- { +- output_operand_lossage ("invalid operand for '%%%c'", code); +- return; +- } +- +- fputs (aarch64_condition_codes[AARCH64_INVERSE_CONDITION_CODE +- (aarch64_get_condition_code (x))], f); ++ if (!COMPARISON_P (x)) ++ { ++ output_operand_lossage ("invalid operand for '%%%c'", code); ++ return; ++ } ++ cond_code = aarch64_get_condition_code (x); ++ gcc_assert (cond_code >= 0); ++ fputs (aarch64_condition_codes[AARCH64_INVERSE_CONDITION_CODE ++ (cond_code)], f); ++ } + break; + + case 'b': +@@ -3633,7 +4008,7 @@ + + case 'X': + /* Print bottom 16 bits of integer constant in hex. */ +- if (GET_CODE (x) != CONST_INT) ++ if (!CONST_INT_P (x)) + { + output_operand_lossage ("invalid operand for '%%%c'", code); + return; +@@ -3698,9 +4073,10 @@ + case CONST_VECTOR: + if (GET_MODE_CLASS (GET_MODE (x)) == MODE_VECTOR_INT) + { +- gcc_assert (aarch64_const_vec_all_same_int_p (x, +- HOST_WIDE_INT_MIN, +- HOST_WIDE_INT_MAX)); ++ gcc_assert ( ++ aarch64_const_vec_all_same_in_range_p (x, ++ HOST_WIDE_INT_MIN, ++ HOST_WIDE_INT_MAX)); + asm_fprintf (f, "%wd", INTVAL (CONST_VECTOR_ELT (x, 0))); + } + else if (aarch64_simd_imm_zero_p (x, GET_MODE (x))) +@@ -3843,34 +4219,34 @@ + if (addr.offset == const0_rtx) + asm_fprintf (f, "[%s]", reg_names [REGNO (addr.base)]); + else +- asm_fprintf (f, "[%s,%wd]", reg_names [REGNO (addr.base)], ++ asm_fprintf (f, "[%s, %wd]", reg_names [REGNO (addr.base)], + INTVAL (addr.offset)); + return; + + case ADDRESS_REG_REG: + if (addr.shift == 0) +- asm_fprintf (f, "[%s,%s]", reg_names [REGNO (addr.base)], ++ asm_fprintf (f, "[%s, %s]", reg_names [REGNO (addr.base)], + reg_names [REGNO (addr.offset)]); + else +- asm_fprintf (f, "[%s,%s,lsl %u]", reg_names [REGNO (addr.base)], ++ asm_fprintf (f, "[%s, %s, lsl %u]", reg_names [REGNO (addr.base)], + reg_names [REGNO (addr.offset)], addr.shift); + return; + + case ADDRESS_REG_UXTW: + if (addr.shift == 0) +- asm_fprintf (f, "[%s,w%d,uxtw]", reg_names [REGNO (addr.base)], ++ asm_fprintf (f, "[%s, w%d, uxtw]", reg_names [REGNO (addr.base)], + REGNO (addr.offset) - R0_REGNUM); + else +- asm_fprintf (f, "[%s,w%d,uxtw %u]", reg_names [REGNO (addr.base)], ++ asm_fprintf (f, "[%s, w%d, uxtw %u]", reg_names [REGNO (addr.base)], + REGNO (addr.offset) - R0_REGNUM, addr.shift); + return; + + case ADDRESS_REG_SXTW: + if (addr.shift == 0) +- asm_fprintf (f, "[%s,w%d,sxtw]", reg_names [REGNO (addr.base)], ++ asm_fprintf (f, "[%s, w%d, sxtw]", reg_names [REGNO (addr.base)], + REGNO (addr.offset) - R0_REGNUM); + else +- asm_fprintf (f, "[%s,w%d,sxtw %u]", reg_names [REGNO (addr.base)], ++ asm_fprintf (f, "[%s, w%d, sxtw %u]", reg_names [REGNO (addr.base)], + REGNO (addr.offset) - R0_REGNUM, addr.shift); + return; + +@@ -3878,27 +4254,27 @@ + switch (GET_CODE (x)) + { + case PRE_INC: +- asm_fprintf (f, "[%s,%d]!", reg_names [REGNO (addr.base)], ++ asm_fprintf (f, "[%s, %d]!", reg_names [REGNO (addr.base)], + GET_MODE_SIZE (aarch64_memory_reference_mode)); + return; + case POST_INC: +- asm_fprintf (f, "[%s],%d", reg_names [REGNO (addr.base)], ++ asm_fprintf (f, "[%s], %d", reg_names [REGNO (addr.base)], + GET_MODE_SIZE (aarch64_memory_reference_mode)); + return; + case PRE_DEC: +- asm_fprintf (f, "[%s,-%d]!", reg_names [REGNO (addr.base)], ++ asm_fprintf (f, "[%s, -%d]!", reg_names [REGNO (addr.base)], + GET_MODE_SIZE (aarch64_memory_reference_mode)); + return; + case POST_DEC: +- asm_fprintf (f, "[%s],-%d", reg_names [REGNO (addr.base)], ++ asm_fprintf (f, "[%s], -%d", reg_names [REGNO (addr.base)], + GET_MODE_SIZE (aarch64_memory_reference_mode)); + return; + case PRE_MODIFY: +- asm_fprintf (f, "[%s,%wd]!", reg_names [REGNO (addr.base)], ++ asm_fprintf (f, "[%s, %wd]!", reg_names [REGNO (addr.base)], + INTVAL (addr.offset)); + return; + case POST_MODIFY: +- asm_fprintf (f, "[%s],%wd", reg_names [REGNO (addr.base)], ++ asm_fprintf (f, "[%s], %wd", reg_names [REGNO (addr.base)], + INTVAL (addr.offset)); + return; + default: +@@ -3907,7 +4283,7 @@ + break; + + case ADDRESS_LO_SUM: +- asm_fprintf (f, "[%s,#:lo12:", reg_names [REGNO (addr.base)]); ++ asm_fprintf (f, "[%s, #:lo12:", reg_names [REGNO (addr.base)]); + output_addr_const (f, addr.offset); + asm_fprintf (f, "]"); + return; +@@ -3958,7 +4334,7 @@ + aarch64_regno_regclass (unsigned regno) + { + if (GP_REGNUM_P (regno)) +- return CORE_REGS; ++ return GENERAL_REGS; + + if (regno == SP_REGNUM) + return STACK_REG; +@@ -3973,6 +4349,47 @@ + return NO_REGS; + } + ++static rtx ++aarch64_legitimize_address (rtx x, rtx /* orig_x */, enum machine_mode mode) ++{ ++ /* Try to split X+CONST into Y=X+(CONST & ~mask), Y+(CONST&mask), ++ where mask is selected by alignment and size of the offset. ++ We try to pick as large a range for the offset as possible to ++ maximize the chance of a CSE. However, for aligned addresses ++ we limit the range to 4k so that structures with different sized ++ elements are likely to use the same base. */ ++ ++ if (GET_CODE (x) == PLUS && CONST_INT_P (XEXP (x, 1))) ++ { ++ HOST_WIDE_INT offset = INTVAL (XEXP (x, 1)); ++ HOST_WIDE_INT base_offset; ++ ++ /* Does it look like we'll need a load/store-pair operation? */ ++ if (GET_MODE_SIZE (mode) > 16 ++ || mode == TImode) ++ base_offset = ((offset + 64 * GET_MODE_SIZE (mode)) ++ & ~((128 * GET_MODE_SIZE (mode)) - 1)); ++ /* For offsets aren't a multiple of the access size, the limit is ++ -256...255. */ ++ else if (offset & (GET_MODE_SIZE (mode) - 1)) ++ base_offset = (offset + 0x100) & ~0x1ff; ++ else ++ base_offset = offset & ~0xfff; ++ ++ if (base_offset == 0) ++ return x; ++ ++ offset -= base_offset; ++ rtx base_reg = gen_reg_rtx (Pmode); ++ rtx val = force_operand (plus_constant (Pmode, XEXP (x, 0), base_offset), ++ NULL_RTX); ++ emit_move_insn (base_reg, val); ++ x = plus_constant (Pmode, base_reg, offset); ++ } ++ ++ return x; ++} ++ + /* Try a machine-dependent way of reloading an illegitimate address + operand. If we find one, push the reload and return the new rtx. */ + +@@ -3984,8 +4401,8 @@ + { + rtx x = *x_p; + +- /* Do not allow mem (plus (reg, const)) if vector mode. */ +- if (aarch64_vector_mode_p (mode) ++ /* Do not allow mem (plus (reg, const)) if vector struct mode. */ ++ if (aarch64_vect_struct_mode_p (mode) + && GET_CODE (x) == PLUS + && REG_P (XEXP (x, 0)) + && CONST_INT_P (XEXP (x, 1))) +@@ -4109,12 +4526,12 @@ + /* A TFmode or TImode memory access should be handled via an FP_REGS + because AArch64 has richer addressing modes for LDR/STR instructions + than LDP/STP instructions. */ +- if (!TARGET_GENERAL_REGS_ONLY && rclass == CORE_REGS ++ if (!TARGET_GENERAL_REGS_ONLY && rclass == GENERAL_REGS + && GET_MODE_SIZE (mode) == 16 && MEM_P (x)) + return FP_REGS; + + if (rclass == FP_REGS && (mode == TImode || mode == TFmode) && CONSTANT_P(x)) +- return CORE_REGS; ++ return GENERAL_REGS; + + return NO_REGS; + } +@@ -4139,6 +4556,16 @@ + + return false; + } ++ else ++ { ++ /* If we decided that we didn't need a leaf frame pointer but then used ++ LR in the function, then we'll want a frame pointer after all, so ++ prevent this elimination to ensure a frame pointer is used. */ ++ if (to == STACK_POINTER_REGNUM ++ && flag_omit_leaf_frame_pointer ++ && df_regs_ever_live_p (LR_REGNUM)) ++ return false; ++ } + + return true; + } +@@ -4146,43 +4573,28 @@ + HOST_WIDE_INT + aarch64_initial_elimination_offset (unsigned from, unsigned to) + { +- HOST_WIDE_INT frame_size; +- HOST_WIDE_INT offset; +- + aarch64_layout_frame (); +- frame_size = (get_frame_size () + cfun->machine->frame.saved_regs_size +- + crtl->outgoing_args_size +- + cfun->machine->saved_varargs_size); + +- frame_size = AARCH64_ROUND_UP (frame_size, STACK_BOUNDARY / BITS_PER_UNIT); +- offset = frame_size; ++ if (to == HARD_FRAME_POINTER_REGNUM) ++ { ++ if (from == ARG_POINTER_REGNUM) ++ return cfun->machine->frame.frame_size - crtl->outgoing_args_size; + +- if (to == HARD_FRAME_POINTER_REGNUM) +- { +- if (from == ARG_POINTER_REGNUM) +- return offset - crtl->outgoing_args_size; ++ if (from == FRAME_POINTER_REGNUM) ++ return (cfun->machine->frame.hard_fp_offset ++ - cfun->machine->frame.saved_varargs_size); ++ } + +- if (from == FRAME_POINTER_REGNUM) +- return cfun->machine->frame.saved_regs_size + get_frame_size (); +- } ++ if (to == STACK_POINTER_REGNUM) ++ { ++ if (from == FRAME_POINTER_REGNUM) ++ return (cfun->machine->frame.frame_size ++ - cfun->machine->frame.saved_varargs_size); ++ } + +- if (to == STACK_POINTER_REGNUM) +- { +- if (from == FRAME_POINTER_REGNUM) +- { +- HOST_WIDE_INT elim = crtl->outgoing_args_size +- + cfun->machine->frame.saved_regs_size +- + get_frame_size () +- - cfun->machine->frame.fp_lr_offset; +- elim = AARCH64_ROUND_UP (elim, STACK_BOUNDARY / BITS_PER_UNIT); +- return elim; +- } +- } +- +- return offset; ++ return cfun->machine->frame.frame_size; + } + +- + /* Implement RETURN_ADDR_RTX. We do not support moving back to a + previous frame. */ + +@@ -4246,7 +4658,7 @@ + { + switch (regclass) + { +- case CORE_REGS: ++ case CALLER_SAVE_REGS: + case POINTER_REGS: + case GENERAL_REGS: + case ALL_REGS: +@@ -4447,9 +4859,13 @@ + { + rtx op = x; + ++ /* We accept both ROTATERT and ROTATE: since the RHS must be a constant ++ we can convert both to ROR during final output. */ + if ((GET_CODE (op) == ASHIFT + || GET_CODE (op) == ASHIFTRT +- || GET_CODE (op) == LSHIFTRT) ++ || GET_CODE (op) == LSHIFTRT ++ || GET_CODE (op) == ROTATERT ++ || GET_CODE (op) == ROTATE) + && CONST_INT_P (XEXP (op, 1))) + return XEXP (op, 0); + +@@ -4461,12 +4877,12 @@ + return x; + } + +-/* Helper function for rtx cost calculation. Strip a shift or extend ++/* Helper function for rtx cost calculation. Strip an extend + expression from X. Returns the inner operand if successful, or the + original expression on failure. We deal with a number of possible + canonicalization variations here. */ + static rtx +-aarch64_strip_shift_or_extend (rtx x) ++aarch64_strip_extend (rtx x) + { + rtx op = x; + +@@ -4473,6 +4889,7 @@ + /* Zero and sign extraction of a widened value. */ + if ((GET_CODE (op) == ZERO_EXTRACT || GET_CODE (op) == SIGN_EXTRACT) + && XEXP (op, 2) == const0_rtx ++ && GET_CODE (XEXP (op, 0)) == MULT + && aarch64_is_extend_from_extract (GET_MODE (op), XEXP (XEXP (op, 0), 1), + XEXP (op, 1))) + return XEXP (XEXP (op, 0), 0); +@@ -4501,9 +4918,335 @@ + if (op != x) + return op; + +- return aarch64_strip_shift (x); ++ return x; + } + ++/* Helper function for rtx cost calculation. Calculate the cost of ++ a MULT, which may be part of a multiply-accumulate rtx. Return ++ the calculated cost of the expression, recursing manually in to ++ operands where needed. */ ++ ++static int ++aarch64_rtx_mult_cost (rtx x, int code, int outer, bool speed) ++{ ++ rtx op0, op1; ++ const struct cpu_cost_table *extra_cost ++ = aarch64_tune_params->insn_extra_cost; ++ int cost = 0; ++ bool maybe_fma = (outer == PLUS || outer == MINUS); ++ enum machine_mode mode = GET_MODE (x); ++ ++ gcc_checking_assert (code == MULT); ++ ++ op0 = XEXP (x, 0); ++ op1 = XEXP (x, 1); ++ ++ if (VECTOR_MODE_P (mode)) ++ mode = GET_MODE_INNER (mode); ++ ++ /* Integer multiply/fma. */ ++ if (GET_MODE_CLASS (mode) == MODE_INT) ++ { ++ /* The multiply will be canonicalized as a shift, cost it as such. */ ++ if (CONST_INT_P (op1) ++ && exact_log2 (INTVAL (op1)) > 0) ++ { ++ if (speed) ++ { ++ if (maybe_fma) ++ /* ADD (shifted register). */ ++ cost += extra_cost->alu.arith_shift; ++ else ++ /* LSL (immediate). */ ++ cost += extra_cost->alu.shift; ++ } ++ ++ cost += rtx_cost (op0, GET_CODE (op0), 0, speed); ++ ++ return cost; ++ } ++ ++ /* Integer multiplies or FMAs have zero/sign extending variants. */ ++ if ((GET_CODE (op0) == ZERO_EXTEND ++ && GET_CODE (op1) == ZERO_EXTEND) ++ || (GET_CODE (op0) == SIGN_EXTEND ++ && GET_CODE (op1) == SIGN_EXTEND)) ++ { ++ cost += rtx_cost (XEXP (op0, 0), MULT, 0, speed) ++ + rtx_cost (XEXP (op1, 0), MULT, 1, speed); ++ ++ if (speed) ++ { ++ if (maybe_fma) ++ /* MADD/SMADDL/UMADDL. */ ++ cost += extra_cost->mult[0].extend_add; ++ else ++ /* MUL/SMULL/UMULL. */ ++ cost += extra_cost->mult[0].extend; ++ } ++ ++ return cost; ++ } ++ ++ /* This is either an integer multiply or an FMA. In both cases ++ we want to recurse and cost the operands. */ ++ cost += rtx_cost (op0, MULT, 0, speed) ++ + rtx_cost (op1, MULT, 1, speed); ++ ++ if (speed) ++ { ++ if (maybe_fma) ++ /* MADD. */ ++ cost += extra_cost->mult[mode == DImode].add; ++ else ++ /* MUL. */ ++ cost += extra_cost->mult[mode == DImode].simple; ++ } ++ ++ return cost; ++ } ++ else ++ { ++ if (speed) ++ { ++ /* Floating-point FMA/FMUL can also support negations of the ++ operands. */ ++ if (GET_CODE (op0) == NEG) ++ op0 = XEXP (op0, 0); ++ if (GET_CODE (op1) == NEG) ++ op1 = XEXP (op1, 0); ++ ++ if (maybe_fma) ++ /* FMADD/FNMADD/FNMSUB/FMSUB. */ ++ cost += extra_cost->fp[mode == DFmode].fma; ++ else ++ /* FMUL/FNMUL. */ ++ cost += extra_cost->fp[mode == DFmode].mult; ++ } ++ ++ cost += rtx_cost (op0, MULT, 0, speed) ++ + rtx_cost (op1, MULT, 1, speed); ++ return cost; ++ } ++} ++ ++static int ++aarch64_address_cost (rtx x, ++ enum machine_mode mode, ++ addr_space_t as ATTRIBUTE_UNUSED, ++ bool speed) ++{ ++ enum rtx_code c = GET_CODE (x); ++ const struct cpu_addrcost_table *addr_cost = aarch64_tune_params->addr_cost; ++ struct aarch64_address_info info; ++ int cost = 0; ++ info.shift = 0; ++ ++ if (!aarch64_classify_address (&info, x, mode, c, false)) ++ { ++ if (GET_CODE (x) == CONST || GET_CODE (x) == SYMBOL_REF) ++ { ++ /* This is a CONST or SYMBOL ref which will be split ++ in a different way depending on the code model in use. ++ Cost it through the generic infrastructure. */ ++ int cost_symbol_ref = rtx_cost (x, MEM, 1, speed); ++ /* Divide through by the cost of one instruction to ++ bring it to the same units as the address costs. */ ++ cost_symbol_ref /= COSTS_N_INSNS (1); ++ /* The cost is then the cost of preparing the address, ++ followed by an immediate (possibly 0) offset. */ ++ return cost_symbol_ref + addr_cost->imm_offset; ++ } ++ else ++ { ++ /* This is most likely a jump table from a case ++ statement. */ ++ return addr_cost->register_offset; ++ } ++ } ++ ++ switch (info.type) ++ { ++ case ADDRESS_LO_SUM: ++ case ADDRESS_SYMBOLIC: ++ case ADDRESS_REG_IMM: ++ cost += addr_cost->imm_offset; ++ break; ++ ++ case ADDRESS_REG_WB: ++ if (c == PRE_INC || c == PRE_DEC || c == PRE_MODIFY) ++ cost += addr_cost->pre_modify; ++ else if (c == POST_INC || c == POST_DEC || c == POST_MODIFY) ++ cost += addr_cost->post_modify; ++ else ++ gcc_unreachable (); ++ ++ break; ++ ++ case ADDRESS_REG_REG: ++ cost += addr_cost->register_offset; ++ break; ++ ++ case ADDRESS_REG_UXTW: ++ case ADDRESS_REG_SXTW: ++ cost += addr_cost->register_extend; ++ break; ++ ++ default: ++ gcc_unreachable (); ++ } ++ ++ ++ if (info.shift > 0) ++ { ++ /* For the sake of calculating the cost of the shifted register ++ component, we can treat same sized modes in the same way. */ ++ switch (GET_MODE_BITSIZE (mode)) ++ { ++ case 16: ++ cost += addr_cost->addr_scale_costs.hi; ++ break; ++ ++ case 32: ++ cost += addr_cost->addr_scale_costs.si; ++ break; ++ ++ case 64: ++ cost += addr_cost->addr_scale_costs.di; ++ break; ++ ++ /* We can't tell, or this is a 128-bit vector. */ ++ default: ++ cost += addr_cost->addr_scale_costs.ti; ++ break; ++ } ++ } ++ ++ return cost; ++} ++ ++/* Return true if the RTX X in mode MODE is a zero or sign extract ++ usable in an ADD or SUB (extended register) instruction. */ ++static bool ++aarch64_rtx_arith_op_extract_p (rtx x, enum machine_mode mode) ++{ ++ /* Catch add with a sign extract. ++ This is add__multp2. */ ++ if (GET_CODE (x) == SIGN_EXTRACT ++ || GET_CODE (x) == ZERO_EXTRACT) ++ { ++ rtx op0 = XEXP (x, 0); ++ rtx op1 = XEXP (x, 1); ++ rtx op2 = XEXP (x, 2); ++ ++ if (GET_CODE (op0) == MULT ++ && CONST_INT_P (op1) ++ && op2 == const0_rtx ++ && CONST_INT_P (XEXP (op0, 1)) ++ && aarch64_is_extend_from_extract (mode, ++ XEXP (op0, 1), ++ op1)) ++ { ++ return true; ++ } ++ } ++ ++ return false; ++} ++ ++static bool ++aarch64_frint_unspec_p (unsigned int u) ++{ ++ switch (u) ++ { ++ case UNSPEC_FRINTZ: ++ case UNSPEC_FRINTP: ++ case UNSPEC_FRINTM: ++ case UNSPEC_FRINTA: ++ case UNSPEC_FRINTN: ++ case UNSPEC_FRINTX: ++ case UNSPEC_FRINTI: ++ return true; ++ ++ default: ++ return false; ++ } ++} ++ ++/* Calculate the cost of calculating (if_then_else (OP0) (OP1) (OP2)), ++ storing it in *COST. Result is true if the total cost of the operation ++ has now been calculated. */ ++static bool ++aarch64_if_then_else_costs (rtx op0, rtx op1, rtx op2, int *cost, bool speed) ++{ ++ rtx inner; ++ rtx comparator; ++ enum rtx_code cmpcode; ++ ++ if (COMPARISON_P (op0)) ++ { ++ inner = XEXP (op0, 0); ++ comparator = XEXP (op0, 1); ++ cmpcode = GET_CODE (op0); ++ } ++ else ++ { ++ inner = op0; ++ comparator = const0_rtx; ++ cmpcode = NE; ++ } ++ ++ if (GET_CODE (op1) == PC || GET_CODE (op2) == PC) ++ { ++ /* Conditional branch. */ ++ if (GET_MODE_CLASS (GET_MODE (inner)) == MODE_CC) ++ return true; ++ else ++ { ++ if (cmpcode == NE || cmpcode == EQ) ++ { ++ if (comparator == const0_rtx) ++ { ++ /* TBZ/TBNZ/CBZ/CBNZ. */ ++ if (GET_CODE (inner) == ZERO_EXTRACT) ++ /* TBZ/TBNZ. */ ++ *cost += rtx_cost (XEXP (inner, 0), ZERO_EXTRACT, ++ 0, speed); ++ else ++ /* CBZ/CBNZ. */ ++ *cost += rtx_cost (inner, cmpcode, 0, speed); ++ ++ return true; ++ } ++ } ++ else if (cmpcode == LT || cmpcode == GE) ++ { ++ /* TBZ/TBNZ. */ ++ if (comparator == const0_rtx) ++ return true; ++ } ++ } ++ } ++ else if (GET_MODE_CLASS (GET_MODE (inner)) == MODE_CC) ++ { ++ /* It's a conditional operation based on the status flags, ++ so it must be some flavor of CSEL. */ ++ ++ /* CSNEG, CSINV, and CSINC are handled for free as part of CSEL. */ ++ if (GET_CODE (op1) == NEG ++ || GET_CODE (op1) == NOT ++ || (GET_CODE (op1) == PLUS && XEXP (op1, 1) == const1_rtx)) ++ op1 = XEXP (op1, 0); ++ ++ *cost += rtx_cost (op1, IF_THEN_ELSE, 1, speed); ++ *cost += rtx_cost (op2, IF_THEN_ELSE, 2, speed); ++ return true; ++ } ++ ++ /* We don't know what this is, cost all operands. */ ++ return false; ++} ++ + /* Calculate the cost of calculating X, storing it in *COST. Result + is true if the total cost of the operation has now been calculated. */ + static bool +@@ -4510,13 +5253,31 @@ + aarch64_rtx_costs (rtx x, int code, int outer ATTRIBUTE_UNUSED, + int param ATTRIBUTE_UNUSED, int *cost, bool speed) + { +- rtx op0, op1; ++ rtx op0, op1, op2; + const struct cpu_cost_table *extra_cost + = aarch64_tune_params->insn_extra_cost; ++ enum machine_mode mode = GET_MODE (x); + ++ /* By default, assume that everything has equivalent cost to the ++ cheapest instruction. Any additional costs are applied as a delta ++ above this default. */ ++ *cost = COSTS_N_INSNS (1); ++ ++ /* TODO: The cost infrastructure currently does not handle ++ vector operations. Assume that all vector operations ++ are equally expensive. */ ++ if (VECTOR_MODE_P (mode)) ++ { ++ if (speed) ++ *cost += extra_cost->vect.alu; ++ return true; ++ } ++ + switch (code) + { + case SET: ++ /* The cost depends entirely on the operands to SET. */ ++ *cost = 0; + op0 = SET_DEST (x); + op1 = SET_SRC (x); + +@@ -4524,52 +5285,194 @@ + { + case MEM: + if (speed) +- *cost += extra_cost->ldst.store; ++ { ++ rtx address = XEXP (op0, 0); ++ if (GET_MODE_CLASS (mode) == MODE_INT) ++ *cost += extra_cost->ldst.store; ++ else if (mode == SFmode) ++ *cost += extra_cost->ldst.storef; ++ else if (mode == DFmode) ++ *cost += extra_cost->ldst.stored; + +- if (op1 != const0_rtx) +- *cost += rtx_cost (op1, SET, 1, speed); ++ *cost += ++ COSTS_N_INSNS (aarch64_address_cost (address, mode, ++ 0, speed)); ++ } ++ ++ *cost += rtx_cost (op1, SET, 1, speed); + return true; + + case SUBREG: + if (! REG_P (SUBREG_REG (op0))) + *cost += rtx_cost (SUBREG_REG (op0), SET, 0, speed); ++ + /* Fall through. */ + case REG: +- /* Cost is just the cost of the RHS of the set. */ +- *cost += rtx_cost (op1, SET, 1, true); ++ /* const0_rtx is in general free, but we will use an ++ instruction to set a register to 0. */ ++ if (REG_P (op1) || op1 == const0_rtx) ++ { ++ /* The cost is 1 per register copied. */ ++ int n_minus_1 = (GET_MODE_SIZE (GET_MODE (op0)) - 1) ++ / UNITS_PER_WORD; ++ *cost = COSTS_N_INSNS (n_minus_1 + 1); ++ } ++ else ++ /* Cost is just the cost of the RHS of the set. */ ++ *cost += rtx_cost (op1, SET, 1, speed); + return true; + +- case ZERO_EXTRACT: /* Bit-field insertion. */ ++ case ZERO_EXTRACT: + case SIGN_EXTRACT: +- /* Strip any redundant widening of the RHS to meet the width of +- the target. */ ++ /* Bit-field insertion. Strip any redundant widening of ++ the RHS to meet the width of the target. */ + if (GET_CODE (op1) == SUBREG) + op1 = SUBREG_REG (op1); + if ((GET_CODE (op1) == ZERO_EXTEND + || GET_CODE (op1) == SIGN_EXTEND) +- && GET_CODE (XEXP (op0, 1)) == CONST_INT ++ && CONST_INT_P (XEXP (op0, 1)) + && (GET_MODE_BITSIZE (GET_MODE (XEXP (op1, 0))) + >= INTVAL (XEXP (op0, 1)))) + op1 = XEXP (op1, 0); +- *cost += rtx_cost (op1, SET, 1, speed); ++ ++ if (CONST_INT_P (op1)) ++ { ++ /* MOV immediate is assumed to always be cheap. */ ++ *cost = COSTS_N_INSNS (1); ++ } ++ else ++ { ++ /* BFM. */ ++ if (speed) ++ *cost += extra_cost->alu.bfi; ++ *cost += rtx_cost (op1, (enum rtx_code) code, 1, speed); ++ } ++ + return true; + + default: +- break; ++ /* We can't make sense of this, assume default cost. */ ++ *cost = COSTS_N_INSNS (1); ++ return false; + } + return false; + ++ case CONST_INT: ++ /* If an instruction can incorporate a constant within the ++ instruction, the instruction's expression avoids calling ++ rtx_cost() on the constant. If rtx_cost() is called on a ++ constant, then it is usually because the constant must be ++ moved into a register by one or more instructions. ++ ++ The exception is constant 0, which can be expressed ++ as XZR/WZR and is therefore free. The exception to this is ++ if we have (set (reg) (const0_rtx)) in which case we must cost ++ the move. However, we can catch that when we cost the SET, so ++ we don't need to consider that here. */ ++ if (x == const0_rtx) ++ *cost = 0; ++ else ++ { ++ /* To an approximation, building any other constant is ++ proportionally expensive to the number of instructions ++ required to build that constant. This is true whether we ++ are compiling for SPEED or otherwise. */ ++ *cost = COSTS_N_INSNS (aarch64_internal_mov_immediate ++ (NULL_RTX, x, false, mode)); ++ } ++ return true; ++ ++ case CONST_DOUBLE: ++ if (speed) ++ { ++ /* mov[df,sf]_aarch64. */ ++ if (aarch64_float_const_representable_p (x)) ++ /* FMOV (scalar immediate). */ ++ *cost += extra_cost->fp[mode == DFmode].fpconst; ++ else if (!aarch64_float_const_zero_rtx_p (x)) ++ { ++ /* This will be a load from memory. */ ++ if (mode == DFmode) ++ *cost += extra_cost->ldst.loadd; ++ else ++ *cost += extra_cost->ldst.loadf; ++ } ++ else ++ /* Otherwise this is +0.0. We get this using MOVI d0, #0 ++ or MOV v0.s[0], wzr - neither of which are modeled by the ++ cost tables. Just use the default cost. */ ++ { ++ } ++ } ++ ++ return true; ++ + case MEM: + if (speed) +- *cost += extra_cost->ldst.load; ++ { ++ /* For loads we want the base cost of a load, plus an ++ approximation for the additional cost of the addressing ++ mode. */ ++ rtx address = XEXP (x, 0); ++ if (GET_MODE_CLASS (mode) == MODE_INT) ++ *cost += extra_cost->ldst.load; ++ else if (mode == SFmode) ++ *cost += extra_cost->ldst.loadf; ++ else if (mode == DFmode) ++ *cost += extra_cost->ldst.loadd; + ++ *cost += ++ COSTS_N_INSNS (aarch64_address_cost (address, mode, ++ 0, speed)); ++ } ++ + return true; + + case NEG: +- op0 = CONST0_RTX (GET_MODE (x)); +- op1 = XEXP (x, 0); +- goto cost_minus; ++ op0 = XEXP (x, 0); + ++ if (GET_MODE_CLASS (GET_MODE (x)) == MODE_INT) ++ { ++ if (GET_RTX_CLASS (GET_CODE (op0)) == RTX_COMPARE ++ || GET_RTX_CLASS (GET_CODE (op0)) == RTX_COMM_COMPARE) ++ { ++ /* CSETM. */ ++ *cost += rtx_cost (XEXP (op0, 0), NEG, 0, speed); ++ return true; ++ } ++ ++ /* Cost this as SUB wzr, X. */ ++ op0 = CONST0_RTX (GET_MODE (x)); ++ op1 = XEXP (x, 0); ++ goto cost_minus; ++ } ++ ++ if (GET_MODE_CLASS (GET_MODE (x)) == MODE_FLOAT) ++ { ++ /* Support (neg(fma...)) as a single instruction only if ++ sign of zeros is unimportant. This matches the decision ++ making in aarch64.md. */ ++ if (GET_CODE (op0) == FMA && !HONOR_SIGNED_ZEROS (GET_MODE (op0))) ++ { ++ /* FNMADD. */ ++ *cost = rtx_cost (op0, NEG, 0, speed); ++ return true; ++ } ++ if (speed) ++ /* FNEG. */ ++ *cost += extra_cost->fp[mode == DFmode].neg; ++ return false; ++ } ++ ++ return false; ++ ++ case CLRSB: ++ case CLZ: ++ if (speed) ++ *cost += extra_cost->alu.clz; ++ ++ return false; ++ + case COMPARE: + op0 = XEXP (x, 0); + op1 = XEXP (x, 1); +@@ -4581,96 +5484,228 @@ + goto cost_logic; + } + +- /* Comparisons can work if the order is swapped. +- Canonicalization puts the more complex operation first, but +- we want it in op1. */ +- if (! (REG_P (op0) +- || (GET_CODE (op0) == SUBREG && REG_P (SUBREG_REG (op0))))) +- { +- op0 = XEXP (x, 1); +- op1 = XEXP (x, 0); +- } +- goto cost_minus; ++ if (GET_MODE_CLASS (GET_MODE (op0)) == MODE_INT) ++ { ++ /* TODO: A write to the CC flags possibly costs extra, this ++ needs encoding in the cost tables. */ + ++ /* CC_ZESWPmode supports zero extend for free. */ ++ if (GET_MODE (x) == CC_ZESWPmode && GET_CODE (op0) == ZERO_EXTEND) ++ op0 = XEXP (op0, 0); ++ ++ /* ANDS. */ ++ if (GET_CODE (op0) == AND) ++ { ++ x = op0; ++ goto cost_logic; ++ } ++ ++ if (GET_CODE (op0) == PLUS) ++ { ++ /* ADDS (and CMN alias). */ ++ x = op0; ++ goto cost_plus; ++ } ++ ++ if (GET_CODE (op0) == MINUS) ++ { ++ /* SUBS. */ ++ x = op0; ++ goto cost_minus; ++ } ++ ++ if (GET_CODE (op1) == NEG) ++ { ++ /* CMN. */ ++ if (speed) ++ *cost += extra_cost->alu.arith; ++ ++ *cost += rtx_cost (op0, COMPARE, 0, speed); ++ *cost += rtx_cost (XEXP (op1, 0), NEG, 1, speed); ++ return true; ++ } ++ ++ /* CMP. ++ ++ Compare can freely swap the order of operands, and ++ canonicalization puts the more complex operation first. ++ But the integer MINUS logic expects the shift/extend ++ operation in op1. */ ++ if (! (REG_P (op0) ++ || (GET_CODE (op0) == SUBREG && REG_P (SUBREG_REG (op0))))) ++ { ++ op0 = XEXP (x, 1); ++ op1 = XEXP (x, 0); ++ } ++ goto cost_minus; ++ } ++ ++ if (GET_MODE_CLASS (GET_MODE (op0)) == MODE_FLOAT) ++ { ++ /* FCMP. */ ++ if (speed) ++ *cost += extra_cost->fp[mode == DFmode].compare; ++ ++ if (CONST_DOUBLE_P (op1) && aarch64_float_const_zero_rtx_p (op1)) ++ { ++ /* FCMP supports constant 0.0 for no extra cost. */ ++ return true; ++ } ++ return false; ++ } ++ ++ return false; ++ + case MINUS: +- op0 = XEXP (x, 0); +- op1 = XEXP (x, 1); ++ { ++ op0 = XEXP (x, 0); ++ op1 = XEXP (x, 1); + +- cost_minus: +- if (GET_MODE_CLASS (GET_MODE (x)) == MODE_INT +- || (GET_MODE_CLASS (GET_MODE (x)) == MODE_CC +- && GET_MODE_CLASS (GET_MODE (op0)) == MODE_INT)) +- { +- if (op0 != const0_rtx) ++cost_minus: ++ /* Detect valid immediates. */ ++ if ((GET_MODE_CLASS (mode) == MODE_INT ++ || (GET_MODE_CLASS (mode) == MODE_CC ++ && GET_MODE_CLASS (GET_MODE (op0)) == MODE_INT)) ++ && CONST_INT_P (op1) ++ && aarch64_uimm12_shift (INTVAL (op1))) ++ { + *cost += rtx_cost (op0, MINUS, 0, speed); + +- if (CONST_INT_P (op1)) +- { +- if (!aarch64_uimm12_shift (INTVAL (op1))) +- *cost += rtx_cost (op1, MINUS, 1, speed); +- } +- else +- { +- op1 = aarch64_strip_shift_or_extend (op1); +- *cost += rtx_cost (op1, MINUS, 1, speed); +- } +- return true; +- } ++ if (speed) ++ /* SUB(S) (immediate). */ ++ *cost += extra_cost->alu.arith; ++ return true; + +- return false; ++ } + ++ /* Look for SUB (extended register). */ ++ if (aarch64_rtx_arith_op_extract_p (op1, mode)) ++ { ++ if (speed) ++ *cost += extra_cost->alu.arith_shift; ++ ++ *cost += rtx_cost (XEXP (XEXP (op1, 0), 0), ++ (enum rtx_code) GET_CODE (op1), ++ 0, speed); ++ return true; ++ } ++ ++ rtx new_op1 = aarch64_strip_extend (op1); ++ ++ /* Cost this as an FMA-alike operation. */ ++ if ((GET_CODE (new_op1) == MULT ++ || GET_CODE (new_op1) == ASHIFT) ++ && code != COMPARE) ++ { ++ *cost += aarch64_rtx_mult_cost (new_op1, MULT, ++ (enum rtx_code) code, ++ speed); ++ *cost += rtx_cost (op0, MINUS, 0, speed); ++ return true; ++ } ++ ++ *cost += rtx_cost (new_op1, MINUS, 1, speed); ++ ++ if (speed) ++ { ++ if (GET_MODE_CLASS (mode) == MODE_INT) ++ /* SUB(S). */ ++ *cost += extra_cost->alu.arith; ++ else if (GET_MODE_CLASS (mode) == MODE_FLOAT) ++ /* FSUB. */ ++ *cost += extra_cost->fp[mode == DFmode].addsub; ++ } ++ return true; ++ } ++ + case PLUS: +- op0 = XEXP (x, 0); +- op1 = XEXP (x, 1); ++ { ++ rtx new_op0; + +- if (GET_MODE_CLASS (GET_MODE (x)) == MODE_INT) +- { +- if (CONST_INT_P (op1) && aarch64_uimm12_shift (INTVAL (op1))) +- { +- *cost += rtx_cost (op0, PLUS, 0, speed); +- } +- else +- { +- rtx new_op0 = aarch64_strip_shift_or_extend (op0); ++ op0 = XEXP (x, 0); ++ op1 = XEXP (x, 1); + +- if (new_op0 == op0 +- && GET_CODE (op0) == MULT) +- { +- if ((GET_CODE (XEXP (op0, 0)) == ZERO_EXTEND +- && GET_CODE (XEXP (op0, 1)) == ZERO_EXTEND) +- || (GET_CODE (XEXP (op0, 0)) == SIGN_EXTEND +- && GET_CODE (XEXP (op0, 1)) == SIGN_EXTEND)) +- { +- *cost += (rtx_cost (XEXP (XEXP (op0, 0), 0), MULT, 0, +- speed) +- + rtx_cost (XEXP (XEXP (op0, 1), 0), MULT, 1, +- speed) +- + rtx_cost (op1, PLUS, 1, speed)); +- if (speed) +- *cost += +- extra_cost->mult[GET_MODE (x) == DImode].extend_add; +- return true; +- } ++cost_plus: ++ if (GET_RTX_CLASS (GET_CODE (op0)) == RTX_COMPARE ++ || GET_RTX_CLASS (GET_CODE (op0)) == RTX_COMM_COMPARE) ++ { ++ /* CSINC. */ ++ *cost += rtx_cost (XEXP (op0, 0), PLUS, 0, speed); ++ *cost += rtx_cost (op1, PLUS, 1, speed); ++ return true; ++ } + +- *cost += (rtx_cost (XEXP (op0, 0), MULT, 0, speed) +- + rtx_cost (XEXP (op0, 1), MULT, 1, speed) +- + rtx_cost (op1, PLUS, 1, speed)); ++ if (GET_MODE_CLASS (mode) == MODE_INT ++ && CONST_INT_P (op1) ++ && aarch64_uimm12_shift (INTVAL (op1))) ++ { ++ *cost += rtx_cost (op0, PLUS, 0, speed); + +- if (speed) +- *cost += extra_cost->mult[GET_MODE (x) == DImode].add; ++ if (speed) ++ /* ADD (immediate). */ ++ *cost += extra_cost->alu.arith; ++ return true; ++ } + +- return true; +- } ++ /* Look for ADD (extended register). */ ++ if (aarch64_rtx_arith_op_extract_p (op0, mode)) ++ { ++ if (speed) ++ *cost += extra_cost->alu.arith_shift; + +- *cost += (rtx_cost (new_op0, PLUS, 0, speed) +- + rtx_cost (op1, PLUS, 1, speed)); +- } +- return true; +- } ++ *cost += rtx_cost (XEXP (XEXP (op0, 0), 0), ++ (enum rtx_code) GET_CODE (op0), ++ 0, speed); ++ return true; ++ } + ++ /* Strip any extend, leave shifts behind as we will ++ cost them through mult_cost. */ ++ new_op0 = aarch64_strip_extend (op0); ++ ++ if (GET_CODE (new_op0) == MULT ++ || GET_CODE (new_op0) == ASHIFT) ++ { ++ *cost += aarch64_rtx_mult_cost (new_op0, MULT, PLUS, ++ speed); ++ *cost += rtx_cost (op1, PLUS, 1, speed); ++ return true; ++ } ++ ++ *cost += (rtx_cost (new_op0, PLUS, 0, speed) ++ + rtx_cost (op1, PLUS, 1, speed)); ++ ++ if (speed) ++ { ++ if (GET_MODE_CLASS (mode) == MODE_INT) ++ /* ADD. */ ++ *cost += extra_cost->alu.arith; ++ else if (GET_MODE_CLASS (mode) == MODE_FLOAT) ++ /* FADD. */ ++ *cost += extra_cost->fp[mode == DFmode].addsub; ++ } ++ return true; ++ } ++ ++ case BSWAP: ++ *cost = COSTS_N_INSNS (1); ++ ++ if (speed) ++ *cost += extra_cost->alu.rev; ++ + return false; + + case IOR: ++ if (aarch_rev16_p (x)) ++ { ++ *cost = COSTS_N_INSNS (1); ++ ++ if (speed) ++ *cost += extra_cost->alu.rev; ++ ++ return true; ++ } ++ /* Fall through. */ + case XOR: + case AND: + cost_logic: +@@ -4677,117 +5712,252 @@ + op0 = XEXP (x, 0); + op1 = XEXP (x, 1); + ++ if (code == AND ++ && GET_CODE (op0) == MULT ++ && CONST_INT_P (XEXP (op0, 1)) ++ && CONST_INT_P (op1) ++ && aarch64_uxt_size (exact_log2 (INTVAL (XEXP (op0, 1))), ++ INTVAL (op1)) != 0) ++ { ++ /* This is a UBFM/SBFM. */ ++ *cost += rtx_cost (XEXP (op0, 0), ZERO_EXTRACT, 0, speed); ++ if (speed) ++ *cost += extra_cost->alu.bfx; ++ return true; ++ } ++ + if (GET_MODE_CLASS (GET_MODE (x)) == MODE_INT) + { ++ /* We possibly get the immediate for free, this is not ++ modelled. */ + if (CONST_INT_P (op1) + && aarch64_bitmask_imm (INTVAL (op1), GET_MODE (x))) + { +- *cost += rtx_cost (op0, AND, 0, speed); ++ *cost += rtx_cost (op0, (enum rtx_code) code, 0, speed); ++ ++ if (speed) ++ *cost += extra_cost->alu.logical; ++ ++ return true; + } + else + { ++ rtx new_op0 = op0; ++ ++ /* Handle ORN, EON, or BIC. */ + if (GET_CODE (op0) == NOT) + op0 = XEXP (op0, 0); +- op0 = aarch64_strip_shift (op0); +- *cost += (rtx_cost (op0, AND, 0, speed) +- + rtx_cost (op1, AND, 1, speed)); ++ ++ new_op0 = aarch64_strip_shift (op0); ++ ++ /* If we had a shift on op0 then this is a logical-shift- ++ by-register/immediate operation. Otherwise, this is just ++ a logical operation. */ ++ if (speed) ++ { ++ if (new_op0 != op0) ++ { ++ /* Shift by immediate. */ ++ if (CONST_INT_P (XEXP (op0, 1))) ++ *cost += extra_cost->alu.log_shift; ++ else ++ *cost += extra_cost->alu.log_shift_reg; ++ } ++ else ++ *cost += extra_cost->alu.logical; ++ } ++ ++ /* In both cases we want to cost both operands. */ ++ *cost += rtx_cost (new_op0, (enum rtx_code) code, 0, speed) ++ + rtx_cost (op1, (enum rtx_code) code, 1, speed); ++ ++ return true; + } +- return true; + } + return false; + ++ case NOT: ++ /* MVN. */ ++ if (speed) ++ *cost += extra_cost->alu.logical; ++ ++ /* The logical instruction could have the shifted register form, ++ but the cost is the same if the shift is processed as a separate ++ instruction, so we don't bother with it here. */ ++ return false; ++ + case ZERO_EXTEND: +- if ((GET_MODE (x) == DImode +- && GET_MODE (XEXP (x, 0)) == SImode) +- || GET_CODE (XEXP (x, 0)) == MEM) ++ ++ op0 = XEXP (x, 0); ++ /* If a value is written in SI mode, then zero extended to DI ++ mode, the operation will in general be free as a write to ++ a 'w' register implicitly zeroes the upper bits of an 'x' ++ register. However, if this is ++ ++ (set (reg) (zero_extend (reg))) ++ ++ we must cost the explicit register move. */ ++ if (mode == DImode ++ && GET_MODE (op0) == SImode ++ && outer == SET) + { +- *cost += rtx_cost (XEXP (x, 0), ZERO_EXTEND, 0, speed); ++ int op_cost = rtx_cost (XEXP (x, 0), ZERO_EXTEND, 0, speed); ++ ++ if (!op_cost && speed) ++ /* MOV. */ ++ *cost += extra_cost->alu.extend; ++ else ++ /* Free, the cost is that of the SI mode operation. */ ++ *cost = op_cost; ++ + return true; + } ++ else if (MEM_P (XEXP (x, 0))) ++ { ++ /* All loads can zero extend to any size for free. */ ++ *cost = rtx_cost (XEXP (x, 0), ZERO_EXTEND, param, speed); ++ return true; ++ } ++ ++ /* UXTB/UXTH. */ ++ if (speed) ++ *cost += extra_cost->alu.extend; ++ + return false; + + case SIGN_EXTEND: +- if (GET_CODE (XEXP (x, 0)) == MEM) ++ if (MEM_P (XEXP (x, 0))) + { +- *cost += rtx_cost (XEXP (x, 0), SIGN_EXTEND, 0, speed); ++ /* LDRSH. */ ++ if (speed) ++ { ++ rtx address = XEXP (XEXP (x, 0), 0); ++ *cost += extra_cost->ldst.load_sign_extend; ++ ++ *cost += ++ COSTS_N_INSNS (aarch64_address_cost (address, mode, ++ 0, speed)); ++ } + return true; + } ++ ++ if (speed) ++ *cost += extra_cost->alu.extend; + return false; + ++ case ASHIFT: ++ op0 = XEXP (x, 0); ++ op1 = XEXP (x, 1); ++ ++ if (CONST_INT_P (op1)) ++ { ++ /* LSL (immediate), UBMF, UBFIZ and friends. These are all ++ aliases. */ ++ if (speed) ++ *cost += extra_cost->alu.shift; ++ ++ /* We can incorporate zero/sign extend for free. */ ++ if (GET_CODE (op0) == ZERO_EXTEND ++ || GET_CODE (op0) == SIGN_EXTEND) ++ op0 = XEXP (op0, 0); ++ ++ *cost += rtx_cost (op0, ASHIFT, 0, speed); ++ return true; ++ } ++ else ++ { ++ /* LSLV. */ ++ if (speed) ++ *cost += extra_cost->alu.shift_reg; ++ ++ return false; /* All arguments need to be in registers. */ ++ } ++ + case ROTATE: +- if (!CONST_INT_P (XEXP (x, 1))) +- *cost += COSTS_N_INSNS (2); +- /* Fall through. */ + case ROTATERT: + case LSHIFTRT: +- case ASHIFT: + case ASHIFTRT: ++ op0 = XEXP (x, 0); ++ op1 = XEXP (x, 1); + +- /* Shifting by a register often takes an extra cycle. */ +- if (speed && !CONST_INT_P (XEXP (x, 1))) +- *cost += extra_cost->alu.arith_shift_reg; ++ if (CONST_INT_P (op1)) ++ { ++ /* ASR (immediate) and friends. */ ++ if (speed) ++ *cost += extra_cost->alu.shift; + +- *cost += rtx_cost (XEXP (x, 0), ASHIFT, 0, speed); ++ *cost += rtx_cost (op0, (enum rtx_code) code, 0, speed); ++ return true; ++ } ++ else ++ { ++ ++ /* ASR (register) and friends. */ ++ if (speed) ++ *cost += extra_cost->alu.shift_reg; ++ ++ return false; /* All arguments need to be in registers. */ ++ } ++ ++ case SYMBOL_REF: ++ ++ if (aarch64_cmodel == AARCH64_CMODEL_LARGE) ++ { ++ /* LDR. */ ++ if (speed) ++ *cost += extra_cost->ldst.load; ++ } ++ else if (aarch64_cmodel == AARCH64_CMODEL_SMALL ++ || aarch64_cmodel == AARCH64_CMODEL_SMALL_PIC) ++ { ++ /* ADRP, followed by ADD. */ ++ *cost += COSTS_N_INSNS (1); ++ if (speed) ++ *cost += 2 * extra_cost->alu.arith; ++ } ++ else if (aarch64_cmodel == AARCH64_CMODEL_TINY ++ || aarch64_cmodel == AARCH64_CMODEL_TINY_PIC) ++ { ++ /* ADR. */ ++ if (speed) ++ *cost += extra_cost->alu.arith; ++ } ++ ++ if (flag_pic) ++ { ++ /* One extra load instruction, after accessing the GOT. */ ++ *cost += COSTS_N_INSNS (1); ++ if (speed) ++ *cost += extra_cost->ldst.load; ++ } + return true; + + case HIGH: +- if (!CONSTANT_P (XEXP (x, 0))) +- *cost += rtx_cost (XEXP (x, 0), HIGH, 0, speed); +- return true; +- + case LO_SUM: +- if (!CONSTANT_P (XEXP (x, 1))) +- *cost += rtx_cost (XEXP (x, 1), LO_SUM, 1, speed); +- *cost += rtx_cost (XEXP (x, 0), LO_SUM, 0, speed); ++ /* ADRP/ADD (immediate). */ ++ if (speed) ++ *cost += extra_cost->alu.arith; + return true; + + case ZERO_EXTRACT: + case SIGN_EXTRACT: +- *cost += rtx_cost (XEXP (x, 0), ZERO_EXTRACT, 0, speed); ++ /* UBFX/SBFX. */ ++ if (speed) ++ *cost += extra_cost->alu.bfx; ++ ++ /* We can trust that the immediates used will be correct (there ++ are no by-register forms), so we need only cost op0. */ ++ *cost += rtx_cost (XEXP (x, 0), (enum rtx_code) code, 0, speed); + return true; + + case MULT: +- op0 = XEXP (x, 0); +- op1 = XEXP (x, 1); ++ *cost += aarch64_rtx_mult_cost (x, MULT, 0, speed); ++ /* aarch64_rtx_mult_cost always handles recursion to its ++ operands. */ ++ return true; + +- *cost = COSTS_N_INSNS (1); +- if (GET_MODE_CLASS (GET_MODE (x)) == MODE_INT) +- { +- if (CONST_INT_P (op1) +- && exact_log2 (INTVAL (op1)) > 0) +- { +- *cost += rtx_cost (op0, ASHIFT, 0, speed); +- return true; +- } +- +- if ((GET_CODE (op0) == ZERO_EXTEND +- && GET_CODE (op1) == ZERO_EXTEND) +- || (GET_CODE (op0) == SIGN_EXTEND +- && GET_CODE (op1) == SIGN_EXTEND)) +- { +- *cost += (rtx_cost (XEXP (op0, 0), MULT, 0, speed) +- + rtx_cost (XEXP (op1, 0), MULT, 1, speed)); +- if (speed) +- *cost += extra_cost->mult[GET_MODE (x) == DImode].extend; +- return true; +- } +- +- if (speed) +- *cost += extra_cost->mult[GET_MODE (x) == DImode].simple; +- } +- else if (speed) +- { +- if (GET_MODE (x) == DFmode) +- *cost += extra_cost->fp[1].mult; +- else if (GET_MODE (x) == SFmode) +- *cost += extra_cost->fp[0].mult; +- } +- +- return false; /* All arguments need to be in registers. */ +- + case MOD: + case UMOD: +- *cost = COSTS_N_INSNS (2); + if (speed) + { + if (GET_MODE_CLASS (GET_MODE (x)) == MODE_INT) +@@ -4804,53 +5974,222 @@ + + case DIV: + case UDIV: +- *cost = COSTS_N_INSNS (1); ++ case SQRT: + if (speed) + { +- if (GET_MODE_CLASS (GET_MODE (x)) == MODE_INT) +- *cost += extra_cost->mult[GET_MODE (x) == DImode].idiv; +- else if (GET_MODE (x) == DFmode) +- *cost += extra_cost->fp[1].div; +- else if (GET_MODE (x) == SFmode) +- *cost += extra_cost->fp[0].div; ++ if (GET_MODE_CLASS (mode) == MODE_INT) ++ /* There is no integer SQRT, so only DIV and UDIV can get ++ here. */ ++ *cost += extra_cost->mult[mode == DImode].idiv; ++ else ++ *cost += extra_cost->fp[mode == DFmode].div; + } + return false; /* All arguments need to be in registers. */ + ++ case IF_THEN_ELSE: ++ return aarch64_if_then_else_costs (XEXP (x, 0), XEXP (x, 1), ++ XEXP (x, 2), cost, speed); ++ ++ case EQ: ++ case NE: ++ case GT: ++ case GTU: ++ case LT: ++ case LTU: ++ case GE: ++ case GEU: ++ case LE: ++ case LEU: ++ ++ return false; /* All arguments must be in registers. */ ++ ++ case FMA: ++ op0 = XEXP (x, 0); ++ op1 = XEXP (x, 1); ++ op2 = XEXP (x, 2); ++ ++ if (speed) ++ *cost += extra_cost->fp[mode == DFmode].fma; ++ ++ /* FMSUB, FNMADD, and FNMSUB are free. */ ++ if (GET_CODE (op0) == NEG) ++ op0 = XEXP (op0, 0); ++ ++ if (GET_CODE (op2) == NEG) ++ op2 = XEXP (op2, 0); ++ ++ /* aarch64_fnma4_elt_to_64v2df has the NEG as operand 1, ++ and the by-element operand as operand 0. */ ++ if (GET_CODE (op1) == NEG) ++ op1 = XEXP (op1, 0); ++ ++ /* Catch vector-by-element operations. The by-element operand can ++ either be (vec_duplicate (vec_select (x))) or just ++ (vec_select (x)), depending on whether we are multiplying by ++ a vector or a scalar. ++ ++ Canonicalization is not very good in these cases, FMA4 will put the ++ by-element operand as operand 0, FNMA4 will have it as operand 1. */ ++ if (GET_CODE (op0) == VEC_DUPLICATE) ++ op0 = XEXP (op0, 0); ++ else if (GET_CODE (op1) == VEC_DUPLICATE) ++ op1 = XEXP (op1, 0); ++ ++ if (GET_CODE (op0) == VEC_SELECT) ++ op0 = XEXP (op0, 0); ++ else if (GET_CODE (op1) == VEC_SELECT) ++ op1 = XEXP (op1, 0); ++ ++ /* If the remaining parameters are not registers, ++ get the cost to put them into registers. */ ++ *cost += rtx_cost (op0, FMA, 0, speed); ++ *cost += rtx_cost (op1, FMA, 1, speed); ++ *cost += rtx_cost (op2, FMA, 2, speed); ++ return true; ++ ++ case FLOAT_EXTEND: ++ if (speed) ++ *cost += extra_cost->fp[mode == DFmode].widen; ++ return false; ++ ++ case FLOAT_TRUNCATE: ++ if (speed) ++ *cost += extra_cost->fp[mode == DFmode].narrow; ++ return false; ++ ++ case FIX: ++ case UNSIGNED_FIX: ++ x = XEXP (x, 0); ++ /* Strip the rounding part. They will all be implemented ++ by the fcvt* family of instructions anyway. */ ++ if (GET_CODE (x) == UNSPEC) ++ { ++ unsigned int uns_code = XINT (x, 1); ++ ++ if (uns_code == UNSPEC_FRINTA ++ || uns_code == UNSPEC_FRINTM ++ || uns_code == UNSPEC_FRINTN ++ || uns_code == UNSPEC_FRINTP ++ || uns_code == UNSPEC_FRINTZ) ++ x = XVECEXP (x, 0, 0); ++ } ++ ++ if (speed) ++ *cost += extra_cost->fp[GET_MODE (x) == DFmode].toint; ++ ++ *cost += rtx_cost (x, (enum rtx_code) code, 0, speed); ++ return true; ++ ++ case ABS: ++ if (GET_MODE_CLASS (mode) == MODE_FLOAT) ++ { ++ /* FABS and FNEG are analogous. */ ++ if (speed) ++ *cost += extra_cost->fp[mode == DFmode].neg; ++ } ++ else ++ { ++ /* Integer ABS will either be split to ++ two arithmetic instructions, or will be an ABS ++ (scalar), which we don't model. */ ++ *cost = COSTS_N_INSNS (2); ++ if (speed) ++ *cost += 2 * extra_cost->alu.arith; ++ } ++ return false; ++ ++ case SMAX: ++ case SMIN: ++ if (speed) ++ { ++ /* FMAXNM/FMINNM/FMAX/FMIN. ++ TODO: This may not be accurate for all implementations, but ++ we do not model this in the cost tables. */ ++ *cost += extra_cost->fp[mode == DFmode].addsub; ++ } ++ return false; ++ ++ case UNSPEC: ++ /* The floating point round to integer frint* instructions. */ ++ if (aarch64_frint_unspec_p (XINT (x, 1))) ++ { ++ if (speed) ++ *cost += extra_cost->fp[mode == DFmode].roundint; ++ ++ return false; ++ } ++ ++ if (XINT (x, 1) == UNSPEC_RBIT) ++ { ++ if (speed) ++ *cost += extra_cost->alu.rev; ++ ++ return false; ++ } ++ break; ++ ++ case TRUNCATE: ++ ++ /* Decompose muldi3_highpart. */ ++ if (/* (truncate:DI */ ++ mode == DImode ++ /* (lshiftrt:TI */ ++ && GET_MODE (XEXP (x, 0)) == TImode ++ && GET_CODE (XEXP (x, 0)) == LSHIFTRT ++ /* (mult:TI */ ++ && GET_CODE (XEXP (XEXP (x, 0), 0)) == MULT ++ /* (ANY_EXTEND:TI (reg:DI)) ++ (ANY_EXTEND:TI (reg:DI))) */ ++ && ((GET_CODE (XEXP (XEXP (XEXP (x, 0), 0), 0)) == ZERO_EXTEND ++ && GET_CODE (XEXP (XEXP (XEXP (x, 0), 0), 1)) == ZERO_EXTEND) ++ || (GET_CODE (XEXP (XEXP (XEXP (x, 0), 0), 0)) == SIGN_EXTEND ++ && GET_CODE (XEXP (XEXP (XEXP (x, 0), 0), 1)) == SIGN_EXTEND)) ++ && GET_MODE (XEXP (XEXP (XEXP (XEXP (x, 0), 0), 0), 0)) == DImode ++ && GET_MODE (XEXP (XEXP (XEXP (XEXP (x, 0), 0), 1), 0)) == DImode ++ /* (const_int 64) */ ++ && CONST_INT_P (XEXP (XEXP (x, 0), 1)) ++ && UINTVAL (XEXP (XEXP (x, 0), 1)) == 64) ++ { ++ /* UMULH/SMULH. */ ++ if (speed) ++ *cost += extra_cost->mult[mode == DImode].extend; ++ *cost += rtx_cost (XEXP (XEXP (XEXP (XEXP (x, 0), 0), 0), 0), ++ MULT, 0, speed); ++ *cost += rtx_cost (XEXP (XEXP (XEXP (XEXP (x, 0), 0), 1), 0), ++ MULT, 1, speed); ++ return true; ++ } ++ ++ /* Fall through. */ + default: + break; + } +- return false; ++ ++ if (dump_file && (dump_flags & TDF_DETAILS)) ++ fprintf (dump_file, ++ "\nFailed to cost RTX. Assuming default cost.\n"); ++ ++ return true; + } + +-static int +-aarch64_address_cost (rtx x ATTRIBUTE_UNUSED, +- enum machine_mode mode ATTRIBUTE_UNUSED, +- addr_space_t as ATTRIBUTE_UNUSED, bool speed ATTRIBUTE_UNUSED) ++/* Wrapper around aarch64_rtx_costs, dumps the partial, or total cost ++ calculated for X. This cost is stored in *COST. Returns true ++ if the total cost of X was calculated. */ ++static bool ++aarch64_rtx_costs_wrapper (rtx x, int code, int outer, ++ int param, int *cost, bool speed) + { +- enum rtx_code c = GET_CODE (x); +- const struct cpu_addrcost_table *addr_cost = aarch64_tune_params->addr_cost; ++ bool result = aarch64_rtx_costs (x, code, outer, param, cost, speed); + +- if (c == PRE_INC || c == PRE_DEC || c == PRE_MODIFY) +- return addr_cost->pre_modify; +- +- if (c == POST_INC || c == POST_DEC || c == POST_MODIFY) +- return addr_cost->post_modify; +- +- if (c == PLUS) ++ if (dump_file && (dump_flags & TDF_DETAILS)) + { +- if (GET_CODE (XEXP (x, 1)) == CONST_INT) +- return addr_cost->imm_offset; +- else if (GET_CODE (XEXP (x, 0)) == MULT +- || GET_CODE (XEXP (x, 0)) == ZERO_EXTEND +- || GET_CODE (XEXP (x, 0)) == SIGN_EXTEND) +- return addr_cost->register_extend; +- +- return addr_cost->register_offset; ++ print_rtl_single (dump_file, x); ++ fprintf (dump_file, "\n%s cost: %d (%s)\n", ++ speed ? "Hot" : "Cold", ++ *cost, result ? "final" : "partial"); + } +- else if (c == MEM || c == LABEL_REF || c == SYMBOL_REF) +- return addr_cost->imm_offset; + +- return 0; ++ return result; + } + + static int +@@ -4862,6 +6201,13 @@ + const struct cpu_regmove_cost *regmove_cost + = aarch64_tune_params->regmove_cost; + ++ /* Caller save and pointer regs are equivalent to GENERAL_REGS. */ ++ if (to == CALLER_SAVE_REGS || to == POINTER_REGS) ++ to = GENERAL_REGS; ++ ++ if (from == CALLER_SAVE_REGS || from == POINTER_REGS) ++ from = GENERAL_REGS; ++ + /* Moving between GPR and stack cost is the same as GP2GP. */ + if ((from == GENERAL_REGS && to == STACK_REG) + || (to == GENERAL_REGS && from == STACK_REG)) +@@ -4884,7 +6230,7 @@ + secondary reload. A general register is used as a scratch to move + the upper DI value and the lower DI value is moved directly, + hence the cost is the sum of three moves. */ +- if (! TARGET_SIMD && GET_MODE_SIZE (mode) == 128) ++ if (! TARGET_SIMD && GET_MODE_SIZE (mode) == 16) + return regmove_cost->GP2FP + regmove_cost->FP2GP + regmove_cost->FP2FP; + + return regmove_cost->FP2FP; +@@ -4905,6 +6251,14 @@ + return aarch64_tune_params->issue_rate; + } + ++static int ++aarch64_sched_first_cycle_multipass_dfa_lookahead (void) ++{ ++ int issue_rate = aarch64_sched_issue_rate (); ++ ++ return issue_rate > 1 ? issue_rate : 0; ++} ++ + /* Vectorizer cost model target hooks. */ + + /* Implement targetm.vectorize.builtin_vectorization_cost. */ +@@ -5257,6 +6611,7 @@ + aarch64_tune_flags = selected_tune->flags; + aarch64_tune = selected_tune->core; + aarch64_tune_params = selected_tune->tune; ++ aarch64_architecture_version = selected_cpu->architecture_version; + + if (aarch64_fix_a53_err835769 == 2) + { +@@ -5374,7 +6729,7 @@ + LABEL_REF X in context CONTEXT. */ + + enum aarch64_symbol_type +-aarch64_classify_symbol (rtx x, ++aarch64_classify_symbol (rtx x, rtx offset, + enum aarch64_symbol_context context ATTRIBUTE_UNUSED) + { + if (GET_CODE (x) == LABEL_REF) +@@ -5408,12 +6763,25 @@ + switch (aarch64_cmodel) + { + case AARCH64_CMODEL_TINY: +- if (SYMBOL_REF_WEAK (x)) ++ /* When we retreive symbol + offset address, we have to make sure ++ the offset does not cause overflow of the final address. But ++ we have no way of knowing the address of symbol at compile time ++ so we can't accurately say if the distance between the PC and ++ symbol + offset is outside the addressible range of +/-1M in the ++ TINY code model. So we rely on images not being greater than ++ 1M and cap the offset at 1M and anything beyond 1M will have to ++ be loaded using an alternative mechanism. */ ++ if (SYMBOL_REF_WEAK (x) ++ || INTVAL (offset) < -1048575 || INTVAL (offset) > 1048575) + return SYMBOL_FORCE_TO_MEM; + return SYMBOL_TINY_ABSOLUTE; + + case AARCH64_CMODEL_SMALL: +- if (SYMBOL_REF_WEAK (x)) ++ /* Same reasoning as the tiny code model, but the offset cap here is ++ 4G. */ ++ if (SYMBOL_REF_WEAK (x) ++ || !IN_RANGE (INTVAL (offset), HOST_WIDE_INT_C (-4294967263), ++ HOST_WIDE_INT_C (4294967264))) + return SYMBOL_FORCE_TO_MEM; + return SYMBOL_SMALL_ABSOLUTE; + +@@ -6002,7 +7370,7 @@ + + /* We don't save the size into *PRETEND_SIZE because we want to avoid + any complication of having crtl->args.pretend_args_size changed. */ +- cfun->machine->saved_varargs_size ++ cfun->machine->frame.saved_varargs_size + = (AARCH64_ROUND_UP (gr_saved * UNITS_PER_WORD, + STACK_BOUNDARY / BITS_PER_UNIT) + + vr_saved * UNITS_PER_VREG); +@@ -6689,7 +8057,7 @@ + unsigned HOST_WIDE_INT elpart; + unsigned int part, parts; + +- if (GET_CODE (el) == CONST_INT) ++ if (CONST_INT_P (el)) + { + elpart = INTVAL (el); + parts = 1; +@@ -6820,30 +8188,6 @@ + #undef CHECK + } + +-static bool +-aarch64_const_vec_all_same_int_p (rtx x, +- HOST_WIDE_INT minval, +- HOST_WIDE_INT maxval) +-{ +- HOST_WIDE_INT firstval; +- int count, i; +- +- if (GET_CODE (x) != CONST_VECTOR +- || GET_MODE_CLASS (GET_MODE (x)) != MODE_VECTOR_INT) +- return false; +- +- firstval = INTVAL (CONST_VECTOR_ELT (x, 0)); +- if (firstval < minval || firstval > maxval) +- return false; +- +- count = CONST_VECTOR_NUNITS (x); +- for (i = 1; i < count; i++) +- if (INTVAL (CONST_VECTOR_ELT (x, i)) != firstval) +- return false; +- +- return true; +-} +- + /* Check of immediate shift constants are within range. */ + bool + aarch64_simd_shift_imm_p (rtx x, enum machine_mode mode, bool left) +@@ -6850,9 +8194,9 @@ + { + int bit_width = GET_MODE_UNIT_SIZE (mode) * BITS_PER_UNIT; + if (left) +- return aarch64_const_vec_all_same_int_p (x, 0, bit_width - 1); ++ return aarch64_const_vec_all_same_in_range_p (x, 0, bit_width - 1); + else +- return aarch64_const_vec_all_same_int_p (x, 1, bit_width); ++ return aarch64_const_vec_all_same_in_range_p (x, 1, bit_width); + } + + /* Return true if X is a uniform vector where all elements +@@ -6890,7 +8234,7 @@ + && aarch64_valid_symref (XEXP (x, 0), GET_MODE (XEXP (x, 0)))) + return true; + +- if (CONST_INT_P (x) && aarch64_move_imm (INTVAL (x), mode)) ++ if (CONST_INT_P (x)) + return true; + + if (GET_CODE (x) == SYMBOL_REF && mode == DImode && CONSTANT_ADDRESS_P (x)) +@@ -6927,17 +8271,43 @@ + return aarch64_simd_valid_immediate (op_v, vmode, false, NULL); + } + +-/* Construct and return a PARALLEL RTX vector. */ ++/* Construct and return a PARALLEL RTX vector with elements numbering the ++ lanes of either the high (HIGH == TRUE) or low (HIGH == FALSE) half of ++ the vector - from the perspective of the architecture. This does not ++ line up with GCC's perspective on lane numbers, so we end up with ++ different masks depending on our target endian-ness. The diagram ++ below may help. We must draw the distinction when building masks ++ which select one half of the vector. An instruction selecting ++ architectural low-lanes for a big-endian target, must be described using ++ a mask selecting GCC high-lanes. ++ ++ Big-Endian Little-Endian ++ ++GCC 0 1 2 3 3 2 1 0 ++ | x | x | x | x | | x | x | x | x | ++Architecture 3 2 1 0 3 2 1 0 ++ ++Low Mask: { 2, 3 } { 0, 1 } ++High Mask: { 0, 1 } { 2, 3 } ++*/ ++ + rtx + aarch64_simd_vect_par_cnst_half (enum machine_mode mode, bool high) + { + int nunits = GET_MODE_NUNITS (mode); + rtvec v = rtvec_alloc (nunits / 2); +- int base = high ? nunits / 2 : 0; ++ int high_base = nunits / 2; ++ int low_base = 0; ++ int base; + rtx t1; + int i; + +- for (i=0; i < nunits / 2; i++) ++ if (BYTES_BIG_ENDIAN) ++ base = high ? low_base : high_base; ++ else ++ base = high ? high_base : low_base; ++ ++ for (i = 0; i < nunits / 2; i++) + RTVEC_ELT (v, i) = GEN_INT (base + i); + + t1 = gen_rtx_PARALLEL (mode, v); +@@ -6944,6 +8314,38 @@ + return t1; + } + ++/* Check OP for validity as a PARALLEL RTX vector with elements ++ numbering the lanes of either the high (HIGH == TRUE) or low lanes, ++ from the perspective of the architecture. See the diagram above ++ aarch64_simd_vect_par_cnst_half for more details. */ ++ ++bool ++aarch64_simd_check_vect_par_cnst_half (rtx op, enum machine_mode mode, ++ bool high) ++{ ++ rtx ideal = aarch64_simd_vect_par_cnst_half (mode, high); ++ HOST_WIDE_INT count_op = XVECLEN (op, 0); ++ HOST_WIDE_INT count_ideal = XVECLEN (ideal, 0); ++ int i = 0; ++ ++ if (!VECTOR_MODE_P (mode)) ++ return false; ++ ++ if (count_op != count_ideal) ++ return false; ++ ++ for (i = 0; i < count_ideal; i++) ++ { ++ rtx elt_op = XVECEXP (op, 0, i); ++ rtx elt_ideal = XVECEXP (ideal, 0, i); ++ ++ if (!CONST_INT_P (elt_op) ++ || INTVAL (elt_ideal) != INTVAL (elt_op)) ++ return false; ++ } ++ return true; ++} ++ + /* Bounds-check lanes. Ensure OPERAND lies between LOW (inclusive) and + HIGH (exclusive). */ + void +@@ -6950,7 +8352,7 @@ + aarch64_simd_lane_bounds (rtx operand, HOST_WIDE_INT low, HOST_WIDE_INT high) + { + HOST_WIDE_INT lane; +- gcc_assert (GET_CODE (operand) == CONST_INT); ++ gcc_assert (CONST_INT_P (operand)); + lane = INTVAL (operand); + + if (lane < low || lane >= high) +@@ -6957,16 +8359,6 @@ + error ("lane out of range"); + } + +-void +-aarch64_simd_const_bounds (rtx operand, HOST_WIDE_INT low, HOST_WIDE_INT high) +-{ +- gcc_assert (GET_CODE (operand) == CONST_INT); +- HOST_WIDE_INT lane = INTVAL (operand); +- +- if (lane < low || lane >= high) +- error ("constant out of range"); +-} +- + /* Emit code to reinterpret one AdvSIMD type as another, + without altering bits. */ + void +@@ -6998,7 +8390,7 @@ + aarch64_simd_mem_operand_p (rtx op) + { + return MEM_P (op) && (GET_CODE (XEXP (op, 0)) == POST_INC +- || GET_CODE (XEXP (op, 0)) == REG); ++ || REG_P (XEXP (op, 0))); + } + + /* Set up OPERANDS for a register copy from SRC to DEST, taking care +@@ -7651,6 +9043,9 @@ + if (!CONST_DOUBLE_P (x)) + return false; + ++ if (GET_MODE (x) == VOIDmode) ++ return false; ++ + REAL_VALUE_FROM_CONST_DOUBLE (r, x); + + /* We cannot represent infinities, NaNs or +/-zero. We won't +@@ -7903,20 +9298,26 @@ + aarch64_expand_vec_perm (rtx target, rtx op0, rtx op1, rtx sel) + { + enum machine_mode vmode = GET_MODE (target); +- unsigned int i, nelt = GET_MODE_NUNITS (vmode); ++ unsigned int nelt = GET_MODE_NUNITS (vmode); + bool one_vector_p = rtx_equal_p (op0, op1); +- rtx rmask[MAX_VECT_LEN], mask; ++ rtx mask; + +- gcc_checking_assert (!BYTES_BIG_ENDIAN); +- + /* The TBL instruction does not use a modulo index, so we must take care + of that ourselves. */ +- mask = GEN_INT (one_vector_p ? nelt - 1 : 2 * nelt - 1); +- for (i = 0; i < nelt; ++i) +- rmask[i] = mask; +- mask = gen_rtx_CONST_VECTOR (vmode, gen_rtvec_v (nelt, rmask)); ++ mask = aarch64_simd_gen_const_vector_dup (vmode, ++ one_vector_p ? nelt - 1 : 2 * nelt - 1); + sel = expand_simple_binop (vmode, AND, sel, mask, NULL, 0, OPTAB_LIB_WIDEN); + ++ /* For big-endian, we also need to reverse the index within the vector ++ (but not which vector). */ ++ if (BYTES_BIG_ENDIAN) ++ { ++ /* If one_vector_p, mask is a vector of (nelt - 1)'s already. */ ++ if (!one_vector_p) ++ mask = aarch64_simd_gen_const_vector_dup (vmode, nelt - 1); ++ sel = expand_simple_binop (vmode, XOR, sel, mask, ++ NULL, 0, OPTAB_LIB_WIDEN); ++ } + aarch64_expand_vec_perm_1 (target, op0, op1, sel); + } + +@@ -8175,7 +9576,145 @@ + return true; + } + ++/* Recognize patterns for the EXT insn. */ ++ + static bool ++aarch64_evpc_ext (struct expand_vec_perm_d *d) ++{ ++ unsigned int i, nelt = d->nelt; ++ rtx (*gen) (rtx, rtx, rtx, rtx); ++ rtx offset; ++ ++ unsigned int location = d->perm[0]; /* Always < nelt. */ ++ ++ /* Check if the extracted indices are increasing by one. */ ++ for (i = 1; i < nelt; i++) ++ { ++ unsigned int required = location + i; ++ if (d->one_vector_p) ++ { ++ /* We'll pass the same vector in twice, so allow indices to wrap. */ ++ required &= (nelt - 1); ++ } ++ if (d->perm[i] != required) ++ return false; ++ } ++ ++ switch (d->vmode) ++ { ++ case V16QImode: gen = gen_aarch64_extv16qi; break; ++ case V8QImode: gen = gen_aarch64_extv8qi; break; ++ case V4HImode: gen = gen_aarch64_extv4hi; break; ++ case V8HImode: gen = gen_aarch64_extv8hi; break; ++ case V2SImode: gen = gen_aarch64_extv2si; break; ++ case V4SImode: gen = gen_aarch64_extv4si; break; ++ case V2SFmode: gen = gen_aarch64_extv2sf; break; ++ case V4SFmode: gen = gen_aarch64_extv4sf; break; ++ case V2DImode: gen = gen_aarch64_extv2di; break; ++ case V2DFmode: gen = gen_aarch64_extv2df; break; ++ default: ++ return false; ++ } ++ ++ /* Success! */ ++ if (d->testing_p) ++ return true; ++ ++ /* The case where (location == 0) is a no-op for both big- and little-endian, ++ and is removed by the mid-end at optimization levels -O1 and higher. */ ++ ++ if (BYTES_BIG_ENDIAN && (location != 0)) ++ { ++ /* After setup, we want the high elements of the first vector (stored ++ at the LSB end of the register), and the low elements of the second ++ vector (stored at the MSB end of the register). So swap. */ ++ rtx temp = d->op0; ++ d->op0 = d->op1; ++ d->op1 = temp; ++ /* location != 0 (above), so safe to assume (nelt - location) < nelt. */ ++ location = nelt - location; ++ } ++ ++ offset = GEN_INT (location); ++ emit_insn (gen (d->target, d->op0, d->op1, offset)); ++ return true; ++} ++ ++/* Recognize patterns for the REV insns. */ ++ ++static bool ++aarch64_evpc_rev (struct expand_vec_perm_d *d) ++{ ++ unsigned int i, j, diff, nelt = d->nelt; ++ rtx (*gen) (rtx, rtx); ++ ++ if (!d->one_vector_p) ++ return false; ++ ++ diff = d->perm[0]; ++ switch (diff) ++ { ++ case 7: ++ switch (d->vmode) ++ { ++ case V16QImode: gen = gen_aarch64_rev64v16qi; break; ++ case V8QImode: gen = gen_aarch64_rev64v8qi; break; ++ default: ++ return false; ++ } ++ break; ++ case 3: ++ switch (d->vmode) ++ { ++ case V16QImode: gen = gen_aarch64_rev32v16qi; break; ++ case V8QImode: gen = gen_aarch64_rev32v8qi; break; ++ case V8HImode: gen = gen_aarch64_rev64v8hi; break; ++ case V4HImode: gen = gen_aarch64_rev64v4hi; break; ++ default: ++ return false; ++ } ++ break; ++ case 1: ++ switch (d->vmode) ++ { ++ case V16QImode: gen = gen_aarch64_rev16v16qi; break; ++ case V8QImode: gen = gen_aarch64_rev16v8qi; break; ++ case V8HImode: gen = gen_aarch64_rev32v8hi; break; ++ case V4HImode: gen = gen_aarch64_rev32v4hi; break; ++ case V4SImode: gen = gen_aarch64_rev64v4si; break; ++ case V2SImode: gen = gen_aarch64_rev64v2si; break; ++ case V4SFmode: gen = gen_aarch64_rev64v4sf; break; ++ case V2SFmode: gen = gen_aarch64_rev64v2sf; break; ++ default: ++ return false; ++ } ++ break; ++ default: ++ return false; ++ } ++ ++ for (i = 0; i < nelt ; i += diff + 1) ++ for (j = 0; j <= diff; j += 1) ++ { ++ /* This is guaranteed to be true as the value of diff ++ is 7, 3, 1 and we should have enough elements in the ++ queue to generate this. Getting a vector mask with a ++ value of diff other than these values implies that ++ something is wrong by the time we get here. */ ++ gcc_assert (i + j < nelt); ++ if (d->perm[i + j] != i + diff - j) ++ return false; ++ } ++ ++ /* Success! */ ++ if (d->testing_p) ++ return true; ++ ++ emit_insn (gen (d->target, d->op0)); ++ return true; ++} ++ ++static bool + aarch64_evpc_dup (struct expand_vec_perm_d *d) + { + rtx (*gen) (rtx, rtx, rtx); +@@ -8185,10 +9724,6 @@ + unsigned int i, elt, nelt = d->nelt; + rtx lane; + +- /* TODO: This may not be big-endian safe. */ +- if (BYTES_BIG_ENDIAN) +- return false; +- + elt = d->perm[0]; + for (i = 1; i < nelt; i++) + { +@@ -8202,7 +9737,7 @@ + use d->op0 and need not do any extra arithmetic to get the + correct lane number. */ + in0 = d->op0; +- lane = GEN_INT (elt); ++ lane = GEN_INT (elt); /* The pattern corrects for big-endian. */ + + switch (vmode) + { +@@ -8231,11 +9766,6 @@ + enum machine_mode vmode = d->vmode; + unsigned int i, nelt = d->nelt; + +- /* TODO: ARM's TBL indexing is little-endian. In order to handle GCC's +- numbering of elements for big-endian, we must reverse the order. */ +- if (BYTES_BIG_ENDIAN) +- return false; +- + if (d->testing_p) + return true; + +@@ -8246,7 +9776,15 @@ + return false; + + for (i = 0; i < nelt; ++i) +- rperm[i] = GEN_INT (d->perm[i]); ++ { ++ int nunits = GET_MODE_NUNITS (vmode); ++ ++ /* If big-endian and two vectors we end up with a weird mixed-endian ++ mode on NEON. Reverse the index within each word but not the word ++ itself. */ ++ rperm[i] = GEN_INT (BYTES_BIG_ENDIAN ? d->perm[i] ^ (nunits - 1) ++ : d->perm[i]); ++ } + sel = gen_rtx_CONST_VECTOR (vmode, gen_rtvec_v (nelt, rperm)); + sel = force_reg (vmode, sel); + +@@ -8275,14 +9813,18 @@ + + if (TARGET_SIMD) + { +- if (aarch64_evpc_zip (d)) ++ if (aarch64_evpc_rev (d)) + return true; ++ else if (aarch64_evpc_ext (d)) ++ return true; ++ else if (aarch64_evpc_dup (d)) ++ return true; ++ else if (aarch64_evpc_zip (d)) ++ return true; + else if (aarch64_evpc_uzp (d)) + return true; + else if (aarch64_evpc_trn (d)) + return true; +- else if (aarch64_evpc_dup (d)) +- return true; + return aarch64_evpc_tbl (d); + } + return false; +@@ -8401,7 +9943,8 @@ + /* Limited combinations of subregs are safe on FPREGs. Particularly, + 1. Vector Mode to Scalar mode where 1 unit of the vector is accessed. + 2. Scalar to Scalar for integer modes or same size float modes. +- 3. Vector to Vector modes. */ ++ 3. Vector to Vector modes. ++ 4. On little-endian only, Vector-Structure to Vector modes. */ + if (GET_MODE_SIZE (from) > GET_MODE_SIZE (to)) + { + if (aarch64_vector_mode_supported_p (from) +@@ -8417,11 +9960,369 @@ + if (aarch64_vector_mode_supported_p (from) + && aarch64_vector_mode_supported_p (to)) + return false; ++ ++ /* Within an vector structure straddling multiple vector registers ++ we are in a mixed-endian representation. As such, we can't ++ easily change modes for BYTES_BIG_ENDIAN. Otherwise, we can ++ switch between vectors and vector structures cheaply. */ ++ if (!BYTES_BIG_ENDIAN) ++ if ((aarch64_vector_mode_supported_p (from) ++ && aarch64_vect_struct_mode_p (to)) ++ || (aarch64_vector_mode_supported_p (to) ++ && aarch64_vect_struct_mode_p (from))) ++ return false; + } + + return true; + } + ++/* Implement MODES_TIEABLE_P. */ ++ ++bool ++aarch64_modes_tieable_p (enum machine_mode mode1, enum machine_mode mode2) ++{ ++ if (GET_MODE_CLASS (mode1) == GET_MODE_CLASS (mode2)) ++ return true; ++ ++ /* We specifically want to allow elements of "structure" modes to ++ be tieable to the structure. This more general condition allows ++ other rarer situations too. */ ++ if (TARGET_SIMD ++ && aarch64_vector_mode_p (mode1) ++ && aarch64_vector_mode_p (mode2)) ++ return true; ++ ++ return false; ++} ++ ++/* Return a new RTX holding the result of moving POINTER forward by ++ AMOUNT bytes. */ ++ ++static rtx ++aarch64_move_pointer (rtx pointer, int amount) ++{ ++ rtx next = plus_constant (Pmode, XEXP (pointer, 0), amount); ++ ++ return adjust_automodify_address (pointer, GET_MODE (pointer), ++ next, amount); ++} ++ ++/* Return a new RTX holding the result of moving POINTER forward by the ++ size of the mode it points to. */ ++ ++static rtx ++aarch64_progress_pointer (rtx pointer) ++{ ++ HOST_WIDE_INT amount = GET_MODE_SIZE (GET_MODE (pointer)); ++ ++ return aarch64_move_pointer (pointer, amount); ++} ++ ++/* Copy one MODE sized block from SRC to DST, then progress SRC and DST by ++ MODE bytes. */ ++ ++static void ++aarch64_copy_one_block_and_progress_pointers (rtx *src, rtx *dst, ++ enum machine_mode mode) ++{ ++ rtx reg = gen_reg_rtx (mode); ++ ++ /* "Cast" the pointers to the correct mode. */ ++ *src = adjust_address (*src, mode, 0); ++ *dst = adjust_address (*dst, mode, 0); ++ /* Emit the memcpy. */ ++ emit_move_insn (reg, *src); ++ emit_move_insn (*dst, reg); ++ /* Move the pointers forward. */ ++ *src = aarch64_progress_pointer (*src); ++ *dst = aarch64_progress_pointer (*dst); ++} ++ ++/* Expand movmem, as if from a __builtin_memcpy. Return true if ++ we succeed, otherwise return false. */ ++ ++bool ++aarch64_expand_movmem (rtx *operands) ++{ ++ unsigned int n; ++ rtx dst = operands[0]; ++ rtx src = operands[1]; ++ rtx base; ++ bool speed_p = !optimize_function_for_size_p (cfun); ++ ++ /* When optimizing for size, give a better estimate of the length of a ++ memcpy call, but use the default otherwise. */ ++ unsigned int max_instructions = (speed_p ? 15 : AARCH64_CALL_RATIO) / 2; ++ ++ /* We can't do anything smart if the amount to copy is not constant. */ ++ if (!CONST_INT_P (operands[2])) ++ return false; ++ ++ n = UINTVAL (operands[2]); ++ ++ /* Try to keep the number of instructions low. For cases below 16 bytes we ++ need to make at most two moves. For cases above 16 bytes it will be one ++ move for each 16 byte chunk, then at most two additional moves. */ ++ if (((n / 16) + (n % 16 ? 2 : 0)) > max_instructions) ++ return false; ++ ++ base = copy_to_mode_reg (Pmode, XEXP (dst, 0)); ++ dst = adjust_automodify_address (dst, VOIDmode, base, 0); ++ ++ base = copy_to_mode_reg (Pmode, XEXP (src, 0)); ++ src = adjust_automodify_address (src, VOIDmode, base, 0); ++ ++ /* Simple cases. Copy 0-3 bytes, as (if applicable) a 2-byte, then a ++ 1-byte chunk. */ ++ if (n < 4) ++ { ++ if (n >= 2) ++ { ++ aarch64_copy_one_block_and_progress_pointers (&src, &dst, HImode); ++ n -= 2; ++ } ++ ++ if (n == 1) ++ aarch64_copy_one_block_and_progress_pointers (&src, &dst, QImode); ++ ++ return true; ++ } ++ ++ /* Copy 4-8 bytes. First a 4-byte chunk, then (if applicable) a second ++ 4-byte chunk, partially overlapping with the previously copied chunk. */ ++ if (n < 8) ++ { ++ aarch64_copy_one_block_and_progress_pointers (&src, &dst, SImode); ++ n -= 4; ++ if (n > 0) ++ { ++ int move = n - 4; ++ ++ src = aarch64_move_pointer (src, move); ++ dst = aarch64_move_pointer (dst, move); ++ aarch64_copy_one_block_and_progress_pointers (&src, &dst, SImode); ++ } ++ return true; ++ } ++ ++ /* Copy more than 8 bytes. Copy chunks of 16 bytes until we run out of ++ them, then (if applicable) an 8-byte chunk. */ ++ while (n >= 8) ++ { ++ if (n / 16) ++ { ++ aarch64_copy_one_block_and_progress_pointers (&src, &dst, TImode); ++ n -= 16; ++ } ++ else ++ { ++ aarch64_copy_one_block_and_progress_pointers (&src, &dst, DImode); ++ n -= 8; ++ } ++ } ++ ++ /* Finish the final bytes of the copy. We can always do this in one ++ instruction. We either copy the exact amount we need, or partially ++ overlap with the previous chunk we copied and copy 8-bytes. */ ++ if (n == 0) ++ return true; ++ else if (n == 1) ++ aarch64_copy_one_block_and_progress_pointers (&src, &dst, QImode); ++ else if (n == 2) ++ aarch64_copy_one_block_and_progress_pointers (&src, &dst, HImode); ++ else if (n == 4) ++ aarch64_copy_one_block_and_progress_pointers (&src, &dst, SImode); ++ else ++ { ++ if (n == 3) ++ { ++ src = aarch64_move_pointer (src, -1); ++ dst = aarch64_move_pointer (dst, -1); ++ aarch64_copy_one_block_and_progress_pointers (&src, &dst, SImode); ++ } ++ else ++ { ++ int move = n - 8; ++ ++ src = aarch64_move_pointer (src, move); ++ dst = aarch64_move_pointer (dst, move); ++ aarch64_copy_one_block_and_progress_pointers (&src, &dst, DImode); ++ } ++ } ++ ++ return true; ++} ++ ++static bool ++aarch64_use_by_pieces_infrastructure_p (unsigned HOST_WIDE_INT size, ++ unsigned int align, ++ enum by_pieces_operation op, ++ bool speed_p) ++{ ++ /* STORE_BY_PIECES can be used when copying a constant string, but ++ in that case each 64-bit chunk takes 5 insns instead of 2 (LDR/STR). ++ For now we always fail this and let the move_by_pieces code copy ++ the string from read-only memory. */ ++ if (op == STORE_BY_PIECES) ++ return false; ++ ++ return default_use_by_pieces_infrastructure_p (size, align, op, speed_p); ++} ++ ++/* Implement TARGET_SCHED_MACRO_FUSION_P. Return true if target supports ++ instruction fusion of some sort. */ ++ ++static bool ++aarch64_macro_fusion_p (void) ++{ ++ return aarch64_tune_params->fuseable_ops != AARCH64_FUSE_NOTHING; ++} ++ ++ ++/* Implement TARGET_SCHED_MACRO_FUSION_PAIR_P. Return true if PREV and CURR ++ should be kept together during scheduling. */ ++ ++static bool ++aarch_macro_fusion_pair_p (rtx prev, rtx curr) ++{ ++ rtx set_dest; ++ rtx prev_set = single_set (prev); ++ rtx curr_set = single_set (curr); ++ /* prev and curr are simple SET insns i.e. no flag setting or branching. */ ++ bool simple_sets_p = prev_set && curr_set && !any_condjump_p (curr); ++ ++ if (!aarch64_macro_fusion_p ()) ++ return false; ++ ++ if (simple_sets_p ++ && (aarch64_tune_params->fuseable_ops & AARCH64_FUSE_MOV_MOVK)) ++ { ++ /* We are trying to match: ++ prev (mov) == (set (reg r0) (const_int imm16)) ++ curr (movk) == (set (zero_extract (reg r0) ++ (const_int 16) ++ (const_int 16)) ++ (const_int imm16_1)) */ ++ ++ set_dest = SET_DEST (curr_set); ++ ++ if (GET_CODE (set_dest) == ZERO_EXTRACT ++ && CONST_INT_P (SET_SRC (curr_set)) ++ && CONST_INT_P (SET_SRC (prev_set)) ++ && CONST_INT_P (XEXP (set_dest, 2)) ++ && INTVAL (XEXP (set_dest, 2)) == 16 ++ && REG_P (XEXP (set_dest, 0)) ++ && REG_P (SET_DEST (prev_set)) ++ && REGNO (XEXP (set_dest, 0)) == REGNO (SET_DEST (prev_set))) ++ { ++ return true; ++ } ++ } ++ ++ if (simple_sets_p ++ && (aarch64_tune_params->fuseable_ops & AARCH64_FUSE_ADRP_ADD)) ++ { ++ ++ /* We're trying to match: ++ prev (adrp) == (set (reg r1) ++ (high (symbol_ref ("SYM")))) ++ curr (add) == (set (reg r0) ++ (lo_sum (reg r1) ++ (symbol_ref ("SYM")))) ++ Note that r0 need not necessarily be the same as r1, especially ++ during pre-regalloc scheduling. */ ++ ++ if (satisfies_constraint_Ush (SET_SRC (prev_set)) ++ && REG_P (SET_DEST (prev_set)) && REG_P (SET_DEST (curr_set))) ++ { ++ if (GET_CODE (SET_SRC (curr_set)) == LO_SUM ++ && REG_P (XEXP (SET_SRC (curr_set), 0)) ++ && REGNO (XEXP (SET_SRC (curr_set), 0)) ++ == REGNO (SET_DEST (prev_set)) ++ && rtx_equal_p (XEXP (SET_SRC (prev_set), 0), ++ XEXP (SET_SRC (curr_set), 1))) ++ return true; ++ } ++ } ++ ++ if (simple_sets_p ++ && (aarch64_tune_params->fuseable_ops & AARCH64_FUSE_MOVK_MOVK)) ++ { ++ ++ /* We're trying to match: ++ prev (movk) == (set (zero_extract (reg r0) ++ (const_int 16) ++ (const_int 32)) ++ (const_int imm16_1)) ++ curr (movk) == (set (zero_extract (reg r0) ++ (const_int 16) ++ (const_int 48)) ++ (const_int imm16_2)) */ ++ ++ if (GET_CODE (SET_DEST (prev_set)) == ZERO_EXTRACT ++ && GET_CODE (SET_DEST (curr_set)) == ZERO_EXTRACT ++ && REG_P (XEXP (SET_DEST (prev_set), 0)) ++ && REG_P (XEXP (SET_DEST (curr_set), 0)) ++ && REGNO (XEXP (SET_DEST (prev_set), 0)) ++ == REGNO (XEXP (SET_DEST (curr_set), 0)) ++ && CONST_INT_P (XEXP (SET_DEST (prev_set), 2)) ++ && CONST_INT_P (XEXP (SET_DEST (curr_set), 2)) ++ && INTVAL (XEXP (SET_DEST (prev_set), 2)) == 32 ++ && INTVAL (XEXP (SET_DEST (curr_set), 2)) == 48 ++ && CONST_INT_P (SET_SRC (prev_set)) ++ && CONST_INT_P (SET_SRC (curr_set))) ++ return true; ++ ++ } ++ if (simple_sets_p ++ && (aarch64_tune_params->fuseable_ops & AARCH64_FUSE_ADRP_LDR)) ++ { ++ /* We're trying to match: ++ prev (adrp) == (set (reg r0) ++ (high (symbol_ref ("SYM")))) ++ curr (ldr) == (set (reg r1) ++ (mem (lo_sum (reg r0) ++ (symbol_ref ("SYM"))))) ++ or ++ curr (ldr) == (set (reg r1) ++ (zero_extend (mem ++ (lo_sum (reg r0) ++ (symbol_ref ("SYM")))))) */ ++ if (satisfies_constraint_Ush (SET_SRC (prev_set)) ++ && REG_P (SET_DEST (prev_set)) && REG_P (SET_DEST (curr_set))) ++ { ++ rtx curr_src = SET_SRC (curr_set); ++ ++ if (GET_CODE (curr_src) == ZERO_EXTEND) ++ curr_src = XEXP (curr_src, 0); ++ ++ if (MEM_P (curr_src) && GET_CODE (XEXP (curr_src, 0)) == LO_SUM ++ && REG_P (XEXP (XEXP (curr_src, 0), 0)) ++ && REGNO (XEXP (XEXP (curr_src, 0), 0)) ++ == REGNO (SET_DEST (prev_set)) ++ && rtx_equal_p (XEXP (XEXP (curr_src, 0), 1), ++ XEXP (SET_SRC (prev_set), 0))) ++ return true; ++ } ++ } ++ ++ if ((aarch64_tune_params->fuseable_ops & AARCH64_FUSE_CMP_BRANCH) ++ && any_condjump_p (curr)) ++ { ++ enum attr_type prev_type = get_attr_type (prev); ++ ++ /* FIXME: this misses some which is considered simple arthematic ++ instructions for ThunderX. Simple shifts are missed here. */ ++ if (prev_type == TYPE_ALUS_REG ++ || prev_type == TYPE_ALUS_IMM ++ || prev_type == TYPE_LOGICS_REG ++ || prev_type == TYPE_LOGICS_IMM) ++ return true; ++ } ++ ++ return false; ++} ++ + #undef TARGET_ADDRESS_COST + #define TARGET_ADDRESS_COST aarch64_address_cost + +@@ -8548,6 +10449,9 @@ + #undef TARGET_MEMORY_MOVE_COST + #define TARGET_MEMORY_MOVE_COST aarch64_memory_move_cost + ++#undef TARGET_MIN_DIVISIONS_FOR_RECIP_MUL ++#define TARGET_MIN_DIVISIONS_FOR_RECIP_MUL aarch64_min_divisions_for_recip_mul ++ + #undef TARGET_MUST_PASS_IN_STACK + #define TARGET_MUST_PASS_IN_STACK must_pass_in_stack_var_size + +@@ -8570,6 +10474,9 @@ + #undef TARGET_PREFERRED_RELOAD_CLASS + #define TARGET_PREFERRED_RELOAD_CLASS aarch64_preferred_reload_class + ++#undef TARGET_SCHED_REASSOCIATION_WIDTH ++#define TARGET_SCHED_REASSOCIATION_WIDTH aarch64_reassociation_width ++ + #undef TARGET_SECONDARY_RELOAD + #define TARGET_SECONDARY_RELOAD aarch64_secondary_reload + +@@ -8592,11 +10499,15 @@ + #define TARGET_RETURN_IN_MSB aarch64_return_in_msb + + #undef TARGET_RTX_COSTS +-#define TARGET_RTX_COSTS aarch64_rtx_costs ++#define TARGET_RTX_COSTS aarch64_rtx_costs_wrapper + + #undef TARGET_SCHED_ISSUE_RATE + #define TARGET_SCHED_ISSUE_RATE aarch64_sched_issue_rate + ++#undef TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD ++#define TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD \ ++ aarch64_sched_first_cycle_multipass_dfa_lookahead ++ + #undef TARGET_TRAMPOLINE_INIT + #define TARGET_TRAMPOLINE_INIT aarch64_trampoline_init + +@@ -8630,6 +10541,10 @@ + #define TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_SIZES \ + aarch64_autovectorize_vector_sizes + ++#undef TARGET_ATOMIC_ASSIGN_EXPAND_FENV ++#define TARGET_ATOMIC_ASSIGN_EXPAND_FENV \ ++ aarch64_atomic_assign_expand_fenv ++ + /* Section anchor support. */ + + #undef TARGET_MIN_ANCHOR_OFFSET +@@ -8658,6 +10573,25 @@ + #undef TARGET_FIXED_CONDITION_CODE_REGS + #define TARGET_FIXED_CONDITION_CODE_REGS aarch64_fixed_condition_code_regs + ++#undef TARGET_FLAGS_REGNUM ++#define TARGET_FLAGS_REGNUM CC_REGNUM ++ ++#undef TARGET_LEGITIMIZE_ADDRESS ++#define TARGET_LEGITIMIZE_ADDRESS aarch64_legitimize_address ++ ++#undef TARGET_USE_BY_PIECES_INFRASTRUCTURE_P ++#define TARGET_USE_BY_PIECES_INFRASTRUCTURE_P \ ++ aarch64_use_by_pieces_infrastructure_p ++ ++#undef TARGET_CAN_USE_DOLOOP_P ++#define TARGET_CAN_USE_DOLOOP_P can_use_doloop_if_innermost ++ ++#undef TARGET_SCHED_MACRO_FUSION_P ++#define TARGET_SCHED_MACRO_FUSION_P aarch64_macro_fusion_p ++ ++#undef TARGET_SCHED_MACRO_FUSION_PAIR_P ++#define TARGET_SCHED_MACRO_FUSION_PAIR_P aarch_macro_fusion_pair_p ++ + struct gcc_target targetm = TARGET_INITIALIZER; + + #include "gt-aarch64.h" +--- a/src/gcc/config/aarch64/aarch64-elf-raw.h ++++ b/src/gcc/config/aarch64/aarch64-elf-raw.h +@@ -23,7 +23,9 @@ + #define GCC_AARCH64_ELF_RAW_H + + #define STARTFILE_SPEC " crti%O%s crtbegin%O%s crt0%O%s" +-#define ENDFILE_SPEC " crtend%O%s crtn%O%s" ++#define ENDFILE_SPEC \ ++ " crtend%O%s crtn%O%s " \ ++ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}" + + #ifdef TARGET_FIX_ERR_A53_835769_DEFAULT + #define CA53_ERR_835769_SPEC \ +--- a/src/gcc/config/aarch64/aarch64-linux.h ++++ b/src/gcc/config/aarch64/aarch64-linux.h +@@ -21,7 +21,7 @@ + #ifndef GCC_AARCH64_LINUX_H + #define GCC_AARCH64_LINUX_H + +-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}.so.1" ++#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1" + + #define CPP_SPEC "%{pthread:-D_REENTRANT}" + +@@ -33,7 +33,7 @@ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER " \ + -X \ + %{mbig-endian:-EB} %{mlittle-endian:-EL} \ +- -maarch64linux%{mbig-endian:b}" ++ -maarch64linux%{mabi=ilp32:32}%{mbig-endian:b}" + + #ifdef TARGET_FIX_ERR_A53_835769_DEFAULT + #define CA53_ERR_835769_SPEC \ +@@ -46,6 +46,14 @@ + #define LINK_SPEC LINUX_TARGET_LINK_SPEC \ + CA53_ERR_835769_SPEC + ++#define GNU_USER_TARGET_MATHFILE_SPEC \ ++ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}" ++ ++#undef ENDFILE_SPEC ++#define ENDFILE_SPEC \ ++ GNU_USER_TARGET_MATHFILE_SPEC " " \ ++ GNU_USER_TARGET_ENDFILE_SPEC ++ + #define TARGET_OS_CPP_BUILTINS() \ + do \ + { \ +--- a/src/gcc/config/aarch64/iterators.md ++++ b/src/gcc/config/aarch64/iterators.md +@@ -95,6 +95,9 @@ + ;; Vector Float modes. + (define_mode_iterator VDQF [V2SF V4SF V2DF]) + ++;; Vector Float modes, and DF. ++(define_mode_iterator VDQF_DF [V2SF V4SF V2DF DF]) ++ + ;; Vector single Float modes. + (define_mode_iterator VDQSF [V2SF V4SF]) + +@@ -156,6 +159,9 @@ + ;; Vector modes for H and S types. + (define_mode_iterator VDQHS [V4HI V8HI V2SI V4SI]) + ++;; Vector modes for H, S and D types. ++(define_mode_iterator VDQHSD [V4HI V8HI V2SI V4SI V2DI]) ++ + ;; Vector modes for Q, H and S types. + (define_mode_iterator VDQQHS [V8QI V16QI V4HI V8HI V2SI V4SI]) + +@@ -177,6 +183,9 @@ + ;; All byte modes. + (define_mode_iterator VB [V8QI V16QI]) + ++;; 2 and 4 lane SI modes. ++(define_mode_iterator VS [V2SI V4SI]) ++ + (define_mode_iterator TX [TI TF]) + + ;; Opaque structure modes. +@@ -207,8 +216,7 @@ + UNSPEC_FMINNMV ; Used in aarch64-simd.md. + UNSPEC_FMINV ; Used in aarch64-simd.md. + UNSPEC_FADDV ; Used in aarch64-simd.md. +- UNSPEC_SADDV ; Used in aarch64-simd.md. +- UNSPEC_UADDV ; Used in aarch64-simd.md. ++ UNSPEC_ADDV ; Used in aarch64-simd.md. + UNSPEC_SMAXV ; Used in aarch64-simd.md. + UNSPEC_SMINV ; Used in aarch64-simd.md. + UNSPEC_UMAXV ; Used in aarch64-simd.md. +@@ -273,6 +281,10 @@ + UNSPEC_UZP2 ; Used in vector permute patterns. + UNSPEC_TRN1 ; Used in vector permute patterns. + UNSPEC_TRN2 ; Used in vector permute patterns. ++ UNSPEC_EXT ; Used in aarch64-simd.md. ++ UNSPEC_REV64 ; Used in vector reverse patterns (permute). ++ UNSPEC_REV32 ; Used in vector reverse patterns (permute). ++ UNSPEC_REV16 ; Used in vector reverse patterns (permute). + UNSPEC_AESE ; Used in aarch64-simd.md. + UNSPEC_AESD ; Used in aarch64-simd.md. + UNSPEC_AESMC ; Used in aarch64-simd.md. +@@ -299,6 +311,10 @@ + ;; 32-bit version and "%x0" in the 64-bit version. + (define_mode_attr w [(QI "w") (HI "w") (SI "w") (DI "x") (SF "s") (DF "d")]) + ++;; For inequal width int to float conversion ++(define_mode_attr w1 [(SF "w") (DF "x")]) ++(define_mode_attr w2 [(SF "x") (DF "w")]) ++ + ;; For constraints used in scalar immediate vector moves + (define_mode_attr hq [(HI "h") (QI "q")]) + +@@ -348,6 +364,9 @@ + ;; Attribute to describe constants acceptable in logical operations + (define_mode_attr lconst [(SI "K") (DI "L")]) + ++;; Attribute to describe constants acceptable in atomic logical operations ++(define_mode_attr lconst_atomic [(QI "K") (HI "K") (SI "K") (DI "L")]) ++ + ;; Map a mode to a specific constraint character. + (define_mode_attr cmode [(QI "q") (HI "h") (SI "s") (DI "d")]) + +@@ -358,6 +377,9 @@ + (V2DI "2d") (V2SF "2s") + (V4SF "4s") (V2DF "2d")]) + ++(define_mode_attr Vrevsuff [(V4HI "16") (V8HI "16") (V2SI "32") ++ (V4SI "32") (V2DI "64")]) ++ + (define_mode_attr Vmtype [(V8QI ".8b") (V16QI ".16b") + (V4HI ".4h") (V8HI ".8h") + (V2SI ".2s") (V4SI ".4s") +@@ -390,7 +412,8 @@ + (V2SI "8b") (V4SI "16b") + (V2DI "16b") (V2SF "8b") + (V4SF "16b") (V2DF "16b") +- (DI "8b") (DF "8b")]) ++ (DI "8b") (DF "8b") ++ (SI "8b")]) + + ;; Define element mode for each vector mode. + (define_mode_attr VEL [(V8QI "QI") (V16QI "QI") +@@ -521,6 +544,14 @@ + (V2DF "v2di") (DF "di") + (SF "si")]) + ++;; Lower case element modes (as used in shift immediate patterns). ++(define_mode_attr ve_mode [(V8QI "qi") (V16QI "qi") ++ (V4HI "hi") (V8HI "hi") ++ (V2SI "si") (V4SI "si") ++ (DI "di") (V2DI "di") ++ (QI "qi") (HI "hi") ++ (SI "si")]) ++ + ;; Vm for lane instructions is restricted to FP_LO_REGS. + (define_mode_attr vwx [(V4HI "x") (V8HI "x") (HI "x") + (V2SI "w") (V4SI "w") (SI "w")]) +@@ -552,13 +583,43 @@ + + (define_mode_attr VSTRUCT_DREG [(OI "TI") (CI "EI") (XI "OI")]) + ++;; Mode of pair of elements for each vector mode, to define transfer ++;; size for structure lane/dup loads and stores. ++(define_mode_attr V_TWO_ELEM [(V8QI "HI") (V16QI "HI") ++ (V4HI "SI") (V8HI "SI") ++ (V2SI "V2SI") (V4SI "V2SI") ++ (DI "V2DI") (V2DI "V2DI") ++ (V2SF "V2SF") (V4SF "V2SF") ++ (DF "V2DI") (V2DF "V2DI")]) ++ ++;; Similar, for three elements. ++(define_mode_attr V_THREE_ELEM [(V8QI "BLK") (V16QI "BLK") ++ (V4HI "BLK") (V8HI "BLK") ++ (V2SI "BLK") (V4SI "BLK") ++ (DI "EI") (V2DI "EI") ++ (V2SF "BLK") (V4SF "BLK") ++ (DF "EI") (V2DF "EI")]) ++ ++;; Similar, for four elements. ++(define_mode_attr V_FOUR_ELEM [(V8QI "SI") (V16QI "SI") ++ (V4HI "V4HI") (V8HI "V4HI") ++ (V2SI "V4SI") (V4SI "V4SI") ++ (DI "OI") (V2DI "OI") ++ (V2SF "V4SF") (V4SF "V4SF") ++ (DF "OI") (V2DF "OI")]) ++ ++ + ;; Mode for atomic operation suffixes + (define_mode_attr atomic_sfx + [(QI "b") (HI "h") (SI "") (DI "")]) + +-(define_mode_attr fcvt_target [(V2DF "v2di") (V4SF "v4si") (V2SF "v2si")]) +-(define_mode_attr FCVT_TARGET [(V2DF "V2DI") (V4SF "V4SI") (V2SF "V2SI")]) ++(define_mode_attr fcvt_target [(V2DF "v2di") (V4SF "v4si") (V2SF "v2si") (SF "si") (DF "di")]) ++(define_mode_attr FCVT_TARGET [(V2DF "V2DI") (V4SF "V4SI") (V2SF "V2SI") (SF "SI") (DF "DI")]) + ++;; for the inequal width integer to fp conversions ++(define_mode_attr fcvt_iesize [(SF "di") (DF "si")]) ++(define_mode_attr FCVT_IESIZE [(SF "DI") (DF "SI")]) ++ + (define_mode_attr VSWAP_WIDTH [(V8QI "V16QI") (V16QI "V8QI") + (V4HI "V8HI") (V8HI "V4HI") + (V2SI "V4SI") (V4SI "V2SI") +@@ -613,6 +674,9 @@ + (V2DI "p") (V2DF "p") + (V2SF "p") (V4SF "v")]) + ++(define_mode_attr vsi2qi [(V2SI "v8qi") (V4SI "v16qi")]) ++(define_mode_attr VSI2QI [(V2SI "V8QI") (V4SI "V16QI")]) ++ + ;; ------------------------------------------------------------------- + ;; Code Iterators + ;; ------------------------------------------------------------------- +@@ -626,6 +690,9 @@ + ;; Code iterator for logical operations + (define_code_iterator LOGICAL [and ior xor]) + ++;; Code iterator for logical operations whose :nlogical works on SIMD registers. ++(define_code_iterator NLOGICAL [and ior]) ++ + ;; Code iterator for sign/zero extension + (define_code_iterator ANY_EXTEND [sign_extend zero_extend]) + +@@ -804,8 +871,6 @@ + (define_int_iterator FMAXMINV [UNSPEC_FMAXV UNSPEC_FMINV + UNSPEC_FMAXNMV UNSPEC_FMINNMV]) + +-(define_int_iterator SUADDV [UNSPEC_SADDV UNSPEC_UADDV]) +- + (define_int_iterator HADDSUB [UNSPEC_SHADD UNSPEC_UHADD + UNSPEC_SRHADD UNSPEC_URHADD + UNSPEC_SHSUB UNSPEC_UHSUB +@@ -853,6 +918,8 @@ + UNSPEC_TRN1 UNSPEC_TRN2 + UNSPEC_UZP1 UNSPEC_UZP2]) + ++(define_int_iterator REVERSE [UNSPEC_REV64 UNSPEC_REV32 UNSPEC_REV16]) ++ + (define_int_iterator FRINT [UNSPEC_FRINTZ UNSPEC_FRINTP UNSPEC_FRINTM + UNSPEC_FRINTN UNSPEC_FRINTI UNSPEC_FRINTX + UNSPEC_FRINTA]) +@@ -862,6 +929,10 @@ + + (define_int_iterator FRECP [UNSPEC_FRECPE UNSPEC_FRECPX]) + ++(define_int_iterator CRC [UNSPEC_CRC32B UNSPEC_CRC32H UNSPEC_CRC32W ++ UNSPEC_CRC32X UNSPEC_CRC32CB UNSPEC_CRC32CH ++ UNSPEC_CRC32CW UNSPEC_CRC32CX]) ++ + (define_int_iterator CRYPTO_AES [UNSPEC_AESE UNSPEC_AESD]) + (define_int_iterator CRYPTO_AESMC [UNSPEC_AESMC UNSPEC_AESIMC]) + +@@ -904,7 +975,6 @@ + (UNSPEC_SUBHN2 "") (UNSPEC_RSUBHN2 "r") + (UNSPEC_SQXTN "s") (UNSPEC_UQXTN "u") + (UNSPEC_USQADD "us") (UNSPEC_SUQADD "su") +- (UNSPEC_SADDV "s") (UNSPEC_UADDV "u") + (UNSPEC_SSLI "s") (UNSPEC_USLI "u") + (UNSPEC_SSRI "s") (UNSPEC_USRI "u") + (UNSPEC_USRA "u") (UNSPEC_SSRA "s") +@@ -954,8 +1024,9 @@ + (UNSPEC_RADDHN2 "add") + (UNSPEC_RSUBHN2 "sub")]) + +-(define_int_attr offsetlr [(UNSPEC_SSLI "1") (UNSPEC_USLI "1") +- (UNSPEC_SSRI "0") (UNSPEC_USRI "0")]) ++(define_int_attr offsetlr [(UNSPEC_SSLI "") (UNSPEC_USLI "") ++ (UNSPEC_SSRI "offset_") ++ (UNSPEC_USRI "offset_")]) + + ;; Standard pattern names for floating-point rounding instructions. + (define_int_attr frint_pattern [(UNSPEC_FRINTZ "btrunc") +@@ -980,6 +1051,10 @@ + (UNSPEC_TRN1 "trn") (UNSPEC_TRN2 "trn") + (UNSPEC_UZP1 "uzp") (UNSPEC_UZP2 "uzp")]) + ++; op code for REV instructions (size within which elements are reversed). ++(define_int_attr rev_op [(UNSPEC_REV64 "64") (UNSPEC_REV32 "32") ++ (UNSPEC_REV16 "16")]) ++ + (define_int_attr perm_hilo [(UNSPEC_ZIP1 "1") (UNSPEC_ZIP2 "2") + (UNSPEC_TRN1 "1") (UNSPEC_TRN2 "2") + (UNSPEC_UZP1 "1") (UNSPEC_UZP2 "2")]) +@@ -986,6 +1061,16 @@ + + (define_int_attr frecp_suffix [(UNSPEC_FRECPE "e") (UNSPEC_FRECPX "x")]) + ++(define_int_attr crc_variant [(UNSPEC_CRC32B "crc32b") (UNSPEC_CRC32H "crc32h") ++ (UNSPEC_CRC32W "crc32w") (UNSPEC_CRC32X "crc32x") ++ (UNSPEC_CRC32CB "crc32cb") (UNSPEC_CRC32CH "crc32ch") ++ (UNSPEC_CRC32CW "crc32cw") (UNSPEC_CRC32CX "crc32cx")]) ++ ++(define_int_attr crc_mode [(UNSPEC_CRC32B "QI") (UNSPEC_CRC32H "HI") ++ (UNSPEC_CRC32W "SI") (UNSPEC_CRC32X "DI") ++ (UNSPEC_CRC32CB "QI") (UNSPEC_CRC32CH "HI") ++ (UNSPEC_CRC32CW "SI") (UNSPEC_CRC32CX "DI")]) ++ + (define_int_attr aes_op [(UNSPEC_AESE "e") (UNSPEC_AESD "d")]) + (define_int_attr aesmc_op [(UNSPEC_AESMC "mc") (UNSPEC_AESIMC "imc")]) + +--- a/src/gcc/config/aarch64/aarch64.h ++++ b/src/gcc/config/aarch64/aarch64.h +@@ -26,14 +26,48 @@ + #define TARGET_CPU_CPP_BUILTINS() \ + do \ + { \ +- builtin_define ("__aarch64__"); \ ++ builtin_define ("__aarch64__"); \ ++ builtin_define ("__ARM_64BIT_STATE"); \ ++ builtin_define_with_int_value \ ++ ("__ARM_ARCH", aarch64_architecture_version); \ ++ cpp_define_formatted \ ++ (parse_in, "__ARM_ARCH_%dA", aarch64_architecture_version); \ ++ builtin_define ("__ARM_ARCH_ISA_A64"); \ ++ builtin_define_with_int_value \ ++ ("__ARM_ARCH_PROFILE", 'A'); \ ++ builtin_define ("__ARM_FEATURE_CLZ"); \ ++ builtin_define ("__ARM_FEATURE_IDIV"); \ ++ builtin_define ("__ARM_FEATURE_UNALIGNED"); \ ++ if (flag_unsafe_math_optimizations) \ ++ builtin_define ("__ARM_FP_FAST"); \ ++ builtin_define ("__ARM_PCS_AAPCS64"); \ ++ builtin_define_with_int_value \ ++ ("__ARM_SIZEOF_WCHAR_T", WCHAR_TYPE_SIZE / 8); \ ++ builtin_define_with_int_value \ ++ ("__ARM_SIZEOF_MINIMAL_ENUM", \ ++ flag_short_enums? 1 : 4); \ + if (TARGET_BIG_END) \ +- builtin_define ("__AARCH64EB__"); \ ++ { \ ++ builtin_define ("__AARCH64EB__"); \ ++ builtin_define ("__ARM_BIG_ENDIAN"); \ ++ } \ + else \ + builtin_define ("__AARCH64EL__"); \ + \ +- if (TARGET_SIMD) \ +- builtin_define ("__ARM_NEON"); \ ++ if (TARGET_FLOAT) \ ++ { \ ++ builtin_define ("__ARM_FEATURE_FMA"); \ ++ builtin_define_with_int_value ("__ARM_FP", 0x0C); \ ++ } \ ++ if (TARGET_SIMD) \ ++ { \ ++ builtin_define ("__ARM_FEATURE_NUMERIC_MAXMIN"); \ ++ builtin_define ("__ARM_NEON"); \ ++ builtin_define_with_int_value ("__ARM_NEON_FP", 0x0C);\ ++ } \ ++ \ ++ if (TARGET_CRC32) \ ++ builtin_define ("__ARM_FEATURE_CRC32"); \ + \ + switch (aarch64_cmodel) \ + { \ +@@ -155,6 +189,8 @@ + + #define PCC_BITFIELD_TYPE_MATTERS 1 + ++/* Major revision number of the ARM Architecture implemented by the target. */ ++extern unsigned aarch64_architecture_version; + + /* Instruction tuning/selection flags. */ + +@@ -188,6 +224,9 @@ + /* Crypto is an optional extension to AdvSIMD. */ + #define TARGET_CRYPTO (TARGET_SIMD && AARCH64_ISA_CRYPTO) + ++/* CRC instructions that can be enabled through +crc arch extension. */ ++#define TARGET_CRC32 (AARCH64_ISA_CRC) ++ + /* Standard register usage. */ + + /* 31 64-bit general purpose registers R0-R30: +@@ -244,7 +283,7 @@ + 1, 1, 1, 1, 1, 1, 1, 1, /* R0 - R7 */ \ + 1, 1, 1, 1, 1, 1, 1, 1, /* R8 - R15 */ \ + 1, 1, 1, 0, 0, 0, 0, 0, /* R16 - R23 */ \ +- 0, 0, 0, 0, 0, 1, 0, 1, /* R24 - R30, SP */ \ ++ 0, 0, 0, 0, 0, 1, 1, 1, /* R24 - R30, SP */ \ + 1, 1, 1, 1, 1, 1, 1, 1, /* V0 - V7 */ \ + 0, 0, 0, 0, 0, 0, 0, 0, /* V8 - V15 */ \ + 1, 1, 1, 1, 1, 1, 1, 1, /* V16 - V23 */ \ +@@ -303,7 +342,7 @@ + considered live at the start of the called function. */ + + #define EPILOGUE_USES(REGNO) \ +- ((REGNO) == LR_REGNUM) ++ (epilogue_completed && (REGNO) == LR_REGNUM) + + /* EXIT_IGNORE_STACK should be nonzero if, when returning from a function, + the stack pointer does not matter. The value is tested only in +@@ -365,8 +404,7 @@ + + #define HARD_REGNO_MODE_OK(REGNO, MODE) aarch64_hard_regno_mode_ok (REGNO, MODE) + +-#define MODES_TIEABLE_P(MODE1, MODE2) \ +- (GET_MODE_CLASS (MODE1) == GET_MODE_CLASS (MODE2)) ++#define MODES_TIEABLE_P(MODE1, MODE2) aarch64_modes_tieable_p (MODE1, MODE2) + + #define DWARF2_UNWIND_INFO 1 + +@@ -409,7 +447,7 @@ + enum reg_class + { + NO_REGS, +- CORE_REGS, ++ CALLER_SAVE_REGS, + GENERAL_REGS, + STACK_REG, + POINTER_REGS, +@@ -424,7 +462,7 @@ + #define REG_CLASS_NAMES \ + { \ + "NO_REGS", \ +- "CORE_REGS", \ ++ "CALLER_SAVE_REGS", \ + "GENERAL_REGS", \ + "STACK_REG", \ + "POINTER_REGS", \ +@@ -436,7 +474,7 @@ + #define REG_CLASS_CONTENTS \ + { \ + { 0x00000000, 0x00000000, 0x00000000 }, /* NO_REGS */ \ +- { 0x7fffffff, 0x00000000, 0x00000003 }, /* CORE_REGS */ \ ++ { 0x0007ffff, 0x00000000, 0x00000000 }, /* CALLER_SAVE_REGS */ \ + { 0x7fffffff, 0x00000000, 0x00000003 }, /* GENERAL_REGS */ \ + { 0x80000000, 0x00000000, 0x00000000 }, /* STACK_REG */ \ + { 0xffffffff, 0x00000000, 0x00000003 }, /* POINTER_REGS */ \ +@@ -447,7 +485,7 @@ + + #define REGNO_REG_CLASS(REGNO) aarch64_regno_regclass (REGNO) + +-#define INDEX_REG_CLASS CORE_REGS ++#define INDEX_REG_CLASS GENERAL_REGS + #define BASE_REG_CLASS POINTER_REGS + + /* Register pairs used to eliminate unneeded registers that point into +@@ -468,7 +506,7 @@ + + enum target_cpus + { +-#define AARCH64_CORE(NAME, INTERNAL_IDENT, IDENT, ARCH, FLAGS, COSTS) \ ++#define AARCH64_CORE(NAME, INTERNAL_IDENT, SCHED, ARCH, FLAGS, COSTS) \ + TARGET_CPU_##INTERNAL_IDENT, + #include "aarch64-cores.def" + #undef AARCH64_CORE +@@ -524,13 +562,33 @@ + struct GTY (()) aarch64_frame + { + HOST_WIDE_INT reg_offset[FIRST_PSEUDO_REGISTER]; ++ ++ /* The number of extra stack bytes taken up by register varargs. ++ This area is allocated by the callee at the very top of the ++ frame. This value is rounded up to a multiple of ++ STACK_BOUNDARY. */ ++ HOST_WIDE_INT saved_varargs_size; ++ + HOST_WIDE_INT saved_regs_size; + /* Padding if needed after the all the callee save registers have + been saved. */ + HOST_WIDE_INT padding0; + HOST_WIDE_INT hardfp_offset; /* HARD_FRAME_POINTER_REGNUM */ +- HOST_WIDE_INT fp_lr_offset; /* Space needed for saving fp and/or lr */ + ++ /* Offset from the base of the frame (incomming SP) to the ++ hard_frame_pointer. This value is always a multiple of ++ STACK_BOUNDARY. */ ++ HOST_WIDE_INT hard_fp_offset; ++ ++ /* The size of the frame. This value is the offset from base of the ++ * frame (incomming SP) to the stack_pointer. This value is always ++ * a multiple of STACK_BOUNDARY. */ ++ ++ unsigned wb_candidate1; ++ unsigned wb_candidate2; ++ ++ HOST_WIDE_INT frame_size; ++ + bool laid_out; + }; + +@@ -537,11 +595,6 @@ + typedef struct GTY (()) machine_function + { + struct aarch64_frame frame; +- +- /* The number of extra stack bytes taken up by register varargs. +- This area is allocated by the callee at the very top of the frame. */ +- HOST_WIDE_INT saved_varargs_size; +- + } machine_function; + #endif + +@@ -565,11 +618,7 @@ + }; + + +-extern enum arm_pcs arm_pcs_variant; + +-#ifndef ARM_DEFAULT_PCS +-#define ARM_DEFAULT_PCS ARM_PCS_AAPCS64 +-#endif + + /* We can't use enum machine_mode inside a generator file because it + hasn't been created yet; we shouldn't be using any code that +@@ -670,12 +719,14 @@ + /* The base cost overhead of a memcpy call, for MOVE_RATIO and friends. */ + #define AARCH64_CALL_RATIO 8 + +-/* When optimizing for size, give a better estimate of the length of a memcpy +- call, but use the default otherwise. But move_by_pieces_ninsns() counts +- memory-to-memory moves, and we'll have to generate a load & store for each, +- so halve the value to take that into account. */ ++/* MOVE_RATIO dictates when we will use the move_by_pieces infrastructure. ++ move_by_pieces will continually copy the largest safe chunks. So a ++ 7-byte copy is a 4-byte + 2-byte + byte copy. This proves inefficient ++ for both size and speed of copy, so we will instead use the "movmem" ++ standard name to implement the copy. This logic does not apply when ++ targeting -mstrict-align, so keep a sensible default in that case. */ + #define MOVE_RATIO(speed) \ +- (((speed) ? 15 : AARCH64_CALL_RATIO) / 2) ++ (!STRICT_ALIGNMENT ? 2 : (((speed) ? 15 : AARCH64_CALL_RATIO) / 2)) + + /* For CLEAR_RATIO, when optimizing for size, give a better estimate + of the length of a memset call, but use the default otherwise. */ +@@ -688,12 +739,6 @@ + #define SET_RATIO(speed) \ + ((speed) ? 15 : AARCH64_CALL_RATIO - 2) + +-/* STORE_BY_PIECES_P can be used when copying a constant string, but +- in that case each 64-bit chunk takes 5 insns instead of 2 (LDR/STR). +- For now we always fail this and let the move_by_pieces code copy +- the string from read-only memory. */ +-#define STORE_BY_PIECES_P(SIZE, ALIGN) 0 +- + /* Disable auto-increment in move_by_pieces et al. Use of auto-increment is + rarely a good idea in straight-line code since it adds an extra address + dependency between each instruction. Better to use incrementing offsets. */ +@@ -835,6 +880,11 @@ + + #define SHIFT_COUNT_TRUNCATED !TARGET_SIMD + ++/* Choose appropriate mode for caller saves, so we do the minimum ++ required size of load/store. */ ++#define HARD_REGNO_CALLER_SAVE_MODE(REGNO, NREGS, MODE) \ ++ aarch64_hard_regno_caller_save_mode ((REGNO), (NREGS), (MODE)) ++ + /* Callee only saves lower 64-bits of a 128-bit register. Tell the + compiler the callee clobbers the top 64-bits when restoring the + bottom 64-bits. */ +--- a/src/gcc/config/rs6000/rs6000.c ++++ b/src/gcc/config/rs6000/rs6000.c +@@ -26961,22 +26961,25 @@ + } + } + +-/* We are choosing insn from the ready queue. Return nonzero if INSN can be chosen. */ ++/* We are choosing insn from the ready queue. Return zero if INSN can be ++ chosen. */ + static int +-rs6000_use_sched_lookahead_guard (rtx insn) ++rs6000_use_sched_lookahead_guard (rtx insn, int ready_index) + { ++ if (ready_index == 0) ++ return 0; ++ + if (rs6000_cpu_attr != CPU_CELL) +- return 1; ++ return 0; + +- if (insn == NULL_RTX || !INSN_P (insn)) +- abort (); ++ gcc_assert (insn != NULL_RTX && INSN_P (insn)); + + if (!reload_completed + || is_nonpipeline_insn (insn) + || is_microcoded_insn (insn)) +- return 0; ++ return 1; + +- return 1; ++ return 0; + } + + /* Determine if PAT refers to memory. If so, set MEM_REF to the MEM rtx +--- a/src/gcc/config/arc/arc.c ++++ b/src/gcc/config/arc/arc.c +@@ -398,6 +398,11 @@ + + static bool arc_frame_pointer_required (void); + ++static bool arc_use_by_pieces_infrastructure_p (unsigned HOST_WIDE_INT, ++ unsigned int, ++ enum by_pieces_operation op, ++ bool); ++ + /* Implements target hook vector_mode_supported_p. */ + + static bool +@@ -512,6 +517,10 @@ + #undef TARGET_DELEGITIMIZE_ADDRESS + #define TARGET_DELEGITIMIZE_ADDRESS arc_delegitimize_address + ++#undef TARGET_USE_BY_PIECES_INFRASTRUCTURE_P ++#define TARGET_USE_BY_PIECES_INFRASTRUCTURE_P \ ++ arc_use_by_pieces_infrastructure_p ++ + /* Usually, we will be able to scale anchor offsets. + When this fails, we want LEGITIMIZE_ADDRESS to kick in. */ + #undef TARGET_MIN_ANCHOR_OFFSET +@@ -9355,6 +9364,21 @@ + return false; + } + ++/* Implement TARGET_USE_BY_PIECES_INFRASTRUCTURE_P. */ ++ ++static bool ++arc_use_by_pieces_infrastructure_p (unsigned HOST_WIDE_INT size, ++ unsigned int align, ++ enum by_pieces_operation op, ++ bool speed_p) ++{ ++ /* Let the movmem expander handle small block moves. */ ++ if (op == MOVE_BY_PIECES) ++ return false; ++ ++ return default_use_by_pieces_infrastructure_p (size, align, op, speed_p); ++} ++ + struct gcc_target targetm = TARGET_INITIALIZER; + + #include "gt-arc.h" +--- a/src/gcc/config/arc/arc.h ++++ b/src/gcc/config/arc/arc.h +@@ -1553,12 +1553,6 @@ + in one reasonably fast instruction. */ + #define MOVE_MAX 4 + +-/* Let the movmem expander handle small block moves. */ +-#define MOVE_BY_PIECES_P(LEN, ALIGN) 0 +-#define CAN_MOVE_BY_PIECES(SIZE, ALIGN) \ +- (move_by_pieces_ninsns (SIZE, ALIGN, MOVE_MAX_PIECES + 1) \ +- < (unsigned int) MOVE_RATIO (!optimize_size)) +- + /* Undo the effects of the movmem pattern presence on STORE_BY_PIECES_P . */ + #define MOVE_RATIO(SPEED) ((SPEED) ? 15 : 3) + +--- a/src/gcc/config/arm/aarch-cost-tables.h ++++ b/src/gcc/config/arm/aarch-cost-tables.h +@@ -39,6 +39,7 @@ + 0, /* bfi. */ + 0, /* bfx. */ + 0, /* clz. */ ++ 0, /* rev. */ + COSTS_N_INSNS (1), /* non_exec. */ + false /* non_exec_costs_exec. */ + }, +@@ -139,6 +140,7 @@ + COSTS_N_INSNS (1), /* bfi. */ + COSTS_N_INSNS (1), /* bfx. */ + 0, /* clz. */ ++ 0, /* rev. */ + 0, /* non_exec. */ + true /* non_exec_costs_exec. */ + }, +@@ -239,6 +241,7 @@ + COSTS_N_INSNS (1), /* bfi. */ + 0, /* bfx. */ + 0, /* clz. */ ++ 0, /* rev. */ + 0, /* non_exec. */ + true /* non_exec_costs_exec. */ + }, +@@ -322,4 +325,105 @@ + } + }; + ++const struct cpu_cost_table xgene1_extra_costs = ++{ ++ /* ALU */ ++ { ++ 0, /* arith. */ ++ 0, /* logical. */ ++ 0, /* shift. */ ++ COSTS_N_INSNS (1), /* shift_reg. */ ++ COSTS_N_INSNS (1), /* arith_shift. */ ++ COSTS_N_INSNS (1), /* arith_shift_reg. */ ++ COSTS_N_INSNS (1), /* log_shift. */ ++ COSTS_N_INSNS (1), /* log_shift_reg. */ ++ COSTS_N_INSNS (1), /* extend. */ ++ 0, /* extend_arithm. */ ++ COSTS_N_INSNS (1), /* bfi. */ ++ COSTS_N_INSNS (1), /* bfx. */ ++ 0, /* clz. */ ++ COSTS_N_INSNS (1), /* rev. */ ++ 0, /* non_exec. */ ++ true /* non_exec_costs_exec. */ ++ }, ++ { ++ /* MULT SImode */ ++ { ++ COSTS_N_INSNS (4), /* simple. */ ++ COSTS_N_INSNS (4), /* flag_setting. */ ++ COSTS_N_INSNS (4), /* extend. */ ++ COSTS_N_INSNS (4), /* add. */ ++ COSTS_N_INSNS (4), /* extend_add. */ ++ COSTS_N_INSNS (20) /* idiv. */ ++ }, ++ /* MULT DImode */ ++ { ++ COSTS_N_INSNS (5), /* simple. */ ++ 0, /* flag_setting (N/A). */ ++ COSTS_N_INSNS (5), /* extend. */ ++ COSTS_N_INSNS (5), /* add. */ ++ COSTS_N_INSNS (5), /* extend_add. */ ++ COSTS_N_INSNS (21) /* idiv. */ ++ } ++ }, ++ /* LD/ST */ ++ { ++ COSTS_N_INSNS (5), /* load. */ ++ COSTS_N_INSNS (6), /* load_sign_extend. */ ++ COSTS_N_INSNS (5), /* ldrd. */ ++ COSTS_N_INSNS (5), /* ldm_1st. */ ++ 1, /* ldm_regs_per_insn_1st. */ ++ 1, /* ldm_regs_per_insn_subsequent. */ ++ COSTS_N_INSNS (10), /* loadf. */ ++ COSTS_N_INSNS (10), /* loadd. */ ++ COSTS_N_INSNS (5), /* load_unaligned. */ ++ 0, /* store. */ ++ 0, /* strd. */ ++ 0, /* stm_1st. */ ++ 1, /* stm_regs_per_insn_1st. */ ++ 1, /* stm_regs_per_insn_subsequent. */ ++ 0, /* storef. */ ++ 0, /* stored. */ ++ 0, /* store_unaligned. */ ++ }, ++ { ++ /* FP SFmode */ ++ { ++ COSTS_N_INSNS (23), /* div. */ ++ COSTS_N_INSNS (5), /* mult. */ ++ COSTS_N_INSNS (5), /* mult_addsub. */ ++ COSTS_N_INSNS (5), /* fma. */ ++ COSTS_N_INSNS (5), /* addsub. */ ++ COSTS_N_INSNS (2), /* fpconst. */ ++ COSTS_N_INSNS (3), /* neg. */ ++ COSTS_N_INSNS (2), /* compare. */ ++ COSTS_N_INSNS (6), /* widen. */ ++ COSTS_N_INSNS (6), /* narrow. */ ++ COSTS_N_INSNS (4), /* toint. */ ++ COSTS_N_INSNS (4), /* fromint. */ ++ COSTS_N_INSNS (4) /* roundint. */ ++ }, ++ /* FP DFmode */ ++ { ++ COSTS_N_INSNS (29), /* div. */ ++ COSTS_N_INSNS (5), /* mult. */ ++ COSTS_N_INSNS (5), /* mult_addsub. */ ++ COSTS_N_INSNS (5), /* fma. */ ++ COSTS_N_INSNS (5), /* addsub. */ ++ COSTS_N_INSNS (3), /* fpconst. */ ++ COSTS_N_INSNS (3), /* neg. */ ++ COSTS_N_INSNS (2), /* compare. */ ++ COSTS_N_INSNS (6), /* widen. */ ++ COSTS_N_INSNS (6), /* narrow. */ ++ COSTS_N_INSNS (4), /* toint. */ ++ COSTS_N_INSNS (4), /* fromint. */ ++ COSTS_N_INSNS (4) /* roundint. */ ++ } ++ }, ++ /* Vector */ ++ { ++ COSTS_N_INSNS (2) /* alu. */ ++ } ++}; ++ + #endif /* GCC_AARCH_COST_TABLES_H */ +--- a/src/gcc/config/arm/cortex-a15.md ++++ b/src/gcc/config/arm/cortex-a15.md +@@ -64,7 +64,7 @@ + (eq_attr "type" "alu_imm,alus_imm,logic_imm,logics_imm,\ + alu_reg,alus_reg,logic_reg,logics_reg,\ + adc_imm,adcs_imm,adc_reg,adcs_reg,\ +- adr,bfm,rev,\ ++ adr,bfm,clz,rbit,rev,\ + shift_imm,shift_reg,\ + mov_imm,mov_reg,\ + mvn_imm,mvn_reg,\ +@@ -72,11 +72,14 @@ + "ca15_issue1,(ca15_sx1,ca15_sx1_alu)|(ca15_sx2,ca15_sx2_alu)") + + ;; ALU ops with immediate shift ++;; crc is also included here so that appropriate scheduling of CRC32 ARMv8-A ++;; instructions can be performed when tuning for the Cortex-A57 since that ++;; core reuses the Cortex-A15 pipeline description for the moment. + (define_insn_reservation "cortex_a15_alu_shift" 3 + (and (eq_attr "tune" "cortexa15") + (eq_attr "type" "extend,\ + alu_shift_imm,alus_shift_imm,\ +- logic_shift_imm,logics_shift_imm,\ ++ crc,logic_shift_imm,logics_shift_imm,\ + mov_shift,mvn_shift")) + "ca15_issue1,(ca15_sx1,ca15_sx1+ca15_sx1_shf,ca15_sx1_alu)\ + |(ca15_sx2,ca15_sx2+ca15_sx2_shf,ca15_sx2_alu)") +--- a/src/gcc/config/arm/arm-tables.opt ++++ b/src/gcc/config/arm/arm-tables.opt +@@ -241,6 +241,15 @@ + Enum(processor_type) String(cortex-m0plus) Value(cortexm0plus) + + EnumValue ++Enum(processor_type) String(cortex-m1.small-multiply) Value(cortexm1smallmultiply) ++ ++EnumValue ++Enum(processor_type) String(cortex-m0.small-multiply) Value(cortexm0smallmultiply) ++ ++EnumValue ++Enum(processor_type) String(cortex-m0plus.small-multiply) Value(cortexm0plussmallmultiply) ++ ++EnumValue + Enum(processor_type) String(generic-armv7-a) Value(genericv7a) + + EnumValue +@@ -262,6 +271,9 @@ + Enum(processor_type) String(cortex-a15) Value(cortexa15) + + EnumValue ++Enum(processor_type) String(cortex-a17) Value(cortexa17) ++ ++EnumValue + Enum(processor_type) String(cortex-r4) Value(cortexr4) + + EnumValue +@@ -274,6 +286,9 @@ + Enum(processor_type) String(cortex-r7) Value(cortexr7) + + EnumValue ++Enum(processor_type) String(cortex-m7) Value(cortexm7) ++ ++EnumValue + Enum(processor_type) String(cortex-m4) Value(cortexm4) + + EnumValue +@@ -286,6 +301,9 @@ + Enum(processor_type) String(cortex-a15.cortex-a7) Value(cortexa15cortexa7) + + EnumValue ++Enum(processor_type) String(cortex-a17.cortex-a7) Value(cortexa17cortexa7) ++ ++EnumValue + Enum(processor_type) String(cortex-a53) Value(cortexa53) + + EnumValue +@@ -292,8 +310,17 @@ + Enum(processor_type) String(cortex-a57) Value(cortexa57) + + EnumValue ++Enum(processor_type) String(cortex-a72) Value(cortexa72) ++ ++EnumValue ++Enum(processor_type) String(xgene1) Value(xgene1) ++ ++EnumValue + Enum(processor_type) String(cortex-a57.cortex-a53) Value(cortexa57cortexa53) + ++EnumValue ++Enum(processor_type) String(cortex-a72.cortex-a53) Value(cortexa72cortexa53) ++ + Enum + Name(arm_arch) Type(int) + Known ARM architectures (for use with the -march= option): +@@ -423,17 +450,23 @@ + Enum(arm_fpu) String(fpv4-sp-d16) Value(11) + + EnumValue +-Enum(arm_fpu) String(neon-vfpv4) Value(12) ++Enum(arm_fpu) String(fpv5-sp-d16) Value(12) + + EnumValue +-Enum(arm_fpu) String(fp-armv8) Value(13) ++Enum(arm_fpu) String(fpv5-d16) Value(13) + + EnumValue +-Enum(arm_fpu) String(neon-fp-armv8) Value(14) ++Enum(arm_fpu) String(neon-vfpv4) Value(14) + + EnumValue +-Enum(arm_fpu) String(crypto-neon-fp-armv8) Value(15) ++Enum(arm_fpu) String(fp-armv8) Value(15) + + EnumValue +-Enum(arm_fpu) String(vfp3) Value(16) ++Enum(arm_fpu) String(neon-fp-armv8) Value(16) + ++EnumValue ++Enum(arm_fpu) String(crypto-neon-fp-armv8) Value(17) ++ ++EnumValue ++Enum(arm_fpu) String(vfp3) Value(18) ++ +--- a/src/gcc/config/arm/thumb2.md ++++ b/src/gcc/config/arm/thumb2.md +@@ -267,6 +267,17 @@ + (set_attr "type" "multiple")] + ) + ++;; Pop a single register as its size is preferred over a post-incremental load ++(define_insn "*thumb2_pop_single" ++ [(set (match_operand:SI 0 "low_register_operand" "=r") ++ (mem:SI (post_inc:SI (reg:SI SP_REGNUM))))] ++ "TARGET_THUMB2 && (reload_in_progress || reload_completed)" ++ "pop\t{%0}" ++ [(set_attr "type" "load1") ++ (set_attr "length" "2") ++ (set_attr "predicable" "yes")] ++) ++ + ;; We have two alternatives here for memory loads (and similarly for stores) + ;; to reflect the fact that the permissible constant pool ranges differ + ;; between ldr instructions taking low regs and ldr instructions taking high +@@ -329,7 +340,7 @@ + movw%?\\t%0, %L1\\t%@ movhi + str%(h%)\\t%1, %0\\t%@ movhi + ldr%(h%)\\t%0, %1\\t%@ movhi" +- [(set_attr "type" "mov_reg,mov_imm,mov_imm,mov_reg,store1,load1") ++ [(set_attr "type" "mov_reg,mov_imm,mov_imm,mov_imm,store1,load1") + (set_attr "predicable" "yes") + (set_attr "predicable_short_it" "yes,no,yes,no,no,no") + (set_attr "length" "2,4,2,4,4,4") +@@ -1370,6 +1381,103 @@ + (set_attr "type" "alu_reg")] + ) + ++; Constants for op 2 will never be given to these patterns. ++(define_insn_and_split "*iordi_notdi_di" ++ [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") ++ (ior:DI (not:DI (match_operand:DI 1 "s_register_operand" "0,r")) ++ (match_operand:DI 2 "s_register_operand" "r,0")))] ++ "TARGET_THUMB2" ++ "#" ++ "TARGET_THUMB2 && reload_completed" ++ [(set (match_dup 0) (ior:SI (not:SI (match_dup 1)) (match_dup 2))) ++ (set (match_dup 3) (ior:SI (not:SI (match_dup 4)) (match_dup 5)))] ++ " ++ { ++ operands[3] = gen_highpart (SImode, operands[0]); ++ operands[0] = gen_lowpart (SImode, operands[0]); ++ operands[4] = gen_highpart (SImode, operands[1]); ++ operands[1] = gen_lowpart (SImode, operands[1]); ++ operands[5] = gen_highpart (SImode, operands[2]); ++ operands[2] = gen_lowpart (SImode, operands[2]); ++ }" ++ [(set_attr "length" "8") ++ (set_attr "predicable" "yes") ++ (set_attr "predicable_short_it" "no") ++ (set_attr "type" "multiple")] ++) ++ ++(define_insn_and_split "*iordi_notzesidi_di" ++ [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") ++ (ior:DI (not:DI (zero_extend:DI ++ (match_operand:SI 2 "s_register_operand" "r,r"))) ++ (match_operand:DI 1 "s_register_operand" "0,?r")))] ++ "TARGET_THUMB2" ++ "#" ++ ; (not (zero_extend...)) means operand0 will always be 0xffffffff ++ "TARGET_THUMB2 && reload_completed" ++ [(set (match_dup 0) (ior:SI (not:SI (match_dup 2)) (match_dup 1))) ++ (set (match_dup 3) (const_int -1))] ++ " ++ { ++ operands[3] = gen_highpart (SImode, operands[0]); ++ operands[0] = gen_lowpart (SImode, operands[0]); ++ operands[1] = gen_lowpart (SImode, operands[1]); ++ }" ++ [(set_attr "length" "4,8") ++ (set_attr "predicable" "yes") ++ (set_attr "predicable_short_it" "no") ++ (set_attr "type" "multiple")] ++) ++ ++(define_insn_and_split "*iordi_notdi_zesidi" ++ [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") ++ (ior:DI (not:DI (match_operand:DI 2 "s_register_operand" "0,?r")) ++ (zero_extend:DI ++ (match_operand:SI 1 "s_register_operand" "r,r"))))] ++ "TARGET_THUMB2" ++ "#" ++ "TARGET_THUMB2 && reload_completed" ++ [(set (match_dup 0) (ior:SI (not:SI (match_dup 2)) (match_dup 1))) ++ (set (match_dup 3) (not:SI (match_dup 4)))] ++ " ++ { ++ operands[3] = gen_highpart (SImode, operands[0]); ++ operands[0] = gen_lowpart (SImode, operands[0]); ++ operands[1] = gen_lowpart (SImode, operands[1]); ++ operands[4] = gen_highpart (SImode, operands[2]); ++ operands[2] = gen_lowpart (SImode, operands[2]); ++ }" ++ [(set_attr "length" "8") ++ (set_attr "predicable" "yes") ++ (set_attr "predicable_short_it" "no") ++ (set_attr "type" "multiple")] ++) ++ ++(define_insn_and_split "*iordi_notsesidi_di" ++ [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") ++ (ior:DI (not:DI (sign_extend:DI ++ (match_operand:SI 2 "s_register_operand" "r,r"))) ++ (match_operand:DI 1 "s_register_operand" "0,r")))] ++ "TARGET_THUMB2" ++ "#" ++ "TARGET_THUMB2 && reload_completed" ++ [(set (match_dup 0) (ior:SI (not:SI (match_dup 2)) (match_dup 1))) ++ (set (match_dup 3) (ior:SI (not:SI ++ (ashiftrt:SI (match_dup 2) (const_int 31))) ++ (match_dup 4)))] ++ " ++ { ++ operands[3] = gen_highpart (SImode, operands[0]); ++ operands[0] = gen_lowpart (SImode, operands[0]); ++ operands[4] = gen_highpart (SImode, operands[1]); ++ operands[1] = gen_lowpart (SImode, operands[1]); ++ }" ++ [(set_attr "length" "8") ++ (set_attr "predicable" "yes") ++ (set_attr "predicable_short_it" "no") ++ (set_attr "type" "multiple")] ++) ++ + (define_insn "*orsi_notsi_si" + [(set (match_operand:SI 0 "s_register_operand" "=r") + (ior:SI (not:SI (match_operand:SI 2 "s_register_operand" "r")) +--- a/src/gcc/config/arm/arm.c ++++ b/src/gcc/config/arm/arm.c +@@ -50,6 +50,7 @@ + #include "except.h" + #include "tm_p.h" + #include "target.h" ++#include "sched-int.h" + #include "target-def.h" + #include "debug.h" + #include "langhooks.h" +@@ -59,6 +60,8 @@ + #include "params.h" + #include "opts.h" + #include "dumpfile.h" ++#include "gimple-expr.h" ++#include "sched-int.h" + + /* Forward definitions of types. */ + typedef struct minipool_node Mnode; +@@ -93,6 +96,7 @@ + static bool thumb_force_lr_save (void); + static unsigned arm_size_return_regs (void); + static bool arm_assemble_integer (rtx, unsigned int, int); ++static void arm_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update); + static void arm_print_operand (FILE *, rtx, int); + static void arm_print_operand_address (FILE *, rtx); + static bool arm_print_operand_punct_valid_p (unsigned char code); +@@ -234,8 +238,11 @@ + static tree arm_gimplify_va_arg_expr (tree, tree, gimple_seq *, gimple_seq *); + static void arm_option_override (void); + static unsigned HOST_WIDE_INT arm_shift_truncation_mask (enum machine_mode); ++static bool arm_macro_fusion_p (void); + static bool arm_cannot_copy_insn_p (rtx); + static int arm_issue_rate (void); ++static int arm_first_cycle_multipass_dfa_lookahead (void); ++static int arm_first_cycle_multipass_dfa_lookahead_guard (rtx, int); + static void arm_output_dwarf_dtprel (FILE *, int, rtx) ATTRIBUTE_UNUSED; + static bool arm_output_addr_const_extra (FILE *, rtx); + static bool arm_allocate_stack_slots_for_args (void); +@@ -274,6 +281,8 @@ + static bool arm_vectorize_vec_perm_const_ok (enum machine_mode vmode, + const unsigned char *sel); + ++static bool aarch_macro_fusion_pair_p (rtx, rtx); ++ + static int arm_builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost, + tree vectype, + int misalign ATTRIBUTE_UNUSED); +@@ -379,6 +388,12 @@ + #undef TARGET_COMP_TYPE_ATTRIBUTES + #define TARGET_COMP_TYPE_ATTRIBUTES arm_comp_type_attributes + ++#undef TARGET_SCHED_MACRO_FUSION_P ++#define TARGET_SCHED_MACRO_FUSION_P arm_macro_fusion_p ++ ++#undef TARGET_SCHED_MACRO_FUSION_PAIR_P ++#define TARGET_SCHED_MACRO_FUSION_PAIR_P aarch_macro_fusion_pair_p ++ + #undef TARGET_SET_DEFAULT_TYPE_ATTRIBUTES + #define TARGET_SET_DEFAULT_TYPE_ATTRIBUTES arm_set_default_type_attributes + +@@ -581,9 +596,20 @@ + #undef TARGET_SCHED_ISSUE_RATE + #define TARGET_SCHED_ISSUE_RATE arm_issue_rate + ++#undef TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD ++#define TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD \ ++ arm_first_cycle_multipass_dfa_lookahead ++ ++#undef TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD ++#define TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD \ ++ arm_first_cycle_multipass_dfa_lookahead_guard ++ + #undef TARGET_MANGLE_TYPE + #define TARGET_MANGLE_TYPE arm_mangle_type + ++#undef TARGET_ATOMIC_ASSIGN_EXPAND_FENV ++#define TARGET_ATOMIC_ASSIGN_EXPAND_FENV arm_atomic_assign_expand_fenv ++ + #undef TARGET_BUILD_BUILTIN_VA_LIST + #define TARGET_BUILD_BUILTIN_VA_LIST arm_build_builtin_va_list + #undef TARGET_EXPAND_BUILTIN_VA_START +@@ -740,6 +766,8 @@ + #define FL_ARCH8 (1 << 24) /* Architecture 8. */ + #define FL_CRC32 (1 << 25) /* ARMv8 CRC32 instructions. */ + ++#define FL_SMALLMUL (1 << 26) /* Small multiply supported. */ ++ + #define FL_IWMMXT (1 << 29) /* XScale v2 or "Intel Wireless MMX technology". */ + #define FL_IWMMXT2 (1 << 30) /* "Intel Wireless MMX2 technology". */ + +@@ -907,6 +935,9 @@ + /* Nonzero if chip supports the ARMv8 CRC instructions. */ + int arm_arch_crc = 0; + ++/* Nonzero if the core has a very small, high-latency, multiply unit. */ ++int arm_m_profile_small_mul = 0; ++ + /* The condition codes of the ARM, and the inverse function. */ + static const char * const arm_condition_codes[] = + { +@@ -985,6 +1016,7 @@ + COSTS_N_INSNS (1), /* bfi. */ + COSTS_N_INSNS (1), /* bfx. */ + 0, /* clz. */ ++ 0, /* rev. */ + 0, /* non_exec. */ + true /* non_exec_costs_exec. */ + }, +@@ -1068,7 +1100,210 @@ + } + }; + ++const struct cpu_cost_table cortexa8_extra_costs = ++{ ++ /* ALU */ ++ { ++ 0, /* arith. */ ++ 0, /* logical. */ ++ COSTS_N_INSNS (1), /* shift. */ ++ 0, /* shift_reg. */ ++ COSTS_N_INSNS (1), /* arith_shift. */ ++ 0, /* arith_shift_reg. */ ++ COSTS_N_INSNS (1), /* log_shift. */ ++ 0, /* log_shift_reg. */ ++ 0, /* extend. */ ++ 0, /* extend_arith. */ ++ 0, /* bfi. */ ++ 0, /* bfx. */ ++ 0, /* clz. */ ++ 0, /* rev. */ ++ 0, /* non_exec. */ ++ true /* non_exec_costs_exec. */ ++ }, ++ { ++ /* MULT SImode */ ++ { ++ COSTS_N_INSNS (1), /* simple. */ ++ COSTS_N_INSNS (1), /* flag_setting. */ ++ COSTS_N_INSNS (1), /* extend. */ ++ COSTS_N_INSNS (1), /* add. */ ++ COSTS_N_INSNS (1), /* extend_add. */ ++ COSTS_N_INSNS (30) /* idiv. No HW div on Cortex A8. */ ++ }, ++ /* MULT DImode */ ++ { ++ 0, /* simple (N/A). */ ++ 0, /* flag_setting (N/A). */ ++ COSTS_N_INSNS (2), /* extend. */ ++ 0, /* add (N/A). */ ++ COSTS_N_INSNS (2), /* extend_add. */ ++ 0 /* idiv (N/A). */ ++ } ++ }, ++ /* LD/ST */ ++ { ++ COSTS_N_INSNS (1), /* load. */ ++ COSTS_N_INSNS (1), /* load_sign_extend. */ ++ COSTS_N_INSNS (1), /* ldrd. */ ++ COSTS_N_INSNS (1), /* ldm_1st. */ ++ 1, /* ldm_regs_per_insn_1st. */ ++ 2, /* ldm_regs_per_insn_subsequent. */ ++ COSTS_N_INSNS (1), /* loadf. */ ++ COSTS_N_INSNS (1), /* loadd. */ ++ COSTS_N_INSNS (1), /* load_unaligned. */ ++ COSTS_N_INSNS (1), /* store. */ ++ COSTS_N_INSNS (1), /* strd. */ ++ COSTS_N_INSNS (1), /* stm_1st. */ ++ 1, /* stm_regs_per_insn_1st. */ ++ 2, /* stm_regs_per_insn_subsequent. */ ++ COSTS_N_INSNS (1), /* storef. */ ++ COSTS_N_INSNS (1), /* stored. */ ++ COSTS_N_INSNS (1) /* store_unaligned. */ ++ }, ++ { ++ /* FP SFmode */ ++ { ++ COSTS_N_INSNS (36), /* div. */ ++ COSTS_N_INSNS (11), /* mult. */ ++ COSTS_N_INSNS (20), /* mult_addsub. */ ++ COSTS_N_INSNS (30), /* fma. */ ++ COSTS_N_INSNS (9), /* addsub. */ ++ COSTS_N_INSNS (3), /* fpconst. */ ++ COSTS_N_INSNS (3), /* neg. */ ++ COSTS_N_INSNS (6), /* compare. */ ++ COSTS_N_INSNS (4), /* widen. */ ++ COSTS_N_INSNS (4), /* narrow. */ ++ COSTS_N_INSNS (8), /* toint. */ ++ COSTS_N_INSNS (8), /* fromint. */ ++ COSTS_N_INSNS (8) /* roundint. */ ++ }, ++ /* FP DFmode */ ++ { ++ COSTS_N_INSNS (64), /* div. */ ++ COSTS_N_INSNS (16), /* mult. */ ++ COSTS_N_INSNS (25), /* mult_addsub. */ ++ COSTS_N_INSNS (30), /* fma. */ ++ COSTS_N_INSNS (9), /* addsub. */ ++ COSTS_N_INSNS (3), /* fpconst. */ ++ COSTS_N_INSNS (3), /* neg. */ ++ COSTS_N_INSNS (6), /* compare. */ ++ COSTS_N_INSNS (6), /* widen. */ ++ COSTS_N_INSNS (6), /* narrow. */ ++ COSTS_N_INSNS (8), /* toint. */ ++ COSTS_N_INSNS (8), /* fromint. */ ++ COSTS_N_INSNS (8) /* roundint. */ ++ } ++ }, ++ /* Vector */ ++ { ++ COSTS_N_INSNS (1) /* alu. */ ++ } ++}; + ++const struct cpu_cost_table cortexa5_extra_costs = ++{ ++ /* ALU */ ++ { ++ 0, /* arith. */ ++ 0, /* logical. */ ++ COSTS_N_INSNS (1), /* shift. */ ++ COSTS_N_INSNS (1), /* shift_reg. */ ++ COSTS_N_INSNS (1), /* arith_shift. */ ++ COSTS_N_INSNS (1), /* arith_shift_reg. */ ++ COSTS_N_INSNS (1), /* log_shift. */ ++ COSTS_N_INSNS (1), /* log_shift_reg. */ ++ COSTS_N_INSNS (1), /* extend. */ ++ COSTS_N_INSNS (1), /* extend_arith. */ ++ COSTS_N_INSNS (1), /* bfi. */ ++ COSTS_N_INSNS (1), /* bfx. */ ++ COSTS_N_INSNS (1), /* clz. */ ++ COSTS_N_INSNS (1), /* rev. */ ++ 0, /* non_exec. */ ++ true /* non_exec_costs_exec. */ ++ }, ++ ++ { ++ /* MULT SImode */ ++ { ++ 0, /* simple. */ ++ COSTS_N_INSNS (1), /* flag_setting. */ ++ COSTS_N_INSNS (1), /* extend. */ ++ COSTS_N_INSNS (1), /* add. */ ++ COSTS_N_INSNS (1), /* extend_add. */ ++ COSTS_N_INSNS (7) /* idiv. */ ++ }, ++ /* MULT DImode */ ++ { ++ 0, /* simple (N/A). */ ++ 0, /* flag_setting (N/A). */ ++ COSTS_N_INSNS (1), /* extend. */ ++ 0, /* add. */ ++ COSTS_N_INSNS (2), /* extend_add. */ ++ 0 /* idiv (N/A). */ ++ } ++ }, ++ /* LD/ST */ ++ { ++ COSTS_N_INSNS (1), /* load. */ ++ COSTS_N_INSNS (1), /* load_sign_extend. */ ++ COSTS_N_INSNS (6), /* ldrd. */ ++ COSTS_N_INSNS (1), /* ldm_1st. */ ++ 1, /* ldm_regs_per_insn_1st. */ ++ 2, /* ldm_regs_per_insn_subsequent. */ ++ COSTS_N_INSNS (2), /* loadf. */ ++ COSTS_N_INSNS (4), /* loadd. */ ++ COSTS_N_INSNS (1), /* load_unaligned. */ ++ COSTS_N_INSNS (1), /* store. */ ++ COSTS_N_INSNS (3), /* strd. */ ++ COSTS_N_INSNS (1), /* stm_1st. */ ++ 1, /* stm_regs_per_insn_1st. */ ++ 2, /* stm_regs_per_insn_subsequent. */ ++ COSTS_N_INSNS (2), /* storef. */ ++ COSTS_N_INSNS (2), /* stored. */ ++ COSTS_N_INSNS (1) /* store_unaligned. */ ++ }, ++ { ++ /* FP SFmode */ ++ { ++ COSTS_N_INSNS (15), /* div. */ ++ COSTS_N_INSNS (3), /* mult. */ ++ COSTS_N_INSNS (7), /* mult_addsub. */ ++ COSTS_N_INSNS (7), /* fma. */ ++ COSTS_N_INSNS (3), /* addsub. */ ++ COSTS_N_INSNS (3), /* fpconst. */ ++ COSTS_N_INSNS (3), /* neg. */ ++ COSTS_N_INSNS (3), /* compare. */ ++ COSTS_N_INSNS (3), /* widen. */ ++ COSTS_N_INSNS (3), /* narrow. */ ++ COSTS_N_INSNS (3), /* toint. */ ++ COSTS_N_INSNS (3), /* fromint. */ ++ COSTS_N_INSNS (3) /* roundint. */ ++ }, ++ /* FP DFmode */ ++ { ++ COSTS_N_INSNS (30), /* div. */ ++ COSTS_N_INSNS (6), /* mult. */ ++ COSTS_N_INSNS (10), /* mult_addsub. */ ++ COSTS_N_INSNS (7), /* fma. */ ++ COSTS_N_INSNS (3), /* addsub. */ ++ COSTS_N_INSNS (3), /* fpconst. */ ++ COSTS_N_INSNS (3), /* neg. */ ++ COSTS_N_INSNS (3), /* compare. */ ++ COSTS_N_INSNS (3), /* widen. */ ++ COSTS_N_INSNS (3), /* narrow. */ ++ COSTS_N_INSNS (3), /* toint. */ ++ COSTS_N_INSNS (3), /* fromint. */ ++ COSTS_N_INSNS (3) /* roundint. */ ++ } ++ }, ++ /* Vector */ ++ { ++ COSTS_N_INSNS (1) /* alu. */ ++ } ++}; ++ ++ + const struct cpu_cost_table cortexa7_extra_costs = + { + /* ALU */ +@@ -1086,6 +1321,7 @@ + COSTS_N_INSNS (1), /* bfi. */ + COSTS_N_INSNS (1), /* bfx. */ + COSTS_N_INSNS (1), /* clz. */ ++ COSTS_N_INSNS (1), /* rev. */ + 0, /* non_exec. */ + true /* non_exec_costs_exec. */ + }, +@@ -1187,6 +1423,7 @@ + 0, /* bfi. */ + COSTS_N_INSNS (1), /* bfx. */ + COSTS_N_INSNS (1), /* clz. */ ++ COSTS_N_INSNS (1), /* rev. */ + 0, /* non_exec. */ + true /* non_exec_costs_exec. */ + }, +@@ -1287,6 +1524,7 @@ + COSTS_N_INSNS (1), /* bfi. */ + 0, /* bfx. */ + 0, /* clz. */ ++ 0, /* rev. */ + 0, /* non_exec. */ + true /* non_exec_costs_exec. */ + }, +@@ -1387,6 +1625,7 @@ + 0, /* bfi. */ + 0, /* bfx. */ + 0, /* clz. */ ++ 0, /* rev. */ + COSTS_N_INSNS (1), /* non_exec. */ + false /* non_exec_costs_exec. */ + }, +@@ -1470,6 +1709,9 @@ + } + }; + ++#define ARM_FUSE_NOTHING (0) ++#define ARM_FUSE_MOVW_MOVT (1 << 0) ++ + const struct tune_params arm_slowmul_tune = + { + arm_slowmul_rtx_costs, +@@ -1483,7 +1725,10 @@ + false, /* Prefer LDRD/STRD. */ + {true, true}, /* Prefer non short circuit. */ + &arm_default_vec_cost, /* Vectorizer costs. */ +- false /* Prefer Neon for 64-bits bitops. */ ++ false, /* Prefer Neon for 64-bits bitops. */ ++ false, false, /* Prefer 32-bit encodings. */ ++ ARM_SCHED_AUTOPREF_OFF, /* Sched L2 autopref. */ ++ ARM_FUSE_NOTHING /* Fuseable pairs of instructions. */ + }; + + const struct tune_params arm_fastmul_tune = +@@ -1499,7 +1744,10 @@ + false, /* Prefer LDRD/STRD. */ + {true, true}, /* Prefer non short circuit. */ + &arm_default_vec_cost, /* Vectorizer costs. */ +- false /* Prefer Neon for 64-bits bitops. */ ++ false, /* Prefer Neon for 64-bits bitops. */ ++ false, false, /* Prefer 32-bit encodings. */ ++ ARM_SCHED_AUTOPREF_OFF, /* Sched L2 autopref. */ ++ ARM_FUSE_NOTHING /* Fuseable pairs of instructions. */ + }; + + /* StrongARM has early execution of branches, so a sequence that is worth +@@ -1518,7 +1766,10 @@ + false, /* Prefer LDRD/STRD. */ + {true, true}, /* Prefer non short circuit. */ + &arm_default_vec_cost, /* Vectorizer costs. */ +- false /* Prefer Neon for 64-bits bitops. */ ++ false, /* Prefer Neon for 64-bits bitops. */ ++ false, false, /* Prefer 32-bit encodings. */ ++ ARM_SCHED_AUTOPREF_OFF, /* Sched L2 autopref. */ ++ ARM_FUSE_NOTHING /* Fuseable pairs of instructions. */ + }; + + const struct tune_params arm_xscale_tune = +@@ -1534,7 +1785,10 @@ + false, /* Prefer LDRD/STRD. */ + {true, true}, /* Prefer non short circuit. */ + &arm_default_vec_cost, /* Vectorizer costs. */ +- false /* Prefer Neon for 64-bits bitops. */ ++ false, /* Prefer Neon for 64-bits bitops. */ ++ false, false, /* Prefer 32-bit encodings. */ ++ ARM_SCHED_AUTOPREF_OFF, /* Sched L2 autopref. */ ++ ARM_FUSE_NOTHING /* Fuseable pairs of instructions. */ + }; + + const struct tune_params arm_9e_tune = +@@ -1550,7 +1804,10 @@ + false, /* Prefer LDRD/STRD. */ + {true, true}, /* Prefer non short circuit. */ + &arm_default_vec_cost, /* Vectorizer costs. */ +- false /* Prefer Neon for 64-bits bitops. */ ++ false, /* Prefer Neon for 64-bits bitops. */ ++ false, false, /* Prefer 32-bit encodings. */ ++ ARM_SCHED_AUTOPREF_OFF, /* Sched L2 autopref. */ ++ ARM_FUSE_NOTHING /* Fuseable pairs of instructions. */ + }; + + const struct tune_params arm_v6t2_tune = +@@ -1566,7 +1823,10 @@ + false, /* Prefer LDRD/STRD. */ + {true, true}, /* Prefer non short circuit. */ + &arm_default_vec_cost, /* Vectorizer costs. */ +- false /* Prefer Neon for 64-bits bitops. */ ++ false, /* Prefer Neon for 64-bits bitops. */ ++ false, false, /* Prefer 32-bit encodings. */ ++ ARM_SCHED_AUTOPREF_OFF, /* Sched L2 autopref. */ ++ ARM_FUSE_NOTHING /* Fuseable pairs of instructions. */ + }; + + /* Generic Cortex tuning. Use more specific tunings if appropriate. */ +@@ -1583,9 +1843,31 @@ + false, /* Prefer LDRD/STRD. */ + {true, true}, /* Prefer non short circuit. */ + &arm_default_vec_cost, /* Vectorizer costs. */ +- false /* Prefer Neon for 64-bits bitops. */ ++ false, /* Prefer Neon for 64-bits bitops. */ ++ false, false, /* Prefer 32-bit encodings. */ ++ ARM_SCHED_AUTOPREF_OFF, /* Sched L2 autopref. */ ++ ARM_FUSE_NOTHING /* Fuseable pairs of instructions. */ + }; + ++const struct tune_params arm_cortex_a8_tune = ++{ ++ arm_9e_rtx_costs, ++ &cortexa8_extra_costs, ++ NULL, /* Sched adj cost. */ ++ 1, /* Constant limit. */ ++ 5, /* Max cond insns. */ ++ ARM_PREFETCH_NOT_BENEFICIAL, ++ false, /* Prefer constant pool. */ ++ arm_default_branch_cost, ++ false, /* Prefer LDRD/STRD. */ ++ {true, true}, /* Prefer non short circuit. */ ++ &arm_default_vec_cost, /* Vectorizer costs. */ ++ false, /* Prefer Neon for 64-bits bitops. */ ++ false, false, /* Prefer 32-bit encodings. */ ++ ARM_SCHED_AUTOPREF_OFF, /* Sched L2 autopref. */ ++ ARM_FUSE_NOTHING /* Fuseable pairs of instructions. */ ++}; ++ + const struct tune_params arm_cortex_a7_tune = + { + arm_9e_rtx_costs, +@@ -1599,7 +1881,10 @@ + false, /* Prefer LDRD/STRD. */ + {true, true}, /* Prefer non short circuit. */ + &arm_default_vec_cost, /* Vectorizer costs. */ +- false /* Prefer Neon for 64-bits bitops. */ ++ false, /* Prefer Neon for 64-bits bitops. */ ++ false, false, /* Prefer 32-bit encodings. */ ++ ARM_SCHED_AUTOPREF_OFF, /* Sched L2 autopref. */ ++ ARM_FUSE_NOTHING /* Fuseable pairs of instructions. */ + }; + + const struct tune_params arm_cortex_a15_tune = +@@ -1615,7 +1900,10 @@ + true, /* Prefer LDRD/STRD. */ + {true, true}, /* Prefer non short circuit. */ + &arm_default_vec_cost, /* Vectorizer costs. */ +- false /* Prefer Neon for 64-bits bitops. */ ++ false, /* Prefer Neon for 64-bits bitops. */ ++ true, true, /* Prefer 32-bit encodings. */ ++ ARM_SCHED_AUTOPREF_FULL, /* Sched L2 autopref. */ ++ ARM_FUSE_NOTHING /* Fuseable pairs of instructions. */ + }; + + const struct tune_params arm_cortex_a53_tune = +@@ -1631,7 +1919,10 @@ + false, /* Prefer LDRD/STRD. */ + {true, true}, /* Prefer non short circuit. */ + &arm_default_vec_cost, /* Vectorizer costs. */ +- false /* Prefer Neon for 64-bits bitops. */ ++ false, /* Prefer Neon for 64-bits bitops. */ ++ false, false, /* Prefer 32-bit encodings. */ ++ ARM_SCHED_AUTOPREF_OFF, /* Sched L2 autopref. */ ++ ARM_FUSE_MOVW_MOVT /* Fuseable pairs of instructions. */ + }; + + const struct tune_params arm_cortex_a57_tune = +@@ -1647,9 +1938,31 @@ + true, /* Prefer LDRD/STRD. */ + {true, true}, /* Prefer non short circuit. */ + &arm_default_vec_cost, /* Vectorizer costs. */ +- false /* Prefer Neon for 64-bits bitops. */ ++ false, /* Prefer Neon for 64-bits bitops. */ ++ true, true, /* Prefer 32-bit encodings. */ ++ ARM_SCHED_AUTOPREF_FULL, /* Sched L2 autopref. */ ++ ARM_FUSE_MOVW_MOVT /* Fuseable pairs of instructions. */ + }; + ++const struct tune_params arm_xgene1_tune = ++{ ++ arm_9e_rtx_costs, ++ &xgene1_extra_costs, ++ NULL, /* Scheduler cost adjustment. */ ++ 1, /* Constant limit. */ ++ 2, /* Max cond insns. */ ++ ARM_PREFETCH_NOT_BENEFICIAL, ++ false, /* Prefer constant pool. */ ++ arm_default_branch_cost, ++ true, /* Prefer LDRD/STRD. */ ++ {true, true}, /* Prefer non short circuit. */ ++ &arm_default_vec_cost, /* Vectorizer costs. */ ++ false, /* Prefer Neon for 64-bits bitops. */ ++ true, true, /* Prefer 32-bit encodings. */ ++ ARM_SCHED_AUTOPREF_OFF, /* Sched L2 autopref. */ ++ ARM_FUSE_NOTHING /* Fuseable pairs of instructions. */ ++}; ++ + /* Branches can be dual-issued on Cortex-A5, so conditional execution is + less appealing. Set max_insns_skipped to a low value. */ + +@@ -1656,7 +1969,7 @@ + const struct tune_params arm_cortex_a5_tune = + { + arm_9e_rtx_costs, +- NULL, ++ &cortexa5_extra_costs, + NULL, /* Sched adj cost. */ + 1, /* Constant limit. */ + 1, /* Max cond insns. */ +@@ -1666,7 +1979,10 @@ + false, /* Prefer LDRD/STRD. */ + {false, false}, /* Prefer non short circuit. */ + &arm_default_vec_cost, /* Vectorizer costs. */ +- false /* Prefer Neon for 64-bits bitops. */ ++ false, /* Prefer Neon for 64-bits bitops. */ ++ false, false, /* Prefer 32-bit encodings. */ ++ ARM_SCHED_AUTOPREF_OFF, /* Sched L2 autopref. */ ++ ARM_FUSE_NOTHING /* Fuseable pairs of instructions. */ + }; + + const struct tune_params arm_cortex_a9_tune = +@@ -1682,7 +1998,10 @@ + false, /* Prefer LDRD/STRD. */ + {true, true}, /* Prefer non short circuit. */ + &arm_default_vec_cost, /* Vectorizer costs. */ +- false /* Prefer Neon for 64-bits bitops. */ ++ false, /* Prefer Neon for 64-bits bitops. */ ++ false, false, /* Prefer 32-bit encodings. */ ++ ARM_SCHED_AUTOPREF_OFF, /* Sched L2 autopref. */ ++ ARM_FUSE_NOTHING /* Fuseable pairs of instructions. */ + }; + + const struct tune_params arm_cortex_a12_tune = +@@ -1689,16 +2008,19 @@ + { + arm_9e_rtx_costs, + &cortexa12_extra_costs, +- NULL, ++ NULL, /* Sched adj cost. */ + 1, /* Constant limit. */ +- 5, /* Max cond insns. */ +- ARM_PREFETCH_BENEFICIAL(4,32,32), ++ 2, /* Max cond insns. */ ++ ARM_PREFETCH_NOT_BENEFICIAL, + false, /* Prefer constant pool. */ + arm_default_branch_cost, + true, /* Prefer LDRD/STRD. */ + {true, true}, /* Prefer non short circuit. */ + &arm_default_vec_cost, /* Vectorizer costs. */ +- false /* Prefer Neon for 64-bits bitops. */ ++ false, /* Prefer Neon for 64-bits bitops. */ ++ true, true, /* Prefer 32-bit encodings. */ ++ ARM_SCHED_AUTOPREF_OFF, /* Sched L2 autopref. */ ++ ARM_FUSE_MOVW_MOVT /* Fuseable pairs of instructions. */ + }; + + /* armv7m tuning. On Cortex-M4 cores for example, MOVW/MOVT take a single +@@ -1721,9 +2043,33 @@ + false, /* Prefer LDRD/STRD. */ + {false, false}, /* Prefer non short circuit. */ + &arm_default_vec_cost, /* Vectorizer costs. */ +- false /* Prefer Neon for 64-bits bitops. */ ++ false, /* Prefer Neon for 64-bits bitops. */ ++ false, false, /* Prefer 32-bit encodings. */ ++ ARM_SCHED_AUTOPREF_OFF, /* Sched L2 autopref. */ ++ ARM_FUSE_NOTHING /* Fuseable pairs of instructions. */ + }; + ++/* Cortex-M7 tuning. */ ++ ++const struct tune_params arm_cortex_m7_tune = ++{ ++ arm_9e_rtx_costs, ++ &v7m_extra_costs, ++ NULL, /* Sched adj cost. */ ++ 0, /* Constant limit. */ ++ 0, /* Max cond insns. */ ++ ARM_PREFETCH_NOT_BENEFICIAL, ++ true, /* Prefer constant pool. */ ++ arm_cortex_m_branch_cost, ++ false, /* Prefer LDRD/STRD. */ ++ {true, true}, /* Prefer non short circuit. */ ++ &arm_default_vec_cost, /* Vectorizer costs. */ ++ false, /* Prefer Neon for 64-bits bitops. */ ++ false, false, /* Prefer 32-bit encodings. */ ++ ARM_SCHED_AUTOPREF_OFF, /* Sched L2 autopref. */ ++ ARM_FUSE_NOTHING /* Fuseable pairs of instructions. */ ++}; ++ + /* The arm_v6m_tune is duplicated from arm_cortex_tune, rather than + arm_v6t2_tune. It is used for cortex-m0, cortex-m1 and cortex-m0plus. */ + const struct tune_params arm_v6m_tune = +@@ -1739,7 +2085,10 @@ + false, /* Prefer LDRD/STRD. */ + {false, false}, /* Prefer non short circuit. */ + &arm_default_vec_cost, /* Vectorizer costs. */ +- false /* Prefer Neon for 64-bits bitops. */ ++ false, /* Prefer Neon for 64-bits bitops. */ ++ false, false, /* Prefer 32-bit encodings. */ ++ ARM_SCHED_AUTOPREF_OFF, /* Sched L2 autopref. */ ++ ARM_FUSE_NOTHING /* Fuseable pairs of instructions. */ + }; + + const struct tune_params arm_fa726te_tune = +@@ -1755,7 +2104,10 @@ + false, /* Prefer LDRD/STRD. */ + {true, true}, /* Prefer non short circuit. */ + &arm_default_vec_cost, /* Vectorizer costs. */ +- false /* Prefer Neon for 64-bits bitops. */ ++ false, /* Prefer Neon for 64-bits bitops. */ ++ false, false, /* Prefer 32-bit encodings. */ ++ ARM_SCHED_AUTOPREF_OFF, /* Sched L2 autopref. */ ++ ARM_FUSE_NOTHING /* Fuseable pairs of instructions. */ + }; + + +@@ -2503,6 +2855,7 @@ + arm_arch_arm_hwdiv = (insn_flags & FL_ARM_DIV) != 0; + arm_tune_cortex_a9 = (arm_tune == cortexa9) != 0; + arm_arch_crc = (insn_flags & FL_CRC32) != 0; ++ arm_m_profile_small_mul = (insn_flags & FL_SMALLMUL) != 0; + if (arm_restrict_it == 2) + arm_restrict_it = arm_arch8 && TARGET_THUMB2; + +@@ -2806,10 +3159,26 @@ + prefer_neon_for_64bits = true; + + /* Use the alternative scheduling-pressure algorithm by default. */ +- maybe_set_param_value (PARAM_SCHED_PRESSURE_ALGORITHM, 2, ++ maybe_set_param_value (PARAM_SCHED_PRESSURE_ALGORITHM, SCHED_PRESSURE_MODEL, + global_options.x_param_values, + global_options_set.x_param_values); + ++ /* Look through ready list and all of queue for instructions ++ relevant for L2 auto-prefetcher. */ ++ int param_sched_autopref_queue_depth; ++ if (current_tune->sched_autopref == ARM_SCHED_AUTOPREF_OFF) ++ param_sched_autopref_queue_depth = -1; ++ else if (current_tune->sched_autopref == ARM_SCHED_AUTOPREF_RANK) ++ param_sched_autopref_queue_depth = 0; ++ else if (current_tune->sched_autopref == ARM_SCHED_AUTOPREF_FULL) ++ param_sched_autopref_queue_depth = max_insn_queue_index + 1; ++ else ++ gcc_unreachable (); ++ maybe_set_param_value (PARAM_SCHED_AUTOPREF_QUEUE_DEPTH, ++ param_sched_autopref_queue_depth, ++ global_options.x_param_values, ++ global_options_set.x_param_values); ++ + /* Disable shrink-wrap when optimizing function for size, since it tends to + generate additional returns. */ + if (optimize_function_for_size_p (cfun) && TARGET_THUMB2) +@@ -6079,11 +6448,6 @@ + if (TARGET_VXWORKS_RTP && flag_pic && !targetm.binds_local_p (decl)) + return false; + +- /* Cannot tail-call to long calls, since these are out of range of +- a branch instruction. */ +- if (decl && arm_is_long_call_p (decl)) +- return false; +- + /* If we are interworking and the function is not declared static + then we can't tail-call it unless we know that it exists in this + compilation unit (since it might be a Thumb routine). */ +@@ -8637,7 +9001,13 @@ + /* Thumb1 mul instruction can't operate on const. We must Load it + into a register first. */ + int const_size = thumb1_size_rtx_costs (XEXP (x, 1), CONST_INT, SET); +- return COSTS_N_INSNS (1) + const_size; ++ /* For the targets which have a very small and high-latency multiply ++ unit, we prefer to synthesize the mult with up to 5 instructions, ++ giving a good balance between size and performance. */ ++ if (arm_arch6m && arm_m_profile_small_mul) ++ return COSTS_N_INSNS (5); ++ else ++ return COSTS_N_INSNS (1) + const_size; + } + return COSTS_N_INSNS (1); + +@@ -9337,6 +9707,47 @@ + *cost = LIBCALL_COST (2); + return false; + ++ case BSWAP: ++ if (arm_arch6) ++ { ++ if (mode == SImode) ++ { ++ *cost = COSTS_N_INSNS (1); ++ if (speed_p) ++ *cost += extra_cost->alu.rev; ++ ++ return false; ++ } ++ } ++ else ++ { ++ /* No rev instruction available. Look at arm_legacy_rev ++ and thumb_legacy_rev for the form of RTL used then. */ ++ if (TARGET_THUMB) ++ { ++ *cost = COSTS_N_INSNS (10); ++ ++ if (speed_p) ++ { ++ *cost += 6 * extra_cost->alu.shift; ++ *cost += 3 * extra_cost->alu.logical; ++ } ++ } ++ else ++ { ++ *cost = COSTS_N_INSNS (5); ++ ++ if (speed_p) ++ { ++ *cost += 2 * extra_cost->alu.shift; ++ *cost += extra_cost->alu.arith_shift; ++ *cost += 2 * extra_cost->alu.logical; ++ } ++ } ++ return true; ++ } ++ return false; ++ + case MINUS: + if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT + && (mode == SFmode || !TARGET_VFP_SINGLE)) +@@ -9719,8 +10130,17 @@ + /* Vector mode? */ + *cost = LIBCALL_COST (2); + return false; ++ case IOR: ++ if (mode == SImode && arm_arch6 && aarch_rev16_p (x)) ++ { ++ *cost = COSTS_N_INSNS (1); ++ if (speed_p) ++ *cost += extra_cost->alu.rev; + +- case AND: case XOR: case IOR: ++ return true; ++ } ++ /* Fall through. */ ++ case AND: case XOR: + if (mode == SImode) + { + enum rtx_code subcode = GET_CODE (XEXP (x, 0)); +@@ -10619,6 +11039,36 @@ + *cost = LIBCALL_COST (1); + return false; + ++ case FMA: ++ if (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FMA) ++ { ++ rtx op0 = XEXP (x, 0); ++ rtx op1 = XEXP (x, 1); ++ rtx op2 = XEXP (x, 2); ++ ++ *cost = COSTS_N_INSNS (1); ++ ++ /* vfms or vfnma. */ ++ if (GET_CODE (op0) == NEG) ++ op0 = XEXP (op0, 0); ++ ++ /* vfnms or vfnma. */ ++ if (GET_CODE (op2) == NEG) ++ op2 = XEXP (op2, 0); ++ ++ *cost += rtx_cost (op0, FMA, 0, speed_p); ++ *cost += rtx_cost (op1, FMA, 1, speed_p); ++ *cost += rtx_cost (op2, FMA, 2, speed_p); ++ ++ if (speed_p) ++ *cost += extra_cost->fp[mode ==DFmode].fma; ++ ++ return true; ++ } ++ ++ *cost = LIBCALL_COST (3); ++ return false; ++ + case FIX: + case UNSIGNED_FIX: + if (TARGET_HARD_FLOAT) +@@ -10669,10 +11119,16 @@ + return true; + + case ASM_OPERANDS: +- /* Just a guess. Cost one insn per input. */ +- *cost = COSTS_N_INSNS (ASM_OPERANDS_INPUT_LENGTH (x)); +- return true; ++ { ++ /* Just a guess. Guess number of instructions in the asm ++ plus one insn per input. Always a minimum of COSTS_N_INSNS (1) ++ though (see PR60663). */ ++ int asm_length = MAX (1, asm_str_count (ASM_OPERANDS_TEMPLATE (x))); ++ int num_operands = ASM_OPERANDS_INPUT_LENGTH (x); + ++ *cost = COSTS_N_INSNS (asm_length + num_operands); ++ return true; ++ } + default: + if (mode != VOIDmode) + *cost = COSTS_N_INSNS (ARM_NUM_REGS (mode)); +@@ -10969,7 +11425,11 @@ + switch (code) + { + case MULT: +- *total = COSTS_N_INSNS (3); ++ /* Small multiply: 32 cycles for an integer multiply inst. */ ++ if (arm_arch6m && arm_m_profile_small_mul) ++ *total = COSTS_N_INSNS (32); ++ else ++ *total = COSTS_N_INSNS (3); + return true; + + default: +@@ -12566,7 +13026,11 @@ + || (type == 0 && GET_CODE (ind) == PRE_DEC)) + return arm_address_register_rtx_p (XEXP (ind, 0), 0); + +- /* FIXME: vld1 allows register post-modify. */ ++ /* Allow post-increment by register for VLDn */ ++ if (type == 2 && GET_CODE (ind) == POST_MODIFY ++ && GET_CODE (XEXP (ind, 1)) == PLUS ++ && REG_P (XEXP (XEXP (ind, 1), 1))) ++ return true; + + /* Match: + (plus (reg) +@@ -16787,9 +17251,20 @@ + compute_bb_for_insn (); + df_analyze (); + ++ enum Convert_Action {SKIP, CONV, SWAP_CONV}; ++ + FOR_EACH_BB_FN (bb, cfun) + { ++ if (current_tune->disparage_flag_setting_t16_encodings ++ && optimize_bb_for_speed_p (bb)) ++ continue; ++ + rtx insn; ++ Convert_Action action = SKIP; ++ Convert_Action action_for_partial_flag_setting ++ = (current_tune->disparage_partial_flag_setting_t16_encodings ++ && optimize_bb_for_speed_p (bb)) ++ ? SKIP : CONV; + + COPY_REG_SET (&live, DF_LR_OUT (bb)); + df_simulate_initialize_backwards (bb, &live); +@@ -16799,7 +17274,7 @@ + && !REGNO_REG_SET_P (&live, CC_REGNUM) + && GET_CODE (PATTERN (insn)) == SET) + { +- enum {SKIP, CONV, SWAP_CONV} action = SKIP; ++ action = SKIP; + rtx pat = PATTERN (insn); + rtx dst = XEXP (pat, 0); + rtx src = XEXP (pat, 1); +@@ -16880,10 +17355,11 @@ + /* ANDS , */ + if (rtx_equal_p (dst, op0) + && low_register_operand (op1, SImode)) +- action = CONV; ++ action = action_for_partial_flag_setting; + else if (rtx_equal_p (dst, op1) + && low_register_operand (op0, SImode)) +- action = SWAP_CONV; ++ action = action_for_partial_flag_setting == SKIP ++ ? SKIP : SWAP_CONV; + break; + + case ASHIFTRT: +@@ -16894,7 +17370,7 @@ + /* LSLS , */ + if (rtx_equal_p (dst, op0) + && low_register_operand (op1, SImode)) +- action = CONV; ++ action = action_for_partial_flag_setting; + /* ASRS ,,# */ + /* LSRS ,,# */ + /* LSLS ,,# */ +@@ -16901,7 +17377,7 @@ + else if (low_register_operand (op0, SImode) + && CONST_INT_P (op1) + && IN_RANGE (INTVAL (op1), 0, 31)) +- action = CONV; ++ action = action_for_partial_flag_setting; + break; + + case ROTATERT: +@@ -16908,12 +17384,16 @@ + /* RORS , */ + if (rtx_equal_p (dst, op0) + && low_register_operand (op1, SImode)) +- action = CONV; ++ action = action_for_partial_flag_setting; + break; + + case NOT: ++ /* MVNS , */ ++ if (low_register_operand (op0, SImode)) ++ action = action_for_partial_flag_setting; ++ break; ++ + case NEG: +- /* MVNS , */ + /* NEGS , (a.k.a RSBS) */ + if (low_register_operand (op0, SImode)) + action = CONV; +@@ -16923,7 +17403,7 @@ + /* MOVS ,# */ + if (CONST_INT_P (src) + && IN_RANGE (INTVAL (src), 0, 255)) +- action = CONV; ++ action = action_for_partial_flag_setting; + break; + + case REG: +@@ -17144,24 +17624,7 @@ + + /* Routines to output assembly language. */ + +-/* If the rtx is the correct value then return the string of the number. +- In this way we can ensure that valid double constants are generated even +- when cross compiling. */ +-const char * +-fp_immediate_constant (rtx x) +-{ +- REAL_VALUE_TYPE r; +- +- if (!fp_consts_inited) +- init_fp_table (); +- +- REAL_VALUE_FROM_CONST_DOUBLE (r, x); +- +- gcc_assert (REAL_VALUES_EQUAL (r, value_fp0)); +- return "0"; +-} +- +-/* As for fp_immediate_constant, but value is passed directly, not in rtx. */ ++/* Return string representation of passed in real value. */ + static const char * + fp_const_from_val (REAL_VALUE_TYPE *r) + { +@@ -17252,14 +17715,22 @@ + /* Output the assembly for a store multiple. */ + + const char * +-vfp_output_fstmd (rtx * operands) ++vfp_output_vstmd (rtx * operands) + { + char pattern[100]; + int p; + int base; + int i; ++ rtx addr_reg = REG_P (XEXP (operands[0], 0)) ++ ? XEXP (operands[0], 0) ++ : XEXP (XEXP (operands[0], 0), 0); ++ bool push_p = REGNO (addr_reg) == SP_REGNUM; + +- strcpy (pattern, "fstmfdd%?\t%m0!, {%P1"); ++ if (push_p) ++ strcpy (pattern, "vpush%?.64\t{%P1"); ++ else ++ strcpy (pattern, "vstmdb%?.64\t%m0!, {%P1"); ++ + p = strlen (pattern); + + gcc_assert (REG_P (operands[1])); +@@ -17387,6 +17858,15 @@ + require_pic_register (); + use_reg (&CALL_INSN_FUNCTION_USAGE (insn), cfun->machine->pic_reg); + } ++ ++ if (TARGET_AAPCS_BASED) ++ { ++ /* For AAPCS, IP and CC can be clobbered by veneers inserted by the ++ linker. */ ++ rtx *fusage = &CALL_INSN_FUNCTION_USAGE (insn); ++ clobber_reg (fusage, gen_rtx_REG (word_mode, IP_REGNUM)); ++ clobber_reg (fusage, gen_rtx_REG (word_mode, CC_REGNUM)); ++ } + } + + /* Output a 'call' insn. */ +@@ -18066,19 +18546,19 @@ + switch (GET_CODE (addr)) + { + case PRE_DEC: +- templ = "f%smdb%c%%?\t%%0!, {%%%s1}%s"; ++ templ = "v%smdb%%?.%s\t%%0!, {%%%s1}%s"; + ops[0] = XEXP (addr, 0); + ops[1] = reg; + break; + + case POST_INC: +- templ = "f%smia%c%%?\t%%0!, {%%%s1}%s"; ++ templ = "v%smia%%?.%s\t%%0!, {%%%s1}%s"; + ops[0] = XEXP (addr, 0); + ops[1] = reg; + break; + + default: +- templ = "f%s%c%%?\t%%%s0, %%1%s"; ++ templ = "v%sr%%?.%s\t%%%s0, %%1%s"; + ops[0] = reg; + ops[1] = mem; + break; +@@ -18086,7 +18566,7 @@ + + sprintf (buff, templ, + load ? "ld" : "st", +- dp ? 'd' : 's', ++ dp ? "64" : "32", + dp ? "P" : "", + integer_p ? "\t%@ int" : ""); + output_asm_insn (buff, ops); +@@ -18774,6 +19254,7 @@ + || (save_reg_mask + && optimize_size + && ARM_FUNC_TYPE (func_type) == ARM_FT_NORMAL ++ && !crtl->tail_call_emit + && !crtl->calls_eh_return)) + save_reg_mask |= 1 << LR_REGNUM; + +@@ -20434,6 +20915,18 @@ + { + int reg = -1; + ++ /* Register r3 is caller-saved. Normally it does not need to be ++ saved on entry by the prologue. However if we choose to save ++ it for padding then we may confuse the compiler into thinking ++ a prologue sequence is required when in fact it is not. This ++ will occur when shrink-wrapping if r3 is used as a scratch ++ register and there are no other callee-saved writes. ++ ++ This situation can be avoided when other callee-saved registers ++ are available and r3 is not mandatory if we choose a callee-saved ++ register for padding. */ ++ bool prefer_callee_reg_p = false; ++ + /* If it is safe to use r3, then do so. This sometimes + generates better code on Thumb-2 by avoiding the need to + use 32-bit push/pop instructions. */ +@@ -20440,24 +20933,29 @@ + if (! any_sibcall_could_use_r3 () + && arm_size_return_regs () <= 12 + && (offsets->saved_regs_mask & (1 << 3)) == 0 +- && (TARGET_THUMB2 ++ && (TARGET_THUMB2 + || !(TARGET_LDRD && current_tune->prefer_ldrd_strd))) + { + reg = 3; ++ if (!TARGET_THUMB2) ++ prefer_callee_reg_p = true; + } +- else +- for (i = 4; i <= (TARGET_THUMB1 ? LAST_LO_REGNUM : 11); i++) +- { +- /* Avoid fixed registers; they may be changed at +- arbitrary times so it's unsafe to restore them +- during the epilogue. */ +- if (!fixed_regs[i] +- && (offsets->saved_regs_mask & (1 << i)) == 0) +- { +- reg = i; +- break; +- } +- } ++ if (reg == -1 ++ || prefer_callee_reg_p) ++ { ++ for (i = 4; i <= (TARGET_THUMB1 ? LAST_LO_REGNUM : 11); i++) ++ { ++ /* Avoid fixed registers; they may be changed at ++ arbitrary times so it's unsafe to restore them ++ during the epilogue. */ ++ if (!fixed_regs[i] ++ && (offsets->saved_regs_mask & (1 << i)) == 0) ++ { ++ reg = i; ++ break; ++ } ++ } ++ } + + if (reg != -1) + { +@@ -21047,7 +21545,15 @@ + } + + +-/* If CODE is 'd', then the X is a condition operand and the instruction ++/* Globally reserved letters: acln ++ Puncutation letters currently used: @_|?().!# ++ Lower case letters currently used: bcdefhimpqtvwxyz ++ Upper case letters currently used: ABCDFGHJKLMNOPQRSTU ++ Letters previously used, but now deprecated/obsolete: sVWXYZ. ++ ++ Note that the global reservation for 'c' is only for CONSTANT_ADDRESS_P. ++ ++ If CODE is 'd', then the X is a condition operand and the instruction + should only be executed if the condition is true. + if CODE is 'D', then the X is a condition operand and the instruction + should only be executed if the condition is false: however, if the mode +@@ -21187,6 +21693,19 @@ + } + return; + ++ case 'b': ++ /* Print the log2 of a CONST_INT. */ ++ { ++ HOST_WIDE_INT val; ++ ++ if (!CONST_INT_P (x) ++ || (val = exact_log2 (INTVAL (x) & 0xffffffff)) < 0) ++ output_operand_lossage ("Unsupported operand for code '%c'", code); ++ else ++ fprintf (stream, "#" HOST_WIDE_INT_PRINT_DEC, val); ++ } ++ return; ++ + case 'L': + /* The low 16 bits of an immediate constant. */ + fprintf (stream, HOST_WIDE_INT_PRINT_DEC, INTVAL(x) & 0xffff); +@@ -21429,7 +21948,7 @@ + register. */ + case 'p': + { +- int mode = GET_MODE (x); ++ enum machine_mode mode = GET_MODE (x); + int regno; + + if (GET_MODE_SIZE (mode) != 8 || !REG_P (x)) +@@ -21453,7 +21972,7 @@ + case 'P': + case 'q': + { +- int mode = GET_MODE (x); ++ enum machine_mode mode = GET_MODE (x); + int is_quad = (code == 'q'); + int regno; + +@@ -21489,7 +22008,7 @@ + case 'e': + case 'f': + { +- int mode = GET_MODE (x); ++ enum machine_mode mode = GET_MODE (x); + int regno; + + if ((GET_MODE_SIZE (mode) != 16 +@@ -21571,6 +22090,7 @@ + { + rtx addr; + bool postinc = FALSE; ++ rtx postinc_reg = NULL; + unsigned align, memsize, align_bits; + + gcc_assert (MEM_P (x)); +@@ -21580,6 +22100,11 @@ + postinc = 1; + addr = XEXP (addr, 0); + } ++ if (GET_CODE (addr) == POST_MODIFY) ++ { ++ postinc_reg = XEXP( XEXP (addr, 1), 1); ++ addr = XEXP (addr, 0); ++ } + asm_fprintf (stream, "[%r", REGNO (addr)); + + /* We know the alignment of this access, so we can emit a hint in the +@@ -21605,6 +22130,8 @@ + + if (postinc) + fputs("!", stream); ++ if (postinc_reg) ++ asm_fprintf (stream, ", %r", REGNO (postinc_reg)); + } + return; + +@@ -21622,7 +22149,7 @@ + /* Translate an S register number into a D register number and element index. */ + case 'y': + { +- int mode = GET_MODE (x); ++ enum machine_mode mode = GET_MODE (x); + int regno; + + if (GET_MODE_SIZE (mode) != 4 || !REG_P (x)) +@@ -21656,7 +22183,7 @@ + number into a D register number and element index. */ + case 'z': + { +- int mode = GET_MODE (x); ++ enum machine_mode mode = GET_MODE (x); + int regno; + + if (GET_MODE_SIZE (mode) != 2 || !REG_P (x)) +@@ -21696,15 +22223,12 @@ + break; + + case CONST_DOUBLE: +- if (TARGET_NEON) +- { +- char fpstr[20]; +- real_to_decimal (fpstr, CONST_DOUBLE_REAL_VALUE (x), +- sizeof (fpstr), 0, 1); +- fprintf (stream, "#%s", fpstr); +- } +- else +- fprintf (stream, "#%s", fp_immediate_constant (x)); ++ { ++ char fpstr[20]; ++ real_to_decimal (fpstr, CONST_DOUBLE_REAL_VALUE (x), ++ sizeof (fpstr), 0, 1); ++ fprintf (stream, "#%s", fpstr); ++ } + break; + + default: +@@ -22572,6 +23096,9 @@ + || (TARGET_HARD_FLOAT && TARGET_VFP + && regno == VFPCC_REGNUM)); + ++ if (regno == CC_REGNUM && GET_MODE_CLASS (mode) != MODE_CC) ++ return false; ++ + if (TARGET_THUMB1) + /* For the Thumb we only allow values bigger than SImode in + registers 0 - 6, so that there is always a second low +@@ -22617,13 +23144,20 @@ + } + + /* We allow almost any value to be stored in the general registers. +- Restrict doubleword quantities to even register pairs so that we can +- use ldrd. Do not allow very large Neon structure opaque modes in +- general registers; they would use too many. */ ++ Restrict doubleword quantities to even register pairs in ARM state ++ so that we can use ldrd. Do not allow very large Neon structure ++ opaque modes in general registers; they would use too many. */ + if (regno <= LAST_ARM_REGNUM) +- return !(TARGET_LDRD && GET_MODE_SIZE (mode) > 4 && (regno & 1) != 0) +- && ARM_NUM_REGS (mode) <= 4; ++ { ++ if (ARM_NUM_REGS (mode) > 4) ++ return FALSE; + ++ if (TARGET_THUMB2) ++ return TRUE; ++ ++ return !(TARGET_LDRD && GET_MODE_SIZE (mode) > 4 && (regno & 1) != 0); ++ } ++ + if (regno == FRAME_POINTER_REGNUM + || regno == ARG_POINTER_REGNUM) + /* We only allow integers in the fake hard registers. */ +@@ -22661,6 +23195,9 @@ + enum reg_class + arm_regno_class (int regno) + { ++ if (regno == PC_REGNUM) ++ return NO_REGS; ++ + if (TARGET_THUMB1) + { + if (regno == STACK_POINTER_REGNUM) +@@ -22834,10 +23371,12 @@ + NEON_BINOP, + NEON_TERNOP, + NEON_UNOP, ++ NEON_BSWAP, + NEON_GETLANE, + NEON_SETLANE, + NEON_CREATE, + NEON_RINT, ++ NEON_COPYSIGNF, + NEON_DUP, + NEON_DUPLANE, + NEON_COMBINE, +@@ -22855,7 +23394,6 @@ + NEON_FLOAT_NARROW, + NEON_FIXCONV, + NEON_SELECT, +- NEON_RESULTPAIR, + NEON_REINTERP, + NEON_VTBL, + NEON_VTBX, +@@ -23224,6 +23762,9 @@ + ARM_BUILTIN_CRC32CH, + ARM_BUILTIN_CRC32CW, + ++ ARM_BUILTIN_GET_FPSCR, ++ ARM_BUILTIN_SET_FPSCR, ++ + #undef CRYPTO1 + #undef CRYPTO2 + #undef CRYPTO3 +@@ -23301,14 +23842,19 @@ + + tree V8QI_type_node; + tree V4HI_type_node; ++ tree V4UHI_type_node; + tree V4HF_type_node; + tree V2SI_type_node; ++ tree V2USI_type_node; + tree V2SF_type_node; + tree V16QI_type_node; + tree V8HI_type_node; ++ tree V8UHI_type_node; + tree V4SI_type_node; ++ tree V4USI_type_node; + tree V4SF_type_node; + tree V2DI_type_node; ++ tree V2UDI_type_node; + + tree intUQI_type_node; + tree intUHI_type_node; +@@ -23320,27 +23866,6 @@ + tree intCI_type_node; + tree intXI_type_node; + +- tree V8QI_pointer_node; +- tree V4HI_pointer_node; +- tree V2SI_pointer_node; +- tree V2SF_pointer_node; +- tree V16QI_pointer_node; +- tree V8HI_pointer_node; +- tree V4SI_pointer_node; +- tree V4SF_pointer_node; +- tree V2DI_pointer_node; +- +- tree void_ftype_pv8qi_v8qi_v8qi; +- tree void_ftype_pv4hi_v4hi_v4hi; +- tree void_ftype_pv2si_v2si_v2si; +- tree void_ftype_pv2sf_v2sf_v2sf; +- tree void_ftype_pdi_di_di; +- tree void_ftype_pv16qi_v16qi_v16qi; +- tree void_ftype_pv8hi_v8hi_v8hi; +- tree void_ftype_pv4si_v4si_v4si; +- tree void_ftype_pv4sf_v4sf_v4sf; +- tree void_ftype_pv2di_v2di_v2di; +- + tree reinterp_ftype_dreg[NUM_DREG_TYPES][NUM_DREG_TYPES]; + tree reinterp_ftype_qreg[NUM_QREG_TYPES][NUM_QREG_TYPES]; + tree dreg_types[NUM_DREG_TYPES], qreg_types[NUM_QREG_TYPES]; +@@ -23404,6 +23929,12 @@ + const_intDI_pointer_node = build_pointer_type (const_intDI_node); + const_float_pointer_node = build_pointer_type (const_float_node); + ++ /* Unsigned integer types for various mode sizes. */ ++ intUQI_type_node = make_unsigned_type (GET_MODE_PRECISION (QImode)); ++ intUHI_type_node = make_unsigned_type (GET_MODE_PRECISION (HImode)); ++ intUSI_type_node = make_unsigned_type (GET_MODE_PRECISION (SImode)); ++ intUDI_type_node = make_unsigned_type (GET_MODE_PRECISION (DImode)); ++ neon_intUTI_type_node = make_unsigned_type (GET_MODE_PRECISION (TImode)); + /* Now create vector types based on our NEON element types. */ + /* 64-bit vectors. */ + V8QI_type_node = +@@ -23410,10 +23941,14 @@ + build_vector_type_for_mode (neon_intQI_type_node, V8QImode); + V4HI_type_node = + build_vector_type_for_mode (neon_intHI_type_node, V4HImode); ++ V4UHI_type_node = ++ build_vector_type_for_mode (intUHI_type_node, V4HImode); + V4HF_type_node = + build_vector_type_for_mode (neon_floatHF_type_node, V4HFmode); + V2SI_type_node = + build_vector_type_for_mode (neon_intSI_type_node, V2SImode); ++ V2USI_type_node = ++ build_vector_type_for_mode (intUSI_type_node, V2SImode); + V2SF_type_node = + build_vector_type_for_mode (neon_float_type_node, V2SFmode); + /* 128-bit vectors. */ +@@ -23421,21 +23956,20 @@ + build_vector_type_for_mode (neon_intQI_type_node, V16QImode); + V8HI_type_node = + build_vector_type_for_mode (neon_intHI_type_node, V8HImode); ++ V8UHI_type_node = ++ build_vector_type_for_mode (intUHI_type_node, V8HImode); + V4SI_type_node = + build_vector_type_for_mode (neon_intSI_type_node, V4SImode); ++ V4USI_type_node = ++ build_vector_type_for_mode (intUSI_type_node, V4SImode); + V4SF_type_node = + build_vector_type_for_mode (neon_float_type_node, V4SFmode); + V2DI_type_node = + build_vector_type_for_mode (neon_intDI_type_node, V2DImode); ++ V2UDI_type_node = ++ build_vector_type_for_mode (intUDI_type_node, V2DImode); + +- /* Unsigned integer types for various mode sizes. */ +- intUQI_type_node = make_unsigned_type (GET_MODE_PRECISION (QImode)); +- intUHI_type_node = make_unsigned_type (GET_MODE_PRECISION (HImode)); +- intUSI_type_node = make_unsigned_type (GET_MODE_PRECISION (SImode)); +- intUDI_type_node = make_unsigned_type (GET_MODE_PRECISION (DImode)); +- neon_intUTI_type_node = make_unsigned_type (GET_MODE_PRECISION (TImode)); + +- + (*lang_hooks.types.register_builtin_type) (intUQI_type_node, + "__builtin_neon_uqi"); + (*lang_hooks.types.register_builtin_type) (intUHI_type_node, +@@ -23466,53 +24000,8 @@ + (*lang_hooks.types.register_builtin_type) (intXI_type_node, + "__builtin_neon_xi"); + +- /* Pointers to vector types. */ +- V8QI_pointer_node = build_pointer_type (V8QI_type_node); +- V4HI_pointer_node = build_pointer_type (V4HI_type_node); +- V2SI_pointer_node = build_pointer_type (V2SI_type_node); +- V2SF_pointer_node = build_pointer_type (V2SF_type_node); +- V16QI_pointer_node = build_pointer_type (V16QI_type_node); +- V8HI_pointer_node = build_pointer_type (V8HI_type_node); +- V4SI_pointer_node = build_pointer_type (V4SI_type_node); +- V4SF_pointer_node = build_pointer_type (V4SF_type_node); +- V2DI_pointer_node = build_pointer_type (V2DI_type_node); +- +- /* Operations which return results as pairs. */ +- void_ftype_pv8qi_v8qi_v8qi = +- build_function_type_list (void_type_node, V8QI_pointer_node, V8QI_type_node, +- V8QI_type_node, NULL); +- void_ftype_pv4hi_v4hi_v4hi = +- build_function_type_list (void_type_node, V4HI_pointer_node, V4HI_type_node, +- V4HI_type_node, NULL); +- void_ftype_pv2si_v2si_v2si = +- build_function_type_list (void_type_node, V2SI_pointer_node, V2SI_type_node, +- V2SI_type_node, NULL); +- void_ftype_pv2sf_v2sf_v2sf = +- build_function_type_list (void_type_node, V2SF_pointer_node, V2SF_type_node, +- V2SF_type_node, NULL); +- void_ftype_pdi_di_di = +- build_function_type_list (void_type_node, intDI_pointer_node, +- neon_intDI_type_node, neon_intDI_type_node, NULL); +- void_ftype_pv16qi_v16qi_v16qi = +- build_function_type_list (void_type_node, V16QI_pointer_node, +- V16QI_type_node, V16QI_type_node, NULL); +- void_ftype_pv8hi_v8hi_v8hi = +- build_function_type_list (void_type_node, V8HI_pointer_node, V8HI_type_node, +- V8HI_type_node, NULL); +- void_ftype_pv4si_v4si_v4si = +- build_function_type_list (void_type_node, V4SI_pointer_node, V4SI_type_node, +- V4SI_type_node, NULL); +- void_ftype_pv4sf_v4sf_v4sf = +- build_function_type_list (void_type_node, V4SF_pointer_node, V4SF_type_node, +- V4SF_type_node, NULL); +- void_ftype_pv2di_v2di_v2di = +- build_function_type_list (void_type_node, V2DI_pointer_node, V2DI_type_node, +- V2DI_type_node, NULL); +- + if (TARGET_CRYPTO && TARGET_HARD_FLOAT) + { +- tree V4USI_type_node = +- build_vector_type_for_mode (intUSI_type_node, V4SImode); + + tree V16UQI_type_node = + build_vector_type_for_mode (intUQI_type_node, V16QImode); +@@ -23798,25 +24287,6 @@ + } + break; + +- case NEON_RESULTPAIR: +- { +- switch (insn_data[d->code].operand[1].mode) +- { +- case V8QImode: ftype = void_ftype_pv8qi_v8qi_v8qi; break; +- case V4HImode: ftype = void_ftype_pv4hi_v4hi_v4hi; break; +- case V2SImode: ftype = void_ftype_pv2si_v2si_v2si; break; +- case V2SFmode: ftype = void_ftype_pv2sf_v2sf_v2sf; break; +- case DImode: ftype = void_ftype_pdi_di_di; break; +- case V16QImode: ftype = void_ftype_pv16qi_v16qi_v16qi; break; +- case V8HImode: ftype = void_ftype_pv8hi_v8hi_v8hi; break; +- case V4SImode: ftype = void_ftype_pv4si_v4si_v4si; break; +- case V4SFmode: ftype = void_ftype_pv4sf_v4sf_v4sf; break; +- case V2DImode: ftype = void_ftype_pv2di_v2di_v2di; break; +- default: gcc_unreachable (); +- } +- } +- break; +- + case NEON_REINTERP: + { + /* We iterate over NUM_DREG_TYPES doubleword types, +@@ -23876,6 +24346,47 @@ + ftype = build_function_type_list (return_type, eltype, NULL); + break; + } ++ case NEON_BSWAP: ++ { ++ tree eltype = NULL_TREE; ++ switch (insn_data[d->code].operand[1].mode) ++ { ++ case V4HImode: ++ eltype = V4UHI_type_node; ++ break; ++ case V8HImode: ++ eltype = V8UHI_type_node; ++ break; ++ case V2SImode: ++ eltype = V2USI_type_node; ++ break; ++ case V4SImode: ++ eltype = V4USI_type_node; ++ break; ++ case V2DImode: ++ eltype = V2UDI_type_node; ++ break; ++ default: gcc_unreachable (); ++ } ++ ftype = build_function_type_list (eltype, eltype, NULL); ++ break; ++ } ++ case NEON_COPYSIGNF: ++ { ++ tree eltype = NULL_TREE; ++ switch (insn_data[d->code].operand[1].mode) ++ { ++ case V2SFmode: ++ eltype = V2SF_type_node; ++ break; ++ case V4SFmode: ++ eltype = V4SF_type_node; ++ break; ++ default: gcc_unreachable (); ++ } ++ ftype = build_function_type_list (eltype, eltype, NULL); ++ break; ++ } + default: + gcc_unreachable (); + } +@@ -24022,6 +24533,15 @@ + IWMMXT_BUILTIN2 (iwmmxt_wmacuz, WMACUZ) + IWMMXT_BUILTIN2 (iwmmxt_wmacsz, WMACSZ) + ++ ++#define FP_BUILTIN(L, U) \ ++ {0, CODE_FOR_##L, "__builtin_arm_"#L, ARM_BUILTIN_##U, \ ++ UNKNOWN, 0}, ++ ++ FP_BUILTIN (get_fpscr, GET_FPSCR) ++ FP_BUILTIN (set_fpscr, SET_FPSCR) ++#undef FP_BUILTIN ++ + #define CRC32_BUILTIN(L, U) \ + {0, CODE_FOR_##L, "__builtin_arm_"#L, ARM_BUILTIN_##U, \ + UNKNOWN, 0}, +@@ -24536,6 +25056,21 @@ + + if (TARGET_CRC32) + arm_init_crc32_builtins (); ++ ++ if (TARGET_VFP && TARGET_HARD_FLOAT) ++ { ++ tree ftype_set_fpscr ++ = build_function_type_list (void_type_node, unsigned_type_node, NULL); ++ tree ftype_get_fpscr ++ = build_function_type_list (unsigned_type_node, NULL); ++ ++ arm_builtin_decls[ARM_BUILTIN_GET_FPSCR] ++ = add_builtin_function ("__builtin_arm_ldfscr", ftype_get_fpscr, ++ ARM_BUILTIN_GET_FPSCR, BUILT_IN_MD, NULL, NULL_TREE); ++ arm_builtin_decls[ARM_BUILTIN_SET_FPSCR] ++ = add_builtin_function ("__builtin_arm_stfscr", ftype_set_fpscr, ++ ARM_BUILTIN_SET_FPSCR, BUILT_IN_MD, NULL, NULL_TREE); ++ } + } + + /* Return the ARM builtin for CODE. */ +@@ -25050,20 +25585,17 @@ + case NEON_SPLIT: + case NEON_FLOAT_WIDEN: + case NEON_FLOAT_NARROW: ++ case NEON_BSWAP: + case NEON_REINTERP: + return arm_expand_neon_args (target, icode, 1, type_mode, exp, fcode, + NEON_ARG_COPY_TO_REG, NEON_ARG_STOP); + ++ case NEON_COPYSIGNF: + case NEON_COMBINE: + case NEON_VTBL: + return arm_expand_neon_args (target, icode, 1, type_mode, exp, fcode, + NEON_ARG_COPY_TO_REG, NEON_ARG_COPY_TO_REG, NEON_ARG_STOP); + +- case NEON_RESULTPAIR: +- return arm_expand_neon_args (target, icode, 0, type_mode, exp, fcode, +- NEON_ARG_COPY_TO_REG, NEON_ARG_COPY_TO_REG, NEON_ARG_COPY_TO_REG, +- NEON_ARG_STOP); +- + case NEON_LANEMUL: + case NEON_LANEMULL: + case NEON_LANEMULH: +@@ -25125,24 +25657,6 @@ + emit_move_insn (dest, gen_lowpart (GET_MODE (dest), src)); + } + +-/* Emit code to place a Neon pair result in memory locations (with equal +- registers). */ +-void +-neon_emit_pair_result_insn (enum machine_mode mode, +- rtx (*intfn) (rtx, rtx, rtx, rtx), rtx destaddr, +- rtx op1, rtx op2) +-{ +- rtx mem = gen_rtx_MEM (mode, destaddr); +- rtx tmp1 = gen_reg_rtx (mode); +- rtx tmp2 = gen_reg_rtx (mode); +- +- emit_insn (intfn (tmp1, op1, op2, tmp2)); +- +- emit_move_insn (mem, tmp1); +- mem = adjust_address (mem, mode, GET_MODE_SIZE (mode)); +- emit_move_insn (mem, tmp2); +-} +- + /* Set up OPERANDS for a register copy from SRC to DEST, taking care + not to early-clobber SRC registers in the process. + +@@ -25263,6 +25777,25 @@ + + switch (fcode) + { ++ case ARM_BUILTIN_GET_FPSCR: ++ case ARM_BUILTIN_SET_FPSCR: ++ if (fcode == ARM_BUILTIN_GET_FPSCR) ++ { ++ icode = CODE_FOR_get_fpscr; ++ target = gen_reg_rtx (SImode); ++ pat = GEN_FCN (icode) (target); ++ } ++ else ++ { ++ target = NULL_RTX; ++ icode = CODE_FOR_set_fpscr; ++ arg0 = CALL_EXPR_ARG (exp, 0); ++ op0 = expand_normal (arg0); ++ pat = GEN_FCN (icode) (op0); ++ } ++ emit_insn (pat); ++ return target; ++ + case ARM_BUILTIN_TEXTRMSB: + case ARM_BUILTIN_TEXTRMUB: + case ARM_BUILTIN_TEXTRMSH: +@@ -25896,7 +26429,7 @@ + int pops_needed; + unsigned available; + unsigned required; +- int mode; ++ enum machine_mode mode; + int size; + int restore_a4 = FALSE; + +@@ -29416,10 +29949,14 @@ + { + switch (arm_tune) + { ++ case xgene1: ++ return 4; ++ + case cortexa15: + case cortexa57: + return 3; + ++ case cortexm7: + case cortexr4: + case cortexr4f: + case cortexr5: +@@ -29429,6 +29966,7 @@ + case cortexa8: + case cortexa9: + case cortexa12: ++ case cortexa17: + case cortexa53: + case fa726te: + case marvell_pj4: +@@ -29439,6 +29977,23 @@ + } + } + ++/* Return how many instructions should scheduler lookahead to choose the ++ best one. */ ++static int ++arm_first_cycle_multipass_dfa_lookahead (void) ++{ ++ int issue_rate = arm_issue_rate (); ++ ++ return issue_rate > 1 ? issue_rate : 0; ++} ++ ++/* Enable modeling of L2 auto-prefetcher. */ ++static int ++arm_first_cycle_multipass_dfa_lookahead_guard (rtx insn, int ready_index) ++{ ++ return autopref_multipass_dfa_lookahead_guard (insn, ready_index); ++} ++ + /* A table and a function to perform ARM-specific name mangling for + NEON vector types in order to conform to the AAPCS (see "Procedure + Call Standard for the ARM Architecture", Appendix A). To qualify +@@ -29563,10 +30118,10 @@ + { + enum machine_mode in_mode, out_mode; + int in_n, out_n; ++ bool out_unsigned_p = TYPE_UNSIGNED (type_out); + + if (TREE_CODE (type_out) != VECTOR_TYPE +- || TREE_CODE (type_in) != VECTOR_TYPE +- || !(TARGET_NEON && TARGET_FPU_ARMV8 && flag_unsafe_math_optimizations)) ++ || TREE_CODE (type_in) != VECTOR_TYPE) + return NULL_TREE; + + out_mode = TYPE_MODE (TREE_TYPE (type_out)); +@@ -29578,7 +30133,13 @@ + decl of the vectorized builtin for the appropriate vector mode. + NULL_TREE is returned if no such builtin is available. */ + #undef ARM_CHECK_BUILTIN_MODE +-#define ARM_CHECK_BUILTIN_MODE(C) \ ++#define ARM_CHECK_BUILTIN_MODE(C) \ ++ (TARGET_NEON && TARGET_FPU_ARMV8 \ ++ && flag_unsafe_math_optimizations \ ++ && ARM_CHECK_BUILTIN_MODE_1 (C)) ++ ++#undef ARM_CHECK_BUILTIN_MODE_1 ++#define ARM_CHECK_BUILTIN_MODE_1(C) \ + (out_mode == SFmode && out_n == C \ + && in_mode == SFmode && in_n == C) + +@@ -29603,6 +30164,67 @@ + return ARM_FIND_VRINT_VARIANT (vrintz); + case BUILT_IN_ROUNDF: + return ARM_FIND_VRINT_VARIANT (vrinta); ++#undef ARM_CHECK_BUILTIN_MODE_1 ++#define ARM_CHECK_BUILTIN_MODE_1(C) \ ++ (out_mode == SImode && out_n == C \ ++ && in_mode == SFmode && in_n == C) ++ ++#define ARM_FIND_VCVT_VARIANT(N) \ ++ (ARM_CHECK_BUILTIN_MODE (2) \ ++ ? arm_builtin_decl(ARM_BUILTIN_NEON_##N##v2sfv2si, false) \ ++ : (ARM_CHECK_BUILTIN_MODE (4) \ ++ ? arm_builtin_decl(ARM_BUILTIN_NEON_##N##v4sfv4si, false) \ ++ : NULL_TREE)) ++ ++#define ARM_FIND_VCVTU_VARIANT(N) \ ++ (ARM_CHECK_BUILTIN_MODE (2) \ ++ ? arm_builtin_decl(ARM_BUILTIN_NEON_##N##uv2sfv2si, false) \ ++ : (ARM_CHECK_BUILTIN_MODE (4) \ ++ ? arm_builtin_decl(ARM_BUILTIN_NEON_##N##uv4sfv4si, false) \ ++ : NULL_TREE)) ++ case BUILT_IN_LROUNDF: ++ return out_unsigned_p ++ ? ARM_FIND_VCVTU_VARIANT (vcvta) ++ : ARM_FIND_VCVT_VARIANT (vcvta); ++ case BUILT_IN_LCEILF: ++ return out_unsigned_p ++ ? ARM_FIND_VCVTU_VARIANT (vcvtp) ++ : ARM_FIND_VCVT_VARIANT (vcvtp); ++ case BUILT_IN_LFLOORF: ++ return out_unsigned_p ++ ? ARM_FIND_VCVTU_VARIANT (vcvtm) ++ : ARM_FIND_VCVT_VARIANT (vcvtm); ++#undef ARM_CHECK_BUILTIN_MODE ++#define ARM_CHECK_BUILTIN_MODE(C, N) \ ++ (out_mode == N##mode && out_n == C \ ++ && in_mode == N##mode && in_n == C) ++ case BUILT_IN_BSWAP16: ++ if (ARM_CHECK_BUILTIN_MODE (4, HI)) ++ return arm_builtin_decl (ARM_BUILTIN_NEON_bswapv4hi, false); ++ else if (ARM_CHECK_BUILTIN_MODE (8, HI)) ++ return arm_builtin_decl (ARM_BUILTIN_NEON_bswapv8hi, false); ++ else ++ return NULL_TREE; ++ case BUILT_IN_BSWAP32: ++ if (ARM_CHECK_BUILTIN_MODE (2, SI)) ++ return arm_builtin_decl (ARM_BUILTIN_NEON_bswapv2si, false); ++ else if (ARM_CHECK_BUILTIN_MODE (4, SI)) ++ return arm_builtin_decl (ARM_BUILTIN_NEON_bswapv4si, false); ++ else ++ return NULL_TREE; ++ case BUILT_IN_BSWAP64: ++ if (ARM_CHECK_BUILTIN_MODE (2, DI)) ++ return arm_builtin_decl (ARM_BUILTIN_NEON_bswapv2di, false); ++ else ++ return NULL_TREE; ++ case BUILT_IN_COPYSIGNF: ++ if (ARM_CHECK_BUILTIN_MODE (2, SF)) ++ return arm_builtin_decl (ARM_BUILTIN_NEON_copysignfv2sf, false); ++ else if (ARM_CHECK_BUILTIN_MODE (4, SF)) ++ return arm_builtin_decl (ARM_BUILTIN_NEON_copysignfv4sf, false); ++ else ++ return NULL_TREE; ++ + default: + return NULL_TREE; + } +@@ -29609,9 +30231,12 @@ + } + return NULL_TREE; + } ++#undef ARM_FIND_VCVT_VARIANT ++#undef ARM_FIND_VCVTU_VARIANT + #undef ARM_CHECK_BUILTIN_MODE + #undef ARM_FIND_VRINT_VARIANT + ++ + /* The AAPCS sets the maximum alignment of a vector to 64 bits. */ + static HOST_WIDE_INT + arm_vector_alignment (const_tree type) +@@ -31131,6 +31756,72 @@ + + } + ++static bool ++arm_macro_fusion_p (void) ++{ ++ return current_tune->fuseable_ops != ARM_FUSE_NOTHING; ++} ++ ++ ++static bool ++aarch_macro_fusion_pair_p (rtx prev, rtx curr) ++{ ++ rtx set_dest; ++ rtx prev_set = single_set (prev); ++ rtx curr_set = single_set (curr); ++ ++ if (!prev_set ++ || !curr_set) ++ return false; ++ ++ if (any_condjump_p (curr)) ++ return false; ++ ++ if (!arm_macro_fusion_p ()) ++ return false; ++ ++ if (current_tune->fuseable_ops & ARM_FUSE_MOVW_MOVT) ++ { ++ /* We are trying to fuse ++ movw imm / movt imm ++ instructions as a group that gets scheduled together. */ ++ ++ set_dest = SET_DEST (curr_set); ++ ++ if (GET_MODE (set_dest) != SImode) ++ return false; ++ ++ /* We are trying to match: ++ prev (movw) == (set (reg r0) (const_int imm16)) ++ curr (movt) == (set (zero_extract (reg r0) ++ (const_int 16) ++ (const_int 16)) ++ (const_int imm16_1)) ++ or ++ prev (movw) == (set (reg r1) ++ (high (symbol_ref ("SYM")))) ++ curr (movt) == (set (reg r0) ++ (lo_sum (reg r1) ++ (symbol_ref ("SYM")))) */ ++ if (GET_CODE (set_dest) == ZERO_EXTRACT) ++ { ++ if (CONST_INT_P (SET_SRC (curr_set)) ++ && CONST_INT_P (SET_SRC (prev_set)) ++ && REG_P (XEXP (set_dest, 0)) ++ && REG_P (SET_DEST (prev_set)) ++ && REGNO (XEXP (set_dest, 0)) == REGNO (SET_DEST (prev_set))) ++ return true; ++ } ++ else if (GET_CODE (SET_SRC (curr_set)) == LO_SUM ++ && REG_P (SET_DEST (curr_set)) ++ && REG_P (SET_DEST (prev_set)) ++ && GET_CODE (SET_SRC (prev_set)) == HIGH ++ && REGNO (SET_DEST (curr_set)) == REGNO (SET_DEST (prev_set))) ++ return true; ++ } ++ return false; ++} ++ + /* Implement the TARGET_ASAN_SHADOW_OFFSET hook. */ + + static unsigned HOST_WIDE_INT +@@ -31181,6 +31872,75 @@ + return false; + } + ++static void ++arm_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update) ++{ ++ const unsigned ARM_FE_INVALID = 1; ++ const unsigned ARM_FE_DIVBYZERO = 2; ++ const unsigned ARM_FE_OVERFLOW = 4; ++ const unsigned ARM_FE_UNDERFLOW = 8; ++ const unsigned ARM_FE_INEXACT = 16; ++ const unsigned HOST_WIDE_INT ARM_FE_ALL_EXCEPT = (ARM_FE_INVALID ++ | ARM_FE_DIVBYZERO ++ | ARM_FE_OVERFLOW ++ | ARM_FE_UNDERFLOW ++ | ARM_FE_INEXACT); ++ const unsigned HOST_WIDE_INT ARM_FE_EXCEPT_SHIFT = 8; ++ tree fenv_var, get_fpscr, set_fpscr, mask, ld_fenv, masked_fenv; ++ tree new_fenv_var, reload_fenv, restore_fnenv; ++ tree update_call, atomic_feraiseexcept, hold_fnclex; ++ ++ if (!TARGET_VFP || !TARGET_HARD_FLOAT) ++ return; ++ ++ /* Generate the equivalent of : ++ unsigned int fenv_var; ++ fenv_var = __builtin_arm_get_fpscr (); ++ ++ unsigned int masked_fenv; ++ masked_fenv = fenv_var & mask; ++ ++ __builtin_arm_set_fpscr (masked_fenv); */ ++ ++ fenv_var = create_tmp_var (unsigned_type_node, NULL); ++ get_fpscr = arm_builtin_decls[ARM_BUILTIN_GET_FPSCR]; ++ set_fpscr = arm_builtin_decls[ARM_BUILTIN_SET_FPSCR]; ++ mask = build_int_cst (unsigned_type_node, ++ ~((ARM_FE_ALL_EXCEPT << ARM_FE_EXCEPT_SHIFT) ++ | ARM_FE_ALL_EXCEPT)); ++ ld_fenv = build2 (MODIFY_EXPR, unsigned_type_node, ++ fenv_var, build_call_expr (get_fpscr, 0)); ++ masked_fenv = build2 (BIT_AND_EXPR, unsigned_type_node, fenv_var, mask); ++ hold_fnclex = build_call_expr (set_fpscr, 1, masked_fenv); ++ *hold = build2 (COMPOUND_EXPR, void_type_node, ++ build2 (COMPOUND_EXPR, void_type_node, masked_fenv, ld_fenv), ++ hold_fnclex); ++ ++ /* Store the value of masked_fenv to clear the exceptions: ++ __builtin_arm_set_fpscr (masked_fenv); */ ++ ++ *clear = build_call_expr (set_fpscr, 1, masked_fenv); ++ ++ /* Generate the equivalent of : ++ unsigned int new_fenv_var; ++ new_fenv_var = __builtin_arm_get_fpscr (); ++ ++ __builtin_arm_set_fpscr (fenv_var); ++ ++ __atomic_feraiseexcept (new_fenv_var); */ ++ ++ new_fenv_var = create_tmp_var (unsigned_type_node, NULL); ++ reload_fenv = build2 (MODIFY_EXPR, unsigned_type_node, new_fenv_var, ++ build_call_expr (get_fpscr, 0)); ++ restore_fnenv = build_call_expr (set_fpscr, 1, fenv_var); ++ atomic_feraiseexcept = builtin_decl_implicit (BUILT_IN_ATOMIC_FERAISEEXCEPT); ++ update_call = build_call_expr (atomic_feraiseexcept, 1, ++ fold_convert (integer_type_node, new_fenv_var)); ++ *update = build2 (COMPOUND_EXPR, void_type_node, ++ build2 (COMPOUND_EXPR, void_type_node, ++ reload_fenv, restore_fnenv), update_call); ++} ++ + /* return TRUE if x is a reference to a value in a constant pool */ + extern bool + arm_is_constant_pool_ref (rtx x) +--- a/src/gcc/config/arm/t-aprofile ++++ b/src/gcc/config/arm/t-aprofile +@@ -83,10 +83,14 @@ + MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a5 + MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a15 + MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a12 ++MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a17 + MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a15.cortex-a7 ++MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a17.cortex-a7 + MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a53 + MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a57 + MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a57.cortex-a53 ++MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a72 ++MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a72.cortex-a53 + + # Arch Matches + MULTILIB_MATCHES += march?armv8-a=march?armv8-a+crc +--- a/src/gcc/config/arm/arm.h ++++ b/src/gcc/config/arm/arm.h +@@ -166,7 +166,10 @@ + builtin_define ("__ARM_EABI__"); \ + } \ + if (TARGET_IDIV) \ +- builtin_define ("__ARM_ARCH_EXT_IDIV__"); \ ++ { \ ++ builtin_define ("__ARM_ARCH_EXT_IDIV__"); \ ++ builtin_define ("__ARM_FEATURE_IDIV"); \ ++ } \ + } while (0) + + #include "config/arm/arm-opts.h" +@@ -298,6 +301,9 @@ + /* FPU supports VFPv3 instructions. */ + #define TARGET_VFP3 (TARGET_VFP && arm_fpu_desc->rev >= 3) + ++/* FPU supports FPv5 instructions. */ ++#define TARGET_VFP5 (TARGET_VFP && arm_fpu_desc->rev >= 5) ++ + /* FPU only supports VFP single-precision instructions. */ + #define TARGET_VFP_SINGLE (TARGET_VFP && arm_fpu_desc->regs == VFP_REG_SINGLE) + +@@ -442,9 +448,6 @@ + #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT + #endif + +-#define LARGEST_EXPONENT_IS_NORMAL(bits) \ +- ((bits) == 16 && arm_fp16_format == ARM_FP16_FORMAT_ALTERNATIVE) +- + #ifndef ARM_DEFAULT_ABI + #define ARM_DEFAULT_ABI ARM_ABI_APCS + #endif +@@ -2139,9 +2142,9 @@ + : reverse_condition (code)) + + #define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) \ +- ((VALUE) = GET_MODE_UNIT_BITSIZE (MODE)) ++ ((VALUE) = GET_MODE_UNIT_BITSIZE (MODE), 2) + #define CTZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) \ +- ((VALUE) = GET_MODE_UNIT_BITSIZE (MODE)) ++ ((VALUE) = GET_MODE_UNIT_BITSIZE (MODE), 2) + + #define CC_STATUS_INIT \ + do { cfun->machine->thumb1_cc_insn = NULL_RTX; } while (0) +--- a/src/gcc/config/arm/cortex-a9-neon.md ++++ b/src/gcc/config/arm/cortex-a9-neon.md +@@ -376,7 +376,7 @@ + (define_insn_reservation "cortex_a9_neon_vmov" 3 + (and (eq_attr "tune" "cortexa9") + (eq_attr "cortex_a9_neon_type" "neon_vmov")) +- "cortex_a8_neon_dp") ++ "cortex_a9_neon_dp") + + ;; Instructions using this reservation read their (D|Q)n operands at N2, + ;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and +--- a/src/gcc/config/arm/unspecs.md ++++ b/src/gcc/config/arm/unspecs.md +@@ -143,6 +143,8 @@ + VUNSPEC_SLX ; Represent a store-register-release-exclusive. + VUNSPEC_LDA ; Represent a store-register-acquire. + VUNSPEC_STL ; Represent a store-register-release. ++ VUNSPEC_GET_FPSCR ; Represent fetch of FPSCR content. ++ VUNSPEC_SET_FPSCR ; Represent assign of FPSCR content. + ]) + + ;; Enumerators for NEON unspecs. +--- a/src/gcc/config/arm/cortex-m4.md ++++ b/src/gcc/config/arm/cortex-m4.md +@@ -34,7 +34,7 @@ + (ior (eq_attr "type" "alu_imm,alus_imm,logic_imm,logics_imm,\ + alu_reg,alus_reg,logic_reg,logics_reg,\ + adc_imm,adcs_imm,adc_reg,adcs_reg,\ +- adr,bfm,rev,\ ++ adr,bfm,clz,rbit,rev,\ + shift_imm,shift_reg,extend,\ + alu_shift_imm,alus_shift_imm,\ + logic_shift_imm,logics_shift_imm,\ +--- a/src/gcc/config/arm/arm-modes.def ++++ b/src/gcc/config/arm/arm-modes.def +@@ -21,9 +21,6 @@ + along with GCC; see the file COPYING3. If not see + . */ + +-/* Extended precision floating point. +- FIXME What format is this? */ +-FLOAT_MODE (XF, 12, 0); + + /* Half-precision floating point */ + FLOAT_MODE (HF, 2, 0); +--- a/src/gcc/config/arm/arm-cores.def ++++ b/src/gcc/config/arm/arm-cores.def +@@ -137,18 +137,25 @@ + ARM_CORE("cortex-m0", cortexm0, cortexm0, 6M, FL_LDSCHED, v6m) + ARM_CORE("cortex-m0plus", cortexm0plus, cortexm0plus, 6M, FL_LDSCHED, v6m) + ++/* V6M Architecture Processors for small-multiply implementations. */ ++ARM_CORE("cortex-m1.small-multiply", cortexm1smallmultiply, cortexm1, 6M, FL_LDSCHED | FL_SMALLMUL, v6m) ++ARM_CORE("cortex-m0.small-multiply", cortexm0smallmultiply, cortexm0, 6M, FL_LDSCHED | FL_SMALLMUL, v6m) ++ARM_CORE("cortex-m0plus.small-multiply",cortexm0plussmallmultiply, cortexm0plus,6M, FL_LDSCHED | FL_SMALLMUL, v6m) ++ + /* V7 Architecture Processors */ + ARM_CORE("generic-armv7-a", genericv7a, genericv7a, 7A, FL_LDSCHED, cortex) + ARM_CORE("cortex-a5", cortexa5, cortexa5, 7A, FL_LDSCHED, cortex_a5) + ARM_CORE("cortex-a7", cortexa7, cortexa7, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a7) +-ARM_CORE("cortex-a8", cortexa8, cortexa8, 7A, FL_LDSCHED, cortex) ++ARM_CORE("cortex-a8", cortexa8, cortexa8, 7A, FL_LDSCHED, cortex_a8) + ARM_CORE("cortex-a9", cortexa9, cortexa9, 7A, FL_LDSCHED, cortex_a9) +-ARM_CORE("cortex-a12", cortexa12, cortexa15, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a12) ++ARM_CORE("cortex-a12", cortexa12, cortexa17, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a12) + ARM_CORE("cortex-a15", cortexa15, cortexa15, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a15) ++ARM_CORE("cortex-a17", cortexa17, cortexa17, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a12) + ARM_CORE("cortex-r4", cortexr4, cortexr4, 7R, FL_LDSCHED, cortex) + ARM_CORE("cortex-r4f", cortexr4f, cortexr4f, 7R, FL_LDSCHED, cortex) + ARM_CORE("cortex-r5", cortexr5, cortexr5, 7R, FL_LDSCHED | FL_ARM_DIV, cortex) + ARM_CORE("cortex-r7", cortexr7, cortexr7, 7R, FL_LDSCHED | FL_ARM_DIV, cortex) ++ARM_CORE("cortex-m7", cortexm7, cortexm7, 7EM, FL_LDSCHED, cortex_m7) + ARM_CORE("cortex-m4", cortexm4, cortexm4, 7EM, FL_LDSCHED, v7m) + ARM_CORE("cortex-m3", cortexm3, cortexm3, 7M, FL_LDSCHED, v7m) + ARM_CORE("marvell-pj4", marvell_pj4, marvell_pj4, 7A, FL_LDSCHED, 9e) +@@ -155,10 +162,14 @@ + + /* V7 big.LITTLE implementations */ + ARM_CORE("cortex-a15.cortex-a7", cortexa15cortexa7, cortexa7, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a15) ++ARM_CORE("cortex-a17.cortex-a7", cortexa17cortexa7, cortexa7, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a12) + + /* V8 Architecture Processors */ + ARM_CORE("cortex-a53", cortexa53, cortexa53, 8A, FL_LDSCHED | FL_CRC32, cortex_a53) +-ARM_CORE("cortex-a57", cortexa57, cortexa15, 8A, FL_LDSCHED | FL_CRC32, cortex_a57) ++ARM_CORE("cortex-a57", cortexa57, cortexa57, 8A, FL_LDSCHED | FL_CRC32, cortex_a57) ++ARM_CORE("cortex-a72", cortexa72, cortexa57, 8A, FL_LDSCHED | FL_CRC32, cortex_a57) ++ARM_CORE("xgene1", xgene1, xgene1, 8A, FL_LDSCHED, xgene1) + + /* V8 big.LITTLE implementations */ + ARM_CORE("cortex-a57.cortex-a53", cortexa57cortexa53, cortexa53, 8A, FL_LDSCHED | FL_CRC32, cortex_a57) ++ARM_CORE("cortex-a72.cortex-a53", cortexa72cortexa53, cortexa53, 8A, FL_LDSCHED | FL_CRC32, cortex_a57) +--- a/src/gcc/config/arm/cortex-r4.md ++++ b/src/gcc/config/arm/cortex-r4.md +@@ -81,7 +81,7 @@ + (eq_attr "type" "alu_imm,alus_imm,logic_imm,logics_imm,\ + alu_reg,alus_reg,logic_reg,logics_reg,\ + adc_imm,adcs_imm,adc_reg,adcs_reg,\ +- adr,bfm,rev,\ ++ adr,bfm,clz,rbit,rev,\ + shift_imm,shift_reg,mvn_imm,mvn_reg")) + "cortex_r4_alu") + +--- a/src/gcc/config/arm/arm-tune.md ++++ b/src/gcc/config/arm/arm-tune.md +@@ -25,10 +25,13 @@ + arm1176jzs,arm1176jzfs,mpcorenovfp, + mpcore,arm1156t2s,arm1156t2fs, + cortexm1,cortexm0,cortexm0plus, ++ cortexm1smallmultiply,cortexm0smallmultiply,cortexm0plussmallmultiply, + genericv7a,cortexa5,cortexa7, + cortexa8,cortexa9,cortexa12, +- cortexa15,cortexr4,cortexr4f, +- cortexr5,cortexr7,cortexm4, +- cortexm3,marvell_pj4,cortexa15cortexa7, +- cortexa53,cortexa57,cortexa57cortexa53" ++ cortexa15,cortexa17,cortexr4, ++ cortexr4f,cortexr5,cortexr7, ++ cortexm7,cortexm4,cortexm3, ++ marvell_pj4,cortexa15cortexa7,cortexa17cortexa7, ++ cortexa53,cortexa57,cortexa72, ++ xgene1,cortexa57cortexa53,cortexa72cortexa53" + (const (symbol_ref "((enum attr_tune) arm_tune)"))) +--- a/src/gcc/config/arm/arm-protos.h ++++ b/src/gcc/config/arm/arm-protos.h +@@ -126,7 +126,6 @@ + extern int arm_const_double_inline_cost (rtx); + extern bool arm_const_double_by_parts (rtx); + extern bool arm_const_double_by_immediates (rtx); +-extern const char *fp_immediate_constant (rtx); + extern void arm_emit_call_insn (rtx, rtx); + extern const char *output_call (rtx *); + extern const char *output_call_mem (rtx *); +@@ -150,7 +149,7 @@ + extern int arm_emit_vector_const (FILE *, rtx); + extern void arm_emit_fp16_const (rtx c); + extern const char * arm_output_load_gr (rtx *); +-extern const char *vfp_output_fstmd (rtx *); ++extern const char *vfp_output_vstmd (rtx *); + extern void arm_output_multireg_pop (rtx *, bool, rtx, bool, bool); + extern void arm_set_return_address (rtx, rtx); + extern int arm_eliminable_register (rtx); +@@ -250,6 +249,13 @@ + + struct cpu_cost_table; + ++enum arm_sched_autopref ++ { ++ ARM_SCHED_AUTOPREF_OFF, ++ ARM_SCHED_AUTOPREF_RANK, ++ ARM_SCHED_AUTOPREF_FULL ++ }; ++ + struct tune_params + { + bool (*rtx_costs) (rtx, RTX_CODE, RTX_CODE, int *, bool); +@@ -273,6 +279,15 @@ + const struct cpu_vec_costs* vec_costs; + /* Prefer Neon for 64-bit bitops. */ + bool prefer_neon_for_64bits; ++ /* Prefer 32-bit encoding instead of flag-setting 16-bit encoding. */ ++ bool disparage_flag_setting_t16_encodings; ++ /* Prefer 32-bit encoding instead of 16-bit encoding where subset of flags ++ would be set. */ ++ bool disparage_partial_flag_setting_t16_encodings; ++ /* Depth of scheduling queue to check for L2 autoprefetcher. */ ++ enum arm_sched_autopref sched_autopref; ++ /* Bitfield encoding the fuseable pairs of instructions. */ ++ unsigned int fuseable_ops; + }; + + extern const struct tune_params *current_tune; +--- a/src/gcc/config/arm/vfp.md ++++ b/src/gcc/config/arm/vfp.md +@@ -41,11 +41,11 @@ + case 5: + return \"str%?\\t%1, %0\"; + case 6: +- return \"fmsr%?\\t%0, %1\\t%@ int\"; ++ return \"vmov%?\\t%0, %1\\t%@ int\"; + case 7: +- return \"fmrs%?\\t%0, %1\\t%@ int\"; ++ return \"vmov%?\\t%0, %1\\t%@ int\"; + case 8: +- return \"fcpys%?\\t%0, %1\\t%@ int\"; ++ return \"vmov%?.f32\\t%0, %1\\t%@ int\"; + case 9: case 10: + return output_move_vfp (operands); + default: +@@ -87,11 +87,11 @@ + case 8: + return \"str%?\\t%1, %0\"; + case 9: +- return \"fmsr%?\\t%0, %1\\t%@ int\"; ++ return \"vmov%?\\t%0, %1\\t%@ int\"; + case 10: +- return \"fmrs%?\\t%0, %1\\t%@ int\"; ++ return \"vmov%?\\t%0, %1\\t%@ int\"; + case 11: +- return \"fcpys%?\\t%0, %1\\t%@ int\"; ++ return \"vmov%?.f32\\t%0, %1\\t%@ int\"; + case 12: case 13: + return output_move_vfp (operands); + default: +@@ -100,7 +100,7 @@ + " + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "yes,no,yes,no,no,no,no,no,no,no,no,no,no,no") +- (set_attr "type" "mov_reg,mov_reg,mov_reg,mvn_reg,mov_reg,load1,load1,store1,store1,f_mcr,f_mrc,fmov,f_loads,f_stores") ++ (set_attr "type" "mov_reg,mov_reg,mov_reg,mvn_reg,mov_imm,load1,load1,store1,store1,f_mcr,f_mrc,fmov,f_loads,f_stores") + (set_attr "length" "2,4,2,4,4,4,4,4,4,4,4,4,4,4") + (set_attr "pool_range" "*,*,*,*,*,1018,4094,*,*,*,*,*,1018,*") + (set_attr "neg_pool_range" "*,*,*,*,*, 0, 0,*,*,*,*,*,1008,*")] +@@ -130,14 +130,14 @@ + case 6: + return output_move_double (operands, true, NULL); + case 7: +- return \"fmdrr%?\\t%P0, %Q1, %R1\\t%@ int\"; ++ return \"vmov%?\\t%P0, %Q1, %R1\\t%@ int\"; + case 8: +- return \"fmrrd%?\\t%Q0, %R0, %P1\\t%@ int\"; ++ return \"vmov%?\\t%Q0, %R0, %P1\\t%@ int\"; + case 9: + if (TARGET_VFP_SINGLE) +- return \"fcpys%?\\t%0, %1\\t%@ int\;fcpys%?\\t%p0, %p1\\t%@ int\"; ++ return \"vmov%?.f32\\t%0, %1\\t%@ int\;vmov%?.f32\\t%p0, %p1\\t%@ int\"; + else +- return \"fcpyd%?\\t%P0, %P1\\t%@ int\"; ++ return \"vmov%?.f64\\t%P0, %P1\\t%@ int\"; + case 10: case 11: + return output_move_vfp (operands); + default: +@@ -181,11 +181,11 @@ + case 6: + return output_move_double (operands, true, NULL); + case 7: +- return \"fmdrr%?\\t%P0, %Q1, %R1\\t%@ int\"; ++ return \"vmov%?\\t%P0, %Q1, %R1\\t%@ int\"; + case 8: +- return \"fmrrd%?\\t%Q0, %R0, %P1\\t%@ int\"; ++ return \"vmov%?\\t%Q0, %R0, %P1\\t%@ int\"; + case 9: +- return \"fcpyd%?\\t%P0, %P1\\t%@ int\"; ++ return \"vmov%?.f64\\t%P0, %P1\\t%@ int\"; + case 10: case 11: + return output_move_vfp (operands); + default: +@@ -229,13 +229,13 @@ + case 3: /* memory from ARM register */ + return \"strh\\t%1, %0\\t%@ __fp16\"; + case 4: /* S register from S register */ +- return \"fcpys\\t%0, %1\"; ++ return \"vmov.f32\\t%0, %1\"; + case 5: /* ARM register from ARM register */ + return \"mov\\t%0, %1\\t%@ __fp16\"; + case 6: /* S register from ARM register */ +- return \"fmsr\\t%0, %1\"; ++ return \"vmov\\t%0, %1\"; + case 7: /* ARM register from S register */ +- return \"fmrs\\t%0, %1\"; ++ return \"vmov\\t%0, %1\"; + case 8: /* ARM register from constant */ + { + REAL_VALUE_TYPE r; +@@ -280,13 +280,13 @@ + case 1: /* memory from ARM register */ + return \"strh\\t%1, %0\\t%@ __fp16\"; + case 2: /* S register from S register */ +- return \"fcpys\\t%0, %1\"; ++ return \"vmov.f32\\t%0, %1\"; + case 3: /* ARM register from ARM register */ + return \"mov\\t%0, %1\\t%@ __fp16\"; + case 4: /* S register from ARM register */ +- return \"fmsr\\t%0, %1\"; ++ return \"vmov\\t%0, %1\"; + case 5: /* ARM register from S register */ +- return \"fmrs\\t%0, %1\"; ++ return \"vmov\\t%0, %1\"; + case 6: /* ARM register from constant */ + { + REAL_VALUE_TYPE r; +@@ -322,7 +322,7 @@ + + (define_insn "*movsf_vfp" + [(set (match_operand:SF 0 "nonimmediate_operand" "=t,?r,t ,t ,Uv,r ,m,t,r") +- (match_operand:SF 1 "general_operand" " ?r,t,Dv,UvE,t, mE,r,t,r"))] ++ (match_operand:SF 1 "general_operand" " ?r,t,Dv,UvE,t, mE,r,t,r"))] + "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP + && ( s_register_operand (operands[0], SFmode) + || s_register_operand (operands[1], SFmode))" +@@ -330,11 +330,11 @@ + switch (which_alternative) + { + case 0: +- return \"fmsr%?\\t%0, %1\"; ++ return \"vmov%?\\t%0, %1\"; + case 1: +- return \"fmrs%?\\t%0, %1\"; ++ return \"vmov%?\\t%0, %1\"; + case 2: +- return \"fconsts%?\\t%0, #%G1\"; ++ return \"vmov%?.f32\\t%0, %1\"; + case 3: case 4: + return output_move_vfp (operands); + case 5: +@@ -342,7 +342,7 @@ + case 6: + return \"str%?\\t%1, %0\\t%@ float\"; + case 7: +- return \"fcpys%?\\t%0, %1\"; ++ return \"vmov%?.f32\\t%0, %1\"; + case 8: + return \"mov%?\\t%0, %1\\t%@ float\"; + default: +@@ -366,11 +366,11 @@ + switch (which_alternative) + { + case 0: +- return \"fmsr%?\\t%0, %1\"; ++ return \"vmov%?\\t%0, %1\"; + case 1: +- return \"fmrs%?\\t%0, %1\"; ++ return \"vmov%?\\t%0, %1\"; + case 2: +- return \"fconsts%?\\t%0, #%G1\"; ++ return \"vmov%?.f32\\t%0, %1\"; + case 3: case 4: + return output_move_vfp (operands); + case 5: +@@ -378,7 +378,7 @@ + case 6: + return \"str%?\\t%1, %0\\t%@ float\"; + case 7: +- return \"fcpys%?\\t%0, %1\"; ++ return \"vmov%?.f32\\t%0, %1\"; + case 8: + return \"mov%?\\t%0, %1\\t%@ float\"; + default: +@@ -406,12 +406,12 @@ + switch (which_alternative) + { + case 0: +- return \"fmdrr%?\\t%P0, %Q1, %R1\"; ++ return \"vmov%?\\t%P0, %Q1, %R1\"; + case 1: +- return \"fmrrd%?\\t%Q0, %R0, %P1\"; ++ return \"vmov%?\\t%Q0, %R0, %P1\"; + case 2: + gcc_assert (TARGET_VFP_DOUBLE); +- return \"fconstd%?\\t%P0, #%G1\"; ++ return \"vmov%?.f64\\t%P0, %1\"; + case 3: case 4: + return output_move_vfp (operands); + case 5: case 6: +@@ -418,9 +418,9 @@ + return output_move_double (operands, true, NULL); + case 7: + if (TARGET_VFP_SINGLE) +- return \"fcpys%?\\t%0, %1\;fcpys%?\\t%p0, %p1\"; ++ return \"vmov%?.f32\\t%0, %1\;vmov%?.f32\\t%p0, %p1\"; + else +- return \"fcpyd%?\\t%P0, %P1\"; ++ return \"vmov%?.f64\\t%P0, %P1\"; + case 8: + return \"#\"; + default: +@@ -453,12 +453,12 @@ + switch (which_alternative) + { + case 0: +- return \"fmdrr%?\\t%P0, %Q1, %R1\"; ++ return \"vmov%?\\t%P0, %Q1, %R1\"; + case 1: +- return \"fmrrd%?\\t%Q0, %R0, %P1\"; ++ return \"vmov%?\\t%Q0, %R0, %P1\"; + case 2: + gcc_assert (TARGET_VFP_DOUBLE); +- return \"fconstd%?\\t%P0, #%G1\"; ++ return \"vmov%?.f64\\t%P0, %1\"; + case 3: case 4: + return output_move_vfp (operands); + case 5: case 6: case 8: +@@ -465,9 +465,9 @@ + return output_move_double (operands, true, NULL); + case 7: + if (TARGET_VFP_SINGLE) +- return \"fcpys%?\\t%0, %1\;fcpys%?\\t%p0, %p1\"; ++ return \"vmov%?.f32\\t%0, %1\;vmov%?.f32\\t%p0, %p1\"; + else +- return \"fcpyd%?\\t%P0, %P1\"; ++ return \"vmov%?.f64\\t%P0, %P1\"; + default: + abort (); + } +@@ -498,15 +498,15 @@ + (match_operand:SF 2 "s_register_operand" "t,0,t,?r,0,?r,t,0,t")))] + "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP" + "@ +- fcpys%D3\\t%0, %2 +- fcpys%d3\\t%0, %1 +- fcpys%D3\\t%0, %2\;fcpys%d3\\t%0, %1 +- fmsr%D3\\t%0, %2 +- fmsr%d3\\t%0, %1 +- fmsr%D3\\t%0, %2\;fmsr%d3\\t%0, %1 +- fmrs%D3\\t%0, %2 +- fmrs%d3\\t%0, %1 +- fmrs%D3\\t%0, %2\;fmrs%d3\\t%0, %1" ++ vmov%D3.f32\\t%0, %2 ++ vmov%d3.f32\\t%0, %1 ++ vmov%D3.f32\\t%0, %2\;vmov%d3.f32\\t%0, %1 ++ vmov%D3\\t%0, %2 ++ vmov%d3\\t%0, %1 ++ vmov%D3\\t%0, %2\;vmov%d3\\t%0, %1 ++ vmov%D3\\t%0, %2 ++ vmov%d3\\t%0, %1 ++ vmov%D3\\t%0, %2\;vmov%d3\\t%0, %1" + [(set_attr "conds" "use") + (set_attr "length" "4,4,8,4,4,8,4,4,8") + (set_attr "type" "fmov,fmov,fmov,f_mcr,f_mcr,f_mcr,f_mrc,f_mrc,f_mrc")] +@@ -521,15 +521,15 @@ + (match_operand:SF 2 "s_register_operand" "t,0,t,?r,0,?r,t,0,t")))] + "TARGET_THUMB2 && TARGET_HARD_FLOAT && TARGET_VFP && !arm_restrict_it" + "@ +- it\\t%D3\;fcpys%D3\\t%0, %2 +- it\\t%d3\;fcpys%d3\\t%0, %1 +- ite\\t%D3\;fcpys%D3\\t%0, %2\;fcpys%d3\\t%0, %1 +- it\\t%D3\;fmsr%D3\\t%0, %2 +- it\\t%d3\;fmsr%d3\\t%0, %1 +- ite\\t%D3\;fmsr%D3\\t%0, %2\;fmsr%d3\\t%0, %1 +- it\\t%D3\;fmrs%D3\\t%0, %2 +- it\\t%d3\;fmrs%d3\\t%0, %1 +- ite\\t%D3\;fmrs%D3\\t%0, %2\;fmrs%d3\\t%0, %1" ++ it\\t%D3\;vmov%D3.f32\\t%0, %2 ++ it\\t%d3\;vmov%d3.f32\\t%0, %1 ++ ite\\t%D3\;vmov%D3.f32\\t%0, %2\;vmov%d3.f32\\t%0, %1 ++ it\\t%D3\;vmov%D3\\t%0, %2 ++ it\\t%d3\;vmov%d3\\t%0, %1 ++ ite\\t%D3\;vmov%D3\\t%0, %2\;vmov%d3\\t%0, %1 ++ it\\t%D3\;vmov%D3\\t%0, %2 ++ it\\t%d3\;vmov%d3\\t%0, %1 ++ ite\\t%D3\;vmov%D3\\t%0, %2\;vmov%d3\\t%0, %1" + [(set_attr "conds" "use") + (set_attr "length" "6,6,10,6,6,10,6,6,10") + (set_attr "type" "fmov,fmov,fmov,f_mcr,f_mcr,f_mcr,f_mrc,f_mrc,f_mrc")] +@@ -544,15 +544,15 @@ + (match_operand:DF 2 "s_register_operand" "w,0,w,?r,0,?r,w,0,w")))] + "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "@ +- fcpyd%D3\\t%P0, %P2 +- fcpyd%d3\\t%P0, %P1 +- fcpyd%D3\\t%P0, %P2\;fcpyd%d3\\t%P0, %P1 +- fmdrr%D3\\t%P0, %Q2, %R2 +- fmdrr%d3\\t%P0, %Q1, %R1 +- fmdrr%D3\\t%P0, %Q2, %R2\;fmdrr%d3\\t%P0, %Q1, %R1 +- fmrrd%D3\\t%Q0, %R0, %P2 +- fmrrd%d3\\t%Q0, %R0, %P1 +- fmrrd%D3\\t%Q0, %R0, %P2\;fmrrd%d3\\t%Q0, %R0, %P1" ++ vmov%D3.f64\\t%P0, %P2 ++ vmov%d3.f64\\t%P0, %P1 ++ vmov%D3.f64\\t%P0, %P2\;vmov%d3.f64\\t%P0, %P1 ++ vmov%D3\\t%P0, %Q2, %R2 ++ vmov%d3\\t%P0, %Q1, %R1 ++ vmov%D3\\t%P0, %Q2, %R2\;vmov%d3\\t%P0, %Q1, %R1 ++ vmov%D3\\t%Q0, %R0, %P2 ++ vmov%d3\\t%Q0, %R0, %P1 ++ vmov%D3\\t%Q0, %R0, %P2\;vmov%d3\\t%Q0, %R0, %P1" + [(set_attr "conds" "use") + (set_attr "length" "4,4,8,4,4,8,4,4,8") + (set_attr "type" "ffarithd,ffarithd,ffarithd,f_mcr,f_mcr,f_mcr,f_mrrc,f_mrrc,f_mrrc")] +@@ -567,15 +567,15 @@ + (match_operand:DF 2 "s_register_operand" "w,0,w,?r,0,?r,w,0,w")))] + "TARGET_THUMB2 && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE && !arm_restrict_it" + "@ +- it\\t%D3\;fcpyd%D3\\t%P0, %P2 +- it\\t%d3\;fcpyd%d3\\t%P0, %P1 +- ite\\t%D3\;fcpyd%D3\\t%P0, %P2\;fcpyd%d3\\t%P0, %P1 +- it\t%D3\;fmdrr%D3\\t%P0, %Q2, %R2 +- it\t%d3\;fmdrr%d3\\t%P0, %Q1, %R1 +- ite\\t%D3\;fmdrr%D3\\t%P0, %Q2, %R2\;fmdrr%d3\\t%P0, %Q1, %R1 +- it\t%D3\;fmrrd%D3\\t%Q0, %R0, %P2 +- it\t%d3\;fmrrd%d3\\t%Q0, %R0, %P1 +- ite\\t%D3\;fmrrd%D3\\t%Q0, %R0, %P2\;fmrrd%d3\\t%Q0, %R0, %P1" ++ it\\t%D3\;vmov%D3.f64\\t%P0, %P2 ++ it\\t%d3\;vmov%d3.f64\\t%P0, %P1 ++ ite\\t%D3\;vmov%D3.f64\\t%P0, %P2\;vmov%d3.f64\\t%P0, %P1 ++ it\t%D3\;vmov%D3\\t%P0, %Q2, %R2 ++ it\t%d3\;vmov%d3\\t%P0, %Q1, %R1 ++ ite\\t%D3\;vmov%D3\\t%P0, %Q2, %R2\;vmov%d3\\t%P0, %Q1, %R1 ++ it\t%D3\;vmov%D3\\t%Q0, %R0, %P2 ++ it\t%d3\;vmov%d3\\t%Q0, %R0, %P1 ++ ite\\t%D3\;vmov%D3\\t%Q0, %R0, %P2\;vmov%d3\\t%Q0, %R0, %P1" + [(set_attr "conds" "use") + (set_attr "length" "6,6,10,6,6,10,6,6,10") + (set_attr "type" "ffarithd,ffarithd,ffarithd,f_mcr,f_mcr,f_mcrr,f_mrrc,f_mrrc,f_mrrc")] +@@ -588,7 +588,7 @@ + [(set (match_operand:SF 0 "s_register_operand" "=t") + (abs:SF (match_operand:SF 1 "s_register_operand" "t")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" +- "fabss%?\\t%0, %1" ++ "vabs%?.f32\\t%0, %1" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "ffariths")] +@@ -598,7 +598,7 @@ + [(set (match_operand:DF 0 "s_register_operand" "=w") + (abs:DF (match_operand:DF 1 "s_register_operand" "w")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" +- "fabsd%?\\t%P0, %P1" ++ "vabs%?.f64\\t%P0, %P1" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "ffarithd")] +@@ -609,7 +609,7 @@ + (neg:SF (match_operand:SF 1 "s_register_operand" "t,r")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" + "@ +- fnegs%?\\t%0, %1 ++ vneg%?.f32\\t%0, %1 + eor%?\\t%0, %1, #-2147483648" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") +@@ -621,7 +621,7 @@ + (neg:DF (match_operand:DF 1 "s_register_operand" "w,0,r")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "@ +- fnegd%?\\t%P0, %P1 ++ vneg%?.f64\\t%P0, %P1 + # + #" + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE && reload_completed +@@ -671,7 +671,7 @@ + (plus:SF (match_operand:SF 1 "s_register_operand" "t") + (match_operand:SF 2 "s_register_operand" "t")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" +- "fadds%?\\t%0, %1, %2" ++ "vadd%?.f32\\t%0, %1, %2" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "fadds")] +@@ -682,7 +682,7 @@ + (plus:DF (match_operand:DF 1 "s_register_operand" "w") + (match_operand:DF 2 "s_register_operand" "w")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" +- "faddd%?\\t%P0, %P1, %P2" ++ "vadd%?.f64\\t%P0, %P1, %P2" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "faddd")] +@@ -694,7 +694,7 @@ + (minus:SF (match_operand:SF 1 "s_register_operand" "t") + (match_operand:SF 2 "s_register_operand" "t")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" +- "fsubs%?\\t%0, %1, %2" ++ "vsub%?.f32\\t%0, %1, %2" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "fadds")] +@@ -705,7 +705,7 @@ + (minus:DF (match_operand:DF 1 "s_register_operand" "w") + (match_operand:DF 2 "s_register_operand" "w")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" +- "fsubd%?\\t%P0, %P1, %P2" ++ "vsub%?.f64\\t%P0, %P1, %P2" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "faddd")] +@@ -719,7 +719,7 @@ + (div:SF (match_operand:SF 1 "s_register_operand" "t") + (match_operand:SF 2 "s_register_operand" "t")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" +- "fdivs%?\\t%0, %1, %2" ++ "vdiv%?.f32\\t%0, %1, %2" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "fdivs")] +@@ -730,7 +730,7 @@ + (div:DF (match_operand:DF 1 "s_register_operand" "w") + (match_operand:DF 2 "s_register_operand" "w")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" +- "fdivd%?\\t%P0, %P1, %P2" ++ "vdiv%?.f64\\t%P0, %P1, %P2" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "fdivd")] +@@ -744,7 +744,7 @@ + (mult:SF (match_operand:SF 1 "s_register_operand" "t") + (match_operand:SF 2 "s_register_operand" "t")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" +- "fmuls%?\\t%0, %1, %2" ++ "vmul%?.f32\\t%0, %1, %2" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "fmuls")] +@@ -755,7 +755,7 @@ + (mult:DF (match_operand:DF 1 "s_register_operand" "w") + (match_operand:DF 2 "s_register_operand" "w")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" +- "fmuld%?\\t%P0, %P1, %P2" ++ "vmul%?.f64\\t%P0, %P1, %P2" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "fmuld")] +@@ -766,7 +766,7 @@ + (mult:SF (neg:SF (match_operand:SF 1 "s_register_operand" "t")) + (match_operand:SF 2 "s_register_operand" "t")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" +- "fnmuls%?\\t%0, %1, %2" ++ "vnmul%?.f32\\t%0, %1, %2" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "fmuls")] +@@ -777,7 +777,7 @@ + (mult:DF (neg:DF (match_operand:DF 1 "s_register_operand" "w")) + (match_operand:DF 2 "s_register_operand" "w")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" +- "fnmuld%?\\t%P0, %P1, %P2" ++ "vnmul%?.f64\\t%P0, %P1, %P2" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "fmuld")] +@@ -793,7 +793,7 @@ + (match_operand:SF 3 "s_register_operand" "t")) + (match_operand:SF 1 "s_register_operand" "0")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" +- "fmacs%?\\t%0, %2, %3" ++ "vmla%?.f32\\t%0, %2, %3" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "fmacs")] +@@ -805,7 +805,7 @@ + (match_operand:DF 3 "s_register_operand" "w")) + (match_operand:DF 1 "s_register_operand" "0")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" +- "fmacd%?\\t%P0, %P2, %P3" ++ "vmla%?.f64\\t%P0, %P2, %P3" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "fmacd")] +@@ -818,7 +818,7 @@ + (match_operand:SF 3 "s_register_operand" "t")) + (match_operand:SF 1 "s_register_operand" "0")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" +- "fmscs%?\\t%0, %2, %3" ++ "vnmls%?.f32\\t%0, %2, %3" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "fmacs")] +@@ -830,7 +830,7 @@ + (match_operand:DF 3 "s_register_operand" "w")) + (match_operand:DF 1 "s_register_operand" "0")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" +- "fmscd%?\\t%P0, %P2, %P3" ++ "vnmls%?.f64\\t%P0, %P2, %P3" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "fmacd")] +@@ -843,7 +843,7 @@ + (mult:SF (match_operand:SF 2 "s_register_operand" "t") + (match_operand:SF 3 "s_register_operand" "t"))))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" +- "fnmacs%?\\t%0, %2, %3" ++ "vmls%?.f32\\t%0, %2, %3" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "fmacs")] +@@ -855,7 +855,7 @@ + (mult:DF (match_operand:DF 2 "s_register_operand" "w") + (match_operand:DF 3 "s_register_operand" "w"))))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" +- "fnmacd%?\\t%P0, %P2, %P3" ++ "vmls%?.f64\\t%P0, %P2, %P3" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "fmacd")] +@@ -870,7 +870,7 @@ + (match_operand:SF 3 "s_register_operand" "t")) + (match_operand:SF 1 "s_register_operand" "0")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" +- "fnmscs%?\\t%0, %2, %3" ++ "vnmla%?.f32\\t%0, %2, %3" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "fmacs")] +@@ -883,7 +883,7 @@ + (match_operand:DF 3 "s_register_operand" "w")) + (match_operand:DF 1 "s_register_operand" "0")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" +- "fnmscd%?\\t%P0, %P2, %P3" ++ "vnmla%?.f64\\t%P0, %P2, %P3" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "fmacd")] +@@ -948,7 +948,7 @@ + [(set (match_operand:DF 0 "s_register_operand" "=w") + (float_extend:DF (match_operand:SF 1 "s_register_operand" "t")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" +- "fcvtds%?\\t%P0, %1" ++ "vcvt%?.f64.f32\\t%P0, %1" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "f_cvt")] +@@ -958,7 +958,7 @@ + [(set (match_operand:SF 0 "s_register_operand" "=t") + (float_truncate:SF (match_operand:DF 1 "s_register_operand" "w")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" +- "fcvtsd%?\\t%0, %P1" ++ "vcvt%?.f32.f64\\t%0, %P1" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "f_cvt")] +@@ -988,7 +988,7 @@ + [(set (match_operand:SI 0 "s_register_operand" "=t") + (fix:SI (fix:SF (match_operand:SF 1 "s_register_operand" "t"))))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" +- "ftosizs%?\\t%0, %1" ++ "vcvt%?.s32.f32\\t%0, %1" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "f_cvtf2i")] +@@ -998,7 +998,7 @@ + [(set (match_operand:SI 0 "s_register_operand" "=t") + (fix:SI (fix:DF (match_operand:DF 1 "s_register_operand" "w"))))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" +- "ftosizd%?\\t%0, %P1" ++ "vcvt%?.s32.f64\\t%0, %P1" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "f_cvtf2i")] +@@ -1009,7 +1009,7 @@ + [(set (match_operand:SI 0 "s_register_operand" "=t") + (unsigned_fix:SI (fix:SF (match_operand:SF 1 "s_register_operand" "t"))))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" +- "ftouizs%?\\t%0, %1" ++ "vcvt%?.u32.f32\\t%0, %1" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "f_cvtf2i")] +@@ -1019,7 +1019,7 @@ + [(set (match_operand:SI 0 "s_register_operand" "=t") + (unsigned_fix:SI (fix:DF (match_operand:DF 1 "s_register_operand" "t"))))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" +- "ftouizd%?\\t%0, %P1" ++ "vcvt%?.u32.f64\\t%0, %P1" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "f_cvtf2i")] +@@ -1030,7 +1030,7 @@ + [(set (match_operand:SF 0 "s_register_operand" "=t") + (float:SF (match_operand:SI 1 "s_register_operand" "t")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" +- "fsitos%?\\t%0, %1" ++ "vcvt%?.f32.s32\\t%0, %1" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "f_cvti2f")] +@@ -1040,7 +1040,7 @@ + [(set (match_operand:DF 0 "s_register_operand" "=w") + (float:DF (match_operand:SI 1 "s_register_operand" "t")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" +- "fsitod%?\\t%P0, %1" ++ "vcvt%?.f64.s32\\t%P0, %1" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "f_cvti2f")] +@@ -1051,7 +1051,7 @@ + [(set (match_operand:SF 0 "s_register_operand" "=t") + (unsigned_float:SF (match_operand:SI 1 "s_register_operand" "t")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" +- "fuitos%?\\t%0, %1" ++ "vcvt%?.f32.u32\\t%0, %1" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "f_cvti2f")] +@@ -1061,7 +1061,7 @@ + [(set (match_operand:DF 0 "s_register_operand" "=w") + (unsigned_float:DF (match_operand:SI 1 "s_register_operand" "t")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" +- "fuitod%?\\t%P0, %1" ++ "vcvt%?.f64.u32\\t%P0, %1" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "f_cvti2f")] +@@ -1074,7 +1074,7 @@ + [(set (match_operand:SF 0 "s_register_operand" "=t") + (sqrt:SF (match_operand:SF 1 "s_register_operand" "t")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" +- "fsqrts%?\\t%0, %1" ++ "vsqrt%?.f32\\t%0, %1" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "fsqrts")] +@@ -1084,7 +1084,7 @@ + [(set (match_operand:DF 0 "s_register_operand" "=w") + (sqrt:DF (match_operand:DF 1 "s_register_operand" "w")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" +- "fsqrtd%?\\t%P0, %P1" ++ "vsqrt%?.f64\\t%P0, %P1" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "fsqrtd")] +@@ -1097,7 +1097,7 @@ + [(set (reg CC_REGNUM) + (reg VFPCC_REGNUM))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" +- "fmstat%?" ++ "vmrs%?\\tAPSR_nzcv, FPSCR" + [(set_attr "conds" "set") + (set_attr "type" "f_flag")] + ) +@@ -1165,6 +1165,9 @@ + + ;; Comparison patterns + ++;; In the compare with FP zero case the ARM Architecture Reference Manual ++;; specifies the immediate to be #0.0. However, some buggy assemblers only ++;; accept #0. We don't want to autodetect broken assemblers, so output #0. + (define_insn "*cmpsf_vfp" + [(set (reg:CCFP VFPCC_REGNUM) + (compare:CCFP (match_operand:SF 0 "s_register_operand" "t,t") +@@ -1171,8 +1174,8 @@ + (match_operand:SF 1 "vfp_compare_operand" "t,G")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" + "@ +- fcmps%?\\t%0, %1 +- fcmpzs%?\\t%0" ++ vcmp%?.f32\\t%0, %1 ++ vcmp%?.f32\\t%0, #0" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "fcmps")] +@@ -1184,8 +1187,8 @@ + (match_operand:SF 1 "vfp_compare_operand" "t,G")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" + "@ +- fcmpes%?\\t%0, %1 +- fcmpezs%?\\t%0" ++ vcmpe%?.f32\\t%0, %1 ++ vcmpe%?.f32\\t%0, #0" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "fcmps")] +@@ -1197,8 +1200,8 @@ + (match_operand:DF 1 "vfp_compare_operand" "w,G")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "@ +- fcmpd%?\\t%P0, %P1 +- fcmpzd%?\\t%P0" ++ vcmp%?.f64\\t%P0, %P1 ++ vcmp%?.f64\\t%P0, #0" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "fcmpd")] +@@ -1210,8 +1213,8 @@ + (match_operand:DF 1 "vfp_compare_operand" "w,G")))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "@ +- fcmped%?\\t%P0, %P1 +- fcmpezd%?\\t%P0" ++ vcmpe%?.f64\\t%P0, %P1 ++ vcmpe%?.f64\\t%P0, #0" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "type" "fcmpd")] +@@ -1272,7 +1275,7 @@ + (unspec:BLK [(match_operand:DF 1 "vfp_register_operand" "")] + UNSPEC_PUSH_MULT))])] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" +- "* return vfp_output_fstmd (operands);" ++ "* return vfp_output_vstmd (operands);" + [(set_attr "type" "f_stored")] + ) + +@@ -1285,7 +1288,7 @@ + (unspec:SDF [(match_operand:SDF 1 + "register_operand" "")] + VRINT))] +- "TARGET_HARD_FLOAT && TARGET_FPU_ARMV8 " ++ "TARGET_HARD_FLOAT && TARGET_VFP5 " + "vrint%?.\\t%0, %1" + [(set_attr "predicable" "") + (set_attr "predicable_short_it" "no") +@@ -1293,6 +1296,18 @@ + (set_attr "conds" "")] + ) + ++;; Implements the lround, lfloor and lceil optabs. ++(define_insn "lsi2" ++ [(set (match_operand:SI 0 "register_operand" "=t") ++ (FIXUORS:SI (unspec:SDF ++ [(match_operand:SDF 1 ++ "register_operand" "")] VCVT)))] ++ "TARGET_HARD_FLOAT && TARGET_FPU_ARMV8 " ++ "vcvt%?.32.\\t%0, %1" ++ [(set_attr "predicable" "no") ++ (set_attr "type" "f_cvtf2i")] ++) ++ + ;; MIN_EXPR and MAX_EXPR eventually map to 'smin' and 'smax' in RTL. + ;; The 'smax' and 'smin' RTL standard pattern names do not specify which + ;; operand will be returned when both operands are zero (i.e. they may not +@@ -1304,7 +1319,7 @@ + [(set (match_operand:SDF 0 "register_operand" "=") + (smax:SDF (match_operand:SDF 1 "register_operand" "") + (match_operand:SDF 2 "register_operand" "")))] +- "TARGET_HARD_FLOAT && TARGET_FPU_ARMV8 " ++ "TARGET_HARD_FLOAT && TARGET_VFP5 " + "vmaxnm.\\t%0, %1, %2" + [(set_attr "type" "f_minmax") + (set_attr "conds" "unconditional")] +@@ -1314,12 +1329,28 @@ + [(set (match_operand:SDF 0 "register_operand" "=") + (smin:SDF (match_operand:SDF 1 "register_operand" "") + (match_operand:SDF 2 "register_operand" "")))] +- "TARGET_HARD_FLOAT && TARGET_FPU_ARMV8 " ++ "TARGET_HARD_FLOAT && TARGET_VFP5 " + "vminnm.\\t%0, %1, %2" + [(set_attr "type" "f_minmax") + (set_attr "conds" "unconditional")] + ) + ++;; Write Floating-point Status and Control Register. ++(define_insn "set_fpscr" ++ [(unspec_volatile [(match_operand:SI 0 "register_operand" "r")] VUNSPEC_SET_FPSCR)] ++ "TARGET_VFP && TARGET_HARD_FLOAT" ++ "mcr\\tp10, 7, %0, cr1, cr0, 0\\t @SET_FPSCR" ++ [(set_attr "type" "mrs")]) ++ ++;; Read Floating-point Status and Control Register. ++(define_insn "get_fpscr" ++ [(set (match_operand:SI 0 "register_operand" "=r") ++ (unspec_volatile:SI [(const_int 0)] VUNSPEC_GET_FPSCR))] ++ "TARGET_VFP && TARGET_HARD_FLOAT" ++ "mrc\\tp10, 7, %0, cr1, cr0, 0\\t @GET_FPSCR" ++ [(set_attr "type" "mrs")]) ++ ++ + ;; Unimplemented insns: + ;; fldm* + ;; fstm* +--- a/src/gcc/config/arm/neon.md ++++ b/src/gcc/config/arm/neon.md +@@ -296,7 +296,7 @@ + UNSPEC_MISALIGNED_ACCESS))] + "TARGET_NEON && !BYTES_BIG_ENDIAN && unaligned_access" + "vld1.\t{%q0}, %A1" +- [(set_attr "type" "neon_store1_1reg")]) ++ [(set_attr "type" "neon_load1_1reg")]) + + (define_insn "vec_set_internal" + [(set (match_operand:VD 0 "s_register_operand" "=w,w") +@@ -629,6 +629,17 @@ + [(set_attr "type" "neon_fp_round_")] + ) + ++(define_insn "neon_vcvt" ++ [(set (match_operand: 0 "register_operand" "=w") ++ (FIXUORS: (unspec:VCVTF ++ [(match_operand:VCVTF 1 "register_operand" "w")] ++ NEON_VCVT)))] ++ "TARGET_NEON && TARGET_FPU_ARMV8" ++ "vcvt.32.f32\\t%0, %1" ++ [(set_attr "type" "neon_fp_to_int_") ++ (set_attr "predicable" "no")] ++) ++ + (define_insn "ior3" + [(set (match_operand:VDQ 0 "s_register_operand" "=w,w") + (ior:VDQ (match_operand:VDQ 1 "s_register_operand" "w,0") +@@ -1041,7 +1052,9 @@ + } + else + { +- if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) == 1) ++ if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) == 1 ++ && (!reg_overlap_mentioned_p (operands[0], operands[1]) ++ || REGNO (operands[0]) == REGNO (operands[1]))) + /* This clobbers CC. */ + emit_insn (gen_arm_ashldi3_1bit (operands[0], operands[1])); + else +@@ -1141,7 +1154,9 @@ + } + else + { +- if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) == 1) ++ if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) == 1 ++ && (!reg_overlap_mentioned_p (operands[0], operands[1]) ++ || REGNO (operands[0]) == REGNO (operands[1]))) + /* This clobbers CC. */ + emit_insn (gen_arm_di3_1bit (operands[0], operands[1])); + else +@@ -1334,33 +1349,47 @@ + + ;; Reduction operations + +-(define_expand "reduc_splus_" +- [(match_operand:VD 0 "s_register_operand" "") ++(define_expand "reduc_plus_scal_" ++ [(match_operand: 0 "nonimmediate_operand" "") + (match_operand:VD 1 "s_register_operand" "")] + "TARGET_NEON && (! || flag_unsafe_math_optimizations)" + { +- neon_pairwise_reduce (operands[0], operands[1], mode, ++ rtx vec = gen_reg_rtx (mode); ++ neon_pairwise_reduce (vec, operands[1], mode, + &gen_neon_vpadd_internal); ++ /* The same result is actually computed into every element. */ ++ emit_insn (gen_vec_extract (operands[0], vec, const0_rtx)); + DONE; + }) + +-(define_expand "reduc_splus_" +- [(match_operand:VQ 0 "s_register_operand" "") ++(define_expand "reduc_plus_scal_" ++ [(match_operand: 0 "nonimmediate_operand" "") + (match_operand:VQ 1 "s_register_operand" "")] + "TARGET_NEON && (! || flag_unsafe_math_optimizations) + && !BYTES_BIG_ENDIAN" + { + rtx step1 = gen_reg_rtx (mode); +- rtx res_d = gen_reg_rtx (mode); + + emit_insn (gen_quad_halves_plus (step1, operands[1])); +- emit_insn (gen_reduc_splus_ (res_d, step1)); +- emit_insn (gen_move_lo_quad_ (operands[0], res_d)); ++ emit_insn (gen_reduc_plus_scal_ (operands[0], step1)); + + DONE; + }) + +-(define_insn "reduc_splus_v2di" ++(define_expand "reduc_plus_scal_v2di" ++ [(match_operand:DI 0 "nonimmediate_operand" "=w") ++ (match_operand:V2DI 1 "s_register_operand" "")] ++ "TARGET_NEON && !BYTES_BIG_ENDIAN" ++{ ++ rtx vec = gen_reg_rtx (V2DImode); ++ ++ emit_insn (gen_arm_reduc_plus_internal_v2di (vec, operands[1])); ++ emit_insn (gen_vec_extractv2di (operands[0], vec, const0_rtx)); ++ ++ DONE; ++}) ++ ++(define_insn "arm_reduc_plus_internal_v2di" + [(set (match_operand:V2DI 0 "s_register_operand" "=w") + (unspec:V2DI [(match_operand:V2DI 1 "s_register_operand" "w")] + UNSPEC_VPADD))] +@@ -1369,115 +1398,109 @@ + [(set_attr "type" "neon_add_q")] + ) + +-;; NEON does not distinguish between signed and unsigned addition except on +-;; widening operations. +-(define_expand "reduc_uplus_" +- [(match_operand:VDQI 0 "s_register_operand" "") +- (match_operand:VDQI 1 "s_register_operand" "")] +- "TARGET_NEON && ( || !BYTES_BIG_ENDIAN)" +-{ +- emit_insn (gen_reduc_splus_ (operands[0], operands[1])); +- DONE; +-}) +- +-(define_expand "reduc_smin_" +- [(match_operand:VD 0 "s_register_operand" "") ++(define_expand "reduc_smin_scal_" ++ [(match_operand: 0 "nonimmediate_operand" "") + (match_operand:VD 1 "s_register_operand" "")] + "TARGET_NEON && (! || flag_unsafe_math_optimizations)" + { +- neon_pairwise_reduce (operands[0], operands[1], mode, ++ rtx vec = gen_reg_rtx (mode); ++ ++ neon_pairwise_reduce (vec, operands[1], mode, + &gen_neon_vpsmin); ++ /* The result is computed into every element of the vector. */ ++ emit_insn (gen_vec_extract (operands[0], vec, const0_rtx)); + DONE; + }) + +-(define_expand "reduc_smin_" +- [(match_operand:VQ 0 "s_register_operand" "") ++(define_expand "reduc_smin_scal_" ++ [(match_operand: 0 "nonimmediate_operand" "") + (match_operand:VQ 1 "s_register_operand" "")] + "TARGET_NEON && (! || flag_unsafe_math_optimizations) + && !BYTES_BIG_ENDIAN" + { + rtx step1 = gen_reg_rtx (mode); +- rtx res_d = gen_reg_rtx (mode); + + emit_insn (gen_quad_halves_smin (step1, operands[1])); +- emit_insn (gen_reduc_smin_ (res_d, step1)); +- emit_insn (gen_move_lo_quad_ (operands[0], res_d)); ++ emit_insn (gen_reduc_smin_scal_ (operands[0], step1)); + + DONE; + }) + +-(define_expand "reduc_smax_" +- [(match_operand:VD 0 "s_register_operand" "") ++(define_expand "reduc_smax_scal_" ++ [(match_operand: 0 "nonimmediate_operand" "") + (match_operand:VD 1 "s_register_operand" "")] + "TARGET_NEON && (! || flag_unsafe_math_optimizations)" + { +- neon_pairwise_reduce (operands[0], operands[1], mode, ++ rtx vec = gen_reg_rtx (mode); ++ neon_pairwise_reduce (vec, operands[1], mode, + &gen_neon_vpsmax); ++ /* The result is computed into every element of the vector. */ ++ emit_insn (gen_vec_extract (operands[0], vec, const0_rtx)); + DONE; + }) + +-(define_expand "reduc_smax_" +- [(match_operand:VQ 0 "s_register_operand" "") ++(define_expand "reduc_smax_scal_" ++ [(match_operand: 0 "nonimmediate_operand" "") + (match_operand:VQ 1 "s_register_operand" "")] + "TARGET_NEON && (! || flag_unsafe_math_optimizations) + && !BYTES_BIG_ENDIAN" + { + rtx step1 = gen_reg_rtx (mode); +- rtx res_d = gen_reg_rtx (mode); + + emit_insn (gen_quad_halves_smax (step1, operands[1])); +- emit_insn (gen_reduc_smax_ (res_d, step1)); +- emit_insn (gen_move_lo_quad_ (operands[0], res_d)); ++ emit_insn (gen_reduc_smax_scal_ (operands[0], step1)); + + DONE; + }) + +-(define_expand "reduc_umin_" +- [(match_operand:VDI 0 "s_register_operand" "") ++(define_expand "reduc_umin_scal_" ++ [(match_operand: 0 "nonimmediate_operand" "") + (match_operand:VDI 1 "s_register_operand" "")] + "TARGET_NEON" + { +- neon_pairwise_reduce (operands[0], operands[1], mode, ++ rtx vec = gen_reg_rtx (mode); ++ neon_pairwise_reduce (vec, operands[1], mode, + &gen_neon_vpumin); ++ /* The result is computed into every element of the vector. */ ++ emit_insn (gen_vec_extract (operands[0], vec, const0_rtx)); + DONE; + }) + +-(define_expand "reduc_umin_" +- [(match_operand:VQI 0 "s_register_operand" "") ++(define_expand "reduc_umin_scal_" ++ [(match_operand: 0 "nonimmediate_operand" "") + (match_operand:VQI 1 "s_register_operand" "")] + "TARGET_NEON && !BYTES_BIG_ENDIAN" + { + rtx step1 = gen_reg_rtx (mode); +- rtx res_d = gen_reg_rtx (mode); + + emit_insn (gen_quad_halves_umin (step1, operands[1])); +- emit_insn (gen_reduc_umin_ (res_d, step1)); +- emit_insn (gen_move_lo_quad_ (operands[0], res_d)); ++ emit_insn (gen_reduc_umin_scal_ (operands[0], step1)); + + DONE; + }) + +-(define_expand "reduc_umax_" +- [(match_operand:VDI 0 "s_register_operand" "") ++(define_expand "reduc_umax_scal_" ++ [(match_operand: 0 "nonimmediate_operand" "") + (match_operand:VDI 1 "s_register_operand" "")] + "TARGET_NEON" + { +- neon_pairwise_reduce (operands[0], operands[1], mode, ++ rtx vec = gen_reg_rtx (mode); ++ neon_pairwise_reduce (vec, operands[1], mode, + &gen_neon_vpumax); ++ /* The result is computed into every element of the vector. */ ++ emit_insn (gen_vec_extract (operands[0], vec, const0_rtx)); + DONE; + }) + +-(define_expand "reduc_umax_" +- [(match_operand:VQI 0 "s_register_operand" "") ++(define_expand "reduc_umax_scal_" ++ [(match_operand: 0 "nonimmediate_operand" "") + (match_operand:VQI 1 "s_register_operand" "")] + "TARGET_NEON && !BYTES_BIG_ENDIAN" + { + rtx step1 = gen_reg_rtx (mode); +- rtx res_d = gen_reg_rtx (mode); + + emit_insn (gen_quad_halves_umax (step1, operands[1])); +- emit_insn (gen_reduc_umax_ (res_d, step1)); +- emit_insn (gen_move_lo_quad_ (operands[0], res_d)); ++ emit_insn (gen_reduc_umax_scal_ (operands[0], step1)); + + DONE; + }) +@@ -1842,9 +1865,9 @@ + ; good for plain vadd, vaddq. + + (define_expand "neon_vadd" +- [(match_operand:VDQX 0 "s_register_operand" "=w") +- (match_operand:VDQX 1 "s_register_operand" "w") +- (match_operand:VDQX 2 "s_register_operand" "w") ++ [(match_operand:VCVTF 0 "s_register_operand" "=w") ++ (match_operand:VCVTF 1 "s_register_operand" "w") ++ (match_operand:VCVTF 2 "s_register_operand" "w") + (match_operand:SI 3 "immediate_operand" "i")] + "TARGET_NEON" + { +@@ -1869,9 +1892,9 @@ + ; Used for intrinsics when flag_unsafe_math_optimizations is false. + + (define_insn "neon_vadd_unspec" +- [(set (match_operand:VDQX 0 "s_register_operand" "=w") +- (unspec:VDQX [(match_operand:VDQX 1 "s_register_operand" "w") +- (match_operand:VDQX 2 "s_register_operand" "w")] ++ [(set (match_operand:VCVTF 0 "s_register_operand" "=w") ++ (unspec:VCVTF [(match_operand:VCVTF 1 "s_register_operand" "w") ++ (match_operand:VCVTF 2 "s_register_operand" "w")] + UNSPEC_VADD))] + "TARGET_NEON" + "vadd.\t%0, %1, %2" +@@ -2132,9 +2155,9 @@ + ) + + (define_expand "neon_vsub" +- [(match_operand:VDQX 0 "s_register_operand" "=w") +- (match_operand:VDQX 1 "s_register_operand" "w") +- (match_operand:VDQX 2 "s_register_operand" "w") ++ [(match_operand:VCVTF 0 "s_register_operand" "=w") ++ (match_operand:VCVTF 1 "s_register_operand" "w") ++ (match_operand:VCVTF 2 "s_register_operand" "w") + (match_operand:SI 3 "immediate_operand" "i")] + "TARGET_NEON" + { +@@ -2149,9 +2172,9 @@ + ; Used for intrinsics when flag_unsafe_math_optimizations is false. + + (define_insn "neon_vsub_unspec" +- [(set (match_operand:VDQX 0 "s_register_operand" "=w") +- (unspec:VDQX [(match_operand:VDQX 1 "s_register_operand" "w") +- (match_operand:VDQX 2 "s_register_operand" "w")] ++ [(set (match_operand:VCVTF 0 "s_register_operand" "=w") ++ (unspec:VCVTF [(match_operand:VCVTF 1 "s_register_operand" "w") ++ (match_operand:VCVTF 2 "s_register_operand" "w")] + UNSPEC_VSUB))] + "TARGET_NEON" + "vsub.\t%0, %1, %2" +@@ -2547,6 +2570,14 @@ + [(set_attr "type" "neon_qabs")] + ) + ++(define_insn "neon_bswap" ++ [(set (match_operand:VDQHSD 0 "register_operand" "=w") ++ (bswap:VDQHSD (match_operand:VDQHSD 1 "register_operand" "w")))] ++ "TARGET_NEON" ++ "vrev.8\\t%0, %1" ++ [(set_attr "type" "neon_rev")] ++) ++ + (define_expand "neon_vneg" + [(match_operand:VDQW 0 "s_register_operand" "") + (match_operand:VDQW 1 "s_register_operand" "") +@@ -2557,6 +2588,33 @@ + DONE; + }) + ++(define_expand "neon_copysignf" ++ [(match_operand:VCVTF 0 "register_operand") ++ (match_operand:VCVTF 1 "register_operand") ++ (match_operand:VCVTF 2 "register_operand")] ++ "TARGET_NEON" ++ "{ ++ rtx v_bitmask_cast; ++ rtx v_bitmask = gen_reg_rtx (mode); ++ int i, n_elt = GET_MODE_NUNITS (mode); ++ rtvec v = rtvec_alloc (n_elt); ++ ++ /* Create bitmask for vector select. */ ++ for (i = 0; i < n_elt; ++i) ++ RTVEC_ELT (v, i) = GEN_INT (0x80000000); ++ ++ emit_move_insn (v_bitmask, ++ gen_rtx_CONST_VECTOR (mode, v)); ++ emit_move_insn (operands[0], operands[2]); ++ v_bitmask_cast = simplify_gen_subreg (mode, v_bitmask, ++ mode, 0); ++ emit_insn (gen_neon_vbsl (operands[0], v_bitmask_cast, operands[0], ++ operands[1])); ++ ++ DONE; ++ }" ++) ++ + (define_insn "neon_vqneg" + [(set (match_operand:VDQIW 0 "s_register_operand" "=w") + (unspec:VDQIW [(match_operand:VDQIW 1 "s_register_operand" "w") +@@ -4140,17 +4198,6 @@ + [(set_attr "type" "neon_permute")] + ) + +-(define_expand "neon_vtrn" +- [(match_operand:SI 0 "s_register_operand" "r") +- (match_operand:VDQW 1 "s_register_operand" "w") +- (match_operand:VDQW 2 "s_register_operand" "w")] +- "TARGET_NEON" +-{ +- neon_emit_pair_result_insn (mode, gen_neon_vtrn_internal, +- operands[0], operands[1], operands[2]); +- DONE; +-}) +- + (define_expand "neon_vzip_internal" + [(parallel + [(set (match_operand:VDQW 0 "s_register_operand" "") +@@ -4177,17 +4224,6 @@ + [(set_attr "type" "neon_zip")] + ) + +-(define_expand "neon_vzip" +- [(match_operand:SI 0 "s_register_operand" "r") +- (match_operand:VDQW 1 "s_register_operand" "w") +- (match_operand:VDQW 2 "s_register_operand" "w")] +- "TARGET_NEON" +-{ +- neon_emit_pair_result_insn (mode, gen_neon_vzip_internal, +- operands[0], operands[1], operands[2]); +- DONE; +-}) +- + (define_expand "neon_vuzp_internal" + [(parallel + [(set (match_operand:VDQW 0 "s_register_operand" "") +@@ -4214,17 +4250,6 @@ + [(set_attr "type" "neon_zip")] + ) + +-(define_expand "neon_vuzp" +- [(match_operand:SI 0 "s_register_operand" "r") +- (match_operand:VDQW 1 "s_register_operand" "w") +- (match_operand:VDQW 2 "s_register_operand" "w")] +- "TARGET_NEON" +-{ +- neon_emit_pair_result_insn (mode, gen_neon_vuzp_internal, +- operands[0], operands[1], operands[2]); +- DONE; +-}) +- + (define_expand "neon_vreinterpretv8qi" + [(match_operand:V8QI 0 "s_register_operand" "") + (match_operand:VDX 1 "s_register_operand" "")] +@@ -5357,61 +5382,6 @@ + [(set_attr "type" "neon_store4_4reg")] + ) + +-(define_expand "neon_vand" +- [(match_operand:VDQX 0 "s_register_operand" "") +- (match_operand:VDQX 1 "s_register_operand" "") +- (match_operand:VDQX 2 "neon_inv_logic_op2" "") +- (match_operand:SI 3 "immediate_operand" "")] +- "TARGET_NEON" +-{ +- emit_insn (gen_and3 (operands[0], operands[1], operands[2])); +- DONE; +-}) +- +-(define_expand "neon_vorr" +- [(match_operand:VDQX 0 "s_register_operand" "") +- (match_operand:VDQX 1 "s_register_operand" "") +- (match_operand:VDQX 2 "neon_logic_op2" "") +- (match_operand:SI 3 "immediate_operand" "")] +- "TARGET_NEON" +-{ +- emit_insn (gen_ior3 (operands[0], operands[1], operands[2])); +- DONE; +-}) +- +-(define_expand "neon_veor" +- [(match_operand:VDQX 0 "s_register_operand" "") +- (match_operand:VDQX 1 "s_register_operand" "") +- (match_operand:VDQX 2 "s_register_operand" "") +- (match_operand:SI 3 "immediate_operand" "")] +- "TARGET_NEON" +-{ +- emit_insn (gen_xor3 (operands[0], operands[1], operands[2])); +- DONE; +-}) +- +-(define_expand "neon_vbic" +- [(match_operand:VDQX 0 "s_register_operand" "") +- (match_operand:VDQX 1 "s_register_operand" "") +- (match_operand:VDQX 2 "neon_logic_op2" "") +- (match_operand:SI 3 "immediate_operand" "")] +- "TARGET_NEON" +-{ +- emit_insn (gen_bic3_neon (operands[0], operands[1], operands[2])); +- DONE; +-}) +- +-(define_expand "neon_vorn" +- [(match_operand:VDQX 0 "s_register_operand" "") +- (match_operand:VDQX 1 "s_register_operand" "") +- (match_operand:VDQX 2 "neon_inv_logic_op2" "") +- (match_operand:SI 3 "immediate_operand" "")] +- "TARGET_NEON" +-{ +- emit_insn (gen_orn3_neon (operands[0], operands[1], operands[2])); +- DONE; +-}) +- + (define_insn "neon_vec_unpack_lo_" + [(set (match_operand: 0 "register_operand" "=w") + (SE: (vec_select: +--- a/src/gcc/config/arm/types.md ++++ b/src/gcc/config/arm/types.md +@@ -66,7 +66,6 @@ + ; f_mrc transfer vfp to arm reg. + ; f_mrrc transfer vfp to two arm regs. + ; f_rint[d,s] double/single floating point rount to integral. +-; f_sel[d,s] double/single floating byte select. + ; f_store[d,s] double/single store to memory. Used for VFP unit. + ; fadd[d,s] double/single floating-point scalar addition. + ; fcmp[d,s] double/single floating-point compare. +@@ -571,8 +570,6 @@ + f_mrrc,\ + f_rintd,\ + f_rints,\ +- f_seld,\ +- f_sels,\ + f_stored,\ + f_stores,\ + faddd,\ +--- a/src/gcc/config/arm/arm_neon_builtins.def ++++ b/src/gcc/config/arm/arm_neon_builtins.def +@@ -18,8 +18,7 @@ + along with GCC; see the file COPYING3. If not see + . */ + +-VAR10 (BINOP, vadd, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), ++VAR2 (BINOP, vadd, v2sf, v4sf), + VAR3 (BINOP, vaddl, v8qi, v4hi, v2si), + VAR3 (BINOP, vaddw, v8qi, v4hi, v2si), + VAR6 (BINOP, vhadd, v8qi, v4hi, v2si, v16qi, v8hi, v4si), +@@ -54,7 +53,7 @@ + VAR8 (SHIFTIMM, vqshlu_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), + VAR3 (SHIFTIMM, vshll_n, v8qi, v4hi, v2si), + VAR8 (SHIFTACC, vsra_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), +-VAR10 (BINOP, vsub, v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), ++VAR2 (BINOP, vsub, v2sf, v4sf), + VAR3 (BINOP, vsubl, v8qi, v4hi, v2si), + VAR3 (BINOP, vsubw, v8qi, v4hi, v2si), + VAR8 (BINOP, vqsub, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), +@@ -89,6 +88,7 @@ + VAR6 (UNOP, vqneg, v8qi, v4hi, v2si, v16qi, v8hi, v4si), + VAR6 (UNOP, vcls, v8qi, v4hi, v2si, v16qi, v8hi, v4si), + VAR6 (UNOP, vclz, v8qi, v4hi, v2si, v16qi, v8hi, v4si), ++VAR5 (BSWAP, bswap, v4hi, v8hi, v2si, v4si, v2di), + VAR2 (UNOP, vcnt, v8qi, v16qi), + VAR4 (UNOP, vrecpe, v2si, v2sf, v4si, v4sf), + VAR4 (UNOP, vrsqrte, v2si, v2sf, v4si, v4sf), +@@ -135,6 +135,7 @@ + VAR1 (FLOAT_NARROW, vcvtv4hf, v4sf), + VAR10 (SELECT, vbsl, + v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), ++VAR2 (COPYSIGNF, copysignf, v2sf, v4sf), + VAR2 (RINT, vrintn, v2sf, v4sf), + VAR2 (RINT, vrinta, v2sf, v4sf), + VAR2 (RINT, vrintp, v2sf, v4sf), +@@ -141,6 +142,18 @@ + VAR2 (RINT, vrintm, v2sf, v4sf), + VAR2 (RINT, vrintz, v2sf, v4sf), + VAR2 (RINT, vrintx, v2sf, v4sf), ++VAR1 (RINT, vcvtav2sf, v2si), ++VAR1 (RINT, vcvtav4sf, v4si), ++VAR1 (RINT, vcvtauv2sf, v2si), ++VAR1 (RINT, vcvtauv4sf, v4si), ++VAR1 (RINT, vcvtpv2sf, v2si), ++VAR1 (RINT, vcvtpv4sf, v4si), ++VAR1 (RINT, vcvtpuv2sf, v2si), ++VAR1 (RINT, vcvtpuv4sf, v4si), ++VAR1 (RINT, vcvtmv2sf, v2si), ++VAR1 (RINT, vcvtmv4sf, v4si), ++VAR1 (RINT, vcvtmuv2sf, v2si), ++VAR1 (RINT, vcvtmuv4sf, v4si), + VAR1 (VTBL, vtbl1, v8qi), + VAR1 (VTBL, vtbl2, v8qi), + VAR1 (VTBL, vtbl3, v8qi), +@@ -149,9 +162,6 @@ + VAR1 (VTBX, vtbx2, v8qi), + VAR1 (VTBX, vtbx3, v8qi), + VAR1 (VTBX, vtbx4, v8qi), +-VAR8 (RESULTPAIR, vtrn, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), +-VAR8 (RESULTPAIR, vzip, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), +-VAR8 (RESULTPAIR, vuzp, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), + VAR5 (REINTERP, vreinterpretv8qi, v8qi, v4hi, v2si, v2sf, di), + VAR5 (REINTERP, vreinterpretv4hi, v8qi, v4hi, v2si, v2sf, di), + VAR5 (REINTERP, vreinterpretv2si, v8qi, v4hi, v2si, v2sf, di), +@@ -199,14 +209,4 @@ + VAR9 (STORESTRUCT, vst4, + v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf), + VAR7 (STORESTRUCTLANE, vst4_lane, +- v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf), +-VAR10 (LOGICBINOP, vand, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), +-VAR10 (LOGICBINOP, vorr, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), +-VAR10 (BINOP, veor, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), +-VAR10 (LOGICBINOP, vbic, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), +-VAR10 (LOGICBINOP, vorn, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di) ++ v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf) +--- a/src/gcc/config/arm/neon.ml ++++ b/src/gcc/config/arm/neon.ml +@@ -294,6 +294,8 @@ + (* Mark that the intrinsic requires a particular bit in __ARM_FP to + be set. *) + | Requires_FP_bit of int ++ (* Compiler optimization level for the test. *) ++ | Compiler_optim of string + + exception MixedMode of elts * elts + +@@ -1941,18 +1943,18 @@ + Veor, [], All (3, Qreg), "veorQ", notype_2, su_8_64; + + (* Bic (And-not). *) +- Vbic, [], All (3, Dreg), "vbic", notype_2, su_8_32; +- Vbic, [No_op], All (3, Dreg), "vbic", notype_2, [S64; U64]; +- Vbic, [], All (3, Qreg), "vbicQ", notype_2, su_8_64; ++ Vbic, [Compiler_optim "-O2"], All (3, Dreg), "vbic", notype_2, su_8_32; ++ Vbic, [No_op; Compiler_optim "-O2"], All (3, Dreg), "vbic", notype_2, [S64; U64]; ++ Vbic, [Compiler_optim "-O2"], All (3, Qreg), "vbicQ", notype_2, su_8_64; + + (* Or-not. *) +- Vorn, [], All (3, Dreg), "vorn", notype_2, su_8_32; +- Vorn, [No_op], All (3, Dreg), "vorn", notype_2, [S64; U64]; +- Vorn, [], All (3, Qreg), "vornQ", notype_2, su_8_64; ++ Vorn, [Compiler_optim "-O2"], All (3, Dreg), "vorn", notype_2, su_8_32; ++ Vorn, [No_op; Compiler_optim "-O2"], All (3, Dreg), "vorn", notype_2, [S64; U64]; ++ Vorn, [Compiler_optim "-O2"], All (3, Qreg), "vornQ", notype_2, su_8_64; + ] + + let type_in_crypto_only t +- = (t == P64) or (t == P128) ++ = (t == P64) || (t == P128) + + let cross_product s1 s2 + = List.filter (fun (e, e') -> e <> e') +@@ -1963,7 +1965,7 @@ + let casts = cross_product elems elems in + List.map + (fun (convto, convfrom) -> +- Vreinterp, (if (type_in_crypto_only convto) or (type_in_crypto_only convfrom) ++ Vreinterp, (if (type_in_crypto_only convto) || (type_in_crypto_only convfrom) + then [Requires_feature "CRYPTO"] else []) @ [No_op], Use_operands [| Dreg; Dreg |], + "vreinterpret", conv_1, [Cast (convto, convfrom)]) + casts +@@ -1973,7 +1975,7 @@ + let casts = cross_product elems elems in + List.map + (fun (convto, convfrom) -> +- Vreinterp, (if (type_in_crypto_only convto) or (type_in_crypto_only convfrom) ++ Vreinterp, (if (type_in_crypto_only convto) || (type_in_crypto_only convfrom) + then [Requires_feature "CRYPTO"] else []) @ [No_op], Use_operands [| Qreg; Qreg |], + "vreinterpretQ", conv_1, [Cast (convto, convfrom)]) + casts +--- a/src/gcc/config/arm/cortex-a7.md ++++ b/src/gcc/config/arm/cortex-a7.md +@@ -137,7 +137,7 @@ + (and (eq_attr "tune" "cortexa7") + (eq_attr "type" "alu_reg,alus_reg,logic_reg,logics_reg,\ + adc_imm,adcs_imm,adc_reg,adcs_reg,\ +- bfm,rev,\ ++ bfm,clz,rbit,rev,\ + shift_imm,shift_reg,mov_reg,mvn_reg")) + "cortex_a7_ex1") + +--- a/src/gcc/config/arm/aarch-common-protos.h ++++ b/src/gcc/config/arm/aarch-common-protos.h +@@ -24,6 +24,9 @@ + #define GCC_AARCH_COMMON_PROTOS_H + + extern int aarch_crypto_can_dual_issue (rtx, rtx); ++extern bool aarch_rev16_p (rtx); ++extern bool aarch_rev16_shleft_mask_imm_p (rtx, enum machine_mode); ++extern bool aarch_rev16_shright_mask_imm_p (rtx, enum machine_mode); + extern int arm_early_load_addr_dep (rtx, rtx); + extern int arm_early_store_addr_dep (rtx, rtx); + extern int arm_mac_accumulator_is_mul_result (rtx, rtx); +@@ -54,6 +57,7 @@ + const int bfi; /* Bit-field insert. */ + const int bfx; /* Bit-field extraction. */ + const int clz; /* Count Leading Zeros. */ ++ const int rev; /* Reverse bits/bytes. */ + const int non_exec; /* Extra cost when not executing insn. */ + const bool non_exec_costs_exec; /* True if non-execution must add the exec + cost. */ +--- a/src/gcc/config/arm/t-arm ++++ b/src/gcc/config/arm/t-arm +@@ -40,6 +40,7 @@ + $(srcdir)/config/arm/cortex-a9.md \ + $(srcdir)/config/arm/cortex-a9-neon.md \ + $(srcdir)/config/arm/cortex-a53.md \ ++ $(srcdir)/config/arm/xgene1.md \ + $(srcdir)/config/arm/cortex-m4-fpu.md \ + $(srcdir)/config/arm/cortex-m4.md \ + $(srcdir)/config/arm/cortex-r4f.md \ +@@ -90,7 +91,8 @@ + $(EXPR_H) $(OPTABS_H) $(RECOG_H) $(CGRAPH_H) \ + $(GGC_H) except.h $(C_PRAGMA_H) $(TM_P_H) \ + $(TARGET_H) $(TARGET_DEF_H) debug.h langhooks.h $(DF_H) \ +- intl.h libfuncs.h $(PARAMS_H) $(OPTS_H) $(srcdir)/config/arm/arm-cores.def \ ++ intl.h libfuncs.h $(PARAMS_H) $(OPTS_H) sched-int.h \ ++ $(srcdir)/config/arm/arm-cores.def \ + $(srcdir)/config/arm/arm-arches.def $(srcdir)/config/arm/arm-fpus.def \ + $(srcdir)/config/arm/arm_neon_builtins.def + +--- a/src/gcc/config/arm/predicates.md ++++ b/src/gcc/config/arm/predicates.md +@@ -291,6 +291,15 @@ + || ((unsigned HOST_WIDE_INT) INTVAL (XEXP (op, 1))) < 32"))) + (match_test "mode == GET_MODE (op)"))) + ++(define_special_predicate "shift_nomul_operator" ++ (and (ior (and (match_code "rotate") ++ (match_test "CONST_INT_P (XEXP (op, 1)) ++ && ((unsigned HOST_WIDE_INT) INTVAL (XEXP (op, 1))) < 32")) ++ (and (match_code "ashift,ashiftrt,lshiftrt,rotatert") ++ (match_test "!CONST_INT_P (XEXP (op, 1)) ++ || ((unsigned HOST_WIDE_INT) INTVAL (XEXP (op, 1))) < 32"))) ++ (match_test "mode == GET_MODE (op)"))) ++ + ;; True for shift operators which can be used with saturation instructions. + (define_special_predicate "sat_shift_operator" + (and (ior (and (match_code "mult") +@@ -681,5 +690,6 @@ + (match_code "reg" "0"))) + + (define_predicate "call_insn_operand" +- (ior (match_code "symbol_ref") ++ (ior (and (match_code "symbol_ref") ++ (match_test "!arm_is_long_call_p (SYMBOL_REF_DECL (op))")) + (match_operand 0 "s_register_operand"))) +--- a/src/gcc/config/arm/cortex-a15-neon.md ++++ b/src/gcc/config/arm/cortex-a15-neon.md +@@ -655,11 +655,21 @@ + (eq_attr "type" "fmov")) + "ca15_issue1,ca15_cx_perm") + +-(define_insn_reservation "cortex_a15_vfp_to_from_gp" 5 ++(define_insn_reservation "cortex_a15_gp_to_vfp" 5 + (and (eq_attr "tune" "cortexa15") +- (eq_attr "type" "f_mcr, f_mcrr, f_mrc, f_mrrc")) +- "ca15_issue1,ca15_ls1+ca15_ls2") ++ (eq_attr "type" "f_mcr, f_mcrr")) ++ "ca15_issue1,ca15_ls") + ++(define_insn_reservation "cortex_a15_mov_vfp_to_gp" 5 ++ (and (eq_attr "tune" "cortexa15") ++ (eq_attr "type" "f_mrc, f_mrrc")) ++ "ca15_issue1,ca15_ls") ++ ++;; Moves from floating point registers to general purpose registers ++;; induce additional latency. ++(define_bypass 10 "cortex_a15_vfp*, cortex_a15_neon*, cortex_a15_gp_to_vfp" "cortex_a15_mov_vfp_to_gp") ++ ++ + (define_insn_reservation "cortex_a15_vfp_ariths" 7 + (and (eq_attr "tune" "cortexa15") + (eq_attr "type" "ffariths")) +--- a/src/gcc/config/arm/arm_neon.h ++++ b/src/gcc/config/arm/arm_neon.h +@@ -452,114 +452,121 @@ + } poly64x2x4_t; + #endif + +- +- ++/* vadd */ + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + vadd_s8 (int8x8_t __a, int8x8_t __b) + { +- return (int8x8_t)__builtin_neon_vaddv8qi (__a, __b, 1); ++ return __a + __b; + } + + __extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) + vadd_s16 (int16x4_t __a, int16x4_t __b) + { +- return (int16x4_t)__builtin_neon_vaddv4hi (__a, __b, 1); ++ return __a + __b; + } + + __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) + vadd_s32 (int32x2_t __a, int32x2_t __b) + { +- return (int32x2_t)__builtin_neon_vaddv2si (__a, __b, 1); ++ return __a + __b; + } + + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) + vadd_f32 (float32x2_t __a, float32x2_t __b) + { +- return (float32x2_t)__builtin_neon_vaddv2sf (__a, __b, 3); ++#ifdef __FAST_MATH ++ return __a + __b; ++#else ++ return (float32x2_t) __builtin_neon_vaddv2sf (__a, __b, 3); ++#endif + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vadd_u8 (uint8x8_t __a, uint8x8_t __b) + { +- return (uint8x8_t)__builtin_neon_vaddv8qi ((int8x8_t) __a, (int8x8_t) __b, 0); ++ return __a + __b; + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vadd_u16 (uint16x4_t __a, uint16x4_t __b) + { +- return (uint16x4_t)__builtin_neon_vaddv4hi ((int16x4_t) __a, (int16x4_t) __b, 0); ++ return __a + __b; + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vadd_u32 (uint32x2_t __a, uint32x2_t __b) + { +- return (uint32x2_t)__builtin_neon_vaddv2si ((int32x2_t) __a, (int32x2_t) __b, 0); ++ return __a + __b; + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vadd_s64 (int64x1_t __a, int64x1_t __b) + { +- return (int64x1_t)__builtin_neon_vadddi (__a, __b, 1); ++ return __a + __b; + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vadd_u64 (uint64x1_t __a, uint64x1_t __b) + { +- return (uint64x1_t)__builtin_neon_vadddi ((int64x1_t) __a, (int64x1_t) __b, 0); ++ return __a + __b; + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vaddq_s8 (int8x16_t __a, int8x16_t __b) + { +- return (int8x16_t)__builtin_neon_vaddv16qi (__a, __b, 1); ++ return __a + __b; + } + + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) + vaddq_s16 (int16x8_t __a, int16x8_t __b) + { +- return (int16x8_t)__builtin_neon_vaddv8hi (__a, __b, 1); ++ return __a + __b; + } + + __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) + vaddq_s32 (int32x4_t __a, int32x4_t __b) + { +- return (int32x4_t)__builtin_neon_vaddv4si (__a, __b, 1); ++ return __a + __b; + } + + __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) + vaddq_s64 (int64x2_t __a, int64x2_t __b) + { +- return (int64x2_t)__builtin_neon_vaddv2di (__a, __b, 1); ++ return __a + __b; + } + + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vaddq_f32 (float32x4_t __a, float32x4_t __b) + { +- return (float32x4_t)__builtin_neon_vaddv4sf (__a, __b, 3); ++#ifdef __FAST_MATH ++ return __a + __b; ++#else ++ return (float32x4_t) __builtin_neon_vaddv4sf (__a, __b, 3); ++#endif + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vaddq_u8 (uint8x16_t __a, uint8x16_t __b) + { +- return (uint8x16_t)__builtin_neon_vaddv16qi ((int8x16_t) __a, (int8x16_t) __b, 0); ++ return __a + __b; + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vaddq_u16 (uint16x8_t __a, uint16x8_t __b) + { +- return (uint16x8_t)__builtin_neon_vaddv8hi ((int16x8_t) __a, (int16x8_t) __b, 0); ++ return __a + __b; + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vaddq_u32 (uint32x4_t __a, uint32x4_t __b) + { +- return (uint32x4_t)__builtin_neon_vaddv4si ((int32x4_t) __a, (int32x4_t) __b, 0); ++ return __a + __b; + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vaddq_u64 (uint64x2_t __a, uint64x2_t __b) + { +- return (uint64x2_t)__builtin_neon_vaddv2di ((int64x2_t) __a, (int64x2_t) __b, 0); ++ return __a + __b; + } + + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) +@@ -949,93 +956,102 @@ + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + vmul_s8 (int8x8_t __a, int8x8_t __b) + { +- return (int8x8_t)__builtin_neon_vmulv8qi (__a, __b, 1); ++ return __a * __b; + } + + __extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) + vmul_s16 (int16x4_t __a, int16x4_t __b) + { +- return (int16x4_t)__builtin_neon_vmulv4hi (__a, __b, 1); ++ return __a * __b; + } + + __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) + vmul_s32 (int32x2_t __a, int32x2_t __b) + { +- return (int32x2_t)__builtin_neon_vmulv2si (__a, __b, 1); ++ return __a * __b; + } + + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) + vmul_f32 (float32x2_t __a, float32x2_t __b) + { +- return (float32x2_t)__builtin_neon_vmulv2sf (__a, __b, 3); ++#ifdef __FAST_MATH ++ return __a * __b; ++#else ++ return (float32x2_t) __builtin_neon_vmulv2sf (__a, __b, 3); ++#endif ++ + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vmul_u8 (uint8x8_t __a, uint8x8_t __b) + { +- return (uint8x8_t)__builtin_neon_vmulv8qi ((int8x8_t) __a, (int8x8_t) __b, 0); ++ return __a * __b; + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vmul_u16 (uint16x4_t __a, uint16x4_t __b) + { +- return (uint16x4_t)__builtin_neon_vmulv4hi ((int16x4_t) __a, (int16x4_t) __b, 0); ++ return __a * __b; + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vmul_u32 (uint32x2_t __a, uint32x2_t __b) + { +- return (uint32x2_t)__builtin_neon_vmulv2si ((int32x2_t) __a, (int32x2_t) __b, 0); ++ return __a * __b; + } + +-__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) +-vmul_p8 (poly8x8_t __a, poly8x8_t __b) +-{ +- return (poly8x8_t)__builtin_neon_vmulv8qi ((int8x8_t) __a, (int8x8_t) __b, 2); +-} +- + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vmulq_s8 (int8x16_t __a, int8x16_t __b) + { +- return (int8x16_t)__builtin_neon_vmulv16qi (__a, __b, 1); ++ return __a * __b; + } + + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) + vmulq_s16 (int16x8_t __a, int16x8_t __b) + { +- return (int16x8_t)__builtin_neon_vmulv8hi (__a, __b, 1); ++ return __a * __b; + } + + __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) + vmulq_s32 (int32x4_t __a, int32x4_t __b) + { +- return (int32x4_t)__builtin_neon_vmulv4si (__a, __b, 1); ++ return __a * __b; + } + + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vmulq_f32 (float32x4_t __a, float32x4_t __b) + { +- return (float32x4_t)__builtin_neon_vmulv4sf (__a, __b, 3); ++#ifdef __FAST_MATH ++ return __a * __b; ++#else ++ return (float32x4_t) __builtin_neon_vmulv4sf (__a, __b, 3); ++#endif + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vmulq_u8 (uint8x16_t __a, uint8x16_t __b) + { +- return (uint8x16_t)__builtin_neon_vmulv16qi ((int8x16_t) __a, (int8x16_t) __b, 0); ++ return __a * __b; + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vmulq_u16 (uint16x8_t __a, uint16x8_t __b) + { +- return (uint16x8_t)__builtin_neon_vmulv8hi ((int16x8_t) __a, (int16x8_t) __b, 0); ++ return __a * __b; + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vmulq_u32 (uint32x4_t __a, uint32x4_t __b) + { +- return (uint32x4_t)__builtin_neon_vmulv4si ((int32x4_t) __a, (int32x4_t) __b, 0); ++ return __a * __b; + } + ++__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) ++vmul_p8 (poly8x8_t __a, poly8x8_t __b) ++{ ++ return (poly8x8_t)__builtin_neon_vmulv8qi ((int8x8_t) __a, (int8x8_t) __b, 2); ++} ++ + __extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) + vmulq_p8 (poly8x16_t __a, poly8x16_t __b) + { +@@ -1520,112 +1536,121 @@ + } + + #endif ++ + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + vsub_s8 (int8x8_t __a, int8x8_t __b) + { +- return (int8x8_t)__builtin_neon_vsubv8qi (__a, __b, 1); ++ return __a - __b; + } + + __extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) + vsub_s16 (int16x4_t __a, int16x4_t __b) + { +- return (int16x4_t)__builtin_neon_vsubv4hi (__a, __b, 1); ++ return __a - __b; + } + + __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) + vsub_s32 (int32x2_t __a, int32x2_t __b) + { +- return (int32x2_t)__builtin_neon_vsubv2si (__a, __b, 1); ++ return __a - __b; + } + + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) + vsub_f32 (float32x2_t __a, float32x2_t __b) + { +- return (float32x2_t)__builtin_neon_vsubv2sf (__a, __b, 3); ++#ifdef __FAST_MATH ++ return __a - __b; ++#else ++ return (float32x2_t) __builtin_neon_vsubv2sf (__a, __b, 3); ++#endif + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vsub_u8 (uint8x8_t __a, uint8x8_t __b) + { +- return (uint8x8_t)__builtin_neon_vsubv8qi ((int8x8_t) __a, (int8x8_t) __b, 0); ++ return __a - __b; + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vsub_u16 (uint16x4_t __a, uint16x4_t __b) + { +- return (uint16x4_t)__builtin_neon_vsubv4hi ((int16x4_t) __a, (int16x4_t) __b, 0); ++ return __a - __b; + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vsub_u32 (uint32x2_t __a, uint32x2_t __b) + { +- return (uint32x2_t)__builtin_neon_vsubv2si ((int32x2_t) __a, (int32x2_t) __b, 0); ++ return __a - __b; + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vsub_s64 (int64x1_t __a, int64x1_t __b) + { +- return (int64x1_t)__builtin_neon_vsubdi (__a, __b, 1); ++ return __a - __b; + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vsub_u64 (uint64x1_t __a, uint64x1_t __b) + { +- return (uint64x1_t)__builtin_neon_vsubdi ((int64x1_t) __a, (int64x1_t) __b, 0); ++ return __a - __b; + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vsubq_s8 (int8x16_t __a, int8x16_t __b) + { +- return (int8x16_t)__builtin_neon_vsubv16qi (__a, __b, 1); ++ return __a - __b; + } + + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) + vsubq_s16 (int16x8_t __a, int16x8_t __b) + { +- return (int16x8_t)__builtin_neon_vsubv8hi (__a, __b, 1); ++ return __a - __b; + } + + __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) + vsubq_s32 (int32x4_t __a, int32x4_t __b) + { +- return (int32x4_t)__builtin_neon_vsubv4si (__a, __b, 1); ++ return __a - __b; + } + + __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) + vsubq_s64 (int64x2_t __a, int64x2_t __b) + { +- return (int64x2_t)__builtin_neon_vsubv2di (__a, __b, 1); ++ return __a - __b; + } + + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vsubq_f32 (float32x4_t __a, float32x4_t __b) + { +- return (float32x4_t)__builtin_neon_vsubv4sf (__a, __b, 3); ++#ifdef __FAST_MATH ++ return __a - __b; ++#else ++ return (float32x4_t) __builtin_neon_vsubv4sf (__a, __b, 3); ++#endif + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vsubq_u8 (uint8x16_t __a, uint8x16_t __b) + { +- return (uint8x16_t)__builtin_neon_vsubv16qi ((int8x16_t) __a, (int8x16_t) __b, 0); ++ return __a - __b; + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vsubq_u16 (uint16x8_t __a, uint16x8_t __b) + { +- return (uint16x8_t)__builtin_neon_vsubv8hi ((int16x8_t) __a, (int16x8_t) __b, 0); ++ return __a - __b; + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vsubq_u32 (uint32x4_t __a, uint32x4_t __b) + { +- return (uint32x4_t)__builtin_neon_vsubv4si ((int32x4_t) __a, (int32x4_t) __b, 0); ++ return __a - __b; + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vsubq_u64 (uint64x2_t __a, uint64x2_t __b) + { +- return (uint64x2_t)__builtin_neon_vsubv2di ((int64x2_t) __a, (int64x2_t) __b, 0); ++ return __a - __b; + } + + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) +@@ -11295,484 +11320,483 @@ + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + vand_s8 (int8x8_t __a, int8x8_t __b) + { +- return (int8x8_t)__builtin_neon_vandv8qi (__a, __b, 1); ++ return __a & __b; + } + + __extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) + vand_s16 (int16x4_t __a, int16x4_t __b) + { +- return (int16x4_t)__builtin_neon_vandv4hi (__a, __b, 1); ++ return __a & __b; + } + + __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) + vand_s32 (int32x2_t __a, int32x2_t __b) + { +- return (int32x2_t)__builtin_neon_vandv2si (__a, __b, 1); ++ return __a & __b; + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vand_u8 (uint8x8_t __a, uint8x8_t __b) + { +- return (uint8x8_t)__builtin_neon_vandv8qi ((int8x8_t) __a, (int8x8_t) __b, 0); ++ return __a & __b; + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vand_u16 (uint16x4_t __a, uint16x4_t __b) + { +- return (uint16x4_t)__builtin_neon_vandv4hi ((int16x4_t) __a, (int16x4_t) __b, 0); ++ return __a & __b; + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vand_u32 (uint32x2_t __a, uint32x2_t __b) + { +- return (uint32x2_t)__builtin_neon_vandv2si ((int32x2_t) __a, (int32x2_t) __b, 0); ++ return __a & __b; + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vand_s64 (int64x1_t __a, int64x1_t __b) + { +- return (int64x1_t)__builtin_neon_vanddi (__a, __b, 1); ++ return __a & __b; + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vand_u64 (uint64x1_t __a, uint64x1_t __b) + { +- return (uint64x1_t)__builtin_neon_vanddi ((int64x1_t) __a, (int64x1_t) __b, 0); ++ return __a & __b; + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vandq_s8 (int8x16_t __a, int8x16_t __b) + { +- return (int8x16_t)__builtin_neon_vandv16qi (__a, __b, 1); ++ return __a & __b; + } + + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) + vandq_s16 (int16x8_t __a, int16x8_t __b) + { +- return (int16x8_t)__builtin_neon_vandv8hi (__a, __b, 1); ++ return __a & __b; + } + + __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) + vandq_s32 (int32x4_t __a, int32x4_t __b) + { +- return (int32x4_t)__builtin_neon_vandv4si (__a, __b, 1); ++ return __a & __b; + } + + __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) + vandq_s64 (int64x2_t __a, int64x2_t __b) + { +- return (int64x2_t)__builtin_neon_vandv2di (__a, __b, 1); ++ return __a & __b; + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vandq_u8 (uint8x16_t __a, uint8x16_t __b) + { +- return (uint8x16_t)__builtin_neon_vandv16qi ((int8x16_t) __a, (int8x16_t) __b, 0); ++ return __a & __b; + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vandq_u16 (uint16x8_t __a, uint16x8_t __b) + { +- return (uint16x8_t)__builtin_neon_vandv8hi ((int16x8_t) __a, (int16x8_t) __b, 0); ++ return __a & __b; + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vandq_u32 (uint32x4_t __a, uint32x4_t __b) + { +- return (uint32x4_t)__builtin_neon_vandv4si ((int32x4_t) __a, (int32x4_t) __b, 0); ++ return __a & __b; + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vandq_u64 (uint64x2_t __a, uint64x2_t __b) + { +- return (uint64x2_t)__builtin_neon_vandv2di ((int64x2_t) __a, (int64x2_t) __b, 0); ++ return __a & __b; + } + + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + vorr_s8 (int8x8_t __a, int8x8_t __b) + { +- return (int8x8_t)__builtin_neon_vorrv8qi (__a, __b, 1); ++ return __a | __b; + } + + __extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) + vorr_s16 (int16x4_t __a, int16x4_t __b) + { +- return (int16x4_t)__builtin_neon_vorrv4hi (__a, __b, 1); ++ return __a | __b; + } + + __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) + vorr_s32 (int32x2_t __a, int32x2_t __b) + { +- return (int32x2_t)__builtin_neon_vorrv2si (__a, __b, 1); ++ return __a | __b; + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vorr_u8 (uint8x8_t __a, uint8x8_t __b) + { +- return (uint8x8_t)__builtin_neon_vorrv8qi ((int8x8_t) __a, (int8x8_t) __b, 0); ++ return __a | __b; + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vorr_u16 (uint16x4_t __a, uint16x4_t __b) + { +- return (uint16x4_t)__builtin_neon_vorrv4hi ((int16x4_t) __a, (int16x4_t) __b, 0); ++ return __a | __b; + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vorr_u32 (uint32x2_t __a, uint32x2_t __b) + { +- return (uint32x2_t)__builtin_neon_vorrv2si ((int32x2_t) __a, (int32x2_t) __b, 0); ++ return __a | __b; + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vorr_s64 (int64x1_t __a, int64x1_t __b) + { +- return (int64x1_t)__builtin_neon_vorrdi (__a, __b, 1); ++ return __a | __b; + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vorr_u64 (uint64x1_t __a, uint64x1_t __b) + { +- return (uint64x1_t)__builtin_neon_vorrdi ((int64x1_t) __a, (int64x1_t) __b, 0); ++ return __a | __b; + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vorrq_s8 (int8x16_t __a, int8x16_t __b) + { +- return (int8x16_t)__builtin_neon_vorrv16qi (__a, __b, 1); ++ return __a | __b; + } + + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) + vorrq_s16 (int16x8_t __a, int16x8_t __b) + { +- return (int16x8_t)__builtin_neon_vorrv8hi (__a, __b, 1); ++ return __a | __b; + } + + __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) + vorrq_s32 (int32x4_t __a, int32x4_t __b) + { +- return (int32x4_t)__builtin_neon_vorrv4si (__a, __b, 1); ++ return __a | __b; + } + + __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) + vorrq_s64 (int64x2_t __a, int64x2_t __b) + { +- return (int64x2_t)__builtin_neon_vorrv2di (__a, __b, 1); ++ return __a | __b; + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vorrq_u8 (uint8x16_t __a, uint8x16_t __b) + { +- return (uint8x16_t)__builtin_neon_vorrv16qi ((int8x16_t) __a, (int8x16_t) __b, 0); ++ return __a | __b; + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vorrq_u16 (uint16x8_t __a, uint16x8_t __b) + { +- return (uint16x8_t)__builtin_neon_vorrv8hi ((int16x8_t) __a, (int16x8_t) __b, 0); ++ return __a | __b; + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vorrq_u32 (uint32x4_t __a, uint32x4_t __b) + { +- return (uint32x4_t)__builtin_neon_vorrv4si ((int32x4_t) __a, (int32x4_t) __b, 0); ++ return __a | __b; + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vorrq_u64 (uint64x2_t __a, uint64x2_t __b) + { +- return (uint64x2_t)__builtin_neon_vorrv2di ((int64x2_t) __a, (int64x2_t) __b, 0); ++ return __a | __b; + } + + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + veor_s8 (int8x8_t __a, int8x8_t __b) + { +- return (int8x8_t)__builtin_neon_veorv8qi (__a, __b, 1); ++ return __a ^ __b; + } + + __extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) + veor_s16 (int16x4_t __a, int16x4_t __b) + { +- return (int16x4_t)__builtin_neon_veorv4hi (__a, __b, 1); ++ return __a ^ __b; + } + + __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) + veor_s32 (int32x2_t __a, int32x2_t __b) + { +- return (int32x2_t)__builtin_neon_veorv2si (__a, __b, 1); ++ return __a ^ __b; + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + veor_u8 (uint8x8_t __a, uint8x8_t __b) + { +- return (uint8x8_t)__builtin_neon_veorv8qi ((int8x8_t) __a, (int8x8_t) __b, 0); ++ return __a ^ __b; + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + veor_u16 (uint16x4_t __a, uint16x4_t __b) + { +- return (uint16x4_t)__builtin_neon_veorv4hi ((int16x4_t) __a, (int16x4_t) __b, 0); ++ return __a ^ __b; + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + veor_u32 (uint32x2_t __a, uint32x2_t __b) + { +- return (uint32x2_t)__builtin_neon_veorv2si ((int32x2_t) __a, (int32x2_t) __b, 0); ++ return __a ^ __b; + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + veor_s64 (int64x1_t __a, int64x1_t __b) + { +- return (int64x1_t)__builtin_neon_veordi (__a, __b, 1); ++ return __a ^ __b; + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + veor_u64 (uint64x1_t __a, uint64x1_t __b) + { +- return (uint64x1_t)__builtin_neon_veordi ((int64x1_t) __a, (int64x1_t) __b, 0); ++ return __a ^ __b; + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + veorq_s8 (int8x16_t __a, int8x16_t __b) + { +- return (int8x16_t)__builtin_neon_veorv16qi (__a, __b, 1); ++ return __a ^ __b; + } + + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) + veorq_s16 (int16x8_t __a, int16x8_t __b) + { +- return (int16x8_t)__builtin_neon_veorv8hi (__a, __b, 1); ++ return __a ^ __b; + } + + __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) + veorq_s32 (int32x4_t __a, int32x4_t __b) + { +- return (int32x4_t)__builtin_neon_veorv4si (__a, __b, 1); ++ return __a ^ __b; + } + + __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) + veorq_s64 (int64x2_t __a, int64x2_t __b) + { +- return (int64x2_t)__builtin_neon_veorv2di (__a, __b, 1); ++ return __a ^ __b; + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + veorq_u8 (uint8x16_t __a, uint8x16_t __b) + { +- return (uint8x16_t)__builtin_neon_veorv16qi ((int8x16_t) __a, (int8x16_t) __b, 0); ++ return __a ^ __b; + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + veorq_u16 (uint16x8_t __a, uint16x8_t __b) + { +- return (uint16x8_t)__builtin_neon_veorv8hi ((int16x8_t) __a, (int16x8_t) __b, 0); ++ return __a ^ __b; + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + veorq_u32 (uint32x4_t __a, uint32x4_t __b) + { +- return (uint32x4_t)__builtin_neon_veorv4si ((int32x4_t) __a, (int32x4_t) __b, 0); ++ return __a ^ __b; + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + veorq_u64 (uint64x2_t __a, uint64x2_t __b) + { +- return (uint64x2_t)__builtin_neon_veorv2di ((int64x2_t) __a, (int64x2_t) __b, 0); ++ return __a ^ __b; + } + + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + vbic_s8 (int8x8_t __a, int8x8_t __b) + { +- return (int8x8_t)__builtin_neon_vbicv8qi (__a, __b, 1); ++ return __a & ~__b; + } + + __extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) + vbic_s16 (int16x4_t __a, int16x4_t __b) + { +- return (int16x4_t)__builtin_neon_vbicv4hi (__a, __b, 1); ++ return __a & ~__b; + } + + __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) + vbic_s32 (int32x2_t __a, int32x2_t __b) + { +- return (int32x2_t)__builtin_neon_vbicv2si (__a, __b, 1); ++ return __a & ~__b; + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vbic_u8 (uint8x8_t __a, uint8x8_t __b) + { +- return (uint8x8_t)__builtin_neon_vbicv8qi ((int8x8_t) __a, (int8x8_t) __b, 0); ++ return __a & ~__b; + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vbic_u16 (uint16x4_t __a, uint16x4_t __b) + { +- return (uint16x4_t)__builtin_neon_vbicv4hi ((int16x4_t) __a, (int16x4_t) __b, 0); ++ return __a & ~__b; + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vbic_u32 (uint32x2_t __a, uint32x2_t __b) + { +- return (uint32x2_t)__builtin_neon_vbicv2si ((int32x2_t) __a, (int32x2_t) __b, 0); ++ return __a & ~__b; + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vbic_s64 (int64x1_t __a, int64x1_t __b) + { +- return (int64x1_t)__builtin_neon_vbicdi (__a, __b, 1); ++ return __a & ~__b; + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vbic_u64 (uint64x1_t __a, uint64x1_t __b) + { +- return (uint64x1_t)__builtin_neon_vbicdi ((int64x1_t) __a, (int64x1_t) __b, 0); ++ return __a & ~__b; + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vbicq_s8 (int8x16_t __a, int8x16_t __b) + { +- return (int8x16_t)__builtin_neon_vbicv16qi (__a, __b, 1); ++ return __a & ~__b; + } + + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) + vbicq_s16 (int16x8_t __a, int16x8_t __b) + { +- return (int16x8_t)__builtin_neon_vbicv8hi (__a, __b, 1); ++ return __a & ~__b; + } + + __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) + vbicq_s32 (int32x4_t __a, int32x4_t __b) + { +- return (int32x4_t)__builtin_neon_vbicv4si (__a, __b, 1); ++ return __a & ~__b; + } + + __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) + vbicq_s64 (int64x2_t __a, int64x2_t __b) + { +- return (int64x2_t)__builtin_neon_vbicv2di (__a, __b, 1); ++ return __a & ~__b; + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vbicq_u8 (uint8x16_t __a, uint8x16_t __b) + { +- return (uint8x16_t)__builtin_neon_vbicv16qi ((int8x16_t) __a, (int8x16_t) __b, 0); ++ return __a & ~__b; + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vbicq_u16 (uint16x8_t __a, uint16x8_t __b) + { +- return (uint16x8_t)__builtin_neon_vbicv8hi ((int16x8_t) __a, (int16x8_t) __b, 0); ++ return __a & ~__b; + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vbicq_u32 (uint32x4_t __a, uint32x4_t __b) + { +- return (uint32x4_t)__builtin_neon_vbicv4si ((int32x4_t) __a, (int32x4_t) __b, 0); ++ return __a & ~__b; + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vbicq_u64 (uint64x2_t __a, uint64x2_t __b) + { +- return (uint64x2_t)__builtin_neon_vbicv2di ((int64x2_t) __a, (int64x2_t) __b, 0); ++ return __a & ~__b; + } + + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + vorn_s8 (int8x8_t __a, int8x8_t __b) + { +- return (int8x8_t)__builtin_neon_vornv8qi (__a, __b, 1); ++ return __a | ~__b; + } + + __extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) + vorn_s16 (int16x4_t __a, int16x4_t __b) + { +- return (int16x4_t)__builtin_neon_vornv4hi (__a, __b, 1); ++ return __a | ~__b; + } + + __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) + vorn_s32 (int32x2_t __a, int32x2_t __b) + { +- return (int32x2_t)__builtin_neon_vornv2si (__a, __b, 1); ++ return __a | ~__b; + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vorn_u8 (uint8x8_t __a, uint8x8_t __b) + { +- return (uint8x8_t)__builtin_neon_vornv8qi ((int8x8_t) __a, (int8x8_t) __b, 0); ++ return __a | ~__b; + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vorn_u16 (uint16x4_t __a, uint16x4_t __b) + { +- return (uint16x4_t)__builtin_neon_vornv4hi ((int16x4_t) __a, (int16x4_t) __b, 0); ++ return __a | ~__b; + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vorn_u32 (uint32x2_t __a, uint32x2_t __b) + { +- return (uint32x2_t)__builtin_neon_vornv2si ((int32x2_t) __a, (int32x2_t) __b, 0); ++ return __a | ~__b; + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vorn_s64 (int64x1_t __a, int64x1_t __b) + { +- return (int64x1_t)__builtin_neon_vorndi (__a, __b, 1); ++ return __a | ~__b; + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vorn_u64 (uint64x1_t __a, uint64x1_t __b) + { +- return (uint64x1_t)__builtin_neon_vorndi ((int64x1_t) __a, (int64x1_t) __b, 0); ++ return __a | ~__b; + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vornq_s8 (int8x16_t __a, int8x16_t __b) + { +- return (int8x16_t)__builtin_neon_vornv16qi (__a, __b, 1); ++ return __a | ~__b; + } + + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) + vornq_s16 (int16x8_t __a, int16x8_t __b) + { +- return (int16x8_t)__builtin_neon_vornv8hi (__a, __b, 1); ++ return __a | ~__b; + } + + __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) + vornq_s32 (int32x4_t __a, int32x4_t __b) + { +- return (int32x4_t)__builtin_neon_vornv4si (__a, __b, 1); ++ return __a | ~__b; + } + + __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) + vornq_s64 (int64x2_t __a, int64x2_t __b) + { +- return (int64x2_t)__builtin_neon_vornv2di (__a, __b, 1); ++ return __a | ~__b; + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vornq_u8 (uint8x16_t __a, uint8x16_t __b) + { +- return (uint8x16_t)__builtin_neon_vornv16qi ((int8x16_t) __a, (int8x16_t) __b, 0); ++ return __a | ~__b; + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vornq_u16 (uint16x8_t __a, uint16x8_t __b) + { +- return (uint16x8_t)__builtin_neon_vornv8hi ((int16x8_t) __a, (int16x8_t) __b, 0); ++ return __a | ~__b; + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vornq_u32 (uint32x4_t __a, uint32x4_t __b) + { +- return (uint32x4_t)__builtin_neon_vornv4si ((int32x4_t) __a, (int32x4_t) __b, 0); ++ return __a | ~__b; + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vornq_u64 (uint64x2_t __a, uint64x2_t __b) + { +- return (uint64x2_t)__builtin_neon_vornv2di ((int64x2_t) __a, (int64x2_t) __b, 0); ++ return __a | ~__b; + } + +- + __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) + vreinterpret_p8_p16 (poly16x4_t __a) + { +--- a/src/gcc/config/arm/cortex-m7.md ++++ b/src/gcc/config/arm/cortex-m7.md +@@ -0,0 +1,181 @@ ++;; ARM Cortex-M7 pipeline description ++;; Copyright (C) 2014 Free Software Foundation, Inc. ++;; ++;; This file is part of GCC. ++;; ++;; GCC is free software; you can redistribute it and/or modify it ++;; under the terms of the GNU General Public License as published by ++;; the Free Software Foundation; either version 3, or (at your option) ++;; any later version. ++;; ++;; GCC is distributed in the hope that it will be useful, but ++;; WITHOUT ANY WARRANTY; without even the implied warranty of ++;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++;; General Public License for more details. ++;; ++;; You should have received a copy of the GNU General Public License ++;; along with GCC; see the file COPYING3. If not see ++;; . ++ ++(define_automaton "cortex_m7") ++ ++;; We model the dual-issue constraints of this core with ++;; following units. ++ ++(define_cpu_unit "cm7_i0, cm7_i1" "cortex_m7") ++(define_cpu_unit "cm7_a0, cm7_a1" "cortex_m7") ++(define_cpu_unit "cm7_branch,cm7_wb,cm7_ext,cm7_shf" "cortex_m7") ++(define_cpu_unit "cm7_lsu" "cortex_m7") ++(define_cpu_unit "cm7_mac" "cortex_m7") ++(define_cpu_unit "cm7_fpu" "cortex_m7") ++ ++(define_reservation "cm7_all_units" ++ "cm7_i0+cm7_i1+cm7_a0+cm7_a1+cm7_branch\ ++ +cm7_wb+cm7_ext+cm7_shf+cm7_lsu+cm7_mac\ ++ +cm7_fpu") ++ ++;; Simple alu instruction without inline shift operation. ++(define_insn_reservation "cortex_m7_alu_simple" 2 ++ (and (eq_attr "tune" "cortexm7") ++ (eq_attr "type" "alu_imm,alus_imm,logic_imm,logics_imm,\ ++ alu_reg,alus_reg,logic_reg,logics_reg,\ ++ adc_imm,adcs_imm,adc_reg,adcs_reg,\ ++ adr,bfm,rev,\ ++ shift_imm,shift_reg,\ ++ mov_imm,mov_reg,mvn_imm,mvn_reg,\ ++ mov_shift_reg,mov_shift,\ ++ mvn_shift,mvn_shift_reg,\ ++ logic_shift_imm,logics_shift_imm,\ ++ alu_shift_reg,alus_shift_reg,\ ++ logic_shift_reg,logics_shift_reg,\ ++ mrs,clz,f_mcr,f_mrc,multiple,no_insn")) ++ "cm7_i0|cm7_i1,cm7_a0|cm7_a1") ++ ++;; Simple alu with inline shift operation. ++(define_insn_reservation "cortex_m7_alu_shift" 2 ++ (and (eq_attr "tune" "cortexm7") ++ (eq_attr "type" "alu_shift_imm,alus_shift_imm")) ++ "cm7_i0|cm7_i1,(cm7_a0|cm7_a1)+cm7_shf+cm7_branch") ++ ++;; Only one ALU can be used for DSP instructions. ++(define_insn_reservation "cortex_m7_dsp" 2 ++ (and (eq_attr "tune" "cortexm7") ++ (eq_attr "type" "alu_reg,smlaxy,smlalxy,smulxy")) ++ "cm7_i0|cm7_i1,cm7_a0") ++ ++;; The multiply instructions. ++(define_insn_reservation "cortex_m7_multiply" 2 ++ (and (eq_attr "tune" "cortexm7") ++ (eq_attr "type" "mul,muls,umull,smull")) ++ "cm7_i0|cm7_i1,(cm7_a0|cm7_a1)+cm7_wb") ++ ++(define_insn_reservation "cortex_m7_idiv" 4 ++ (and (eq_attr "tune" "cortexm7") ++ (eq_attr "type" "sdiv,udiv")) ++ "cm7_all_units*4") ++ ++(define_insn_reservation "cortex_m7_alu_extend" 2 ++ (and (eq_attr "tune" "cortexm7") ++ (eq_attr "type" "extend")) ++ "cm7_i0|cm7_i1,(cm7_a0|cm7_a1)+cm7_ext+cm7_branch") ++ ++(define_insn_reservation "cortex_m7_mac" 2 ++ (and (eq_attr "tune" "cortexm7") ++ (eq_attr "type" "mla,mlas")) ++ "cm7_i0|cm7_i1,cm7_mac+cm7_wb") ++ ++;; The branch instructions. ++(define_insn_reservation "cortex_m7_branch" 0 ++ (and (eq_attr "tune" "cortexm7") ++ (eq_attr "type" "branch,call")) ++ "cm7_i0|cm7_i1,cm7_branch") ++ ++;; The load instructions. ++(define_insn_reservation "cortex_m7_load1" 2 ++ (and (eq_attr "tune" "cortexm7") ++ (eq_attr "type" "load_byte, load1")) ++ "cm7_i0|cm7_i1,cm7_lsu") ++ ++(define_insn_reservation "cortex_m7_load2" 2 ++ (and (eq_attr "tune" "cortexm7") ++ (eq_attr "type" "load2")) ++ "cm7_all_units") ++ ++(define_insn_reservation "cortex_m7_loadm" 2 ++ (and (eq_attr "tune" "cortexm7") ++ (eq_attr "type" "load3,load4")) ++ "cm7_all_units*2") ++ ++;; The store instructions. ++(define_insn_reservation "cortex_m7_store1" 0 ++ (and (eq_attr "tune" "cortexm7") ++ (eq_attr "type" "store1")) ++ "cm7_i0|cm7_i1,cm7_lsu+cm7_wb") ++ ++(define_insn_reservation "cortex_m7_store2" 0 ++ (and (eq_attr "tune" "cortexm7") ++ (eq_attr "type" "store2")) ++ "cm7_all_units") ++ ++(define_insn_reservation "cortex_m7_storem" 0 ++ (and (eq_attr "tune" "cortexm7") ++ (eq_attr "type" "store3,store4")) ++ "cm7_all_units*2") ++ ++;; The FPU instructions. ++(define_insn_reservation "cortex_m7_fpalu" 3 ++ (and (eq_attr "tune" "cortexm7") ++ (eq_attr "type" "ffariths,ffarithd,fadds,faddd,fmov,fconsts,\ ++ fconstd,fcmpd,f_cvt,f_cvtf2i,f_cvti2f, fcmps,\ ++ fmuls,f_flag")) ++ "cm7_i0|cm7_i1,cm7_fpu") ++ ++(define_insn_reservation "cortex_m7_fmacs" 6 ++ (and (eq_attr "tune" "cortexm7") ++ (eq_attr "type" "fmacs,ffmas")) ++ "cm7_i0|cm7_i1,cm7_fpu") ++ ++(define_insn_reservation "cortex_m7_fdivs" 16 ++ (and (eq_attr "tune" "cortexm7") ++ (eq_attr "type" "fdivs, fsqrts")) ++ "cm7_i0|cm7_i1, cm7_fpu*5") ++ ++(define_insn_reservation "cortex_m7_f_loads" 2 ++ (and (eq_attr "tune" "cortexm7") ++ (eq_attr "type" "f_loads")) ++ "cm7_i0|cm7_i1, cm7_lsu") ++ ++(define_insn_reservation "cortex_m7_f_stores" 0 ++ (and (eq_attr "tune" "cortexm7") ++ (eq_attr "type" "f_stores")) ++ "cm7_i0|cm7_i1, cm7_lsu+cm7_wb") ++ ++(define_insn_reservation "cortex_m7_fmuld" 6 ++ (and (eq_attr "tune" "cortexm7") ++ (eq_attr "type" "fmuld")) ++ "cm7_i0|cm7_i1,cm7_fpu*3") ++ ++(define_insn_reservation "cortex_m7_fmacd" 10 ++ (and (eq_attr "tune" "cortexm7") ++ (eq_attr "type" "fmacd,ffmad")) ++ "cm7_i0|cm7_i1,cm7_fpu*4") ++ ++(define_insn_reservation "cortex_m7_fdivd" 31 ++ (and (eq_attr "tune" "cortexm7") ++ (eq_attr "type" "fdivd,fsqrtd")) ++ "cm7_i0|cm7_i1,cm7_fpu*4") ++ ++(define_insn_reservation "cortex_m7_f_loadd" 3 ++ (and (eq_attr "tune" "cortexm7") ++ (eq_attr "type" "f_loadd")) ++ "cm7_all_units") ++ ++(define_insn_reservation "cortex_m7_f_stored" 0 ++ (and (eq_attr "tune" "cortexm7") ++ (eq_attr "type" "f_stored")) ++ "cm7_all_units") ++ ++(define_insn_reservation "cortex_m7_f_mcr" 1 ++ (and (eq_attr "tune" "cortexm7") ++ (eq_attr "type" "f_mcrr,f_mrrc")) ++ "cm7_all_units") +--- a/src/gcc/config/arm/aarch-common.c ++++ b/src/gcc/config/arm/aarch-common.c +@@ -191,6 +191,83 @@ + return 0; + } + ++bool ++aarch_rev16_shright_mask_imm_p (rtx val, enum machine_mode mode) ++{ ++ return CONST_INT_P (val) ++ && INTVAL (val) ++ == trunc_int_for_mode (HOST_WIDE_INT_C (0xff00ff00ff00ff), ++ mode); ++} ++ ++bool ++aarch_rev16_shleft_mask_imm_p (rtx val, enum machine_mode mode) ++{ ++ return CONST_INT_P (val) ++ && INTVAL (val) ++ == trunc_int_for_mode (HOST_WIDE_INT_C (0xff00ff00ff00ff00), ++ mode); ++} ++ ++ ++static bool ++aarch_rev16_p_1 (rtx lhs, rtx rhs, enum machine_mode mode) ++{ ++ if (GET_CODE (lhs) == AND ++ && GET_CODE (XEXP (lhs, 0)) == ASHIFT ++ && CONST_INT_P (XEXP (XEXP (lhs, 0), 1)) ++ && INTVAL (XEXP (XEXP (lhs, 0), 1)) == 8 ++ && REG_P (XEXP (XEXP (lhs, 0), 0)) ++ && CONST_INT_P (XEXP (lhs, 1)) ++ && GET_CODE (rhs) == AND ++ && GET_CODE (XEXP (rhs, 0)) == LSHIFTRT ++ && REG_P (XEXP (XEXP (rhs, 0), 0)) ++ && CONST_INT_P (XEXP (XEXP (rhs, 0), 1)) ++ && INTVAL (XEXP (XEXP (rhs, 0), 1)) == 8 ++ && CONST_INT_P (XEXP (rhs, 1)) ++ && REGNO (XEXP (XEXP (rhs, 0), 0)) == REGNO (XEXP (XEXP (lhs, 0), 0))) ++ ++ { ++ rtx lhs_mask = XEXP (lhs, 1); ++ rtx rhs_mask = XEXP (rhs, 1); ++ ++ return aarch_rev16_shright_mask_imm_p (rhs_mask, mode) ++ && aarch_rev16_shleft_mask_imm_p (lhs_mask, mode); ++ } ++ ++ return false; ++} ++ ++/* Recognise a sequence of bitwise operations corresponding to a rev16 operation. ++ These will be of the form: ++ ((x >> 8) & 0x00ff00ff) ++ | ((x << 8) & 0xff00ff00) ++ for SImode and with similar but wider bitmasks for DImode. ++ The two sub-expressions of the IOR can appear on either side so check both ++ permutations with the help of aarch_rev16_p_1 above. */ ++ ++bool ++aarch_rev16_p (rtx x) ++{ ++ rtx left_sub_rtx, right_sub_rtx; ++ bool is_rev = false; ++ ++ if (GET_CODE (x) != IOR) ++ return false; ++ ++ left_sub_rtx = XEXP (x, 0); ++ right_sub_rtx = XEXP (x, 1); ++ ++ /* There are no canonicalisation rules for the position of the two shifts ++ involved in a rev, so try both permutations. */ ++ is_rev = aarch_rev16_p_1 (left_sub_rtx, right_sub_rtx, GET_MODE (x)); ++ ++ if (!is_rev) ++ is_rev = aarch_rev16_p_1 (right_sub_rtx, left_sub_rtx, GET_MODE (x)); ++ ++ return is_rev; ++} ++ + /* Return nonzero if the CONSUMER instruction (a load) does need + PRODUCER's value to calculate the address. */ + int +--- a/src/gcc/config/arm/cortex-a17-neon.md ++++ b/src/gcc/config/arm/cortex-a17-neon.md +@@ -0,0 +1,605 @@ ++;; ARM Cortex-A17 NEON pipeline description ++;; Copyright (C) 2014 Free Software Foundation, Inc. ++;; ++;; This file is part of GCC. ++;; ++;; GCC is free software; you can redistribute it and/or modify it ++;; under the terms of the GNU General Public License as published by ++;; the Free Software Foundation; either version 3, or (at your option) ++;; any later version. ++;; ++;; GCC is distributed in the hope that it will be useful, but ++;; WITHOUT ANY WARRANTY; without even the implied warranty of ++;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++;; General Public License for more details. ++;; ++;; You should have received a copy of the GNU General Public License ++;; along with GCC; see the file COPYING3. If not see ++;; . ++ ++(define_attr "cortex_a17_neon_type" ++ "neon_abd, neon_abd_q, neon_arith_acc, neon_arith_acc_q, ++ neon_arith_basic, neon_arith_complex, ++ neon_reduc_add_acc, neon_multiply, neon_multiply_q, ++ neon_multiply_long, neon_mla, neon_mla_q, neon_mla_long, ++ neon_sat_mla_long, neon_shift_acc, neon_shift_imm_basic,\ ++ neon_shift_imm_complex, ++ neon_shift_reg_basic, neon_shift_reg_basic_q, neon_shift_reg_complex, ++ neon_shift_reg_complex_q, neon_fp_negabs, neon_fp_arith, ++ neon_fp_arith_q, neon_fp_cvt_int, ++ neon_fp_cvt_int_q, neon_fp_cvt16, neon_fp_minmax, neon_fp_mul, ++ neon_fp_mul_q, neon_fp_mla, neon_fp_mla_q, neon_fp_recpe_rsqrte, ++ neon_fp_recpe_rsqrte_q, neon_bitops, neon_bitops_q, neon_from_gp, ++ neon_from_gp_q, neon_move, neon_tbl3_tbl4, neon_zip_q, neon_to_gp, ++ neon_load_a, neon_load_b, neon_load_c, neon_load_d, neon_load_e, ++ neon_load_f, neon_load_g, neon_load_h, neon_store_a, neon_store_b, ++ unknown" ++ (cond [ ++ (eq_attr "type" "neon_abd, neon_abd_long") ++ (const_string "neon_abd") ++ (eq_attr "type" "neon_abd_q") ++ (const_string "neon_abd_q") ++ (eq_attr "type" "neon_arith_acc, neon_reduc_add_acc,\ ++ neon_reduc_add_acc_q") ++ (const_string "neon_arith_acc") ++ (eq_attr "type" "neon_arith_acc_q") ++ (const_string "neon_arith_acc_q") ++ (eq_attr "type" "neon_add, neon_add_q, neon_add_long,\ ++ neon_add_widen, neon_neg, neon_neg_q,\ ++ neon_reduc_add, neon_reduc_add_q,\ ++ neon_reduc_add_long, neon_sub, neon_sub_q,\ ++ neon_sub_long, neon_sub_widen, neon_logic,\ ++ neon_logic_q, neon_tst, neon_tst_q") ++ (const_string "neon_arith_basic") ++ (eq_attr "type" "neon_abs, neon_abs_q, neon_add_halve_narrow_q,\ ++ neon_add_halve, neon_add_halve_q,\ ++ neon_sub_halve, neon_sub_halve_q, neon_qabs,\ ++ neon_qabs_q, neon_qadd, neon_qadd_q, neon_qneg,\ ++ neon_qneg_q, neon_qsub, neon_qsub_q,\ ++ neon_sub_halve_narrow_q,\ ++ neon_compare, neon_compare_q,\ ++ neon_compare_zero, neon_compare_zero_q,\ ++ neon_minmax, neon_minmax_q, neon_reduc_minmax,\ ++ neon_reduc_minmax_q") ++ (const_string "neon_arith_complex") ++ ++ (eq_attr "type" "neon_mul_b, neon_mul_h, neon_mul_s,\ ++ neon_mul_h_scalar, neon_mul_s_scalar,\ ++ neon_sat_mul_b, neon_sat_mul_h,\ ++ neon_sat_mul_s, neon_sat_mul_h_scalar,\ ++ neon_sat_mul_s_scalar,\ ++ neon_mul_b_long, neon_mul_h_long,\ ++ neon_mul_s_long,\ ++ neon_mul_h_scalar_long, neon_mul_s_scalar_long,\ ++ neon_sat_mul_b_long, neon_sat_mul_h_long,\ ++ neon_sat_mul_s_long, neon_sat_mul_h_scalar_long,\ ++ neon_sat_mul_s_scalar_long") ++ (const_string "neon_multiply") ++ (eq_attr "type" "neon_mul_b_q, neon_mul_h_q, neon_mul_s_q,\ ++ neon_mul_h_scalar_q, neon_mul_s_scalar_q,\ ++ neon_sat_mul_b_q, neon_sat_mul_h_q,\ ++ neon_sat_mul_s_q, neon_sat_mul_h_scalar_q,\ ++ neon_sat_mul_s_scalar_q") ++ (const_string "neon_multiply_q") ++ (eq_attr "type" "neon_mla_b, neon_mla_h, neon_mla_s,\ ++ neon_mla_h_scalar, neon_mla_s_scalar,\ ++ neon_mla_b_long, neon_mla_h_long,\ ++ neon_mla_s_long,\ ++ neon_mla_h_scalar_long, neon_mla_s_scalar_long") ++ (const_string "neon_mla") ++ (eq_attr "type" "neon_mla_b_q, neon_mla_h_q, neon_mla_s_q,\ ++ neon_mla_h_scalar_q, neon_mla_s_scalar_q") ++ (const_string "neon_mla_q") ++ (eq_attr "type" "neon_sat_mla_b_long, neon_sat_mla_h_long,\ ++ neon_sat_mla_s_long, neon_sat_mla_h_scalar_long,\ ++ neon_sat_mla_s_scalar_long") ++ (const_string "neon_sat_mla_long") ++ ++ (eq_attr "type" "neon_shift_acc, neon_shift_acc_q") ++ (const_string "neon_shift_acc") ++ (eq_attr "type" "neon_shift_imm, neon_shift_imm_q,\ ++ neon_shift_imm_narrow_q, neon_shift_imm_long") ++ (const_string "neon_shift_imm_basic") ++ (eq_attr "type" "neon_sat_shift_imm, neon_sat_shift_imm_q,\ ++ neon_sat_shift_imm_narrow_q") ++ (const_string "neon_shift_imm_complex") ++ (eq_attr "type" "neon_shift_reg") ++ (const_string "neon_shift_reg_basic") ++ (eq_attr "type" "neon_shift_reg_q") ++ (const_string "neon_shift_reg_basic_q") ++ (eq_attr "type" "neon_sat_shift_reg") ++ (const_string "neon_shift_reg_complex") ++ (eq_attr "type" "neon_sat_shift_reg_q") ++ (const_string "neon_shift_reg_complex_q") ++ ++ (eq_attr "type" "neon_fp_neg_s, neon_fp_neg_s_q,\ ++ neon_fp_abs_s, neon_fp_abs_s_q") ++ (const_string "neon_fp_negabs") ++ (eq_attr "type" "neon_fp_addsub_s, neon_fp_abd_s,\ ++ neon_fp_reduc_add_s, neon_fp_compare_s,\ ++ neon_fp_minmax_s, neon_fp_minmax_s_q,\ ++ neon_fp_reduc_minmax_s, neon_fp_round_s,\ ++ neon_fp_round_s_q, neon_fp_round_d,\ ++ neon_fp_round_d_q, neon_fp_reduc_minmax_s_q") ++ (const_string "neon_fp_arith") ++ (eq_attr "type" "neon_fp_addsub_s_q, neon_fp_abd_s_q,\ ++ neon_fp_reduc_add_s_q, neon_fp_compare_s_q") ++ (const_string "neon_fp_arith_q") ++ (eq_attr "type" "neon_fp_to_int_s, neon_int_to_fp_s") ++ (const_string "neon_fp_cvt_int") ++ (eq_attr "type" "neon_fp_to_int_s_q, neon_int_to_fp_s_q") ++ (const_string "neon_fp_cvt_int_q") ++ (eq_attr "type" "neon_fp_cvt_narrow_s_q, neon_fp_cvt_widen_h") ++ (const_string "neon_fp_cvt16") ++ (eq_attr "type" "neon_fp_mul_s, neon_fp_mul_s_scalar") ++ (const_string "neon_fp_mul") ++ (eq_attr "type" "neon_fp_mul_s_q, neon_fp_mul_s_scalar_q") ++ (const_string "neon_fp_mul_q") ++ (eq_attr "type" "neon_fp_mla_s, neon_fp_mla_s_scalar") ++ (const_string "neon_fp_mla") ++ (eq_attr "type" "neon_fp_mla_s_q, neon_fp_mla_s_scalar_q") ++ (const_string "neon_fp_mla_q") ++ (eq_attr "type" "neon_fp_recpe_s, neon_fp_rsqrte_s") ++ (const_string "neon_fp_recpe_rsqrte") ++ (eq_attr "type" "neon_fp_recpe_s_q, neon_fp_rsqrte_s_q") ++ (const_string "neon_fp_recpe_rsqrte_q") ++ ++ (eq_attr "type" "neon_bsl, neon_cls, neon_cnt,\ ++ neon_rev, neon_permute,\ ++ neon_tbl1, neon_tbl2, neon_zip,\ ++ neon_dup, neon_dup_q, neon_ext, neon_ext_q,\ ++ neon_move, neon_move_q, neon_move_narrow_q") ++ (const_string "neon_bitops") ++ (eq_attr "type" "neon_bsl_q, neon_cls_q, neon_cnt_q,\ ++ neon_rev_q, neon_permute_q") ++ (const_string "neon_bitops_q") ++ (eq_attr "type" "neon_from_gp") ++ (const_string "neon_from_gp") ++ (eq_attr "type" "neon_from_gp_q") ++ (const_string "neon_from_gp_q") ++ (eq_attr "type" "neon_tbl3, neon_tbl4") ++ (const_string "neon_tbl3_tbl4") ++ (eq_attr "type" "neon_zip_q") ++ (const_string "neon_zip_q") ++ (eq_attr "type" "neon_to_gp, neon_to_gp_q") ++ (const_string "neon_to_gp") ++ ++ (eq_attr "type" "neon_load1_1reg, neon_load1_1reg_q,\ ++ neon_load1_one_lane, neon_load1_one_lane_q") ++ (const_string "neon_load_a") ++ ++ (eq_attr "type" "neon_load1_2reg, neon_load1_2reg_q") ++ (const_string "neon_load_b") ++ ++ (eq_attr "type" "neon_load1_3reg, neon_load1_3reg_q,\ ++ neon_load1_all_lanes,neon_load1_all_lanes_q,\ ++ neon_load2_one_lane, neon_load2_one_lane_q,\ ++ neon_load2_all_lanes, neon_load2_all_lanes_q") ++ (const_string "neon_load_c") ++ ++ (eq_attr "type" "neon_load1_4reg, neon_load1_4reg_q,\ ++ neon_load2_2reg, neon_load2_2reg_q") ++ (const_string "neon_load_d") ++ ++ (eq_attr "type" "neon_load3_one_lane,\ ++ neon_load3_all_lanes,\ ++ neon_load4_one_lane, neon_load4_all_lanes") ++ (const_string "neon_load_e") ++ ++ ++ (eq_attr "type" "neon_load3_one_lane_q,\ ++ neon_load3_all_lanes_q,\ ++ neon_load4_one_lane_q, neon_load4_all_lanes_q") ++ (const_string "neon_load_f") ++ ++ (eq_attr "type" "neon_load3_3reg,neon_load3_3reg_q") ++ (const_string "neon_load_g") ++ ++ (eq_attr "type" "neon_load2_4reg,neon_load2_4reg_q,\ ++ neon_load4_4reg,neon_load4_4reg_q") ++ (const_string "neon_load_h") ++ ++ (eq_attr "type" "neon_store1_1reg, neon_store1_1reg_q,\ ++ neon_store1_2reg, neon_store1_2reg_q,\ ++ neon_store1_3reg, neon_store1_3reg_q,\ ++ neon_store1_4reg, neon_store1_4reg_q,\ ++ neon_store1_one_lane, neon_store1_one_lane_q,\ ++ neon_store2_2reg, neon_store2_2reg_q,\ ++ neon_store3_one_lane, neon_store3_one_lane_q,\ ++ neon_store4_one_lane, neon_store4_one_lane_q") ++ (const_string "neon_store_a") ++ ++ (eq_attr "type" "neon_store2_4reg, neon_store2_4reg_q,\ ++ neon_store2_one_lane, neon_store2_one_lane_q,\ ++ neon_store3_3reg, neon_store3_3reg_q,\ ++ neon_store4_4reg, neon_store4_4reg_q") ++ (const_string "neon_store_b") ++] ++ (const_string "unknown"))) ++ ++(define_automaton "cortex_a17_neon") ++ ++(define_cpu_unit "ca17_asimd0, ca17_asimd1" "cortex_a17_neon") ++(define_cpu_unit "ca17_fdiv0,ca17_simdfpadd0, ca17_simdfpmul0" "cortex_a17_neon") ++(define_cpu_unit "ca17_simdimac0, ca17_simdialu0, ca17_perm0" "cortex_a17_neon") ++ ++(define_cpu_unit "ca17_simdialu1, ca17_perm1, ca17_simdshift1" "cortex_a17_neon") ++(define_cpu_unit "ca17_iacc1" "cortex_a17_neon") ++(define_cpu_unit "ca17_fpmul1, ca17_fpadd1" "cortex_a17_neon") ++ ++ ++;; Integer Arithmetic Instructions. ++ ++(define_insn_reservation "cortex_a17_neon_abd" 5 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_abd")) ++ "(ca17_asimd0+ca17_simdialu0) | (ca17_asimd1+ca17_simdialu1)") ++ ++(define_insn_reservation "cortex_a17_neon_abd_q" 5 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_abd_q")) ++ "ca17_asimd0+ca17_asimd1+ca17_simdialu0+ca17_simdialu1") ++ ++(define_insn_reservation "cortex_a17_neon_aba" 7 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_arith_acc")) ++ "ca17_asimd1+ca17_simdialu1, ca17_iacc1") ++ ++(define_insn_reservation "cortex_a17_neon_aba_q" 8 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_arith_acc_q")) ++ "ca17_asimd0+ca17_asimd1+ca17_simdialu0+ca17_simdialu1, ca17_iacc1*2") ++ ++(define_insn_reservation "cortex_a17_neon_arith_basic" 4 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_arith_basic")) ++ "(ca17_asimd0+ca17_simdialu0) | (ca17_asimd1+ca17_simdialu1)") ++ ++(define_insn_reservation "cortex_a17_neon_arith_complex" 5 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_arith_complex")) ++ "(ca17_asimd0+ca17_simdialu0) | (ca17_asimd1+ca17_simdialu1)") ++ ++;; Integer Multiply Instructions. ++ ++(define_insn_reservation "cortex_a17_neon_multiply" 6 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_multiply")) ++ "ca17_asimd0+ca17_simdimac0") ++ ++(define_insn_reservation "cortex_a17_neon_multiply_q" 7 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_multiply_q")) ++ "(ca17_asimd0+ca17_simdimac0)*2") ++ ++(define_insn_reservation "cortex_a17_neon_mla" 6 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_mla")) ++ "ca17_asimd0+ca17_simdimac0*2") ++ ++(define_insn_reservation "cortex_a17_neon_mla_q" 7 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_mla_q")) ++ "(ca17_asimd0+ca17_simdimac0)*2,ca17_simdimac0") ++ ++(define_insn_reservation "cortex_a17_neon_sat_mla_long" 6 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_sat_mla_long")) ++ "ca17_asimd0+ca17_simdimac0*2") ++ ++;; Integer Shift Instructions. ++ ++(define_insn_reservation ++ "cortex_a17_neon_shift_acc" 7 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_shift_acc")) ++ "ca17_asimd1+ca17_simdshift1,ca17_iacc1") ++ ++(define_insn_reservation ++ "cortex_a17_neon_shift_imm_basic" 4 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_shift_imm_basic")) ++ "ca17_asimd1+ca17_simdshift1") ++ ++(define_insn_reservation ++ "cortex_a17_neon_shift_imm_complex" 5 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_shift_imm_complex")) ++ "ca17_asimd1+ca17_simdshift1") ++ ++(define_insn_reservation ++ "cortex_a17_neon_shift_reg_basic" 4 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_shift_reg_basic")) ++ "ca17_asimd1+ca17_simdshift1") ++ ++(define_insn_reservation ++ "cortex_a17_neon_shift_reg_basic_q" 5 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_shift_reg_basic_q")) ++ "(ca17_asimd1+ca17_simdshift1)*2") ++ ++(define_insn_reservation ++ "cortex_a17_neon_shift_reg_complex" 5 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_shift_reg_complex")) ++ "ca17_asimd1+ca17_simdshift1") ++ ++(define_insn_reservation ++ "cortex_a17_neon_shift_reg_complex_q" 6 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_shift_reg_complex_q")) ++ "(ca17_asimd1+ca17_simdshift1)*2") ++ ++(define_insn_reservation ++ "cortex_a17_neon_fp_negabs" 4 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_fp_negabs")) ++ "ca17_asimd0+ca17_simdfpadd0") ++ ++(define_insn_reservation ++ "cortex_a17_neon_fp_arith" 6 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_fp_arith")) ++ "ca17_asimd0+ca17_simdfpadd0") ++ ++(define_insn_reservation ++ "cortex_a17_neon_fp_arith_q" 6 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_fp_arith_q")) ++ "(ca17_asimd0+ca17_simdfpadd0)*2") ++ ++(define_insn_reservation ++ "cortex_a17_neon_fp_cvt_int" 6 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_fp_cvt_int")) ++ "ca17_asimd0+ca17_simdfpadd0") ++ ++(define_insn_reservation ++ "cortex_a17_neon_fp_cvt_int_q" 6 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_fp_cvt_int_q")) ++ "(ca17_asimd0+ca17_simdfpadd0)*2") ++ ++(define_insn_reservation ++ "cortex_a17_neon_fp_cvt16" 10 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_fp_cvt16")) ++ "ca17_asimd0+ca17_simdfpadd0") ++ ++(define_insn_reservation ++ "cortex_a17_neon_fp_mul" 5 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_fp_mul")) ++ "ca17_asimd0+ca17_simdfpmul0") ++ ++(define_insn_reservation ++ "cortex_a17_neon_fp_mul_q" 5 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_fp_mul_q")) ++ "(ca17_asimd0+ca17_simdfpmul0)*2") ++ ++(define_insn_reservation ++ "cortex_a17_neon_fp_mla" 8 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_fp_mla")) ++ "ca17_asimd0+ca17_simdfpmul0,ca17_simdfpadd0") ++ ++(define_insn_reservation ++ "cortex_a17_neon_fp_mla_q" 9 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_fp_mla_q")) ++ "ca17_asimd0+ca17_simdfpmul0,ca17_asimd0+ca17_simdfpadd0+ca17_simdfpmul0,ca17_simdfpadd0") ++ ++(define_insn_reservation ++ "cortex_a17_neon_fp_recps_rsqrte" 9 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_fp_recpe_rsqrte")) ++ "(ca17_asimd0+ca17_perm0)|(ca17_asimd1+ca17_perm1)") ++ ++(define_insn_reservation ++ "cortex_a17_neon_fp_recps_rsqrte_q" 9 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_fp_recpe_rsqrte_q")) ++ "(ca17_asimd0+ca17_perm0)*2|(ca17_asimd1+ca17_perm1)*2") ++ ++;; Miscelaneous Instructions. ++ ++(define_insn_reservation ++ "cortex_a17_neon_bitops" 4 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_bitops")) ++ "(ca17_asimd0+ca17_perm0) | (ca17_asimd1+ca17_perm1)") ++ ++(define_insn_reservation ++ "cortex_a17_neon_bitops_q" 4 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_bitops_q")) ++ "(ca17_asimd0+ca17_perm0)*2 | (ca17_asimd1+ca17_perm1)*2") ++ ++(define_insn_reservation ++ "cortex_a17_neon_from_gp" 2 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_from_gp")) ++ "(ca17_asimd0+ca17_perm0)|(ca17_asimd1+ca17_perm1)") ++ ++(define_insn_reservation ++ "cortex_a17_neon_from_gp_q" 3 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_from_gp_q")) ++ "(ca17_asimd0+ca17_perm0)|(ca17_asimd1+ca17_perm1)") ++ ++(define_insn_reservation ++ "cortex_a17_neon_tbl3_tbl4" 7 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_tbl3_tbl4")) ++ "(ca17_asimd0+ca17_perm0)|(ca17_asimd1+ca17_perm1)") ++ ++(define_insn_reservation ++ "cortex_a17_neon_zip_q" 7 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_zip_q")) ++ "(ca17_asimd0+ca17_perm0)|(ca17_asimd1+ca17_perm1)") ++ ++(define_insn_reservation ++ "cortex_a17_neon_to_gp" 2 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_to_gp")) ++ "ca17_asimd0+ca17_perm0*3") ++ ++(define_insn_reservation ++ "cortex_a17_vfp_flag" 5 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "f_flag")) ++ "ca17_asimd0+ca17_perm0") ++ ++;; Load Instructions. ++ ++(define_insn_reservation ++ "cortex_a17_vfp_load" 5 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "f_loads, f_loadd")) ++ "ca17_ls0|ca17_ls1") ++ ++(define_insn_reservation ++ "cortex_a17_neon_load_a" 6 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_load_a")) ++ "ca17_ls0*2|ca17_ls1*2") ++ ++(define_insn_reservation ++ "cortex_a17_neon_load_b" 7 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_load_b")) ++ "ca17_ls0*2|ca17_ls1*2") ++ ++(define_insn_reservation ++ "cortex_a17_neon_load_c" 8 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_load_c")) ++ "ca17_ls0*2|ca17_ls1*2") ++ ++(define_insn_reservation ++ "cortex_a17_neon_load_d" 9 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_load_d")) ++ "ca17_ls0*2|ca17_ls1*2") ++ ++(define_insn_reservation ++ "cortex_a17_neon_load_e" 9 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_load_e")) ++ "ca17_ls0*2|ca17_ls1*2") ++ ++(define_insn_reservation ++ "cortex_a17_neon_load_f" 10 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_load_f")) ++ "ca17_ls0*2+ca17_ls1*2") ++ ++(define_insn_reservation ++ "cortex_a17_neon_load_g" 10 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_load_g")) ++ "ca17_ls0*2+ca17_ls1*2") ++ ++(define_insn_reservation ++ "cortex_a17_neon_load_h" 11 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_load_h")) ++ "ca17_ls0*2+ca17_ls1*2") ++ ++;; Store Instructions. ++ ++(define_insn_reservation ++ "cortex_a17_vfp_store" 0 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "f_stores, f_stored")) ++ "ca17_ls0|ca17_ls1") ++ ++ ++(define_insn_reservation ++ "cortex_a17_neon_store_a" 0 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_store_a")) ++ "ca17_ls0*2|ca17_ls1*2") ++ ++(define_insn_reservation ++ "cortex_a17_neon_store_b" 0 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "cortex_a17_neon_type" "neon_store_b")) ++ "ca17_ls0*2+ca17_ls1*2") ++ ++;; VFP Operations. ++ ++(define_insn_reservation "cortex_a17_vfp_const" 4 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "fconsts,fconstd")) ++ "ca17_asimd1+ca17_fpadd1") ++ ++(define_insn_reservation "cortex_a17_vfp_adds_subs" 6 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "fadds")) ++ "ca17_asimd1+ca17_fpadd1") ++ ++ ++(define_insn_reservation "cortex_a17_vfp_addd_subd" 6 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "faddd")) ++ "ca17_asimd1+ca17_fpadd1") ++ ++(define_insn_reservation "cortex_a17_vfp_mul" 6 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "fmuls,fmuld")) ++ "ca17_asimd1+ca17_fpmul1") ++ ++(define_insn_reservation "cortex_a17_vfp_mac" 11 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "fmacs,ffmas,fmacd,ffmad")) ++ "ca17_asimd1+ca17_fpmul1,ca17_fpadd1") ++ ++(define_insn_reservation "cortex_a17_vfp_cvt" 6 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "f_cvt,f_cvtf2i,f_cvti2f,f_rints,f_rintd")) ++ "ca17_asimd1+ca17_fpadd1") ++ ++(define_insn_reservation "cortex_a17_vfp_cmp" 4 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "fcmps,fcmpd")) ++ "ca17_asimd1+ca17_fpadd1") ++ ++(define_insn_reservation "cortex_a17_vfp_arithd" 4 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "ffarithd")) ++ "ca17_asimd1+ca17_fpadd1") ++ ++(define_insn_reservation "cortex_a17_vfp_cpys" 4 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "fmov,fcsel")) ++ "ca17_asimd1+ca17_fpadd1") ++ ++(define_insn_reservation "cortex_a17_gp_to_vfp" 2 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "f_mcr, f_mcrr")) ++ "(ca17_asimd0+ca17_perm0)|(ca17_asimd1+ca17_perm1)") ++ ++(define_insn_reservation "cortex_a17_mov_vfp_to_gp" 4 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "f_mrc, f_mrrc")) ++ "ca17_asimd0+ca17_perm0*3") ++ ++(define_insn_reservation "cortex_a17_vfp_ariths" 4 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "ffariths")) ++ "ca17_asimd1+ca17_fpadd1") ++ ++(define_insn_reservation "cortex_a17_vfp_divs" 18 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "fdivs, fsqrts")) ++ "ca17_asimd0+ca17_fdiv0*10") ++ ++(define_insn_reservation "cortex_a17_vfp_divd" 32 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "fdivd, fsqrtd")) ++ "ca17_asimd0+ca17_fdiv0*10") ++ +--- a/src/gcc/config/arm/arm-fpus.def ++++ b/src/gcc/config/arm/arm-fpus.def +@@ -37,6 +37,8 @@ + ARM_FPU("vfpv4", ARM_FP_MODEL_VFP, 4, VFP_REG_D32, false, true, false) + ARM_FPU("vfpv4-d16", ARM_FP_MODEL_VFP, 4, VFP_REG_D16, false, true, false) + ARM_FPU("fpv4-sp-d16", ARM_FP_MODEL_VFP, 4, VFP_REG_SINGLE, false, true, false) ++ARM_FPU("fpv5-sp-d16", ARM_FP_MODEL_VFP, 5, VFP_REG_SINGLE, false, true, false) ++ARM_FPU("fpv5-d16", ARM_FP_MODEL_VFP, 5, VFP_REG_D16, false, true, false) + ARM_FPU("neon-vfpv4", ARM_FP_MODEL_VFP, 4, VFP_REG_D32, true, true, false) + ARM_FPU("fp-armv8", ARM_FP_MODEL_VFP, 8, VFP_REG_D32, false, true, false) + ARM_FPU("neon-fp-armv8",ARM_FP_MODEL_VFP, 8, VFP_REG_D32, true, true, false) +--- a/src/gcc/config/arm/cortex-a53.md ++++ b/src/gcc/config/arm/cortex-a53.md +@@ -75,7 +75,7 @@ + (eq_attr "type" "alu_imm,alus_imm,logic_imm,logics_imm,\ + alu_reg,alus_reg,logic_reg,logics_reg,\ + adc_imm,adcs_imm,adc_reg,adcs_reg,\ +- adr,bfm,csel,rev,\ ++ adr,bfm,csel,clz,rbit,rev,\ + shift_imm,shift_reg,\ + mov_imm,mov_reg,mvn_imm,mvn_reg,\ + mrs,multiple,no_insn")) +@@ -84,8 +84,8 @@ + (define_insn_reservation "cortex_a53_alu_shift" 2 + (and (eq_attr "tune" "cortexa53") + (eq_attr "type" "alu_shift_imm,alus_shift_imm,\ +- logic_shift_imm,logics_shift_imm,\ +- alu_shift_reg,alus_shift_reg,\ ++ crc,logic_shift_imm,logics_shift_imm,\ ++ alu_ext,alus_ext,alu_shift_reg,alus_shift_reg,\ + logic_shift_reg,logics_shift_reg,\ + extend,mov_shift,mov_shift_reg,\ + mvn_shift,mvn_shift_reg")) +@@ -216,7 +216,8 @@ + (and (eq_attr "tune" "cortexa53") + (eq_attr "type" "ffariths, fadds, ffarithd, faddd, fmov, fmuls,\ + f_cvt,f_cvtf2i,f_cvti2f,\ +- fcmps, fcmpd, fcsel")) ++ fcmps, fcmpd, fcsel, f_rints, f_rintd, f_minmaxs,\ ++ f_minmaxd")) + "cortex_a53_slot0+cortex_a53_fpadd_pipe") + + (define_insn_reservation "cortex_a53_fconst" 2 +--- a/src/gcc/config/arm/cortex-a17.md ++++ b/src/gcc/config/arm/cortex-a17.md +@@ -0,0 +1,169 @@ ++;; ARM Cortex-A17 pipeline description ++;; Copyright (C) 2014 Free Software Foundation, Inc. ++;; ++;; Contributed by ARM Ltd. ++;; ++;; This file is part of GCC. ++;; ++;; GCC is free software; you can redistribute it and/or modify it ++;; under the terms of the GNU General Public License as published by ++;; the Free Software Foundation; either version 3, or (at your option) ++;; any later version. ++;; ++;; GCC is distributed in the hope that it will be useful, but ++;; WITHOUT ANY WARRANTY; without even the implied warranty of ++;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++;; General Public License for more details. ++;; ++;; You should have received a copy of the GNU General Public License ++;; along with GCC; see the file COPYING3. If not see ++;; . ++ ++ ++(define_automaton "cortex_a17") ++ ++(define_cpu_unit "ca17_ls0, ca17_ls1" "cortex_a17") ++(define_cpu_unit "ca17_alu0, ca17_alu1" "cortex_a17") ++(define_cpu_unit "ca17_mac" "cortex_a17") ++(define_cpu_unit "ca17_idiv" "cortex_a17") ++(define_cpu_unit "ca17_bx" "cortex_a17") ++ ++(define_reservation "ca17_alu" "(ca17_alu0|ca17_alu1)") ++ ++ ++ ++;; Simple Execution Unit: ++;; ++;; Simple ALU ++(define_insn_reservation "cortex_a17_alu" 1 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "alu_imm,alus_imm,logic_imm,logics_imm,\ ++ alu_reg,alus_reg,logic_reg,logics_reg,\ ++ adc_imm,adcs_imm,adc_reg,adcs_reg,\ ++ adr, mov_imm,mov_reg,\ ++ mvn_imm,mvn_reg,extend,\ ++ mrs,multiple,no_insn")) ++ "ca17_alu") ++ ++(define_insn_reservation "cortex_a17_alu_shiftimm" 2 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "bfm,clz,rev,rbit, alu_shift_imm, alus_shift_imm, ++ logic_shift_imm,alu_reg,logics_shift_imm,shift_imm,\ ++ shift_reg, mov_shift,mvn_shift")) ++ "ca17_alu") ++ ++ ++;; ALU ops with register controlled shift. ++(define_insn_reservation "cortex_a17_alu_shift_reg" 2 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "alu_shift_reg,alus_shift_reg,\ ++ logic_shift_reg,logics_shift_reg")) ++ "ca17_alu0") ++ ++ ++;; Multiply Execution Unit: ++ ++;; 32-bit multiplies ++(define_insn_reservation "cortex_a17_mult32" 4 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "mul,muls,smmul,smmulr")) ++ "ca17_alu0+ca17_mac") ++ ++(define_insn_reservation "cortex_a17_mac32" 4 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "mla,mlas,smmla")) ++ "ca17_alu0+ca17_mac,ca17_mac") ++ ++(define_insn_reservation "cortex_a17_mac32_other" 3 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "smlad,smladx,smlsd,smlsdx,smuad,smuadx,smusd,smusdx")) ++ "ca17_alu0+ca17_mac,ca17_mac") ++ ++;; 64-bit multiplies ++(define_insn_reservation "cortex_a17_mac64" 4 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "smlal,smlals,umaal,umlal,umlals")) ++ "ca17_alu0+ca17_mac,ca17_mac") ++ ++(define_insn_reservation "cortex_a17_mac64_other" 3 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "smlald,smlalxy,smlsld")) ++ "ca17_alu0+ca17_mac,ca17_mac") ++ ++(define_insn_reservation "cortex_a17_mult64" 4 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "smull,smulls,umull,umulls")) ++ "ca17_alu0+ca17_mac,ca17_mac") ++ ++ ++(define_bypass 2 "cortex_a17_mult*, cortex_a17_mac*" ++ "cortex_a17_mult*, cortex_a17_mac*" ++ "arm_mac_accumulator_is_result") ++ ++;; Integer divide ++(define_insn_reservation "cortex_a17_udiv" 19 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "udiv")) ++ "ca17_alu1+ca17_idiv*10") ++ ++(define_insn_reservation "cortex_a17_sdiv" 20 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "sdiv")) ++ "ca17_alu1+ca17_idiv*11") ++ ++ ++ ++;; Branch execution Unit ++;; ++;; Branches take one issue slot. ++;; No latency as there is no result ++(define_insn_reservation "cortex_a17_branch" 0 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "branch")) ++ "ca17_bx") ++ ++;; Load-store execution Unit ++;; ++;; Loads of up to two words. ++(define_insn_reservation "cortex_a17_load1" 4 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "load_byte,load1,load2")) ++ "ca17_ls0|ca17_ls1") ++ ++;; Loads of three words. ++(define_insn_reservation "cortex_a17_load3" 4 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "load3")) ++ "ca17_ls0+ca17_ls1") ++ ++;; Loads of four words. ++(define_insn_reservation "cortex_a17_load4" 4 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "load4")) ++ "ca17_ls0+ca17_ls1") ++ ++;; Stores of up to two words. ++(define_insn_reservation "cortex_a17_store1" 0 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "store1,store2")) ++ "ca17_ls0|ca17_ls1") ++ ++;; Stores of three words ++(define_insn_reservation "cortex_a17_store3" 0 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "store3")) ++ "ca17_ls0+ca17_ls1") ++ ++;; Stores of four words. ++(define_insn_reservation "cortex_a17_store4" 0 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "store4")) ++ "ca17_ls0+ca17_ls1") ++ ++(define_insn_reservation "cortex_a17_call" 0 ++ (and (eq_attr "tune" "cortexa17") ++ (eq_attr "type" "call")) ++ "ca17_bx") ++ ++ ++(include "../arm/cortex-a17-neon.md") +--- a/src/gcc/config/arm/cortex-a57.md ++++ b/src/gcc/config/arm/cortex-a57.md +@@ -0,0 +1,797 @@ ++;; ARM Cortex-A57 pipeline description ++;; Copyright (C) 2014-2015 Free Software Foundation, Inc. ++;; ++;; This file is part of GCC. ++;; ++;; GCC is free software; you can redistribute it and/or modify it ++;; under the terms of the GNU General Public License as published by ++;; the Free Software Foundation; either version 3, or (at your option) ++;; any later version. ++;; ++;; GCC is distributed in the hope that it will be useful, but ++;; WITHOUT ANY WARRANTY; without even the implied warranty of ++;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++;; General Public License for more details. ++;; ++;; You should have received a copy of the GNU General Public License ++;; along with GCC; see the file COPYING3. If not see ++;; . ++ ++(define_automaton "cortex_a57") ++ ++(define_attr "cortex_a57_neon_type" ++ "neon_abd, neon_abd_q, neon_arith_acc, neon_arith_acc_q, ++ neon_arith_basic, neon_arith_complex, ++ neon_reduc_add_acc, neon_multiply, neon_multiply_q, ++ neon_multiply_long, neon_mla, neon_mla_q, neon_mla_long, ++ neon_sat_mla_long, neon_shift_acc, neon_shift_imm_basic, ++ neon_shift_imm_complex, ++ neon_shift_reg_basic, neon_shift_reg_basic_q, neon_shift_reg_complex, ++ neon_shift_reg_complex_q, neon_fp_negabs, neon_fp_arith, ++ neon_fp_arith_q, neon_fp_reductions_q, neon_fp_cvt_int, ++ neon_fp_cvt_int_q, neon_fp_cvt16, neon_fp_minmax, neon_fp_mul, ++ neon_fp_mul_q, neon_fp_mla, neon_fp_mla_q, neon_fp_recpe_rsqrte, ++ neon_fp_recpe_rsqrte_q, neon_fp_recps_rsqrts, neon_fp_recps_rsqrts_q, ++ neon_bitops, neon_bitops_q, neon_from_gp, ++ neon_from_gp_q, neon_move, neon_tbl3_tbl4, neon_zip_q, neon_to_gp, ++ neon_load_a, neon_load_b, neon_load_c, neon_load_d, neon_load_e, ++ neon_load_f, neon_store_a, neon_store_b, neon_store_complex, ++ unknown" ++ (cond [ ++ (eq_attr "type" "neon_abd, neon_abd_long") ++ (const_string "neon_abd") ++ (eq_attr "type" "neon_abd_q") ++ (const_string "neon_abd_q") ++ (eq_attr "type" "neon_arith_acc, neon_reduc_add_acc,\ ++ neon_reduc_add_acc_q") ++ (const_string "neon_arith_acc") ++ (eq_attr "type" "neon_arith_acc_q") ++ (const_string "neon_arith_acc_q") ++ (eq_attr "type" "neon_add, neon_add_q, neon_add_long,\ ++ neon_add_widen, neon_neg, neon_neg_q,\ ++ neon_reduc_add, neon_reduc_add_q,\ ++ neon_reduc_add_long, neon_sub, neon_sub_q,\ ++ neon_sub_long, neon_sub_widen, neon_logic,\ ++ neon_logic_q, neon_tst, neon_tst_q") ++ (const_string "neon_arith_basic") ++ (eq_attr "type" "neon_abs, neon_abs_q, neon_add_halve_narrow_q,\ ++ neon_add_halve, neon_add_halve_q,\ ++ neon_sub_halve, neon_sub_halve_q, neon_qabs,\ ++ neon_qabs_q, neon_qadd, neon_qadd_q, neon_qneg,\ ++ neon_qneg_q, neon_qsub, neon_qsub_q,\ ++ neon_sub_halve_narrow_q,\ ++ neon_compare, neon_compare_q,\ ++ neon_compare_zero, neon_compare_zero_q,\ ++ neon_minmax, neon_minmax_q, neon_reduc_minmax,\ ++ neon_reduc_minmax_q") ++ (const_string "neon_arith_complex") ++ ++ (eq_attr "type" "neon_mul_b, neon_mul_h, neon_mul_s,\ ++ neon_mul_h_scalar, neon_mul_s_scalar,\ ++ neon_sat_mul_b, neon_sat_mul_h,\ ++ neon_sat_mul_s, neon_sat_mul_h_scalar,\ ++ neon_sat_mul_s_scalar,\ ++ neon_mul_b_long, neon_mul_h_long,\ ++ neon_mul_s_long, neon_mul_d_long,\ ++ neon_mul_h_scalar_long, neon_mul_s_scalar_long,\ ++ neon_sat_mul_b_long, neon_sat_mul_h_long,\ ++ neon_sat_mul_s_long, neon_sat_mul_h_scalar_long,\ ++ neon_sat_mul_s_scalar_long") ++ (const_string "neon_multiply") ++ (eq_attr "type" "neon_mul_b_q, neon_mul_h_q, neon_mul_s_q,\ ++ neon_mul_h_scalar_q, neon_mul_s_scalar_q,\ ++ neon_sat_mul_b_q, neon_sat_mul_h_q,\ ++ neon_sat_mul_s_q, neon_sat_mul_h_scalar_q,\ ++ neon_sat_mul_s_scalar_q") ++ (const_string "neon_multiply_q") ++ (eq_attr "type" "neon_mla_b, neon_mla_h, neon_mla_s,\ ++ neon_mla_h_scalar, neon_mla_s_scalar,\ ++ neon_mla_b_long, neon_mla_h_long,\ ++ neon_mla_s_long,\ ++ neon_mla_h_scalar_long, neon_mla_s_scalar_long") ++ (const_string "neon_mla") ++ (eq_attr "type" "neon_mla_b_q, neon_mla_h_q, neon_mla_s_q,\ ++ neon_mla_h_scalar_q, neon_mla_s_scalar_q") ++ (const_string "neon_mla_q") ++ (eq_attr "type" "neon_sat_mla_b_long, neon_sat_mla_h_long,\ ++ neon_sat_mla_s_long, neon_sat_mla_h_scalar_long,\ ++ neon_sat_mla_s_scalar_long") ++ (const_string "neon_sat_mla_long") ++ ++ (eq_attr "type" "neon_shift_acc, neon_shift_acc_q") ++ (const_string "neon_shift_acc") ++ (eq_attr "type" "neon_shift_imm, neon_shift_imm_q,\ ++ neon_shift_imm_narrow_q, neon_shift_imm_long") ++ (const_string "neon_shift_imm_basic") ++ (eq_attr "type" "neon_sat_shift_imm, neon_sat_shift_imm_q,\ ++ neon_sat_shift_imm_narrow_q") ++ (const_string "neon_shift_imm_complex") ++ (eq_attr "type" "neon_shift_reg") ++ (const_string "neon_shift_reg_basic") ++ (eq_attr "type" "neon_shift_reg_q") ++ (const_string "neon_shift_reg_basic_q") ++ (eq_attr "type" "neon_sat_shift_reg") ++ (const_string "neon_shift_reg_complex") ++ (eq_attr "type" "neon_sat_shift_reg_q") ++ (const_string "neon_shift_reg_complex_q") ++ ++ (eq_attr "type" "neon_fp_neg_s, neon_fp_neg_s_q,\ ++ neon_fp_abs_s, neon_fp_abs_s_q,\ ++ neon_fp_neg_d, neon_fp_neg_d_q,\ ++ neon_fp_abs_d, neon_fp_abs_d_q") ++ (const_string "neon_fp_negabs") ++ (eq_attr "type" "neon_fp_addsub_s, neon_fp_abd_s,\ ++ neon_fp_reduc_add_s, neon_fp_compare_s,\ ++ neon_fp_minmax_s, neon_fp_round_s,\ ++ neon_fp_addsub_d, neon_fp_abd_d,\ ++ neon_fp_reduc_add_d, neon_fp_compare_d,\ ++ neon_fp_minmax_d, neon_fp_round_d,\ ++ neon_fp_reduc_minmax_s, neon_fp_reduc_minmax_d") ++ (const_string "neon_fp_arith") ++ (eq_attr "type" "neon_fp_addsub_s_q, neon_fp_abd_s_q,\ ++ neon_fp_reduc_add_s_q, neon_fp_compare_s_q,\ ++ neon_fp_minmax_s_q, neon_fp_round_s_q,\ ++ neon_fp_addsub_d_q, neon_fp_abd_d_q,\ ++ neon_fp_reduc_add_d_q, neon_fp_compare_d_q,\ ++ neon_fp_minmax_d_q, neon_fp_round_d_q") ++ (const_string "neon_fp_arith_q") ++ (eq_attr "type" "neon_fp_reduc_minmax_s_q,\ ++ neon_fp_reduc_minmax_d_q,\ ++ neon_fp_reduc_add_s_q, neon_fp_reduc_add_d_q") ++ (const_string "neon_fp_reductions_q") ++ (eq_attr "type" "neon_fp_to_int_s, neon_int_to_fp_s,\ ++ neon_fp_to_int_d, neon_int_to_fp_d") ++ (const_string "neon_fp_cvt_int") ++ (eq_attr "type" "neon_fp_to_int_s_q, neon_int_to_fp_s_q,\ ++ neon_fp_to_int_d_q, neon_int_to_fp_d_q") ++ (const_string "neon_fp_cvt_int_q") ++ (eq_attr "type" "neon_fp_cvt_narrow_s_q, neon_fp_cvt_widen_h") ++ (const_string "neon_fp_cvt16") ++ (eq_attr "type" "neon_fp_mul_s, neon_fp_mul_s_scalar,\ ++ neon_fp_mul_d") ++ (const_string "neon_fp_mul") ++ (eq_attr "type" "neon_fp_mul_s_q, neon_fp_mul_s_scalar_q,\ ++ neon_fp_mul_d_q, neon_fp_mul_d_scalar_q") ++ (const_string "neon_fp_mul_q") ++ (eq_attr "type" "neon_fp_mla_s, neon_fp_mla_s_scalar,\ ++ neon_fp_mla_d") ++ (const_string "neon_fp_mla") ++ (eq_attr "type" "neon_fp_mla_s_q, neon_fp_mla_s_scalar_q, ++ neon_fp_mla_d_q, neon_fp_mla_d_scalar_q") ++ (const_string "neon_fp_mla_q") ++ (eq_attr "type" "neon_fp_recpe_s, neon_fp_rsqrte_s,\ ++ neon_fp_recpx_s,\ ++ neon_fp_recpe_d, neon_fp_rsqrte_d,\ ++ neon_fp_recpx_d") ++ (const_string "neon_fp_recpe_rsqrte") ++ (eq_attr "type" "neon_fp_recpe_s_q, neon_fp_rsqrte_s_q,\ ++ neon_fp_recpx_s_q,\ ++ neon_fp_recpe_d_q, neon_fp_rsqrte_d_q,\ ++ neon_fp_recpx_d_q") ++ (const_string "neon_fp_recpe_rsqrte_q") ++ (eq_attr "type" "neon_fp_recps_s, neon_fp_rsqrts_s,\ ++ neon_fp_recps_d, neon_fp_rsqrts_d") ++ (const_string "neon_fp_recps_rsqrts") ++ (eq_attr "type" "neon_fp_recps_s_q, neon_fp_rsqrts_s_q,\ ++ neon_fp_recps_d_q, neon_fp_rsqrts_d_q") ++ (const_string "neon_fp_recps_rsqrts_q") ++ (eq_attr "type" "neon_bsl, neon_cls, neon_cnt,\ ++ neon_rev, neon_permute, neon_rbit,\ ++ neon_tbl1, neon_tbl2, neon_zip,\ ++ neon_dup, neon_dup_q, neon_ext, neon_ext_q,\ ++ neon_move, neon_move_q, neon_move_narrow_q") ++ (const_string "neon_bitops") ++ (eq_attr "type" "neon_bsl_q, neon_cls_q, neon_cnt_q,\ ++ neon_rev_q, neon_permute_q, neon_rbit_q") ++ (const_string "neon_bitops_q") ++ (eq_attr "type" "neon_from_gp,f_mcr,f_mcrr") ++ (const_string "neon_from_gp") ++ (eq_attr "type" "neon_from_gp_q") ++ (const_string "neon_from_gp_q") ++ (eq_attr "type" "neon_tbl3, neon_tbl4") ++ (const_string "neon_tbl3_tbl4") ++ (eq_attr "type" "neon_zip_q") ++ (const_string "neon_zip_q") ++ (eq_attr "type" "neon_to_gp, neon_to_gp_q,f_mrc,f_mrrc") ++ (const_string "neon_to_gp") ++ ++ (eq_attr "type" "f_loads, f_loadd,\ ++ neon_load1_1reg, neon_load1_1reg_q,\ ++ neon_load1_2reg, neon_load1_2reg_q") ++ (const_string "neon_load_a") ++ (eq_attr "type" "neon_load1_3reg, neon_load1_3reg_q,\ ++ neon_load1_4reg, neon_load1_4reg_q") ++ (const_string "neon_load_b") ++ (eq_attr "type" "neon_load1_one_lane, neon_load1_one_lane_q,\ ++ neon_load1_all_lanes, neon_load1_all_lanes_q,\ ++ neon_load2_2reg, neon_load2_2reg_q,\ ++ neon_load2_all_lanes, neon_load2_all_lanes_q") ++ (const_string "neon_load_c") ++ (eq_attr "type" "neon_load2_4reg, neon_load2_4reg_q,\ ++ neon_load3_3reg, neon_load3_3reg_q,\ ++ neon_load3_one_lane, neon_load3_one_lane_q,\ ++ neon_load4_4reg, neon_load4_4reg_q") ++ (const_string "neon_load_d") ++ (eq_attr "type" "neon_load2_one_lane, neon_load2_one_lane_q,\ ++ neon_load3_all_lanes, neon_load3_all_lanes_q,\ ++ neon_load4_all_lanes, neon_load4_all_lanes_q") ++ (const_string "neon_load_e") ++ (eq_attr "type" "neon_load4_one_lane, neon_load4_one_lane_q") ++ (const_string "neon_load_f") ++ ++ (eq_attr "type" "f_stores, f_stored,\ ++ neon_store1_1reg") ++ (const_string "neon_store_a") ++ (eq_attr "type" "neon_store1_2reg, neon_store1_1reg_q") ++ (const_string "neon_store_b") ++ (eq_attr "type" "neon_store1_3reg, neon_store1_3reg_q,\ ++ neon_store3_3reg, neon_store3_3reg_q,\ ++ neon_store2_4reg, neon_store2_4reg_q,\ ++ neon_store4_4reg, neon_store4_4reg_q,\ ++ neon_store2_2reg, neon_store2_2reg_q,\ ++ neon_store3_one_lane, neon_store3_one_lane_q,\ ++ neon_store4_one_lane, neon_store4_one_lane_q,\ ++ neon_store1_4reg, neon_store1_4reg_q,\ ++ neon_store1_one_lane, neon_store1_one_lane_q,\ ++ neon_store2_one_lane, neon_store2_one_lane_q") ++ (const_string "neon_store_complex")] ++ (const_string "unknown"))) ++ ++;; The Cortex-A57 core is modelled as a triple issue pipeline that has ++;; the following functional units. ++;; 1. Two pipelines for integer operations: SX1, SX2 ++ ++(define_cpu_unit "ca57_sx1_issue" "cortex_a57") ++(define_reservation "ca57_sx1" "ca57_sx1_issue") ++ ++(define_cpu_unit "ca57_sx2_issue" "cortex_a57") ++(define_reservation "ca57_sx2" "ca57_sx2_issue") ++ ++;; 2. One pipeline for complex integer operations: MX ++ ++(define_cpu_unit "ca57_mx_issue" ++ "cortex_a57") ++(define_reservation "ca57_mx" "ca57_mx_issue") ++(define_reservation "ca57_mx_block" "ca57_mx_issue") ++ ++;; 3. Two asymmetric pipelines for Neon and FP operations: CX1, CX2 ++(define_automaton "cortex_a57_cx") ++ ++(define_cpu_unit "ca57_cx1_issue" ++ "cortex_a57_cx") ++(define_cpu_unit "ca57_cx2_issue" ++ "cortex_a57_cx") ++ ++(define_reservation "ca57_cx1" "ca57_cx1_issue") ++ ++(define_reservation "ca57_cx2" "ca57_cx2_issue") ++(define_reservation "ca57_cx2_block" "ca57_cx2_issue*2") ++ ++;; 4. One pipeline for branch operations: BX ++ ++(define_cpu_unit "ca57_bx_issue" "cortex_a57") ++(define_reservation "ca57_bx" "ca57_bx_issue") ++ ++;; 5. Two pipelines for load and store operations: LS1, LS2. The most ++;; valuable thing we can do is force a structural hazard to split ++;; up loads/stores. ++ ++(define_cpu_unit "ca57_ls_issue" "cortex_a57") ++(define_cpu_unit "ca57_ldr, ca57_str" "cortex_a57") ++(define_reservation "ca57_load_model" "ca57_ls_issue,ca57_ldr*2") ++(define_reservation "ca57_store_model" "ca57_ls_issue,ca57_str") ++ ++;; Block all issue queues. ++ ++(define_reservation "ca57_block" "ca57_cx1_issue + ca57_cx2_issue ++ + ca57_mx_issue + ca57_sx1_issue ++ + ca57_sx2_issue + ca57_ls_issue") ++ ++;; Simple Execution Unit: ++;; ++;; Simple ALU without shift ++(define_insn_reservation "cortex_a57_alu" 2 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "type" "alu_imm,alus_imm,logic_imm,logics_imm,\ ++ alu_reg,alus_reg,logic_reg,logics_reg,\ ++ adc_imm,adcs_imm,adc_reg,adcs_reg,\ ++ adr,bfm,clz,rbit,rev,alu_reg,\ ++ shift_imm,shift_reg,\ ++ mov_imm,mov_reg,\ ++ mvn_imm,mvn_reg,\ ++ mrs,multiple,no_insn")) ++ "ca57_sx1|ca57_sx2") ++ ++;; ALU ops with immediate shift ++(define_insn_reservation "cortex_a57_alu_shift" 3 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "type" "extend,\ ++ alu_shift_imm,alus_shift_imm,\ ++ crc,logic_shift_imm,logics_shift_imm,\ ++ mov_shift,mvn_shift")) ++ "ca57_mx") ++ ++;; Multi-Cycle Execution Unit: ++;; ++;; ALU ops with register controlled shift ++(define_insn_reservation "cortex_a57_alu_shift_reg" 3 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "type" "alu_shift_reg,alus_shift_reg,\ ++ logic_shift_reg,logics_shift_reg,\ ++ mov_shift_reg,mvn_shift_reg")) ++ "ca57_mx") ++ ++;; All multiplies ++;; TODO: AArch32 and AArch64 have different behaviour ++(define_insn_reservation "cortex_a57_mult32" 3 ++ (and (eq_attr "tune" "cortexa57") ++ (ior (eq_attr "mul32" "yes") ++ (eq_attr "mul64" "yes"))) ++ "ca57_mx") ++ ++;; Integer divide ++(define_insn_reservation "cortex_a57_div" 10 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "type" "udiv,sdiv")) ++ "ca57_mx_issue,ca57_mx_block*3") ++ ++;; Block all issue pipes for a cycle ++(define_insn_reservation "cortex_a57_block" 1 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "type" "block")) ++ "ca57_block") ++ ++;; Branch execution Unit ++;; ++;; Branches take one issue slot. ++;; No latency as there is no result ++(define_insn_reservation "cortex_a57_branch" 0 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "type" "branch")) ++ "ca57_bx") ++ ++;; Load-store execution Unit ++;; ++;; Loads of up to two words. ++(define_insn_reservation "cortex_a57_load1" 5 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "type" "load_byte,load1,load2")) ++ "ca57_load_model") ++ ++;; Loads of three or four words. ++(define_insn_reservation "cortex_a57_load3" 5 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "type" "load3,load4")) ++ "ca57_ls_issue*2,ca57_load_model") ++ ++;; Stores of up to two words. ++(define_insn_reservation "cortex_a57_store1" 0 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "type" "store1,store2")) ++ "ca57_store_model") ++ ++;; Stores of three or four words. ++(define_insn_reservation "cortex_a57_store3" 0 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "type" "store3,store4")) ++ "ca57_ls_issue*2,ca57_store_model") ++ ++;; Advanced SIMD Unit - Integer Arithmetic Instructions. ++ ++(define_insn_reservation "cortex_a57_neon_abd" 5 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_abd")) ++ "ca57_cx1|ca57_cx2") ++ ++(define_insn_reservation "cortex_a57_neon_abd_q" 5 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_abd_q")) ++ "ca57_cx1+ca57_cx2") ++ ++(define_insn_reservation "cortex_a57_neon_aba" 7 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_arith_acc")) ++ "ca57_cx2") ++ ++(define_insn_reservation "cortex_a57_neon_aba_q" 8 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_arith_acc_q")) ++ "ca57_cx2+(ca57_cx2_issue,ca57_cx2)") ++ ++(define_insn_reservation "cortex_a57_neon_arith_basic" 4 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_arith_basic")) ++ "ca57_cx1|ca57_cx2") ++ ++(define_insn_reservation "cortex_a57_neon_arith_complex" 5 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_arith_complex")) ++ "ca57_cx1|ca57_cx2") ++ ++;; Integer Multiply Instructions. ++ ++(define_insn_reservation "cortex_a57_neon_multiply" 6 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_multiply")) ++ "ca57_cx1") ++ ++(define_insn_reservation "cortex_a57_neon_multiply_q" 7 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_multiply_q")) ++ "ca57_cx1+(ca57_cx1_issue,ca57_cx1)") ++ ++(define_insn_reservation "cortex_a57_neon_mla" 6 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_mla")) ++ "ca57_cx1") ++ ++(define_insn_reservation "cortex_a57_neon_mla_q" 7 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_mla_q")) ++ "ca57_cx1+(ca57_cx1_issue,ca57_cx1)") ++ ++(define_insn_reservation "cortex_a57_neon_sat_mla_long" 6 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_sat_mla_long")) ++ "ca57_cx1") ++ ++;; Integer Shift Instructions. ++ ++(define_insn_reservation ++ "cortex_a57_neon_shift_acc" 7 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_shift_acc")) ++ "ca57_cx2") ++ ++(define_insn_reservation ++ "cortex_a57_neon_shift_imm_basic" 4 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_shift_imm_basic")) ++ "ca57_cx2") ++ ++(define_insn_reservation ++ "cortex_a57_neon_shift_imm_complex" 5 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_shift_imm_complex")) ++ "ca57_cx2") ++ ++(define_insn_reservation ++ "cortex_a57_neon_shift_reg_basic" 4 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_shift_reg_basic")) ++ "ca57_cx2") ++ ++(define_insn_reservation ++ "cortex_a57_neon_shift_reg_basic_q" 5 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_shift_reg_basic_q")) ++ "ca57_cx2+(ca57_cx2_issue,ca57_cx2)") ++ ++(define_insn_reservation ++ "cortex_a57_neon_shift_reg_complex" 5 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_shift_reg_complex")) ++ "ca57_cx2") ++ ++(define_insn_reservation ++ "cortex_a57_neon_shift_reg_complex_q" 6 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_shift_reg_complex_q")) ++ "ca57_cx2+(ca57_cx2_issue,ca57_cx2)") ++ ++;; Floating Point Instructions. ++ ++(define_insn_reservation ++ "cortex_a57_neon_fp_negabs" 4 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_fp_negabs")) ++ "(ca57_cx1|ca57_cx2)") ++ ++(define_insn_reservation ++ "cortex_a57_neon_fp_arith" 6 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_fp_arith")) ++ "(ca57_cx1|ca57_cx2)") ++ ++(define_insn_reservation ++ "cortex_a57_neon_fp_arith_q" 6 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_fp_arith_q")) ++ "(ca57_cx1+ca57_cx2)") ++ ++(define_insn_reservation ++ "cortex_a57_neon_fp_reductions_q" 10 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_fp_reductions_q")) ++ "(ca57_cx1+ca57_cx2),(ca57_cx1|ca57_cx2)") ++ ++(define_insn_reservation ++ "cortex_a57_neon_fp_cvt_int" 6 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_fp_cvt_int")) ++ "(ca57_cx1|ca57_cx2)") ++ ++(define_insn_reservation ++ "cortex_a57_neon_fp_cvt_int_q" 6 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_fp_cvt_int_q")) ++ "(ca57_cx1+ca57_cx2)") ++ ++(define_insn_reservation ++ "cortex_a57_neon_fp_cvt16" 10 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_fp_cvt16")) ++ "(ca57_cx1_issue+ca57_cx2_issue),(ca57_cx1|ca57_cx2)") ++ ++(define_insn_reservation ++ "cortex_a57_neon_fp_mul" 5 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_fp_mul")) ++ "(ca57_cx1|ca57_cx2)") ++ ++(define_insn_reservation ++ "cortex_a57_neon_fp_mul_q" 5 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_fp_mul_q")) ++ "(ca57_cx1+ca57_cx2)") ++ ++(define_insn_reservation ++ "cortex_a57_neon_fp_mla" 9 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_fp_mla")) ++ "(ca57_cx1,ca57_cx1)|(ca57_cx2,ca57_cx2)") ++ ++(define_insn_reservation ++ "cortex_a57_neon_fp_mla_q" 9 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_fp_mla_q")) ++ "(ca57_cx1+ca57_cx2),(ca57_cx1,ca57_cx2)") ++ ++(define_insn_reservation ++ "cortex_a57_neon_fp_recpe_rsqrte" 6 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_fp_recpe_rsqrte")) ++ "(ca57_cx1|ca57_cx2)") ++ ++(define_insn_reservation ++ "cortex_a57_neon_fp_recpe_rsqrte_q" 6 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_fp_recpe_rsqrte_q")) ++ "(ca57_cx1+ca57_cx2)") ++ ++(define_insn_reservation ++ "cortex_a57_neon_fp_recps_rsqrts" 10 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_fp_recps_rsqrts")) ++ "(ca57_cx1|ca57_cx2)") ++ ++(define_insn_reservation ++ "cortex_a57_neon_fp_recps_rsqrts_q" 10 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_fp_recps_rsqrts_q")) ++ "(ca57_cx1+ca57_cx2)") ++ ++;; Miscellaneous Instructions. ++ ++(define_insn_reservation ++ "cortex_a57_neon_bitops" 4 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_bitops")) ++ "(ca57_cx1|ca57_cx2)") ++ ++(define_insn_reservation ++ "cortex_a57_neon_bitops_q" 4 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_bitops_q")) ++ "(ca57_cx1+ca57_cx2)") ++ ++(define_insn_reservation ++ "cortex_a57_neon_from_gp" 9 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_from_gp")) ++ "(ca57_ls_issue+ca57_cx1_issue,ca57_cx1) ++ |(ca57_ls_issue+ca57_cx2_issue,ca57_cx2)") ++ ++(define_insn_reservation ++ "cortex_a57_neon_from_gp_q" 9 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_from_gp_q")) ++ "(ca57_ls_issue+ca57_cx1_issue,ca57_cx1) ++ +(ca57_ls_issue+ca57_cx2_issue,ca57_cx2)") ++ ++(define_insn_reservation ++ "cortex_a57_neon_tbl3_tbl4" 7 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_tbl3_tbl4")) ++ "(ca57_cx1_issue,ca57_cx1) ++ +(ca57_cx2_issue,ca57_cx2)") ++ ++(define_insn_reservation ++ "cortex_a57_neon_zip_q" 7 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_zip_q")) ++ "(ca57_cx1_issue,ca57_cx1) ++ +(ca57_cx2_issue,ca57_cx2)") ++ ++(define_insn_reservation ++ "cortex_a57_neon_to_gp" 7 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_to_gp")) ++ "((ca57_ls_issue+ca57_sx1_issue),ca57_sx1) ++ |((ca57_ls_issue+ca57_sx2_issue),ca57_sx2)") ++ ++;; Load Instructions. ++ ++(define_insn_reservation ++ "cortex_a57_neon_load_a" 6 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_load_a")) ++ "ca57_load_model") ++ ++(define_insn_reservation ++ "cortex_a57_neon_load_b" 7 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_load_b")) ++ "ca57_ls_issue,ca57_ls_issue+ca57_ldr,ca57_ldr*2") ++ ++(define_insn_reservation ++ "cortex_a57_neon_load_c" 9 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_load_c")) ++ "ca57_load_model+(ca57_cx1|ca57_cx2)") ++ ++(define_insn_reservation ++ "cortex_a57_neon_load_d" 11 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_load_d")) ++ "ca57_cx1_issue+ca57_cx2_issue, ++ ca57_ls_issue+ca57_ls_issue,ca57_ldr*2") ++ ++(define_insn_reservation ++ "cortex_a57_neon_load_e" 9 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_load_e")) ++ "ca57_load_model+(ca57_cx1|ca57_cx2)") ++ ++(define_insn_reservation ++ "cortex_a57_neon_load_f" 11 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_load_f")) ++ "ca57_cx1_issue+ca57_cx2_issue, ++ ca57_ls_issue+ca57_ls_issue,ca57_ldr*2") ++ ++;; Store Instructions. ++ ++(define_insn_reservation ++ "cortex_a57_neon_store_a" 0 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_store_a")) ++ "ca57_store_model") ++ ++(define_insn_reservation ++ "cortex_a57_neon_store_b" 0 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_store_b")) ++ "ca57_store_model") ++ ++;; These block issue for a number of cycles proportional to the number ++;; of 64-bit chunks they will store, we don't attempt to model that ++;; precisely, treat them as blocking execution for two cycles when ++;; issued. ++(define_insn_reservation ++ "cortex_a57_neon_store_complex" 0 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "cortex_a57_neon_type" "neon_store_complex")) ++ "ca57_block*2") ++ ++;; Floating-Point Operations. ++ ++(define_insn_reservation "cortex_a57_fp_const" 4 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "type" "fconsts,fconstd")) ++ "(ca57_cx1|ca57_cx2)") ++ ++(define_insn_reservation "cortex_a57_fp_add_sub" 6 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "type" "fadds,faddd")) ++ "(ca57_cx1|ca57_cx2)") ++ ++(define_insn_reservation "cortex_a57_fp_mul" 6 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "type" "fmuls,fmuld")) ++ "(ca57_cx1|ca57_cx2)") ++ ++(define_insn_reservation "cortex_a57_fp_mac" 10 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "type" "fmacs,ffmas,fmacd,ffmad")) ++ "(ca57_cx1,nothing,nothing,ca57_cx1) \ ++ |(ca57_cx2,nothing,nothing,ca57_cx2)") ++ ++(define_insn_reservation "cortex_a57_fp_cvt" 6 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "type" "f_cvt,f_cvtf2i,f_cvti2f")) ++ "(ca57_cx1|ca57_cx2)") ++ ++(define_insn_reservation "cortex_a57_fp_cmp" 7 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "type" "fcmps,fcmpd")) ++ "ca57_cx2") ++ ++(define_insn_reservation "cortex_a57_fp_arith" 4 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "type" "ffariths,ffarithd")) ++ "(ca57_cx1|ca57_cx2)") ++ ++(define_insn_reservation "cortex_a57_fp_cpys" 4 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "type" "fmov")) ++ "(ca57_cx1|ca57_cx2)") ++ ++(define_insn_reservation "cortex_a57_fp_divs" 12 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "type" "fdivs, fsqrts,\ ++ neon_fp_div_s, neon_fp_sqrt_s")) ++ "ca57_cx2_block*5") ++ ++(define_insn_reservation "cortex_a57_fp_divd" 16 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "type" "fdivd, fsqrtd, neon_fp_div_d, neon_fp_sqrt_d")) ++ "ca57_cx2_block*3") ++ ++(define_insn_reservation "cortex_a57_neon_fp_div_q" 20 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "type" "fdivd, fsqrtd,\ ++ neon_fp_div_s_q, neon_fp_div_d_q,\ ++ neon_fp_sqrt_s_q, neon_fp_sqrt_d_q")) ++ "ca57_cx2_block*3") ++ ++(define_insn_reservation "cortex_a57_crypto_simple" 4 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "type" "crypto_aese,crypto_aesmc,crypto_sha1_fast")) ++ "ca57_cx2") ++ ++(define_insn_reservation "cortex_a57_crypto_complex" 7 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "type" "crypto_sha1_slow")) ++ "ca57_cx2+(ca57_cx2_issue,ca57_cx2)") ++ ++(define_insn_reservation "cortex_a57_crypto_xor" 7 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "type" "crypto_sha1_xor")) ++ "(ca57_cx1+ca57_cx2)") ++ ++;; We lie with calls. They take up all issue slots, but are otherwise ++;; not harmful. ++(define_insn_reservation "cortex_a57_call" 1 ++ (and (eq_attr "tune" "cortexa57") ++ (eq_attr "type" "call")) ++ "ca57_sx1_issue+ca57_sx2_issue+ca57_cx1_issue+ca57_cx2_issue\ ++ +ca57_mx_issue+ca57_bx_issue+ca57_ls_issue" ++) ++ ++;; Simple execution unit bypasses ++(define_bypass 1 "cortex_a57_alu" ++ "cortex_a57_alu,cortex_a57_alu_shift,cortex_a57_alu_shift_reg") ++(define_bypass 2 "cortex_a57_alu_shift" ++ "cortex_a57_alu,cortex_a57_alu_shift,cortex_a57_alu_shift_reg") ++(define_bypass 2 "cortex_a57_alu_shift_reg" ++ "cortex_a57_alu,cortex_a57_alu_shift,cortex_a57_alu_shift_reg") ++(define_bypass 1 "cortex_a57_alu" "cortex_a57_load1,cortex_a57_load3") ++(define_bypass 2 "cortex_a57_alu_shift" "cortex_a57_load1,cortex_a57_load3") ++(define_bypass 2 "cortex_a57_alu_shift_reg" ++ "cortex_a57_load1,cortex_a57_load3") ++ ++;; An MLA or a MUL can feed a dependent MLA. ++(define_bypass 5 "cortex_a57_neon_*mla*,cortex_a57_neon_*mul*" ++ "cortex_a57_neon_*mla*") ++ ++(define_bypass 5 "cortex_a57_fp_mul,cortex_a57_fp_mac" ++ "cortex_a57_fp_mac") ++ ++;; We don't need to care about control hazards, either the branch is ++;; predicted in which case we pay no penalty, or the branch is ++;; mispredicted in which case instruction scheduling will be unlikely to ++;; help. ++(define_bypass 1 "cortex_a57_*" ++ "cortex_a57_call,cortex_a57_branch") ++ +--- a/src/gcc/config/arm/bpabi.h ++++ b/src/gcc/config/arm/bpabi.h +@@ -64,16 +64,23 @@ + " %{!mlittle-endian:%{march=armv7-a|mcpu=cortex-a5 \ + |mcpu=cortex-a7 \ + |mcpu=cortex-a8|mcpu=cortex-a9|mcpu=cortex-a15 \ +- |mcpu=cortex-a12 \ ++ |mcpu=cortex-a12|mcpu=cortex-a17 \ + |mcpu=cortex-a15.cortex-a7 \ ++ |mcpu=cortex-a17.cortex-a7 \ + |mcpu=marvell-pj4 \ + |mcpu=cortex-a53 \ + |mcpu=cortex-a57 \ + |mcpu=cortex-a57.cortex-a53 \ ++ |mcpu=cortex-a72 \ ++ |mcpu=cortex-a72.cortex-a53 \ ++ |mcpu=xgene1 \ ++ |mcpu=cortex-m1.small-multiply \ ++ |mcpu=cortex-m0.small-multiply \ ++ |mcpu=cortex-m0plus.small-multiply \ + |mcpu=generic-armv7-a \ + |march=armv7ve \ + |march=armv7-m|mcpu=cortex-m3 \ +- |march=armv7e-m|mcpu=cortex-m4 \ ++ |march=armv7e-m|mcpu=cortex-m4|mcpu=cortex-m7 \ + |march=armv6-m|mcpu=cortex-m0 \ + |march=armv8-a \ + :%{!r:--be8}}}" +@@ -82,16 +89,23 @@ + " %{mbig-endian:%{march=armv7-a|mcpu=cortex-a5 \ + |mcpu=cortex-a7 \ + |mcpu=cortex-a8|mcpu=cortex-a9|mcpu=cortex-a15 \ +- |mcpu=cortex-a12 \ ++ |mcpu=cortex-a12|mcpu=cortex-a17 \ + |mcpu=cortex-a15.cortex-a7 \ ++ |mcpu=cortex-a17.cortex-a7 \ + |mcpu=cortex-a53 \ + |mcpu=cortex-a57 \ + |mcpu=cortex-a57.cortex-a53 \ ++ |mcpu=cortex-a72 \ ++ |mcpu=cortex-a72.cortex-a53 \ ++ |mcpu=xgene1 \ ++ |mcpu=cortex-m1.small-multiply \ ++ |mcpu=cortex-m0.small-multiply \ ++ |mcpu=cortex-m0plus.small-multiply \ + |mcpu=marvell-pj4 \ + |mcpu=generic-armv7-a \ + |march=armv7ve \ + |march=armv7-m|mcpu=cortex-m3 \ +- |march=armv7e-m|mcpu=cortex-m4 \ ++ |march=armv7e-m|mcpu=cortex-m4|mcpu=cortex-m7 \ + |march=armv6-m|mcpu=cortex-m0 \ + |march=armv8-a \ + :%{!r:--be8}}}" +--- a/src/gcc/config/arm/iterators.md ++++ b/src/gcc/config/arm/iterators.md +@@ -116,6 +116,9 @@ + ;; Vector modes including 64-bit integer elements, but no floats. + (define_mode_iterator VDQIX [V8QI V16QI V4HI V8HI V2SI V4SI DI V2DI]) + ++;; Vector modes for H, S and D types. ++(define_mode_iterator VDQHSD [V4HI V8HI V2SI V4SI V2DI]) ++ + ;; Vector modes for float->int conversions. + (define_mode_iterator VCVTF [V2SF V4SF]) + +@@ -191,6 +194,23 @@ + ;; Right shifts + (define_code_iterator rshifts [ashiftrt lshiftrt]) + ++;; Iterator for integer conversions ++(define_code_iterator FIXUORS [fix unsigned_fix]) ++ ++;; Binary operators whose second operand can be shifted. ++(define_code_iterator shiftable_ops [plus minus ior xor and]) ++ ++;; plus and minus are the only shiftable_ops for which Thumb2 allows ++;; a stack pointer opoerand. The minus operation is a candidate for an rsub ++;; and hence only plus is supported. ++(define_code_attr t2_binop0 ++ [(plus "rk") (minus "r") (ior "r") (xor "r") (and "r")]) ++ ++;; The instruction to use when a shiftable_ops has a shift operation as ++;; its first operand. ++(define_code_attr arith_shift_insn ++ [(plus "add") (minus "rsb") (ior "orr") (xor "eor") (and "and")]) ++ + ;;---------------------------------------------------------------------------- + ;; Int iterators + ;;---------------------------------------------------------------------------- +@@ -198,9 +218,13 @@ + (define_int_iterator VRINT [UNSPEC_VRINTZ UNSPEC_VRINTP UNSPEC_VRINTM + UNSPEC_VRINTR UNSPEC_VRINTX UNSPEC_VRINTA]) + ++(define_int_iterator VCVT [UNSPEC_VRINTP UNSPEC_VRINTM UNSPEC_VRINTA]) ++ + (define_int_iterator NEON_VRINT [UNSPEC_NVRINTP UNSPEC_NVRINTZ UNSPEC_NVRINTM + UNSPEC_NVRINTX UNSPEC_NVRINTA UNSPEC_NVRINTN]) + ++(define_int_iterator NEON_VCVT [UNSPEC_NVRINTP UNSPEC_NVRINTM UNSPEC_NVRINTA]) ++ + (define_int_iterator CRC [UNSPEC_CRC32B UNSPEC_CRC32H UNSPEC_CRC32W + UNSPEC_CRC32CB UNSPEC_CRC32CH UNSPEC_CRC32CW]) + +@@ -502,6 +526,13 @@ + ;; Assembler mnemonics for signedness of widening operations. + (define_code_attr US [(sign_extend "s") (zero_extend "u")]) + ++;; Signedness suffix for float->fixed conversions. Empty for signed ++;; conversion. ++(define_code_attr su_optab [(fix "") (unsigned_fix "u")]) ++ ++;; Sign prefix to use in instruction type suffixes, i.e. s32, u32. ++(define_code_attr su [(fix "s") (unsigned_fix "u")]) ++ + ;; Right shifts + (define_code_attr shift [(ashiftrt "ashr") (lshiftrt "lshr")]) + (define_code_attr shifttype [(ashiftrt "signed") (lshiftrt "unsigned")]) +--- a/src/gcc/config/arm/neon-testgen.ml ++++ b/src/gcc/config/arm/neon-testgen.ml +@@ -46,20 +46,19 @@ + failwith ("Could not create test source file " ^ name ^ ": " ^ str) + + (* Emit prologue code to a test source file. *) +-let emit_prologue chan test_name effective_target = ++let emit_prologue chan test_name effective_target compile_test_optim = + Printf.fprintf chan "/* Test the `%s' ARM Neon intrinsic. */\n" test_name; + Printf.fprintf chan "/* This file was autogenerated by neon-testgen. */\n\n"; + Printf.fprintf chan "/* { dg-do assemble } */\n"; + Printf.fprintf chan "/* { dg-require-effective-target %s_ok } */\n" + effective_target; +- Printf.fprintf chan "/* { dg-options \"-save-temps -O0\" } */\n"; ++ Printf.fprintf chan "/* { dg-options \"-save-temps %s\" } */\n" compile_test_optim; + Printf.fprintf chan "/* { dg-add-options %s } */\n" effective_target; +- Printf.fprintf chan "\n#include \"arm_neon.h\"\n\n"; +- Printf.fprintf chan "void test_%s (void)\n{\n" test_name ++ Printf.fprintf chan "\n#include \"arm_neon.h\"\n\n" + +-(* Emit declarations of local variables that are going to be passed ++(* Emit declarations of variables that are going to be passed + to an intrinsic, together with one to take a returned value if needed. *) +-let emit_automatics chan c_types features = ++let emit_variables chan c_types features spaces = + let emit () = + ignore ( + List.fold_left (fun arg_number -> fun (flags, ty) -> +@@ -69,8 +68,8 @@ + (* Const arguments to builtins are directly + written in as constants. *) + if not (List.mem Const flags) then +- Printf.fprintf chan " %s %sarg%d_%s;\n" +- ty pointer_bit arg_number ty; ++ Printf.fprintf chan "%s%s %sarg%d_%s;\n" ++ spaces ty pointer_bit arg_number ty; + arg_number + 1) + 0 (List.tl c_types)) + in +@@ -81,13 +80,13 @@ + allocation for vget_low tests or they fail because of copy + elimination. *) + ((if List.mem Fixed_vector_reg features then +- Printf.fprintf chan " register %s out_%s asm (\"d18\");\n" +- return_ty return_ty ++ Printf.fprintf chan "%sregister %s out_%s asm (\"d18\");\n" ++ spaces return_ty return_ty + else if List.mem Fixed_core_reg features then +- Printf.fprintf chan " register %s out_%s asm (\"r0\");\n" +- return_ty return_ty ++ Printf.fprintf chan "%sregister %s out_%s asm (\"r0\");\n" ++ spaces return_ty return_ty + else +- Printf.fprintf chan " %s out_%s;\n" return_ty return_ty); ++ Printf.fprintf chan "%s%s out_%s;\n" spaces return_ty return_ty); + emit ()) + end else + (* The intrinsic does not return a value. *) +@@ -173,6 +172,17 @@ + | _ -> assert false + with Not_found -> "arm_neon" + ++(* Work out what the testcase optimization level should be, default to -O0. *) ++let compile_test_optim features = ++ try ++ match List.find (fun feature -> ++ match feature with Compiler_optim _ -> true ++ | _ -> false) ++ features with ++ Compiler_optim opt -> opt ++ | _ -> assert false ++ with Not_found -> "-O0" ++ + (* Given an intrinsic shape, produce a regexp that will match + the right-hand sides of instructions generated by an intrinsic of + that shape. *) +@@ -280,12 +290,22 @@ + "!?\\(\\[ \t\\]+@\\[a-zA-Z0-9 \\]+\\)?\\n") + (analyze_all_shapes features shape analyze_shape) + in +- let effective_target = effective_target features ++ let effective_target = effective_target features in ++ let compile_test_optim = compile_test_optim features + in + (* Emit file and function prologues. *) +- emit_prologue chan test_name effective_target; +- (* Emit local variable declarations. *) +- emit_automatics chan c_types features; ++ emit_prologue chan test_name effective_target compile_test_optim; ++ ++ if (compare compile_test_optim "-O0") <> 0 then ++ (* Emit variable declarations. *) ++ emit_variables chan c_types features ""; ++ ++ Printf.fprintf chan "void test_%s (void)\n{\n" test_name; ++ ++ if compare compile_test_optim "-O0" = 0 then ++ (* Emit variable declarations. *) ++ emit_variables chan c_types features " "; ++ + Printf.fprintf chan "\n"; + (* Emit the call to the intrinsic. *) + emit_call chan const_valuator c_types name elt_ty; +--- a/src/gcc/config/arm/arm.md ++++ b/src/gcc/config/arm/arm.md +@@ -109,6 +109,11 @@ + ;; given instruction does not shift one of its input operands. + (define_attr "shift" "" (const_int 0)) + ++;; [For compatibility with AArch64 in pipeline models] ++;; Attribute that specifies whether or not the instruction touches fp ++;; registers. ++(define_attr "fp" "no,yes" (const_string "no")) ++ + ; Floating Point Unit. If we only have floating point emulation, then there + ; is no point in scheduling the floating point insns. (Well, for best + ; performance we should try and group them together). +@@ -205,17 +210,9 @@ + (const_string "yes")] + (const_string "no"))) + +-; Allows an insn to disable certain alternatives for reasons other than +-; arch support. +-(define_attr "insn_enabled" "no,yes" +- (const_string "yes")) +- + ; Enable all alternatives that are both arch_enabled and insn_enabled. + (define_attr "enabled" "no,yes" +- (cond [(eq_attr "insn_enabled" "no") +- (const_string "no") +- +- (and (eq_attr "predicable_short_it" "no") ++ (cond [(and (eq_attr "predicable_short_it" "no") + (and (eq_attr "predicated" "yes") + (match_test "arm_restrict_it"))) + (const_string "no") +@@ -377,7 +374,12 @@ + + (define_attr "generic_sched" "yes,no" + (const (if_then_else +- (ior (eq_attr "tune" "fa526,fa626,fa606te,fa626te,fmp626,fa726te,arm926ejs,arm1020e,arm1026ejs,arm1136js,arm1136jfs,cortexa5,cortexa7,cortexa8,cortexa9,cortexa12,cortexa15,cortexa53,cortexm4,marvell_pj4") ++ (ior (eq_attr "tune" "fa526,fa626,fa606te,fa626te,fmp626,fa726te,\ ++ arm926ejs,arm1020e,arm1026ejs,arm1136js,\ ++ arm1136jfs,cortexa5,cortexa7,cortexa8,\ ++ cortexa9,cortexa12,cortexa15,cortexa17,\ ++ cortexa53,cortexa57,cortexm4,cortexm7,\ ++ marvell_pj4,xgene1") + (eq_attr "tune_cortexr4" "yes")) + (const_string "no") + (const_string "yes")))) +@@ -385,7 +387,9 @@ + (define_attr "generic_vfp" "yes,no" + (const (if_then_else + (and (eq_attr "fpu" "vfp") +- (eq_attr "tune" "!arm1020e,arm1022e,cortexa5,cortexa7,cortexa8,cortexa9,cortexa53,cortexm4,marvell_pj4") ++ (eq_attr "tune" "!arm1020e,arm1022e,cortexa5,cortexa7,\ ++ cortexa8,cortexa9,cortexa53,cortexm4,\ ++ cortexm7,marvell_pj4,xgene1") + (eq_attr "tune_cortexr4" "no")) + (const_string "yes") + (const_string "no")))) +@@ -406,13 +410,17 @@ + (include "cortex-a8.md") + (include "cortex-a9.md") + (include "cortex-a15.md") ++(include "cortex-a17.md") + (include "cortex-a53.md") ++(include "cortex-a57.md") + (include "cortex-r4.md") + (include "cortex-r4f.md") ++(include "cortex-m7.md") + (include "cortex-m4.md") + (include "cortex-m4-fpu.md") + (include "vfp11.md") + (include "marvell-pj4.md") ++(include "xgene1.md") + + + ;;--------------------------------------------------------------------------- +@@ -2868,6 +2876,28 @@ + (set_attr "type" "multiple")] + ) + ++(define_insn_and_split "*anddi_notdi_zesidi" ++ [(set (match_operand:DI 0 "s_register_operand" "=r") ++ (and:DI (not:DI (match_operand:DI 2 "s_register_operand" "r")) ++ (zero_extend:DI ++ (match_operand:SI 1 "s_register_operand" "r"))))] ++ "TARGET_32BIT" ++ "#" ++ "TARGET_32BIT && reload_completed" ++ [(set (match_dup 0) (and:SI (not:SI (match_dup 2)) (match_dup 1))) ++ (set (match_dup 3) (const_int 0))] ++ " ++ { ++ operands[3] = gen_highpart (SImode, operands[0]); ++ operands[0] = gen_lowpart (SImode, operands[0]); ++ operands[2] = gen_lowpart (SImode, operands[2]); ++ }" ++ [(set_attr "length" "8") ++ (set_attr "predicable" "yes") ++ (set_attr "predicable_short_it" "no") ++ (set_attr "type" "multiple")] ++) ++ + (define_insn_and_split "*anddi_notsesidi_di" + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (and:DI (not:DI (sign_extend:DI +@@ -8906,7 +8936,7 @@ + return \"\"; + }" + [(set_attr "conds" "use") +- (set_attr "type" "f_sel")] ++ (set_attr "type" "fcsel")] + ) + + (define_insn_and_split "*movsicc_insn" +@@ -9343,8 +9373,10 @@ + "TARGET_32BIT" + " + { +- if (!REG_P (XEXP (operands[0], 0)) +- && (GET_CODE (XEXP (operands[0], 0)) != SYMBOL_REF)) ++ if ((!REG_P (XEXP (operands[0], 0)) ++ && GET_CODE (XEXP (operands[0], 0)) != SYMBOL_REF) ++ || (GET_CODE (XEXP (operands[0], 0)) == SYMBOL_REF ++ && arm_is_long_call_p (SYMBOL_REF_DECL (XEXP (operands[0], 0))))) + XEXP (operands[0], 0) = force_reg (SImode, XEXP (operands[0], 0)); + + if (operands[2] == NULL_RTX) +@@ -9361,8 +9393,10 @@ + "TARGET_32BIT" + " + { +- if (!REG_P (XEXP (operands[1], 0)) && +- (GET_CODE (XEXP (operands[1],0)) != SYMBOL_REF)) ++ if ((!REG_P (XEXP (operands[1], 0)) ++ && GET_CODE (XEXP (operands[1], 0)) != SYMBOL_REF) ++ || (GET_CODE (XEXP (operands[1], 0)) == SYMBOL_REF ++ && arm_is_long_call_p (SYMBOL_REF_DECL (XEXP (operands[1], 0))))) + XEXP (operands[1], 0) = force_reg (SImode, XEXP (operands[1], 0)); + + if (operands[3] == NULL_RTX) +@@ -9848,39 +9882,35 @@ + + ;; Patterns to allow combination of arithmetic, cond code and shifts + +-(define_insn "*arith_shiftsi" +- [(set (match_operand:SI 0 "s_register_operand" "=r,r,r,r") +- (match_operator:SI 1 "shiftable_operator" +- [(match_operator:SI 3 "shift_operator" +- [(match_operand:SI 4 "s_register_operand" "r,r,r,r") +- (match_operand:SI 5 "shift_amount_operand" "M,M,M,r")]) +- (match_operand:SI 2 "s_register_operand" "rk,rk,r,rk")]))] ++(define_insn "*_multsi" ++ [(set (match_operand:SI 0 "s_register_operand" "=r,r") ++ (shiftable_ops:SI ++ (mult:SI (match_operand:SI 2 "s_register_operand" "r,r") ++ (match_operand:SI 3 "power_of_two_operand" "")) ++ (match_operand:SI 1 "s_register_operand" "rk,")))] + "TARGET_32BIT" +- "%i1%?\\t%0, %2, %4%S3" ++ "%?\\t%0, %1, %2, lsl %b3" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") +- (set_attr "shift" "4") +- (set_attr "arch" "a,t2,t2,a") +- ;; Thumb2 doesn't allow the stack pointer to be used for +- ;; operand1 for all operations other than add and sub. In this case +- ;; the minus operation is a candidate for an rsub and hence needs +- ;; to be disabled. +- ;; We have to make sure to disable the fourth alternative if +- ;; the shift_operator is MULT, since otherwise the insn will +- ;; also match a multiply_accumulate pattern and validate_change +- ;; will allow a replacement of the constant with a register +- ;; despite the checks done in shift_operator. +- (set_attr_alternative "insn_enabled" +- [(const_string "yes") +- (if_then_else +- (match_operand:SI 1 "add_operator" "") +- (const_string "yes") (const_string "no")) +- (const_string "yes") +- (if_then_else +- (match_operand:SI 3 "mult_operator" "") +- (const_string "no") (const_string "yes"))]) +- (set_attr "type" "alu_shift_imm,alu_shift_imm,alu_shift_imm,alu_shift_reg")]) ++ (set_attr "shift" "2") ++ (set_attr "arch" "a,t2") ++ (set_attr "type" "alu_shift_imm")]) + ++(define_insn "*_shiftsi" ++ [(set (match_operand:SI 0 "s_register_operand" "=r,r,r") ++ (shiftable_ops:SI ++ (match_operator:SI 2 "shift_nomul_operator" ++ [(match_operand:SI 3 "s_register_operand" "r,r,r") ++ (match_operand:SI 4 "shift_amount_operand" "M,M,r")]) ++ (match_operand:SI 1 "s_register_operand" "rk,,rk")))] ++ "TARGET_32BIT && GET_CODE (operands[2]) != MULT" ++ "%?\\t%0, %1, %3%S2" ++ [(set_attr "predicable" "yes") ++ (set_attr "predicable_short_it" "no") ++ (set_attr "shift" "3") ++ (set_attr "arch" "a,t2,a") ++ (set_attr "type" "alu_shift_imm,alu_shift_imm,alu_shift_reg")]) ++ + (define_split + [(set (match_operand:SI 0 "s_register_operand" "") + (match_operator:SI 1 "shiftable_operator" +@@ -12169,7 +12199,7 @@ + int num_regs = XVECLEN (operands[0], 0); + char pattern[100]; + rtx op_list[2]; +- strcpy (pattern, \"fldmfdd\\t\"); ++ strcpy (pattern, \"vldm\\t\"); + strcat (pattern, reg_names[REGNO (SET_DEST (XVECEXP (operands[0], 0, 0)))]); + strcat (pattern, \"!, {\"); + op_list[0] = XEXP (XVECEXP (operands[0], 0, 1), 0); +@@ -12379,6 +12409,7 @@ + "TARGET_32BIT && arm_arch5" + "clz%?\\t%0, %1" + [(set_attr "predicable" "yes") ++ (set_attr "predicable_short_it" "no") + (set_attr "type" "clz")]) + + (define_insn "rbitsi2" +@@ -12387,6 +12418,7 @@ + "TARGET_32BIT && arm_arch_thumb2" + "rbit%?\\t%0, %1" + [(set_attr "predicable" "yes") ++ (set_attr "predicable_short_it" "no") + (set_attr "type" "clz")]) + + (define_expand "ctzsi2" +@@ -12562,6 +12594,8 @@ + rev%?\t%0, %1" + [(set_attr "arch" "t1,t2,32") + (set_attr "length" "2,2,4") ++ (set_attr "predicable" "no,yes,yes") ++ (set_attr "predicable_short_it" "no") + (set_attr "type" "rev")] + ) + +@@ -12679,6 +12713,44 @@ + (set_attr "type" "rev")] + ) + ++;; There are no canonicalisation rules for the position of the lshiftrt, ashift ++;; operations within an IOR/AND RTX, therefore we have two patterns matching ++;; each valid permutation. ++ ++(define_insn "arm_rev16si2" ++ [(set (match_operand:SI 0 "register_operand" "=l,l,r") ++ (ior:SI (and:SI (ashift:SI (match_operand:SI 1 "register_operand" "l,l,r") ++ (const_int 8)) ++ (match_operand:SI 3 "const_int_operand" "n,n,n")) ++ (and:SI (lshiftrt:SI (match_dup 1) ++ (const_int 8)) ++ (match_operand:SI 2 "const_int_operand" "n,n,n"))))] ++ "arm_arch6 ++ && aarch_rev16_shleft_mask_imm_p (operands[3], SImode) ++ && aarch_rev16_shright_mask_imm_p (operands[2], SImode)" ++ "rev16\\t%0, %1" ++ [(set_attr "arch" "t1,t2,32") ++ (set_attr "length" "2,2,4") ++ (set_attr "type" "rev")] ++) ++ ++(define_insn "arm_rev16si2_alt" ++ [(set (match_operand:SI 0 "register_operand" "=l,l,r") ++ (ior:SI (and:SI (lshiftrt:SI (match_operand:SI 1 "register_operand" "l,l,r") ++ (const_int 8)) ++ (match_operand:SI 2 "const_int_operand" "n,n,n")) ++ (and:SI (ashift:SI (match_dup 1) ++ (const_int 8)) ++ (match_operand:SI 3 "const_int_operand" "n,n,n"))))] ++ "arm_arch6 ++ && aarch_rev16_shleft_mask_imm_p (operands[3], SImode) ++ && aarch_rev16_shright_mask_imm_p (operands[2], SImode)" ++ "rev16\\t%0, %1" ++ [(set_attr "arch" "t1,t2,32") ++ (set_attr "length" "2,2,4") ++ (set_attr "type" "rev")] ++) ++ + (define_expand "bswaphi2" + [(set (match_operand:HI 0 "s_register_operand" "=r") + (bswap:HI (match_operand:HI 1 "s_register_operand" "r")))] +--- a/src/gcc/config/arm/xgene1.md ++++ b/src/gcc/config/arm/xgene1.md +@@ -0,0 +1,531 @@ ++;; Machine description for AppliedMicro xgene1 core. ++;; Copyright (C) 2012-2015 Free Software Foundation, Inc. ++;; Contributed by Theobroma Systems Design und Consulting GmbH. ++;; ++;; This file is part of GCC. ++;; ++;; GCC is free software; you can redistribute it and/or modify it ++;; under the terms of the GNU General Public License as published by ++;; the Free Software Foundation; either version 3, or (at your option) ++;; any later version. ++;; ++;; GCC is distributed in the hope that it will be useful, but ++;; WITHOUT ANY WARRANTY; without even the implied warranty of ++;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++;; General Public License for more details. ++;; ++;; You should have received a copy of the GNU General Public License ++;; along with GCC; see the file COPYING3. If not see ++;; . ++ ++;; Pipeline description for the xgene1 micro-architecture ++ ++(define_automaton "xgene1") ++ ++(define_cpu_unit "xgene1_decode_out0" "xgene1") ++(define_cpu_unit "xgene1_decode_out1" "xgene1") ++(define_cpu_unit "xgene1_decode_out2" "xgene1") ++(define_cpu_unit "xgene1_decode_out3" "xgene1") ++ ++(define_cpu_unit "xgene1_divide" "xgene1") ++(define_cpu_unit "xgene1_fp_divide" "xgene1") ++(define_cpu_unit "xgene1_fsu" "xgene1") ++(define_cpu_unit "xgene1_fcmp" "xgene1") ++ ++(define_reservation "xgene1_decode1op" ++ "( xgene1_decode_out0 ) ++ |( xgene1_decode_out1 ) ++ |( xgene1_decode_out2 ) ++ |( xgene1_decode_out3 )" ++) ++(define_reservation "xgene1_decode2op" ++ "( xgene1_decode_out0 + xgene1_decode_out1 ) ++ |( xgene1_decode_out0 + xgene1_decode_out2 ) ++ |( xgene1_decode_out0 + xgene1_decode_out3 ) ++ |( xgene1_decode_out1 + xgene1_decode_out2 ) ++ |( xgene1_decode_out1 + xgene1_decode_out3 ) ++ |( xgene1_decode_out2 + xgene1_decode_out3 )" ++) ++(define_reservation "xgene1_decodeIsolated" ++ "( xgene1_decode_out0 + xgene1_decode_out1 + xgene1_decode_out2 + xgene1_decode_out3 )" ++) ++ ++(define_insn_reservation "xgene1_branch" 1 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "branch")) ++ "xgene1_decode1op") ++ ++(define_insn_reservation "xgene1_nop" 1 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "no_insn")) ++ "xgene1_decode1op") ++ ++(define_insn_reservation "xgene1_call" 1 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "call")) ++ "xgene1_decode2op") ++ ++(define_insn_reservation "xgene1_f_load" 10 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "f_loadd,f_loads")) ++ "xgene1_decode2op") ++ ++(define_insn_reservation "xgene1_f_store" 4 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "f_stored,f_stores")) ++ "xgene1_decode2op") ++ ++(define_insn_reservation "xgene1_fmov" 2 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "fmov,fconsts,fconstd")) ++ "xgene1_decode1op") ++ ++(define_insn_reservation "xgene1_f_mcr" 10 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "f_mcr")) ++ "xgene1_decodeIsolated") ++ ++(define_insn_reservation "xgene1_f_mrc" 4 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "f_mrc")) ++ "xgene1_decode2op") ++ ++(define_insn_reservation "xgene1_load_pair" 6 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "load2")) ++ "xgene1_decodeIsolated") ++ ++(define_insn_reservation "xgene1_store_pair" 2 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "store2")) ++ "xgene1_decodeIsolated") ++ ++(define_insn_reservation "xgene1_fp_load1" 10 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "load1") ++ (eq_attr "fp" "yes")) ++ "xgene1_decode1op") ++ ++(define_insn_reservation "xgene1_load1" 5 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "load1")) ++ "xgene1_decode1op") ++ ++(define_insn_reservation "xgene1_store1" 2 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "store1")) ++ "xgene1_decode2op") ++ ++(define_insn_reservation "xgene1_move" 1 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "mov_reg,mov_imm,mrs")) ++ "xgene1_decode1op") ++ ++(define_insn_reservation "xgene1_alu" 1 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "alu_imm,alu_reg,alu_shift_imm,\ ++ alu_ext,adc_reg,csel,logic_imm,\ ++ logic_reg,logic_shift_imm,clz,\ ++ rbit,shift_reg,adr,mov_reg,\ ++ mov_imm,extend")) ++ "xgene1_decode1op") ++ ++(define_insn_reservation "xgene1_simd" 1 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "rev")) ++ "xgene1_decode1op") ++ ++(define_insn_reservation "xgene1_alus" 1 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "alus_imm,alu_reg,alus_shift_imm,\ ++ alus_ext,logics_imm,logics_reg,\ ++ logics_shift_imm")) ++ "xgene1_decode1op") ++ ++(define_insn_reservation "xgene1_mul" 6 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "mul,mla,smull,umull,smlal,umlal")) ++ "xgene1_decode2op") ++ ++(define_insn_reservation "xgene1_div" 34 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "sdiv,udiv")) ++ "xgene1_decode1op,xgene1_divide*7") ++ ++(define_insn_reservation "xgene1_fcmp" 10 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "fcmpd,fcmps")) ++ "xgene1_decode1op,xgene1_fsu+xgene1_fcmp*3") ++ ++(define_insn_reservation "xgene1_fcsel" 3 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "fcsel")) ++ "xgene1_decode1op,xgene1_fsu") ++ ++(define_insn_reservation "xgene1_bfm" 2 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "bfm")) ++ "xgene1_decode1op,xgene1_fsu") ++ ++(define_insn_reservation "xgene1_f_rint" 5 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "f_rintd,f_rints")) ++ "xgene1_decode1op,xgene1_fsu") ++ ++(define_insn_reservation "xgene1_f_cvt" 3 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "f_cvt")) ++ "xgene1_decode1op,xgene1_fsu") ++ ++(define_insn_reservation "xgene1_f_cvtf2i" 11 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "f_cvtf2i")) ++ "xgene1_decodeIsolated,xgene1_fsu") ++ ++(define_insn_reservation "xgene1_f_cvti2f" 14 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "f_cvti2f")) ++ "xgene1_decodeIsolated,xgene1_fsu") ++ ++(define_insn_reservation "xgene1_f_add" 5 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "faddd,fadds,fmuld,fmuls")) ++ "xgene1_decode1op,xgene1_fsu") ++ ++(define_insn_reservation "xgene1_f_divs" 22 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "fdivs,fsqrts")) ++ "xgene1_decode1op,(xgene1_fp_divide+xgene1_fsu)*8,xgene1_fp_divide*14") ++ ++(define_insn_reservation "xgene1_f_divd" 28 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "fdivd")) ++ "xgene1_decode1op,(xgene1_fp_divide+xgene1_fsu)*11,xgene1_fp_divide*17") ++ ++(define_insn_reservation "xgene1_f_sqrtd" 28 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "fsqrtd")) ++ "xgene1_decode1op,(xgene1_fp_divide+xgene1_fsu)*17,xgene1_fp_divide*11") ++ ++(define_insn_reservation "xgene1_f_arith" 2 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "ffarithd,ffariths")) ++ "xgene1_decode1op,xgene1_fsu") ++ ++(define_insn_reservation "xgene1_f_select" 3 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "f_minmaxd,f_minmaxs")) ++ "xgene1_decode1op,xgene1_fsu") ++ ++(define_insn_reservation "xgene1_neon_dup" 3 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_dup,neon_dup_q")) ++ "xgene1_decode1op,xgene1_fsu") ++ ++(define_insn_reservation "xgene1_neon_load1" 11 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_load1_1reg, neon_load1_1reg_q")) ++ "xgene1_decode2op,xgene1_fsu") ++ ++(define_insn_reservation "xgene1_neon_store1" 5 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_store1_1reg, neon_store1_1reg_q")) ++ "xgene1_decode2op,xgene1_fsu") ++ ++(define_insn_reservation "xgene1_neon_logic" 2 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_logic,\ ++ neon_logic_q,\ ++ neon_bsl,\ ++ neon_bsl_q,\ ++ neon_move,\ ++ neon_move_q,\ ++ ")) ++ "xgene1_decode1op,xgene1_fsu") ++ ++(define_insn_reservation "xgene1_neon_umov" 7 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_to_gp, neon_to_gp_q")) ++ "xgene1_decodeIsolated") ++ ++(define_insn_reservation "xgene1_neon_ins" 14 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_from_gp,\ ++ neon_from_gp_q,\ ++ neon_ins,\ ++ neon_ins_q,\ ++ ")) ++ "xgene1_decodeIsolated,xgene1_fsu") ++ ++(define_insn_reservation "xgene1_neon_shift" 3 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_shift_imm,\ ++ neon_shift_imm_q,\ ++ neon_shift_reg,\ ++ neon_shift_reg_q,\ ++ neon_shift_imm_long,\ ++ neon_sat_shift_imm,\ ++ neon_sat_shift_imm_q,\ ++ neon_sat_shift_imm_narrow_q,\ ++ neon_sat_shift_reg,\ ++ neon_sat_shift_reg_q,\ ++ neon_shift_imm_narrow_q,\ ++ ")) ++ "xgene1_decode1op,xgene1_fsu") ++ ++(define_insn_reservation "xgene1_neon_arith" 3 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_add,\ ++ neon_add_q,\ ++ neon_sub,\ ++ neon_sub_q,\ ++ neon_neg,\ ++ neon_neg_q,\ ++ neon_abs,\ ++ neon_abs_q,\ ++ neon_abd_q,\ ++ neon_arith_acc,\ ++ neon_arith_acc_q,\ ++ neon_reduc_add,\ ++ neon_reduc_add_q,\ ++ neon_add_halve,\ ++ neon_add_halve_q,\ ++ neon_sub_halve,\ ++ neon_sub_halve_q,\ ++ neon_qadd,\ ++ neon_qadd_q,\ ++ neon_compare,\ ++ neon_compare_q,\ ++ neon_compare_zero,\ ++ neon_compare_zero_q,\ ++ neon_tst,\ ++ neon_tst_q,\ ++ ")) ++ "xgene1_decode1op,xgene1_fsu") ++ ++(define_insn_reservation "xgene1_neon_abs_diff" 6 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_arith_acc,neon_arith_acc_q")) ++ "xgene1_decode2op,xgene1_fsu*2") ++ ++(define_insn_reservation "xgene1_neon_mul" 5 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_mul_b,\ ++ neon_mul_b_q,\ ++ neon_mul_h,\ ++ neon_mul_h_q,\ ++ neon_mul_s,\ ++ neon_mul_s_q,\ ++ neon_fp_mul_s_scalar,\ ++ neon_fp_mul_s_scalar_q,\ ++ neon_fp_mul_d_scalar_q,\ ++ neon_mla_b,neon_mla_b_q,\ ++ neon_mla_h,neon_mla_h_q,\ ++ neon_mla_s,neon_mla_s_q,\ ++ neon_mla_h_scalar,\ ++ neon_mla_h_scalar_q,\ ++ neon_mla_s_scalar,\ ++ neon_mla_s_scalar_q,\ ++ neon_mla_b_long,\ ++ neon_mla_h_long,\ ++ neon_mla_s_long,\ ++ neon_fp_mul_s,\ ++ neon_fp_mul_s_q,\ ++ neon_fp_mul_d,\ ++ neon_fp_mul_d_q,\ ++ neon_fp_mla_s,\ ++ neon_fp_mla_s_q,\ ++ neon_fp_mla_d,\ ++ neon_fp_mla_d_q,\ ++ neon_fp_mla_s_scalar,\ ++ neon_fp_mla_s_scalar_q,\ ++ neon_fp_mla_d_scalar_q,\ ++ neon_sat_mul_b,\ ++ neon_sat_mul_b_q,\ ++ neon_sat_mul_h,\ ++ neon_sat_mul_h_q,\ ++ neon_sat_mul_s,\ ++ neon_sat_mul_s_q,\ ++ neon_sat_mul_h_scalar,\ ++ neon_sat_mul_h_scalar_q,\ ++ neon_sat_mul_s_scalar,\ ++ neon_sat_mul_s_scalar_q,\ ++ neon_sat_mul_h_scalar_long,\ ++ neon_sat_mul_s_scalar_long,\ ++ neon_sat_mla_b_long,\ ++ neon_sat_mla_h_long,\ ++ neon_sat_mla_s_long,\ ++ neon_sat_mla_h_scalar_long,\ ++ neon_sat_mla_s_scalar_long,\ ++ ")) ++ "xgene1_decode2op,xgene1_fsu*2") ++ ++(define_insn_reservation "xgene1_fp_abd_diff" 5 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_fp_abd_s,\ ++ neon_fp_abd_s_q,\ ++ neon_fp_abd_d,\ ++ neon_fp_abd_d_q,\ ++ ")) ++ "xgene1_decode1op,xgene1_fsu") ++ ++(define_insn_reservation "xgene1_neon_f_add" 5 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_fp_addsub_s,\ ++ neon_fp_addsub_s_q,\ ++ neon_fp_addsub_d,\ ++ neon_fp_addsub_d_q,\ ++ ")) ++ "xgene1_decode1op") ++ ++(define_insn_reservation "xgene1_neon_f_div" 2 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_fp_div_s,\ ++ neon_fp_div_s_q,\ ++ neon_fp_div_d,\ ++ neon_fp_div_d_q,\ ++ ")) ++ "xgene1_decode1op,(xgene1_fsu+xgene1_fp_divide)") ++ ++(define_insn_reservation "xgene1_neon_f_neg" 2 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_fp_neg_s,\ ++ neon_fp_neg_s_q,\ ++ neon_fp_neg_d,\ ++ neon_fp_neg_d_q,\ ++ neon_fp_abs_s,\ ++ neon_fp_abs_s_q,\ ++ neon_fp_abs_d,\ ++ neon_fp_abs_d_q,\ ++ ")) ++ "xgene1_decode1op") ++ ++(define_insn_reservation "xgene1_neon_f_round" 5 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_fp_round_s,\ ++ neon_fp_round_s_q,\ ++ neon_fp_round_d,\ ++ neon_fp_round_d_q,\ ++ ")) ++ "xgene1_decode1op") ++ ++(define_insn_reservation "xgene1_neon_f_cvt" 5 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_int_to_fp_s,\ ++ neon_int_to_fp_s_q,\ ++ neon_int_to_fp_d,\ ++ neon_int_to_fp_d_q,\ ++ neon_fp_cvt_widen_s,\ ++ neon_fp_cvt_narrow_s_q,\ ++ neon_fp_cvt_narrow_d_q,\ ++ ")) ++ "xgene1_decode1op") ++ ++(define_insn_reservation "xgene1_neon_f_reduc" 5 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_fp_reduc_add_s,\ ++ neon_fp_reduc_add_s_q,\ ++ neon_fp_reduc_add_d,\ ++ neon_fp_reduc_add_d_q,\ ++ ")) ++ "xgene1_decode1op") ++ ++(define_insn_reservation "xgene1_neon_cls" 2 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_cls,neon_cls_q")) ++ "xgene1_decode1op") ++ ++(define_insn_reservation "xgene1_neon_st1" 4 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_store1_one_lane,\ ++ neon_store1_one_lane_q,\ ++ ")) ++ "xgene1_decode1op") ++ ++(define_insn_reservation "xgene1_neon_halve_narrow" 6 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_sub_halve_narrow_q,\ ++ neon_add_halve_narrow_q,\ ++ ")) ++ "xgene1_decodeIsolated") ++ ++(define_insn_reservation "xgene1_neon_shift_acc" 6 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_shift_acc,\ ++ neon_shift_acc_q,\ ++ ")) ++ "xgene1_decode2op") ++ ++(define_insn_reservation "xgene1_neon_fp_compare" 3 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_fp_compare_s,\ ++ neon_fp_compare_s_q,\ ++ neon_fp_compare_d,\ ++ neon_fp_compare_d_q,\ ++ ")) ++ "xgene1_decode1op") ++ ++(define_insn_reservation "xgene1_neon_fp_sqrt" 2 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_fp_sqrt_s,\ ++ neon_fp_sqrt_s_q,\ ++ neon_fp_sqrt_d,\ ++ neon_fp_sqrt_d_q,\ ++ ")) ++ "xgene1_decode1op,(xgene1_fsu+xgene1_fp_divide)") ++ ++(define_insn_reservation "xgene1_neon_tbl1" 4 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_tbl1,\ ++ neon_tbl1_q,\ ++ ")) ++ "xgene1_decode2op") ++ ++(define_insn_reservation "xgene1_neon_tbl2" 8 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_tbl2,\ ++ neon_tbl2_q,\ ++ ")) ++ "xgene1_decodeIsolated") ++ ++(define_insn_reservation "xgene1_neon_permute" 3 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_permute,\ ++ neon_permute_q,\ ++ ")) ++ "xgene1_decode2op") ++ ++(define_insn_reservation "xgene1_neon_ld1r" 10 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_load1_all_lanes,\ ++ ")) ++ "xgene1_decode1op") ++ ++(define_insn_reservation "xgene1_neon_fp_recp" 3 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_fp_recpe_s,\ ++ neon_fp_recpe_s_q,\ ++ neon_fp_recpe_d,\ ++ neon_fp_recpe_d_q,\ ++ neon_fp_recpx_s,\ ++ neon_fp_recpx_s_q,\ ++ neon_fp_recpx_d,\ ++ neon_fp_recpx_d_q,\ ++ ")) ++ "xgene1_decode1op") ++ ++ ++(define_insn_reservation "xgene1_neon_fp_recp_s" 5 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_fp_recps_s,\ ++ neon_fp_recps_s_q,\ ++ neon_fp_recps_d,\ ++ neon_fp_recps_d_q,\ ++ ")) ++ "xgene1_decode1op") ++ ++(define_insn_reservation "xgene1_neon_pmull" 5 ++ (and (eq_attr "tune" "xgene1") ++ (eq_attr "type" "neon_mul_d_long,\ ++ ")) ++ "xgene1_decode2op") +--- a/src/gcc/config/arm/driver-arm.c ++++ b/src/gcc/config/arm/driver-arm.c +@@ -41,6 +41,7 @@ + {"0xc08", "armv7-a", "cortex-a8"}, + {"0xc09", "armv7-a", "cortex-a9"}, + {"0xc0d", "armv7ve", "cortex-a12"}, ++ {"0xc0e", "armv7ve", "cortex-a17"}, + {"0xc0f", "armv7ve", "cortex-a15"}, + {"0xc14", "armv7-r", "cortex-r4"}, + {"0xc15", "armv7-r", "cortex-r5"}, +--- a/src/gcc/config/arm/cortex-a5.md ++++ b/src/gcc/config/arm/cortex-a5.md +@@ -61,7 +61,7 @@ + (eq_attr "type" "alu_imm,alus_imm,logic_imm,logics_imm,\ + alu_reg,alus_reg,logic_reg,logics_reg,\ + adc_imm,adcs_imm,adc_reg,adcs_reg,\ +- adr,bfm,rev,\ ++ adr,bfm,clz,rbit,rev,\ + shift_imm,shift_reg,\ + mov_imm,mov_reg,mvn_imm,mvn_reg,\ + mrs,multiple,no_insn")) +--- a/src/gcc/config/arm/cortex-a9.md ++++ b/src/gcc/config/arm/cortex-a9.md +@@ -83,7 +83,7 @@ + (eq_attr "type" "alu_imm,alus_imm,logic_imm,logics_imm,\ + alu_reg,alus_reg,logic_reg,logics_reg,\ + adc_imm,adcs_imm,adc_reg,adcs_reg,\ +- adr,bfm,rev,\ ++ adr,bfm,clz,rbit,rev,\ + shift_imm,shift_reg,\ + mov_imm,mov_reg,mvn_imm,mvn_reg,\ + mov_shift_reg,mov_shift,\ +--- a/src/gcc/config/mips/mips.c ++++ b/src/gcc/config/mips/mips.c +@@ -7197,12 +7197,17 @@ + emit_insn (gen_slt_sf (dest, fp2, fp1)); + } + +-/* Implement MOVE_BY_PIECES_P. */ ++/* Implement TARGET_USE_MOVE_BY_PIECES_INFRASTRUCTURE_P. */ + + bool +-mips_move_by_pieces_p (unsigned HOST_WIDE_INT size, unsigned int align) ++mips_use_by_pieces_infrastructure_p (unsigned HOST_WIDE_INT size, ++ unsigned int align, ++ enum by_pieces_operation op, ++ bool speed_p) + { +- if (HAVE_movmemsi) ++ if (op == STORE_BY_PIECES) ++ return mips_store_by_pieces_p (size, align); ++ if (op == MOVE_BY_PIECES && HAVE_movmemsi) + { + /* movmemsi is meant to generate code that is at least as good as + move_by_pieces. However, movmemsi effectively uses a by-pieces +@@ -7219,13 +7224,12 @@ + return size < UNITS_PER_WORD; + return size <= MIPS_MAX_MOVE_BYTES_STRAIGHT; + } +- /* The default value. If this becomes a target hook, we should +- call the default definition instead. */ +- return (move_by_pieces_ninsns (size, align, MOVE_MAX_PIECES + 1) +- < (unsigned int) MOVE_RATIO (optimize_insn_for_speed_p ())); ++ ++ return default_use_by_pieces_infrastructure_p (size, align, op, speed_p); + } + +-/* Implement STORE_BY_PIECES_P. */ ++/* Implement a handler for STORE_BY_PIECES operations ++ for TARGET_USE_MOVE_BY_PIECES_INFRASTRUCTURE_P. */ + + bool + mips_store_by_pieces_p (unsigned HOST_WIDE_INT size, unsigned int align) +@@ -19134,6 +19138,10 @@ + #undef TARGET_ATOMIC_ASSIGN_EXPAND_FENV + #define TARGET_ATOMIC_ASSIGN_EXPAND_FENV mips_atomic_assign_expand_fenv + ++#undef TARGET_USE_BY_PIECES_INFRASTRUCTURE_P ++#define TARGET_USE_BY_PIECES_INFRASTRUCTURE_P \ ++ mips_use_by_pieces_infrastructure_p ++ + struct gcc_target targetm = TARGET_INITIALIZER; + + #include "gt-mips.h" +--- a/src/gcc/config/mips/mips.h ++++ b/src/gcc/config/mips/mips.h +@@ -2884,9 +2884,6 @@ + ? MIPS_MAX_MOVE_BYTES_STRAIGHT / MOVE_MAX \ + : MIPS_CALL_RATIO / 2) + +-#define MOVE_BY_PIECES_P(SIZE, ALIGN) \ +- mips_move_by_pieces_p (SIZE, ALIGN) +- + /* For CLEAR_RATIO, when optimizing for size, give a better estimate + of the length of a memset call, but use the default otherwise. */ + +@@ -2899,9 +2896,6 @@ + + #define SET_RATIO(speed) \ + ((speed) ? 15 : MIPS_CALL_RATIO - 2) +- +-#define STORE_BY_PIECES_P(SIZE, ALIGN) \ +- mips_store_by_pieces_p (SIZE, ALIGN) + + /* Since the bits of the _init and _fini function is spread across + many object files, each potentially with its own GP, we must assume +--- a/src/gcc/params.def ++++ b/src/gcc/params.def +@@ -303,7 +303,7 @@ + DEFPARAM(PARAM_MAX_COMPLETELY_PEELED_INSNS, + "max-completely-peeled-insns", + "The maximum number of insns of a completely peeled loop", +- 100, 0, 0) ++ 200, 0, 0) + /* The maximum number of peelings of a single loop that is peeled completely. */ + DEFPARAM(PARAM_MAX_COMPLETELY_PEEL_TIMES, + "max-completely-peel-times", +@@ -668,6 +668,11 @@ + "Minimal distance between possibly conflicting store and load", + 1, 0, 0) + ++DEFPARAM (PARAM_SCHED_AUTOPREF_QUEUE_DEPTH, ++ "sched-autopref-queue-depth", ++ "Hardware autoprefetcher scheduler model control flag. Number of lookahead cycles the model looks into; at '0' only enable instruction sorting heuristic. Disabled by default.", ++ -1, 0, 0) ++ + DEFPARAM(PARAM_MAX_LAST_VALUE_RTL, + "max-last-value-rtl", + "The maximum number of RTL nodes that can be recorded as combiner's last value", +@@ -1095,6 +1100,21 @@ + "Maximum number of nested calls to search for control dependencies " + "during uninitialized variable analysis", + 1000, 1, 0) ++ ++DEFPARAM (PARAM_MAX_FSM_THREAD_PATH_INSNS, ++ "max-fsm-thread-path-insns", ++ "Maximum number of instructions to copy when duplicating blocks on a finite state automaton jump thread path", ++ 100, 1, 999999) ++ ++DEFPARAM (PARAM_MAX_FSM_THREAD_LENGTH, ++ "max-fsm-thread-length", ++ "Maximum number of basic blocks on a finite state automaton jump thread path", ++ 10, 1, 999999) ++ ++DEFPARAM (PARAM_MAX_FSM_THREAD_PATHS, ++ "max-fsm-thread-paths", ++ "Maximum number of new jump thread paths to create for a finite state automaton", ++ 50, 1, 999999) + /* + + Local variables: +--- a/src/gcc/tree-ssa-threadedge.c ++++ b/src/gcc/tree-ssa-threadedge.c +@@ -48,6 +48,7 @@ + #include "langhooks.h" + #include "params.h" + #include "tree-ssa-threadedge.h" ++#include "tree-ssa-loop.h" + + /* To avoid code explosion due to jump threading, we limit the + number of statements we are going to copy. This variable +@@ -617,6 +618,7 @@ + rather than use a relational operator. These are simpler to handle. */ + if (TREE_CODE (cond) == SSA_NAME) + { ++ tree original_lhs = cond; + cached_lhs = cond; + + /* Get the variable's current value from the equivalence chains. +@@ -638,6 +640,12 @@ + pass specific callback to try and simplify it further. */ + if (cached_lhs && ! is_gimple_min_invariant (cached_lhs)) + cached_lhs = (*simplify) (stmt, stmt); ++ ++ /* We couldn't find an invariant. But, callers of this ++ function may be able to do something useful with the ++ unmodified destination. */ ++ if (!cached_lhs) ++ cached_lhs = original_lhs; + } + else + cached_lhs = NULL; +@@ -897,6 +905,259 @@ + return false; + } + ++/* Return true if the CFG contains at least one path from START_BB to END_BB. ++ When a path is found, record in PATH the blocks from END_BB to START_BB. ++ VISITED_BBS is used to make sure we don't fall into an infinite loop. Bound ++ the recursion to basic blocks belonging to LOOP. */ ++ ++static bool ++fsm_find_thread_path (basic_block start_bb, basic_block end_bb, ++ vec *&path, ++ pointer_set_t *visited_bbs, loop_p loop) ++{ ++ if (loop != start_bb->loop_father) ++ return false; ++ ++ if (start_bb == end_bb) ++ { ++ vec_safe_push (path, start_bb); ++ return true; ++ } ++ ++ if (!pointer_set_insert (visited_bbs, start_bb)) ++ { ++ edge e; ++ edge_iterator ei; ++ FOR_EACH_EDGE (e, ei, start_bb->succs) ++ if (fsm_find_thread_path (e->dest, end_bb, path, visited_bbs, loop)) ++ { ++ vec_safe_push (path, start_bb); ++ return true; ++ } ++ } ++ ++ return false; ++} ++ ++static int max_threaded_paths; ++ ++/* We trace the value of the variable EXPR back through any phi nodes looking ++ for places where it gets a constant value and save the path. Stop after ++ having recorded MAX_PATHS jump threading paths. */ ++ ++static void ++fsm_find_control_statement_thread_paths (tree expr, ++ pointer_set_t *visited_phis, ++ vec *&path, ++ bool seen_loop_phi) ++{ ++ tree var = SSA_NAME_VAR (expr); ++ gimple def_stmt = SSA_NAME_DEF_STMT (expr); ++ basic_block var_bb = gimple_bb (def_stmt); ++ ++ if (var == NULL || var_bb == NULL) ++ return; ++ ++ /* For the moment we assume that an SSA chain only contains phi nodes, and ++ eventually one of the phi arguments will be an integer constant. In the ++ future, this could be extended to also handle simple assignments of ++ arithmetic operations. */ ++ if (gimple_code (def_stmt) != GIMPLE_PHI) ++ return; ++ ++ /* Avoid infinite recursion. */ ++ if (pointer_set_insert (visited_phis, def_stmt)) ++ return; ++ ++ int next_path_length = 0; ++ basic_block last_bb_in_path = path->last (); ++ ++ if (loop_containing_stmt (def_stmt)->header == gimple_bb (def_stmt)) ++ { ++ /* Do not walk through more than one loop PHI node. */ ++ if (seen_loop_phi) ++ return; ++ seen_loop_phi = true; ++ } ++ ++ /* Following the chain of SSA_NAME definitions, we jumped from a definition in ++ LAST_BB_IN_PATH to a definition in VAR_BB. When these basic blocks are ++ different, append to PATH the blocks from LAST_BB_IN_PATH to VAR_BB. */ ++ if (var_bb != last_bb_in_path) ++ { ++ edge e; ++ int e_count = 0; ++ edge_iterator ei; ++ vec *next_path; ++ vec_alloc (next_path, n_basic_blocks_for_fn (cfun)); ++ ++ FOR_EACH_EDGE (e, ei, last_bb_in_path->preds) ++ { ++ pointer_set_t *visited_bbs = pointer_set_create (); ++ ++ if (fsm_find_thread_path (var_bb, e->src, next_path, visited_bbs, ++ e->src->loop_father)) ++ ++e_count; ++ ++ pointer_set_destroy (visited_bbs); ++ ++ /* If there is more than one path, stop. */ ++ if (e_count > 1) ++ { ++ vec_free (next_path); ++ return; ++ } ++ } ++ ++ /* Stop if we have not found a path: this could occur when the recursion ++ is stopped by one of the bounds. */ ++ if (e_count == 0) ++ { ++ vec_free (next_path); ++ return; ++ } ++ ++ /* Append all the nodes from NEXT_PATH to PATH. */ ++ vec_safe_splice (path, next_path); ++ next_path_length = next_path->length (); ++ vec_free (next_path); ++ } ++ ++ gcc_assert (path->last () == var_bb); ++ ++ /* Iterate over the arguments of PHI. */ ++ unsigned int i; ++ for (i = 0; i < gimple_phi_num_args (def_stmt); i++) ++ { ++ tree arg = gimple_phi_arg_def (def_stmt, i); ++ basic_block bbi = gimple_phi_arg_edge (def_stmt, i)->src; ++ ++ /* Skip edges pointing outside the current loop. */ ++ if (!arg || var_bb->loop_father != bbi->loop_father) ++ continue; ++ ++ if (TREE_CODE (arg) == SSA_NAME) ++ { ++ vec_safe_push (path, bbi); ++ /* Recursively follow SSA_NAMEs looking for a constant definition. */ ++ fsm_find_control_statement_thread_paths (arg, visited_phis, path, ++ seen_loop_phi); ++ ++ path->pop (); ++ continue; ++ } ++ ++ if (TREE_CODE (arg) != INTEGER_CST) ++ continue; ++ ++ int path_length = path->length (); ++ /* A path with less than 2 basic blocks should not be jump-threaded. */ ++ if (path_length < 2) ++ continue; ++ ++ if (path_length > PARAM_VALUE (PARAM_MAX_FSM_THREAD_LENGTH)) ++ { ++ if (dump_file && (dump_flags & TDF_DETAILS)) ++ fprintf (dump_file, "FSM jump-thread path not considered: " ++ "the number of basic blocks on the path " ++ "exceeds PARAM_MAX_FSM_THREAD_LENGTH.\n"); ++ continue; ++ } ++ ++ if (max_threaded_paths <= 0) ++ { ++ if (dump_file && (dump_flags & TDF_DETAILS)) ++ fprintf (dump_file, "FSM jump-thread path not considered: " ++ "the number of previously recorded FSM paths to thread " ++ "exceeds PARAM_MAX_FSM_THREAD_PATHS.\n"); ++ continue; ++ } ++ ++ /* Add BBI to the path. */ ++ vec_safe_push (path, bbi); ++ ++path_length; ++ ++ int n_insns = 0; ++ gimple_stmt_iterator gsi; ++ int j; ++ loop_p loop = (*path)[0]->loop_father; ++ bool path_crosses_loops = false; ++ ++ /* Count the number of instructions on the path: as these instructions ++ will have to be duplicated, we will not record the path if there are ++ too many instructions on the path. Also check that all the blocks in ++ the path belong to a single loop. */ ++ for (j = 1; j < path_length - 1; j++) ++ { ++ basic_block bb = (*path)[j]; ++ ++ if (bb->loop_father != loop) ++ { ++ path_crosses_loops = true; ++ break; ++ } ++ ++ for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) ++ { ++ gimple stmt = gsi_stmt (gsi); ++ /* Do not count empty statements and labels. */ ++ if (gimple_code (stmt) != GIMPLE_NOP ++ && gimple_code (stmt) != GIMPLE_LABEL ++ && !is_gimple_debug (stmt)) ++ ++n_insns; ++ } ++ } ++ ++ if (path_crosses_loops) ++ { ++ if (dump_file && (dump_flags & TDF_DETAILS)) ++ fprintf (dump_file, "FSM jump-thread path not considered: " ++ "the path crosses loops.\n"); ++ path->pop (); ++ continue; ++ } ++ ++ if (n_insns >= PARAM_VALUE (PARAM_MAX_FSM_THREAD_PATH_INSNS)) ++ { ++ if (dump_file && (dump_flags & TDF_DETAILS)) ++ fprintf (dump_file, "FSM jump-thread path not considered: " ++ "the number of instructions on the path " ++ "exceeds PARAM_MAX_FSM_THREAD_PATH_INSNS.\n"); ++ path->pop (); ++ continue; ++ } ++ ++ vec *jump_thread_path ++ = new vec (); ++ ++ /* Record the edges between the blocks in PATH. */ ++ for (j = 0; j < path_length - 1; j++) ++ { ++ edge e = find_edge ((*path)[path_length - j - 1], ++ (*path)[path_length - j - 2]); ++ gcc_assert (e); ++ jump_thread_edge *x = new jump_thread_edge (e, EDGE_FSM_THREAD); ++ jump_thread_path->safe_push (x); ++ } ++ ++ /* Add the edge taken when the control variable has value ARG. */ ++ edge taken_edge = find_taken_edge ((*path)[0], arg); ++ jump_thread_edge *x ++ = new jump_thread_edge (taken_edge, EDGE_NO_COPY_SRC_BLOCK); ++ jump_thread_path->safe_push (x); ++ ++ register_jump_thread (jump_thread_path); ++ --max_threaded_paths; ++ ++ /* Remove BBI from the path. */ ++ path->pop (); ++ } ++ ++ /* Remove all the nodes that we added from NEXT_PATH. */ ++ if (next_path_length) ++ vec_safe_truncate (path, (path->length () - next_path_length)); ++} ++ + /* We are exiting E->src, see if E->dest ends with a conditional + jump which has a known value when reached via E. + +@@ -982,7 +1243,10 @@ + cond = simplify_control_stmt_condition (e, stmt, dummy_cond, simplify, + handle_dominating_asserts); + +- if (cond && is_gimple_min_invariant (cond)) ++ if (!cond) ++ return 0; ++ ++ if (is_gimple_min_invariant (cond)) + { + edge taken_edge = find_taken_edge (e->dest, cond); + basic_block dest = (taken_edge ? taken_edge->dest : NULL); +@@ -1028,6 +1292,28 @@ + backedge_seen_p); + return 1; + } ++ ++ if (!flag_expensive_optimizations ++ || optimize_function_for_size_p (cfun) ++ || TREE_CODE (cond) != SSA_NAME ++ || e->dest->loop_father != e->src->loop_father ++ || loop_depth (e->dest->loop_father) == 0) ++ return 0; ++ ++ /* When COND cannot be simplified, try to find paths from a control ++ statement back through the PHI nodes which would affect that control ++ statement. */ ++ vec *bb_path; ++ vec_alloc (bb_path, n_basic_blocks_for_fn (cfun)); ++ vec_safe_push (bb_path, e->dest); ++ pointer_set_t *visited_phis = pointer_set_create (); ++ ++ max_threaded_paths = PARAM_VALUE (PARAM_MAX_FSM_THREAD_PATHS); ++ fsm_find_control_statement_thread_paths (cond, visited_phis, bb_path, ++ false); ++ ++ pointer_set_destroy (visited_phis); ++ vec_free (bb_path); + } + return 0; + } +--- a/src/gcc/convert.c ++++ b/src/gcc/convert.c +@@ -471,8 +471,8 @@ + break; + + CASE_FLT_FN (BUILT_IN_ROUND): +- /* Only convert in ISO C99 mode. */ +- if (!targetm.libc_has_function (function_c99_misc)) ++ /* Only convert in ISO C99 mode and with -fno-math-errno. */ ++ if (!targetm.libc_has_function (function_c99_misc) || flag_errno_math) + break; + if (outprec < TYPE_PRECISION (integer_type_node) + || (outprec == TYPE_PRECISION (integer_type_node) +@@ -492,8 +492,8 @@ + break; + /* ... Fall through ... */ + CASE_FLT_FN (BUILT_IN_RINT): +- /* Only convert in ISO C99 mode. */ +- if (!targetm.libc_has_function (function_c99_misc)) ++ /* Only convert in ISO C99 mode and with -fno-math-errno. */ ++ if (!targetm.libc_has_function (function_c99_misc) || flag_errno_math) + break; + if (outprec < TYPE_PRECISION (integer_type_node) + || (outprec == TYPE_PRECISION (integer_type_node) +--- a/src/libobjc/ChangeLog.linaro ++++ b/src/libobjc/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/libvtv/ChangeLog.linaro ++++ b/src/libvtv/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/libgfortran/configure ++++ b/src/libgfortran/configure +@@ -25941,7 +25941,7 @@ + # test is copied from libgomp, and modified to not link in -lrt as + # libgfortran calls clock_gettime via a weak reference if it's found + # in librt. +-if test $ac_cv_func_clock_gettime = no; then ++if test "$ac_cv_func_clock_gettime" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5 + $as_echo_n "checking for clock_gettime in -lrt... " >&6; } + if test "${ac_cv_lib_rt_clock_gettime+set}" = set; then : +--- a/src/libgfortran/configure.ac ++++ b/src/libgfortran/configure.ac +@@ -511,7 +511,7 @@ + # test is copied from libgomp, and modified to not link in -lrt as + # libgfortran calls clock_gettime via a weak reference if it's found + # in librt. +-if test $ac_cv_func_clock_gettime = no; then ++if test "$ac_cv_func_clock_gettime" = no; then + AC_CHECK_LIB(rt, clock_gettime, + [AC_DEFINE(HAVE_CLOCK_GETTIME_LIBRT, 1, + [Define to 1 if you have the `clock_gettime' function in librt.])]) +--- a/src/libgfortran/ChangeLog.linaro ++++ b/src/libgfortran/ChangeLog.linaro +@@ -0,0 +1,71 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-25 Yvan Roux ++ ++ Backport from trunk r209747. ++ 2014-04-24 Kyrylo Tkachov ++ ++ * configure.ac: Quote usage of ac_cv_func_clock_gettime in if test. ++ * configure: Regenerate. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/libada/ChangeLog.linaro ++++ b/src/libada/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/libffi/ChangeLog.linaro ++++ b/src/libffi/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/libssp/ChangeLog.linaro ++++ b/src/libssp/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/libcilkrts/ChangeLog.linaro ++++ b/src/libcilkrts/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/libcpp/ChangeLog.linaro ++++ b/src/libcpp/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/libcpp/po/ChangeLog.linaro ++++ b/src/libcpp/po/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. +--- a/src/fixincludes/ChangeLog.linaro ++++ b/src/fixincludes/ChangeLog.linaro +@@ -0,0 +1,63 @@ ++2015-04-16 Christophe Lyon ++ ++ GCC Linaro 4.9-2015.04 snapshot. ++ ++2015-03-12 Yvan Roux ++ ++ GCC Linaro 4.9-2015.03 released. ++ ++2015-02-12 Michael Collison ++ ++ GCC Linaro 4.9-2015.02 released. ++ ++2015-01-15 Yvan Roux ++ ++ GCC Linaro 4.9-2015.01 released. ++ ++2014-12-11 Yvan Roux ++ ++ GCC Linaro 4.9-2014.12 released. ++ ++2014-11-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.11 released. ++ ++2014-10-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10-1 released. ++ ++2014-10-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.10 released. ++ ++2014-09-10 Yvan Roux ++ ++ GCC Linaro 4.9-2014.09 released. ++ ++2014-08-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.08 released. ++ ++2014-07-24 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07-1 released. ++ ++2014-07-17 Yvan Roux ++ ++ GCC Linaro 4.9-2014.07 released. ++ ++2014-06-25 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06-1 released. ++ ++2014-06-12 Yvan Roux ++ ++ GCC Linaro 4.9-2014.06 released. ++ ++2014-05-14 Yvan Roux ++ ++ GCC Linaro 4.9-2014.05 released. ++ ++2014-04-22 Yvan Roux ++ ++ GCC Linaro 4.9-2014.04 released. --- gcc-4.9-4.9.2.orig/debian/patches/gcc-multiarch-linaro.diff +++ gcc-4.9-4.9.2/debian/patches/gcc-multiarch-linaro.diff @@ -0,0 +1,147 @@ +# DP: - Remaining multiarch patches, not yet submitted upstream. +# DP: - Add MULTIARCH_DIRNAME definitions for multilib configurations, +# DP: which are used for the non-multilib builds. + +2013-06-12 Matthias Klose + + * config/i386/t-linux64: Set MULTIARCH_DIRNAME. + * config/i386/t-kfreebsd: Set MULTIARCH_DIRNAME. + * config.gcc (i[34567]86-*-linux* | x86_64-*-linux*): Prepend + i386/t-linux to $tmake_file. + * config/mips/t-linux64: Set MULTIARCH_DIRNAME. + * config/rs6000/t-linux64: Set MULTIARCH_DIRNAME. + * config/s390/t-linux64: Set MULTIARCH_DIRNAME. + * config/sparc/t-linux64: Set MULTIARCH_DIRNAME. + +Index: b/src/gcc/config/sh/t-linux +=================================================================== +--- a/src/gcc/config/sh/t-linux ++++ b/src/gcc/config/sh/t-linux +@@ -1,2 +1,4 @@ + MULTILIB_DIRNAMES= + MULTILIB_MATCHES = ++ ++MULTILIB_OSDIRNAMES = sh4-linux-gnu:sh4-linux-gnu sh4_nofpu-linux-gnu:sh4-linux-gnu +Index: b/src/gcc/config/sparc/t-linux64 +=================================================================== +--- a/src/gcc/config/sparc/t-linux64 ++++ b/src/gcc/config/sparc/t-linux64 +@@ -27,3 +27,5 @@ MULTILIB_OPTIONS = m64/m32 + MULTILIB_DIRNAMES = 64 32 + MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:sparc64-linux-gnu) + MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:sparc-linux-gnu) ++ ++MULTIARCH_DIRNAME = $(call if_multiarch,sparc$(if $(findstring 64,$(target)),64)-linux-gnu) +Index: b/src/gcc/config/s390/t-linux64 +=================================================================== +--- a/src/gcc/config/s390/t-linux64 ++++ b/src/gcc/config/s390/t-linux64 +@@ -9,3 +9,5 @@ MULTILIB_OPTIONS = m64/m31 + MULTILIB_DIRNAMES = 64 32 + MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:s390x-linux-gnu) + MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:s390-linux-gnu) ++ ++MULTIARCH_DIRNAME = $(call if_multiarch,s390$(if $(findstring s390x,$(target)),x)-linux-gnu) +Index: b/src/gcc/config/rs6000/t-linux64 +=================================================================== +--- a/src/gcc/config/rs6000/t-linux64 ++++ b/src/gcc/config/rs6000/t-linux64 +@@ -31,6 +31,8 @@ MULTILIB_EXTRA_OPTS := + MULTILIB_OSDIRNAMES := m64=../lib64$(call if_multiarch,:powerpc64-linux-gnu) + MULTILIB_OSDIRNAMES += m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu) + ++MULTIARCH_DIRNAME = $(call if_multiarch,powerpc$(if $(findstring 64,$(target)),64)-linux-gnu) ++ + rs6000-linux.o: $(srcdir)/config/rs6000/rs6000-linux.c + $(COMPILE) $< + $(POSTCOMPILE) +Index: b/src/gcc/config/i386/t-linux64 +=================================================================== +--- a/src/gcc/config/i386/t-linux64 ++++ b/src/gcc/config/i386/t-linux64 +@@ -36,3 +36,13 @@ MULTILIB_DIRNAMES = $(patsubst m%, %, + MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu) + MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu) + MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32) ++ ++ifneq (,$(findstring x86_64,$(target))) ++ ifneq (,$(findstring biarchx32.h,$(tm_include_list))) ++ MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-linux-gnux32) ++ else ++ MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-linux-gnu) ++ endif ++else ++ MULTIARCH_DIRNAME = $(call if_multiarch,i386-linux-gnu) ++endif +Index: b/src/gcc/config/i386/t-kfreebsd +=================================================================== +--- a/src/gcc/config/i386/t-kfreebsd ++++ b/src/gcc/config/i386/t-kfreebsd +@@ -1,5 +1,9 @@ +-MULTIARCH_DIRNAME = $(call if_multiarch,i386-kfreebsd-gnu) ++ifeq (,$(MULTIARCH_DIRNAME)) ++ MULTIARCH_DIRNAME = $(call if_multiarch,i386-kfreebsd-gnu) ++endif + + # MULTILIB_OSDIRNAMES are set in t-linux64. + KFREEBSD_OS = $(filter kfreebsd%, $(word 3, $(subst -, ,$(target)))) + MULTILIB_OSDIRNAMES := $(filter-out mx32=%,$(subst linux,$(KFREEBSD_OS),$(MULTILIB_OSDIRNAMES))) ++ ++MULTIARCH_DIRNAME := $(subst linux,$(KFREEBSD_OS),$(MULTIARCH_DIRNAME)) +Index: b/src/gcc/config/mips/t-linux64 +=================================================================== +--- a/src/gcc/config/mips/t-linux64 ++++ b/src/gcc/config/mips/t-linux64 +@@ -24,3 +24,13 @@ MULTILIB_OSDIRNAMES = \ + ../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ + ../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ + ../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++ ++ifneq (,$(findstring abin32,$(target))) ++MULTIARCH_DIRNAME = $(call if_multiarch,mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) ++else ++ifneq (,$(findstring abi64,$(target))) ++MULTIARCH_DIRNAME = $(call if_multiarch,mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++else ++MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) ++endif ++endif +Index: b/src/gcc/config.gcc +=================================================================== +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -1959,8 +1959,11 @@ mips64*-*-linux* | mipsisa64*-*-linux*) + tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/gnu-user64.h mips/linux64.h mips/linux-common.h" + extra_options="${extra_options} linux-android.opt" + tmake_file="${tmake_file} mips/t-linux64" +- tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32" ++ tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_64" + case ${target} in ++ *gnuabin32*) ++ tm_defines=$(echo ${tm_defines}| sed 's/MIPS_ABI_DEFAULT=ABI_64/MIPS_ABI_DEFAULT=ABI_N32/g') ++ ;; + mips64el-st-linux-gnu) + tm_file="${tm_file} mips/st.h" + tmake_file="${tmake_file} mips/t-st" +@@ -4107,7 +4110,7 @@ case ${target} in + i[34567]86-*-darwin* | x86_64-*-darwin*) + ;; + i[34567]86-*-linux* | x86_64-*-linux*) +- tmake_file="$tmake_file i386/t-linux" ++ tmake_file="i386/t-linux $tmake_file" + ;; + i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu) + tmake_file="$tmake_file i386/t-kfreebsd" +Index: b/src/gcc/config/aarch64/t-aarch64-linux +=================================================================== +--- a/src/gcc/config/aarch64/t-aarch64-linux ++++ b/src/gcc/config/aarch64/t-aarch64-linux +@@ -22,7 +22,7 @@ LIB1ASMSRC = aarch64/lib1funcs.asm + LIB1ASMFUNCS = _aarch64_sync_cache_range + + AARCH_BE = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1, $(tm_defines)),_be) +-MULTILIB_OSDIRNAMES = mabi.lp64=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu) ++MULTILIB_OSDIRNAMES = mabi.lp64=../lib$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu) + MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu) + + MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32 --- gcc-4.9-4.9.2.orig/debian/patches/gcc-multiarch-trunk.diff +++ gcc-4.9-4.9.2/debian/patches/gcc-multiarch-trunk.diff @@ -0,0 +1,149 @@ +# DP: - Remaining multiarch patches, not yet submitted upstream. +# DP: - Add MULTIARCH_DIRNAME definitions for multilib configurations, +# DP: which are used for the non-multilib builds. + +2013-06-12 Matthias Klose + + * config/i386/t-linux64: Set MULTIARCH_DIRNAME. + * config/i386/t-kfreebsd: Set MULTIARCH_DIRNAME. + * config.gcc (i[34567]86-*-linux* | x86_64-*-linux*): Prepend + i386/t-linux to $tmake_file. + * config/mips/t-linux64: Set MULTIARCH_DIRNAME. + * config/rs6000/t-linux64: Set MULTIARCH_DIRNAME. + * config/s390/t-linux64: Set MULTIARCH_DIRNAME. + * config/sparc/t-linux64: Set MULTIARCH_DIRNAME. + +Index: b/src/gcc/config/sh/t-linux +=================================================================== +--- a/src/gcc/config/sh/t-linux ++++ b/src/gcc/config/sh/t-linux +@@ -1,2 +1,4 @@ + MULTILIB_DIRNAMES= + MULTILIB_MATCHES = ++ ++MULTILIB_OSDIRNAMES = sh4-linux-gnu:sh4-linux-gnu sh4_nofpu-linux-gnu:sh4-linux-gnu +Index: b/src/gcc/config/sparc/t-linux64 +=================================================================== +--- a/src/gcc/config/sparc/t-linux64 ++++ b/src/gcc/config/sparc/t-linux64 +@@ -27,3 +27,5 @@ MULTILIB_OPTIONS = m64/m32 + MULTILIB_DIRNAMES = 64 32 + MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:sparc64-linux-gnu) + MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:sparc-linux-gnu) ++ ++MULTIARCH_DIRNAME = $(call if_multiarch,sparc$(if $(findstring 64,$(target)),64)-linux-gnu) +Index: b/src/gcc/config/s390/t-linux64 +=================================================================== +--- a/src/gcc/config/s390/t-linux64 ++++ b/src/gcc/config/s390/t-linux64 +@@ -9,3 +9,5 @@ MULTILIB_OPTIONS = m64/m31 + MULTILIB_DIRNAMES = 64 32 + MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:s390x-linux-gnu) + MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:s390-linux-gnu) ++ ++MULTIARCH_DIRNAME = $(call if_multiarch,s390$(if $(findstring s390x,$(target)),x)-linux-gnu) +Index: b/src/gcc/config/rs6000/t-linux64 +=================================================================== +--- a/src/gcc/config/rs6000/t-linux64 ++++ b/src/gcc/config/rs6000/t-linux64 +@@ -31,6 +31,8 @@ MULTILIB_EXTRA_OPTS := + MULTILIB_OSDIRNAMES := m64=../lib64$(call if_multiarch,:powerpc64-linux-gnu) + MULTILIB_OSDIRNAMES += m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu) + ++MULTIARCH_DIRNAME = $(call if_multiarch,powerpc$(if $(findstring 64,$(target)),64)-linux-gnu) ++ + rs6000-linux.o: $(srcdir)/config/rs6000/rs6000-linux.c + $(COMPILE) $< + $(POSTCOMPILE) +Index: b/src/gcc/config/i386/t-linux64 +=================================================================== +--- a/src/gcc/config/i386/t-linux64 ++++ b/src/gcc/config/i386/t-linux64 +@@ -36,3 +36,13 @@ MULTILIB_DIRNAMES = $(patsubst m%, %, + MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu) + MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu) + MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32) ++ ++ifneq (,$(findstring x86_64,$(target))) ++ ifneq (,$(findstring biarchx32.h,$(tm_include_list))) ++ MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-linux-gnux32) ++ else ++ MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-linux-gnu) ++ endif ++else ++ MULTIARCH_DIRNAME = $(call if_multiarch,i386-linux-gnu) ++endif +Index: b/src/gcc/config/i386/t-kfreebsd +=================================================================== +--- a/src/gcc/config/i386/t-kfreebsd ++++ b/src/gcc/config/i386/t-kfreebsd +@@ -1,5 +1,9 @@ +-MULTIARCH_DIRNAME = $(call if_multiarch,i386-kfreebsd-gnu) ++ifeq (,$(MULTIARCH_DIRNAME)) ++ MULTIARCH_DIRNAME = $(call if_multiarch,i386-kfreebsd-gnu) ++endif + + # MULTILIB_OSDIRNAMES are set in t-linux64. + KFREEBSD_OS = $(filter kfreebsd%, $(word 3, $(subst -, ,$(target)))) + MULTILIB_OSDIRNAMES := $(filter-out mx32=%,$(subst linux,$(KFREEBSD_OS),$(MULTILIB_OSDIRNAMES))) ++ ++MULTIARCH_DIRNAME := $(subst linux,$(KFREEBSD_OS),$(MULTIARCH_DIRNAME)) +Index: b/src/gcc/config/mips/t-linux64 +=================================================================== +--- a/src/gcc/config/mips/t-linux64 ++++ b/src/gcc/config/mips/t-linux64 +@@ -24,3 +24,13 @@ MULTILIB_OSDIRNAMES = \ + ../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ + ../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ + ../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++ ++ifneq (,$(findstring abin32,$(target))) ++MULTIARCH_DIRNAME = $(call if_multiarch,mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) ++else ++ifneq (,$(findstring abi64,$(target))) ++MULTIARCH_DIRNAME = $(call if_multiarch,mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++else ++MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) ++endif ++endif +Index: b/src/gcc/config.gcc +=================================================================== +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -1942,8 +1942,11 @@ mips64*-*-linux* | mipsisa64*-*-linux*) + tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/gnu-user64.h mips/linux64.h mips/linux-common.h" + extra_options="${extra_options} linux-android.opt" + tmake_file="${tmake_file} mips/t-linux64" +- tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32" ++ tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_64" + case ${target} in ++ *gnuabin32*) ++ tm_defines=$(echo ${tm_defines}| sed 's/MIPS_ABI_DEFAULT=ABI_64/MIPS_ABI_DEFAULT=ABI_N32/g') ++ ;; + mips64el-st-linux-gnu) + tm_file="${tm_file} mips/st.h" + tmake_file="${tmake_file} mips/t-st" +@@ -4085,7 +4088,7 @@ case ${target} in + i[34567]86-*-darwin* | x86_64-*-darwin*) + ;; + i[34567]86-*-linux* | x86_64-*-linux*) +- tmake_file="$tmake_file i386/t-linux" ++ tmake_file="i386/t-linux $tmake_file" + ;; + i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu) + tmake_file="$tmake_file i386/t-kfreebsd" +Index: b/src/gcc/config/aarch64/t-aarch64-linux +=================================================================== +--- a/src/gcc/config/aarch64/t-aarch64-linux ++++ b/src/gcc/config/aarch64/t-aarch64-linux +@@ -22,7 +22,7 @@ LIB1ASMSRC = aarch64/lib1funcs.asm + LIB1ASMFUNCS = _aarch64_sync_cache_range + + AARCH_BE = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1, $(tm_defines)),_be) +-MULTILIB_OSDIRNAMES = mabi.lp64=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu) +-MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu) ++MULTILIB_OSDIRNAMES = mabi.lp64=../lib$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu) ++MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32$(call if_multiarch,:aarch64$(AARCH_BE)_ilp32-linux-gnu) + +-MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32 ++MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu) --- gcc-4.9-4.9.2.orig/debian/patches/gcc-multiarch.diff +++ gcc-4.9-4.9.2/debian/patches/gcc-multiarch.diff @@ -0,0 +1,160 @@ +# DP: - Remaining multiarch patches, not yet submitted upstream. +# DP: - Add MULTIARCH_DIRNAME definitions for multilib configurations, +# DP: which are used for the non-multilib builds. + +2013-06-12 Matthias Klose + + * config/i386/t-linux64: Set MULTIARCH_DIRNAME. + * config/i386/t-kfreebsd: Set MULTIARCH_DIRNAME. + * config.gcc (i[34567]86-*-linux* | x86_64-*-linux*): Prepend + i386/t-linux to $tmake_file. + * config/mips/t-linux64: Set MULTIARCH_DIRNAME. + * config/rs6000/t-linux64: Set MULTIARCH_DIRNAME. + * config/s390/t-linux64: Set MULTIARCH_DIRNAME. + * config/sparc/t-linux64: Set MULTIARCH_DIRNAME. + +Index: b/src/gcc/config/sh/t-linux +=================================================================== +--- a/src/gcc/config/sh/t-linux ++++ b/src/gcc/config/sh/t-linux +@@ -1,2 +1,4 @@ + MULTILIB_DIRNAMES= + MULTILIB_MATCHES = ++ ++MULTILIB_OSDIRNAMES = sh4-linux-gnu:sh4-linux-gnu sh4_nofpu-linux-gnu:sh4-linux-gnu +Index: b/src/gcc/config/sparc/t-linux64 +=================================================================== +--- a/src/gcc/config/sparc/t-linux64 ++++ b/src/gcc/config/sparc/t-linux64 +@@ -27,3 +27,5 @@ MULTILIB_OPTIONS = m64/m32 + MULTILIB_DIRNAMES = 64 32 + MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:sparc64-linux-gnu) + MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:sparc-linux-gnu) ++ ++MULTIARCH_DIRNAME = $(call if_multiarch,sparc$(if $(findstring 64,$(target)),64)-linux-gnu) +Index: b/src/gcc/config/s390/t-linux64 +=================================================================== +--- a/src/gcc/config/s390/t-linux64 ++++ b/src/gcc/config/s390/t-linux64 +@@ -9,3 +9,5 @@ MULTILIB_OPTIONS = m64/m31 + MULTILIB_DIRNAMES = 64 32 + MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:s390x-linux-gnu) + MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:s390-linux-gnu) ++ ++MULTIARCH_DIRNAME = $(call if_multiarch,s390$(if $(findstring s390x,$(target)),x)-linux-gnu) +Index: b/src/gcc/config/rs6000/t-linux64 +=================================================================== +--- a/src/gcc/config/rs6000/t-linux64 ++++ b/src/gcc/config/rs6000/t-linux64 +@@ -31,6 +31,8 @@ MULTILIB_EXTRA_OPTS := + MULTILIB_OSDIRNAMES := m64=../lib64$(call if_multiarch,:powerpc64-linux-gnu) + MULTILIB_OSDIRNAMES += m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu) + ++MULTIARCH_DIRNAME = $(call if_multiarch,powerpc$(if $(findstring 64,$(target)),64)-linux-gnu) ++ + rs6000-linux.o: $(srcdir)/config/rs6000/rs6000-linux.c + $(COMPILE) $< + $(POSTCOMPILE) +Index: b/src/gcc/config/i386/t-linux64 +=================================================================== +--- a/src/gcc/config/i386/t-linux64 ++++ b/src/gcc/config/i386/t-linux64 +@@ -36,3 +36,13 @@ MULTILIB_DIRNAMES = $(patsubst m%, %, + MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu) + MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu) + MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32) ++ ++ifneq (,$(findstring x86_64,$(target))) ++ ifneq (,$(findstring biarchx32.h,$(tm_include_list))) ++ MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-linux-gnux32) ++ else ++ MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-linux-gnu) ++ endif ++else ++ MULTIARCH_DIRNAME = $(call if_multiarch,i386-linux-gnu) ++endif +Index: b/src/gcc/config/i386/t-kfreebsd +=================================================================== +--- a/src/gcc/config/i386/t-kfreebsd ++++ b/src/gcc/config/i386/t-kfreebsd +@@ -1,5 +1,9 @@ +-MULTIARCH_DIRNAME = $(call if_multiarch,i386-kfreebsd-gnu) ++ifeq (,$(MULTIARCH_DIRNAME)) ++ MULTIARCH_DIRNAME = $(call if_multiarch,i386-kfreebsd-gnu) ++endif + + # MULTILIB_OSDIRNAMES are set in t-linux64. + KFREEBSD_OS = $(filter kfreebsd%, $(word 3, $(subst -, ,$(target)))) + MULTILIB_OSDIRNAMES := $(filter-out mx32=%,$(subst linux,$(KFREEBSD_OS),$(MULTILIB_OSDIRNAMES))) ++ ++MULTIARCH_DIRNAME := $(subst linux,$(KFREEBSD_OS),$(MULTIARCH_DIRNAME)) +Index: b/src/gcc/config/mips/t-linux64 +=================================================================== +--- a/src/gcc/config/mips/t-linux64 ++++ b/src/gcc/config/mips/t-linux64 +@@ -24,3 +24,13 @@ MULTILIB_OSDIRNAMES = \ + ../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ + ../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ + ../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++ ++ifneq (,$(findstring abin32,$(target))) ++MULTIARCH_DIRNAME = $(call if_multiarch,mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) ++else ++ifneq (,$(findstring abi64,$(target))) ++MULTIARCH_DIRNAME = $(call if_multiarch,mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++else ++MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) ++endif ++endif +Index: b/src/gcc/config.gcc +=================================================================== +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -1961,8 +1961,11 @@ mips64*-*-linux* | mipsisa64*-*-linux*) + tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/gnu-user64.h mips/linux64.h mips/linux-common.h" + extra_options="${extra_options} linux-android.opt" + tmake_file="${tmake_file} mips/t-linux64" +- tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32" ++ tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_64" + case ${target} in ++ *gnuabin32*) ++ tm_defines=$(echo ${tm_defines}| sed 's/MIPS_ABI_DEFAULT=ABI_64/MIPS_ABI_DEFAULT=ABI_N32/g') ++ ;; + mips64el-st-linux-gnu) + tm_file="${tm_file} mips/st.h" + tmake_file="${tmake_file} mips/t-st" +@@ -4105,7 +4108,7 @@ case ${target} in + i[34567]86-*-darwin* | x86_64-*-darwin*) + ;; + i[34567]86-*-linux* | x86_64-*-linux*) +- tmake_file="$tmake_file i386/t-linux" ++ tmake_file="i386/t-linux $tmake_file" + ;; + i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu) + tmake_file="$tmake_file i386/t-kfreebsd" +Index: b/src/gcc/config/aarch64/t-aarch64-linux +=================================================================== +--- a/src/gcc/config/aarch64/t-aarch64-linux ++++ b/src/gcc/config/aarch64/t-aarch64-linux +@@ -22,7 +22,7 @@ LIB1ASMSRC = aarch64/lib1funcs.asm + LIB1ASMFUNCS = _aarch64_sync_cache_range + + AARCH_BE = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1, $(tm_defines)),_be) +-MULTILIB_OSDIRNAMES = .=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu) ++MULTILIB_OSDIRNAMES = .=../lib$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu) + MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu) + + # Disable the multilib for linux-gnu targets for the time being; focus +Index: gcc/config/rs6000/t-linux +=================================================================== +--- a/src/gcc/config/rs6000/t-linux ++++ b/src/gcc/config/rs6000/t-linux +@@ -2,7 +2,7 @@ + # or soft-float. + ifeq (,$(filter $(with_cpu),$(SOFT_FLOAT_CPUS))$(findstring soft,$(with_float))) + ifneq (,$(findstring powerpc64,$(target))) +-MULTILIB_OSDIRNAMES := .=../lib64$(call if_multiarch,:powerpc64-linux-gnu) ++MULTILIB_OSDIRNAMES := .=../lib$(call if_multiarch,:powerpc64-linux-gnu) + else + ifneq (,$(findstring spe,$(target))) + MULTIARCH_DIRNAME := powerpc-linux-gnuspe$(if $(findstring 8548,$(with_cpu)),,v1) --- gcc-4.9-4.9.2.orig/debian/patches/gcc-multilib-multiarch.diff +++ gcc-4.9-4.9.2/debian/patches/gcc-multilib-multiarch.diff @@ -0,0 +1,110 @@ +# DP: Don't auto-detect multilib osdirnames. + +Index: b/src/gcc/config/sparc/t-linux64 +=================================================================== +--- a/src/gcc/config/sparc/t-linux64 ++++ b/src/gcc/config/sparc/t-linux64 +@@ -25,7 +25,12 @@ + + MULTILIB_OPTIONS = m64/m32 + MULTILIB_DIRNAMES = 64 32 ++ifneq (,$(findstring sparc64,$(target))) ++MULTILIB_OSDIRNAMES = ../lib$(call if_multiarch,:sparc64-linux-gnu) ++MULTILIB_OSDIRNAMES += ../lib32$(call if_multiarch,:sparc-linux-gnu) ++else + MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:sparc64-linux-gnu) +-MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:sparc-linux-gnu) ++MULTILIB_OSDIRNAMES += ../lib$(call if_multiarch,:sparc-linux-gnu) ++endif + + MULTIARCH_DIRNAME = $(call if_multiarch,sparc$(if $(findstring 64,$(target)),64)-linux-gnu) +Index: b/src/gcc/config/s390/t-linux64 +=================================================================== +--- a/src/gcc/config/s390/t-linux64 ++++ b/src/gcc/config/s390/t-linux64 +@@ -7,7 +7,12 @@ + + MULTILIB_OPTIONS = m64/m31 + MULTILIB_DIRNAMES = 64 32 ++ifneq (,$(findstring s390x,$(target))) ++MULTILIB_OSDIRNAMES = ../lib$(call if_multiarch,:s390x-linux-gnu) ++MULTILIB_OSDIRNAMES += ../lib32$(call if_multiarch,:s390-linux-gnu) ++else + MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:s390x-linux-gnu) +-MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:s390-linux-gnu) ++MULTILIB_OSDIRNAMES += ../lib$(call if_multiarch,:s390-linux-gnu) ++endif + + MULTIARCH_DIRNAME = $(call if_multiarch,s390$(if $(findstring s390x,$(target)),x)-linux-gnu) +Index: b/src/gcc/config/rs6000/t-linux64 +=================================================================== +--- a/src/gcc/config/rs6000/t-linux64 ++++ b/src/gcc/config/rs6000/t-linux64 +@@ -28,8 +28,13 @@ + MULTILIB_OPTIONS := m64/m32 + MULTILIB_DIRNAMES := 64 32 + MULTILIB_EXTRA_OPTS := ++ifneq (,$(findstring powerpc64,$(target))) ++MULTILIB_OSDIRNAMES := m64=../lib$(call if_multiarch,:powerpc64-linux-gnu) ++MULTILIB_OSDIRNAMES += m32=../lib32$(call if_multiarch,:powerpc-linux-gnu) ++else + MULTILIB_OSDIRNAMES := m64=../lib64$(call if_multiarch,:powerpc64-linux-gnu) +-MULTILIB_OSDIRNAMES += m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu) ++MULTILIB_OSDIRNAMES += m32=../lib$(call if_multiarch,:powerpc-linux-gnu) ++endif + + MULTIARCH_DIRNAME = $(call if_multiarch,powerpc$(if $(findstring 64,$(target)),64)-linux-gnu) + +Index: b/src/gcc/config/i386/t-linux64 +=================================================================== +--- a/src/gcc/config/i386/t-linux64 ++++ b/src/gcc/config/i386/t-linux64 +@@ -33,9 +33,19 @@ + comma=, + MULTILIB_OPTIONS = $(subst $(comma),/,$(TM_MULTILIB_CONFIG)) + MULTILIB_DIRNAMES = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS))) ++ifneq (,$(findstring gnux32,$(target))) + MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu) +-MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu) ++MULTILIB_OSDIRNAMES+= m32=../lib32$(call if_multiarch,:i386-linux-gnu) ++MULTILIB_OSDIRNAMES+= mx32=../lib$(call if_multiarch,:x86_64-linux-gnux32) ++else ifneq (,$(findstring x86_64,$(target))) ++MULTILIB_OSDIRNAMES = m64=../lib$(call if_multiarch,:x86_64-linux-gnu) ++MULTILIB_OSDIRNAMES+= m32=../lib32$(call if_multiarch,:i386-linux-gnu) + MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32) ++else ++MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu) ++MULTILIB_OSDIRNAMES+= m32=../lib$(call if_multiarch,:i386-linux-gnu) ++MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32) ++endif + + ifneq (,$(findstring x86_64,$(target))) + ifneq (,$(findstring biarchx32.h,$(tm_include_list))) +Index: b/src/gcc/config/mips/t-linux64 +=================================================================== +--- a/src/gcc/config/mips/t-linux64 ++++ b/src/gcc/config/mips/t-linux64 +@@ -20,10 +20,23 @@ + MULTILIB_DIRNAMES = n32 32 64 + MIPS_EL = $(if $(filter %el, $(firstword $(subst -, ,$(target)))),el) + MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI, $(target_cpu_default)) $(filter soft, $(with_float))),soft) ++ ++ifneq (,$(findstring gnuabi64,$(target))) ++MULTILIB_OSDIRNAMES = \ ++ ../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ ++ ../libo32$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ ++ ../lib$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++else ifneq (,$(findstring gnuabin32,$(target))) ++MULTILIB_OSDIRNAMES = \ ++ ../lib$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ ++ ../libo32$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ ++ ../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++else + MULTILIB_OSDIRNAMES = \ + ../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ + ../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ + ../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++endif + + ifneq (,$(findstring abin32,$(target))) + MULTIARCH_DIRNAME = $(call if_multiarch,mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) --- gcc-4.9-4.9.2.orig/debian/patches/gcc-setmultilib-fix.diff +++ gcc-4.9-4.9.2/debian/patches/gcc-setmultilib-fix.diff @@ -0,0 +1,24 @@ +Index: b/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -7790,10 +7790,15 @@ set_multilib_dir (void) + q2++; + if (*q2 == ':') + ml_end = q2; +- new_multilib_os_dir = XNEWVEC (char, ml_end - q); +- memcpy (new_multilib_os_dir, q + 1, ml_end - q - 1); +- new_multilib_os_dir[ml_end - q - 1] = '\0'; +- multilib_os_dir = *new_multilib_os_dir ? new_multilib_os_dir : "."; ++ if (ml_end - q == 1) ++ multilib_os_dir = xstrdup ("."); ++ else ++ { ++ new_multilib_os_dir = XNEWVEC (char, ml_end - q); ++ memcpy (new_multilib_os_dir, q + 1, ml_end - q - 1); ++ new_multilib_os_dir[ml_end - q - 1] = '\0'; ++ multilib_os_dir = new_multilib_os_dir; ++ } + + if (q2 < end && *q2 == ':') + { --- gcc-4.9-4.9.2.orig/debian/patches/gcc-sysroot.diff +++ gcc-4.9-4.9.2/debian/patches/gcc-sysroot.diff @@ -0,0 +1,157 @@ +# DP: Allow building --with-sysroot=/ + +Index: b/src/gcc/configure.ac +=================================================================== +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -117,6 +117,69 @@ + local_prefix=/usr/local + fi + ++AC_ARG_WITH([native-system-header-dir], ++ [ --with-native-system-header-dir=dir ++ use dir as the directory to look for standard ++ system header files in. Defaults to /usr/include.], ++[ ++ case ${with_native_system_header_dir} in ++ yes|no) AC_MSG_ERROR([bad value ${withval} given for --with-native-system-header-dir]) ;; ++ /* | [[A-Za-z]]:[[\\/]]*) ;; ++ *) AC_MSG_ERROR([--with-native-system-header-dir argument ${withval} must be an absolute directory]) ;; ++ esac ++ configured_native_system_header_dir="${withval}" ++], [configured_native_system_header_dir=]) ++ ++AC_ARG_WITH(build-sysroot, ++ [AS_HELP_STRING([--with-build-sysroot=sysroot], ++ [use sysroot as the system root during the build])], ++ [if test x"$withval" != x ; then ++ SYSROOT_CFLAGS_FOR_TARGET="--sysroot=$withval" ++ fi], ++ [SYSROOT_CFLAGS_FOR_TARGET=]) ++AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET) ++ ++if test "x$prefix" = xNONE; then ++ test_prefix=/usr/local ++else ++ test_prefix=$prefix ++fi ++if test "x$exec_prefix" = xNONE; then ++ test_exec_prefix=$test_prefix ++else ++ test_exec_prefix=$exec_prefix ++fi ++ ++AC_ARG_WITH(sysroot, ++[AS_HELP_STRING([[--with-sysroot[=DIR]]], ++ [search for usr/lib, usr/include, et al, within DIR])], ++[ ++ case ${with_sysroot} in ++ yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;; ++ *) TARGET_SYSTEM_ROOT=$with_sysroot ;; ++ esac ++ ++ TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"' ++ CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)' ++ ++ case ${TARGET_SYSTEM_ROOT} in ++ "${test_prefix}"|"${test_prefix}/"*|\ ++ "${test_exec_prefix}"|"${test_exec_prefix}/"*|\ ++ '${prefix}'|'${prefix}/'*|\ ++ '${exec_prefix}'|'${exec_prefix}/'*) ++ t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE" ++ TARGET_SYSTEM_ROOT_DEFINE="$t" ++ ;; ++ esac ++], [ ++ TARGET_SYSTEM_ROOT= ++ TARGET_SYSTEM_ROOT_DEFINE= ++ CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include' ++]) ++AC_SUBST(TARGET_SYSTEM_ROOT) ++AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE) ++AC_SUBST(CROSS_SYSTEM_HEADER_DIR) ++ + # Don't set gcc_gxx_include_dir to gxx_include_dir since that's only + # passed in by the toplevel make and thus we'd get different behavior + # depending on where we built the sources. +@@ -148,7 +211,9 @@ + if test "${with_sysroot+set}" = set; then + gcc_gxx_without_sysroot=`expr "${gcc_gxx_include_dir}" : "${with_sysroot}"'\(.*\)'` + if test "${gcc_gxx_without_sysroot}"; then +- gcc_gxx_include_dir="${gcc_gxx_without_sysroot}" ++ if test x${with_sysroot} != x/; then ++ gcc_gxx_include_dir="${gcc_gxx_without_sysroot}" ++ fi + gcc_gxx_include_dir_add_sysroot=1 + fi + fi +@@ -738,69 +803,6 @@ + ], [enable_shared=yes]) + AC_SUBST(enable_shared) + +-AC_ARG_WITH([native-system-header-dir], +- [ --with-native-system-header-dir=dir +- use dir as the directory to look for standard +- system header files in. Defaults to /usr/include.], +-[ +- case ${with_native_system_header_dir} in +- yes|no) AC_MSG_ERROR([bad value ${withval} given for --with-native-system-header-dir]) ;; +- /* | [[A-Za-z]]:[[\\/]]*) ;; +- *) AC_MSG_ERROR([--with-native-system-header-dir argument ${withval} must be an absolute directory]) ;; +- esac +- configured_native_system_header_dir="${withval}" +-], [configured_native_system_header_dir=]) +- +-AC_ARG_WITH(build-sysroot, +- [AS_HELP_STRING([--with-build-sysroot=sysroot], +- [use sysroot as the system root during the build])], +- [if test x"$withval" != x ; then +- SYSROOT_CFLAGS_FOR_TARGET="--sysroot=$withval" +- fi], +- [SYSROOT_CFLAGS_FOR_TARGET=]) +-AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET) +- +-if test "x$prefix" = xNONE; then +- test_prefix=/usr/local +-else +- test_prefix=$prefix +-fi +-if test "x$exec_prefix" = xNONE; then +- test_exec_prefix=$test_prefix +-else +- test_exec_prefix=$exec_prefix +-fi +- +-AC_ARG_WITH(sysroot, +-[AS_HELP_STRING([[--with-sysroot[=DIR]]], +- [search for usr/lib, usr/include, et al, within DIR])], +-[ +- case ${with_sysroot} in +- yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;; +- *) TARGET_SYSTEM_ROOT=$with_sysroot ;; +- esac +- +- TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"' +- CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)' +- +- case ${TARGET_SYSTEM_ROOT} in +- "${test_prefix}"|"${test_prefix}/"*|\ +- "${test_exec_prefix}"|"${test_exec_prefix}/"*|\ +- '${prefix}'|'${prefix}/'*|\ +- '${exec_prefix}'|'${exec_prefix}/'*) +- t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE" +- TARGET_SYSTEM_ROOT_DEFINE="$t" +- ;; +- esac +-], [ +- TARGET_SYSTEM_ROOT= +- TARGET_SYSTEM_ROOT_DEFINE= +- CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include' +-]) +-AC_SUBST(TARGET_SYSTEM_ROOT) +-AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE) +-AC_SUBST(CROSS_SYSTEM_HEADER_DIR) +- + AC_ARG_WITH(specs, + [AS_HELP_STRING([--with-specs=SPECS], + [add SPECS to driver command-line processing])], --- gcc-4.9-4.9.2.orig/debian/patches/gcc-target-include-asm.diff +++ gcc-4.9-4.9.2/debian/patches/gcc-target-include-asm.diff @@ -0,0 +1,15 @@ +# DP: Search $(builddir)/sys-include for the asm header files + +Index: b/src/configure.ac +=================================================================== +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -3039,7 +3039,7 @@ fi + # being built; programs in there won't even run. + if test "${build}" = "${host}" && test -d ${srcdir}/gcc; then + # Search for pre-installed headers if nothing else fits. +- FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$(build_tooldir)/bin/ -B$(build_tooldir)/lib/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include' ++ FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$(build_tooldir)/bin/ -B$(build_tooldir)/lib/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include -isystem $(CURDIR)/sys-include' + fi + + if test "x${use_gnu_ld}" = x && --- gcc-4.9-4.9.2.orig/debian/patches/gcc-textdomain.diff +++ gcc-4.9-4.9.2/debian/patches/gcc-textdomain.diff @@ -0,0 +1,96 @@ +# DP: Set gettext's domain and textdomain to the versioned package name. + +Index: b/src/gcc/intl.c +=================================================================== +--- a/src/gcc/intl.c ++++ b/src/gcc/intl.c +@@ -55,8 +55,8 @@ gcc_init_libintl (void) + setlocale (LC_ALL, ""); + #endif + +- (void) bindtextdomain ("gcc", LOCALEDIR); +- (void) textdomain ("gcc"); ++ (void) bindtextdomain ("gcc-4.9", LOCALEDIR); ++ (void) textdomain ("gcc-4.9"); + + /* Opening quotation mark. */ + open_quote = _("`"); +Index: b/src/gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -3846,8 +3846,8 @@ install-po: + dir=$(localedir)/$$lang/LC_MESSAGES; \ + echo $(mkinstalldirs) $(DESTDIR)$$dir; \ + $(mkinstalldirs) $(DESTDIR)$$dir || exit 1; \ +- echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc.mo; \ +- $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc.mo; \ ++ echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc-4.9.mo; \ ++ $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc-4.9.mo; \ + done + + # Rule for regenerating the message template (gcc.pot). +Index: b/src/libcpp/init.c +=================================================================== +--- a/src/libcpp/init.c ++++ b/src/libcpp/init.c +@@ -152,7 +152,7 @@ init_library (void) + init_trigraph_map (); + + #ifdef ENABLE_NLS +- (void) bindtextdomain (PACKAGE, LOCALEDIR); ++ (void) bindtextdomain (PACKAGE PACKAGE_SUFFIX, LOCALEDIR); + #endif + } + } +Index: b/src/libcpp/system.h +=================================================================== +--- a/src/libcpp/system.h ++++ b/src/libcpp/system.h +@@ -280,7 +280,7 @@ extern int errno; + #endif + + #ifndef _ +-# define _(msgid) dgettext (PACKAGE, msgid) ++# define _(msgid) dgettext (PACKAGE PACKAGE_SUFFIX, msgid) + #endif + + #ifndef N_ +Index: b/src/libcpp/Makefile.in +=================================================================== +--- a/src/libcpp/Makefile.in ++++ b/src/libcpp/Makefile.in +@@ -49,6 +49,7 @@ LDFLAGS = @LDFLAGS@ + LIBICONV = @LIBICONV@ + LIBINTL = @LIBINTL@ + PACKAGE = @PACKAGE@ ++PACKAGE_SUFFIX = -4.9 + RANLIB = @RANLIB@ + SHELL = @SHELL@ + USED_CATALOGS = @USED_CATALOGS@ +@@ -72,10 +73,12 @@ depcomp = $(SHELL) $(srcdir)/../depcomp + + INCLUDES = -I$(srcdir) -I. -I$(srcdir)/../include @INCINTL@ \ + -I$(srcdir)/include ++DEBCPPFLAGS += -DPACKAGE_SUFFIX=\"$(strip $(PACKAGE_SUFFIX))\" + +-ALL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(INCLUDES) $(CPPFLAGS) $(PICFLAG) ++ALL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(INCLUDES) $(CPPFLAGS) $(PICFLAG) \ ++ $(DEBCPPFLAGS) + ALL_CXXFLAGS = $(CXXFLAGS) $(WARN_CXXFLAGS) $(NOEXCEPTION_FLAGS) $(INCLUDES) \ +- $(CPPFLAGS) $(PICFLAG) ++ $(CPPFLAGS) $(PICFLAG) $(DEBCPPFLAGS) + + # The name of the compiler to use. + COMPILER = $(CXX) +@@ -164,8 +167,8 @@ install-strip install: all installdirs + else continue; \ + fi; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ +- echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ +- $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ ++ echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE)$(PACKAGE_SUFFIX).mo; \ ++ $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE)$(PACKAGE_SUFFIX).mo; \ + done + + mostlyclean: --- gcc-4.9-4.9.2.orig/debian/patches/gccgo-arm64.diff +++ gcc-4.9-4.9.2/debian/patches/gccgo-arm64.diff @@ -0,0 +1,21 @@ +# DP: gccgo: Enable cgo by default on linux/arm64. + +From 391fba3b788628ef6431765c382a51f52a93cddf Mon Sep 17 00:00:00 2001 +From: Michael Hudson-Doyle +Date: Wed, 27 Aug 2014 14:57:07 +1200 +Subject: [PATCH 3/3] Enable cgo by default on linux/arm64. + +--- + src/libgo/go/go/build/build.go | 1 + + 1 file changed, 1 insertion(+) + +--- a/src/libgo/go/go/build/build.go ++++ b/src/libgo/go/go/build/build.go +@@ -268,6 +268,7 @@ var cgoEnabled = map[string]bool{ + "linux/386": true, + "linux/amd64": true, + "linux/arm": true, ++ "linux/arm64": true, + "netbsd/386": true, + "netbsd/amd64": true, + "netbsd/arm": true, --- gcc-4.9-4.9.2.orig/debian/patches/gccgo-version.diff +++ gcc-4.9-4.9.2/debian/patches/gccgo-version.diff @@ -0,0 +1,60 @@ +# DP: Omit the subminor number from the go libdir + +Index: b/src/gcc/go/Make-lang.in +=================================================================== +--- a/src/gcc/go/Make-lang.in ++++ b/src/gcc/go/Make-lang.in +@@ -223,7 +223,9 @@ go.stageprofile: stageprofile-start + go.stagefeedback: stagefeedback-start + -mv go/*$(objext) stagefeedback/go + +-CFLAGS-go/go-lang.o += -DDEFAULT_TARGET_VERSION=\"$(version)\" \ ++short_version := $(shell echo $(version) | sed -r 's/([0-9]+\.[0-9]+).*/\1/') ++ ++CFLAGS-go/go-lang.o += -DDEFAULT_TARGET_VERSION=\"$(short_version)\" \ + -DDEFAULT_TARGET_MACHINE=\"$(target_noncanonical)\" + + GOINCLUDES = -I $(srcdir)/go -I $(srcdir)/go/gofrontend +Index: b/src/libgo/Makefile.in +=================================================================== +--- a/src/libgo/Makefile.in ++++ b/src/libgo/Makefile.in +@@ -429,14 +429,14 @@ top_srcdir = @top_srcdir@ + SUFFIXES = .c .go .gox .o .obj .lo .a + @LIBGO_IS_RTEMS_TRUE@subdirs = testsuite + SUBDIRS = ${subdirs} +-gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) ++short_version := $(shell sed -r 's/([0-9]+\.[0-9]+)\..*/\1/' $(top_srcdir)/../gcc/BASE-VER) + MAINT_CHARSET = latin1 + mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs + PWD_COMMAND = $${PWDCMD-pwd} + STAMP = echo timestamp > + toolexecdir = $(glibgo_toolexecdir) + toolexeclibdir = $(glibgo_toolexeclibdir) +-toolexeclibgodir = $(nover_glibgo_toolexeclibdir)/go/$(gcc_version)/$(target_alias) ++toolexeclibgodir = $(nover_glibgo_toolexeclibdir)/go/$(short_version) + WARN_CFLAGS = $(WARN_FLAGS) $(WERROR) + + # -I/-D flags to pass when compiling. +Index: b/src/libgo/Makefile.am +=================================================================== +--- a/src/libgo/Makefile.am ++++ b/src/libgo/Makefile.am +@@ -15,7 +15,7 @@ endif + + SUBDIRS = ${subdirs} + +-gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) ++short_version := $(shell sed -r 's/([0-9]+\.[0-9]+)\..*/\1/' $(top_srcdir)/../gcc/BASE-VER) + + MAINT_CHARSET = latin1 + +@@ -25,7 +25,7 @@ STAMP = echo timestamp > + + toolexecdir = $(glibgo_toolexecdir) + toolexeclibdir = $(glibgo_toolexeclibdir) +-toolexeclibgodir = $(nover_glibgo_toolexeclibdir)/go/$(gcc_version)/$(target_alias) ++toolexeclibgodir = $(nover_glibgo_toolexeclibdir)/go/$(short_version) + + LIBFFI = @LIBFFI@ + LIBFFIINCS = @LIBFFIINCS@ --- gcc-4.9-4.9.2.orig/debian/patches/gcj-arm-mode.diff +++ gcc-4.9-4.9.2/debian/patches/gcj-arm-mode.diff @@ -0,0 +1,33 @@ +# DP: For armhf, force arm mode instead of thumb mode + +--- a/src/libjava/configure.host ++++ b/src/libjava/configure.host +@@ -66,6 +66,9 @@ + ;; + esac + ++# on armhf force arm mode ++libgcj_flags="${libgcj_flags} -marm" ++ + AM_RUNTESTFLAGS= + + # Set any host dependent compiler flags. +--- a/src/gcc/java/lang-specs.h ++++ b/src/gcc/java/lang-specs.h +@@ -47,7 +47,7 @@ + %{.class|.zip|.jar|!fsyntax-only:jc1 \ + %{.java|fsaw-java-file:%U.jar -fsource-filename=%i %@*\.@<:@0-9@:>@*\).*/\1/'` + AC_MSG_RESULT($d_gcc_ver) + + # Need to export this variables for multilib --- gcc-4.9-4.9.2.orig/debian/patches/gdc-config-ml.diff +++ gcc-4.9-4.9.2/debian/patches/gdc-config-ml.diff @@ -0,0 +1,53 @@ +# DP: config-ml.in: Add D support. + +2015-04-30 Matthias Klose + + * config-ml.in: Add D support: treat GDC and GDCFLAGS like other + compiler/flag environment variables. + +--- a/src/config-ml.in ++++ b/src/config-ml.in +@@ -514,6 +514,7 @@ + GCJFLAGS="$(GCJFLAGS) $${flags}" \ + GOCFLAGS="$(GOCFLAGS) $${flags}" \ + CXXFLAGS="$(CXXFLAGS) $${flags}" \ ++ DFLAGS="$(DFLAGS) $${flags}" \ + LIBCFLAGS="$(LIBCFLAGS) $${flags}" \ + LIBCXXFLAGS="$(LIBCXXFLAGS) $${flags}" \ + LDFLAGS="$(LDFLAGS) $${flags}" \ +@@ -746,7 +746,7 @@ + break + fi + done +- ml_config_env='CC="${CC_}$flags" CXX="${CXX_}$flags" F77="${F77_}$flags" GCJ="${GCJ_}$flags" GFORTRAN="${GFORTRAN_}$flags" GOC="${GOC_}$flags"' ++ ml_config_env='CC="${CC_}$flags" CXX="${CXX_}$flags" F77="${F77_}$flags" GCJ="${GCJ_}$flags" GFORTRAN="${GFORTRAN_}$flags" GOC="${GOC_}$flags" GDC="${GDC_}$flags"' + + if [ "${with_target_subdir}" = "." ]; then + CC_=$CC' ' +@@ -755,6 +755,7 @@ + GCJ_=$GCJ' ' + GFORTRAN_=$GFORTRAN' ' + GOC_=$GOC' ' ++ GDC_=$GDC' ' + else + # Create a regular expression that matches any string as long + # as ML_POPDIR. +@@ -831,6 +832,18 @@ + esac + done + ++ GDC_= ++ for arg in ${GDC}; do ++ case $arg in ++ -[BIL]"${ML_POPDIR}"/*) ++ GDC_="${GDC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ "${ML_POPDIR}"/*) ++ GDC_="${GDC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ *) ++ GDC_="${GDC_}${arg} " ;; ++ esac ++ done ++ + if test "x${LD_LIBRARY_PATH+set}" = xset; then + LD_LIBRARY_PATH_= + for arg in `echo "$LD_LIBRARY_PATH" | tr ':' ' '`; do --- gcc-4.9-4.9.2.orig/debian/patches/gdc-cross-biarch.diff +++ gcc-4.9-4.9.2/debian/patches/gdc-cross-biarch.diff @@ -0,0 +1,15 @@ +# DP: Fix the location of target's libs in cross-build for biarch + +Index: b/src/config-ml.in +=================================================================== +--- a/src/config-ml.in ++++ b/src/config-ml.in +@@ -902,6 +902,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + GDC_="${GDC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++ GDC_="${GDC_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + GDC_="${GDC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + *) --- gcc-4.9-4.9.2.orig/debian/patches/gdc-cross-install-location.diff +++ gcc-4.9-4.9.2/debian/patches/gdc-cross-install-location.diff @@ -0,0 +1,11 @@ +--- a/src/libphobos/configure.ac ++++ b/src/libphobos/configure.ac +@@ -239,7 +239,7 @@ + fi + + if test "${gdc_host}" != "${gdc_target}"; then +- gdc_include_dir='${libdir}/gcc/${host_alias}'/${d_gcc_ver}/include/d ++ gdc_include_dir='${libdir}/gcc-cross/${host_alias}'/${d_gcc_ver}/include/d + else + gdc_include_dir='${prefix}'/include/d/${d_gcc_ver} + fi --- gcc-4.9-4.9.2.orig/debian/patches/gdc-driver-nophobos.diff +++ gcc-4.9-4.9.2/debian/patches/gdc-driver-nophobos.diff @@ -0,0 +1,28 @@ +# DP: Modify gdc driver to have no libphobos by default. + +Index: b/src/gcc/d/d-lang.cc +=================================================================== +--- a/src/gcc/d/d-lang.cc ++++ b/src/gcc/d/d-lang.cc +@@ -185,7 +185,7 @@ static void + d_init_options_struct (gcc_options *opts) + { + // GCC options +- opts->x_flag_exceptions = 1; ++ opts->x_flag_exceptions = 0; + + // Avoid range issues for complex multiply and divide. + opts->x_flag_complex_method = 2; +Index: b/src/gcc/d/d-spec.cc +=================================================================== +--- a/src/gcc/d/d-spec.cc ++++ b/src/gcc/d/d-spec.cc +@@ -93,7 +93,7 @@ lang_specific_driver (cl_decoded_option + + /* If nonzero, use the standard D runtime library when linking with + standard libraries. */ +- int phobos = 1; ++ int phobos = 0; + + /* The number of arguments being added to what's in argv, other than + libraries. We use this to track the number of times we've inserted --- gcc-4.9-4.9.2.orig/debian/patches/gdc-frontend-posix.diff +++ gcc-4.9-4.9.2/debian/patches/gdc-frontend-posix.diff @@ -0,0 +1,15 @@ +# DP: Fix build of the D frontend on the Hurd and KFreeBSD. + +Index: b/src/gcc/d/dfrontend/object.h +=================================================================== +--- a/src/gcc/d/dfrontend/object.h ++++ b/src/gcc/d/dfrontend/object.h +@@ -10,7 +10,7 @@ + #ifndef OBJECT_H + #define OBJECT_H + +-#define POSIX (__linux__ || __APPLE__ || __FreeBSD__ || __OpenBSD__ || __sun) ++#define POSIX (__linux__ || __GLIBC__ || __gnu_hurd__ || __APPLE__ || __FreeBSD__ || __OpenBSD__ || __sun) + + #if __DMC__ + #pragma once --- gcc-4.9-4.9.2.orig/debian/patches/gdc-libphobos-build.diff +++ gcc-4.9-4.9.2/debian/patches/gdc-libphobos-build.diff @@ -0,0 +1,713 @@ +# DP: This implements building of libphobos library in GCC. + +Index: b/src/configure.ac +=================================================================== +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -165,6 +165,7 @@ target_libraries="target-libgcc \ + target-libssp \ + target-libquadmath \ + target-libgfortran \ ++ target-libphobos \ + target-boehm-gc \ + ${libgcj} \ + target-libobjc \ +Index: b/src/Makefile.def +=================================================================== +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -135,6 +135,7 @@ target_modules = { module= libquadmath; + target_modules = { module= libgfortran; }; + target_modules = { module= libobjc; }; + target_modules = { module= libgo; }; ++target_modules = { module= libphobos; }; + target_modules = { module= libtermcap; no_check=true; + missing=mostlyclean; + missing=clean; +@@ -512,6 +513,8 @@ dependencies = { module=configure-target + dependencies = { module=all-target-libgo; on=all-target-libbacktrace; }; + dependencies = { module=all-target-libgo; on=all-target-libffi; }; + dependencies = { module=all-target-libgo; on=all-target-libatomic; }; ++dependencies = { module=configure-target-libphobos; on=configure-target-zlib; }; ++dependencies = { module=all-target-libphobos; on=all-target-zlib; }; + dependencies = { module=configure-target-libjava; on=configure-target-zlib; }; + dependencies = { module=configure-target-libjava; on=configure-target-boehm-gc; }; + dependencies = { module=configure-target-libjava; on=configure-target-libffi; }; +@@ -571,6 +574,8 @@ languages = { language=objc; gcc-check-t + languages = { language=obj-c++; gcc-check-target=check-obj-c++; }; + languages = { language=go; gcc-check-target=check-go; + lib-check-target=check-target-libgo; }; ++languages = { language=d; gcc-check-target=check-d; ++ lib-check-target=check-target-libphobos; }; + + // Toplevel bootstrap + bootstrap_stage = { id=1 ; }; +Index: b/src/Makefile.in +=================================================================== +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -940,6 +940,7 @@ configure-target: \ + maybe-configure-target-libgfortran \ + maybe-configure-target-libobjc \ + maybe-configure-target-libgo \ ++ maybe-configure-target-libphobos \ + maybe-configure-target-libtermcap \ + maybe-configure-target-winsup \ + maybe-configure-target-libgloss \ +@@ -1098,6 +1099,7 @@ all-target: maybe-all-target-libquadmath + all-target: maybe-all-target-libgfortran + all-target: maybe-all-target-libobjc + all-target: maybe-all-target-libgo ++all-target: maybe-all-target-libphobos + all-target: maybe-all-target-libtermcap + all-target: maybe-all-target-winsup + all-target: maybe-all-target-libgloss +@@ -1188,6 +1190,7 @@ info-target: maybe-info-target-libquadma + info-target: maybe-info-target-libgfortran + info-target: maybe-info-target-libobjc + info-target: maybe-info-target-libgo ++info-target: maybe-info-target-libphobos + info-target: maybe-info-target-libtermcap + info-target: maybe-info-target-winsup + info-target: maybe-info-target-libgloss +@@ -1271,6 +1274,7 @@ dvi-target: maybe-dvi-target-libquadmath + dvi-target: maybe-dvi-target-libgfortran + dvi-target: maybe-dvi-target-libobjc + dvi-target: maybe-dvi-target-libgo ++dvi-target: maybe-dvi-target-libphobos + dvi-target: maybe-dvi-target-libtermcap + dvi-target: maybe-dvi-target-winsup + dvi-target: maybe-dvi-target-libgloss +@@ -1354,6 +1358,7 @@ pdf-target: maybe-pdf-target-libquadmath + pdf-target: maybe-pdf-target-libgfortran + pdf-target: maybe-pdf-target-libobjc + pdf-target: maybe-pdf-target-libgo ++pdf-target: maybe-pdf-target-libphobos + pdf-target: maybe-pdf-target-libtermcap + pdf-target: maybe-pdf-target-winsup + pdf-target: maybe-pdf-target-libgloss +@@ -1437,6 +1442,7 @@ html-target: maybe-html-target-libquadma + html-target: maybe-html-target-libgfortran + html-target: maybe-html-target-libobjc + html-target: maybe-html-target-libgo ++html-target: maybe-html-target-libphobos + html-target: maybe-html-target-libtermcap + html-target: maybe-html-target-winsup + html-target: maybe-html-target-libgloss +@@ -1520,6 +1526,7 @@ TAGS-target: maybe-TAGS-target-libquadma + TAGS-target: maybe-TAGS-target-libgfortran + TAGS-target: maybe-TAGS-target-libobjc + TAGS-target: maybe-TAGS-target-libgo ++TAGS-target: maybe-TAGS-target-libphobos + TAGS-target: maybe-TAGS-target-libtermcap + TAGS-target: maybe-TAGS-target-winsup + TAGS-target: maybe-TAGS-target-libgloss +@@ -1603,6 +1610,7 @@ install-info-target: maybe-install-info- + install-info-target: maybe-install-info-target-libgfortran + install-info-target: maybe-install-info-target-libobjc + install-info-target: maybe-install-info-target-libgo ++install-info-target: maybe-install-info-target-libphobos + install-info-target: maybe-install-info-target-libtermcap + install-info-target: maybe-install-info-target-winsup + install-info-target: maybe-install-info-target-libgloss +@@ -1686,6 +1694,7 @@ install-pdf-target: maybe-install-pdf-ta + install-pdf-target: maybe-install-pdf-target-libgfortran + install-pdf-target: maybe-install-pdf-target-libobjc + install-pdf-target: maybe-install-pdf-target-libgo ++install-pdf-target: maybe-install-pdf-target-libphobos + install-pdf-target: maybe-install-pdf-target-libtermcap + install-pdf-target: maybe-install-pdf-target-winsup + install-pdf-target: maybe-install-pdf-target-libgloss +@@ -1769,6 +1778,7 @@ install-html-target: maybe-install-html- + install-html-target: maybe-install-html-target-libgfortran + install-html-target: maybe-install-html-target-libobjc + install-html-target: maybe-install-html-target-libgo ++install-html-target: maybe-install-html-target-libphobos + install-html-target: maybe-install-html-target-libtermcap + install-html-target: maybe-install-html-target-winsup + install-html-target: maybe-install-html-target-libgloss +@@ -1852,6 +1862,7 @@ installcheck-target: maybe-installcheck- + installcheck-target: maybe-installcheck-target-libgfortran + installcheck-target: maybe-installcheck-target-libobjc + installcheck-target: maybe-installcheck-target-libgo ++installcheck-target: maybe-installcheck-target-libphobos + installcheck-target: maybe-installcheck-target-libtermcap + installcheck-target: maybe-installcheck-target-winsup + installcheck-target: maybe-installcheck-target-libgloss +@@ -1935,6 +1946,7 @@ mostlyclean-target: maybe-mostlyclean-ta + mostlyclean-target: maybe-mostlyclean-target-libgfortran + mostlyclean-target: maybe-mostlyclean-target-libobjc + mostlyclean-target: maybe-mostlyclean-target-libgo ++mostlyclean-target: maybe-mostlyclean-target-libphobos + mostlyclean-target: maybe-mostlyclean-target-libtermcap + mostlyclean-target: maybe-mostlyclean-target-winsup + mostlyclean-target: maybe-mostlyclean-target-libgloss +@@ -2018,6 +2030,7 @@ clean-target: maybe-clean-target-libquad + clean-target: maybe-clean-target-libgfortran + clean-target: maybe-clean-target-libobjc + clean-target: maybe-clean-target-libgo ++clean-target: maybe-clean-target-libphobos + clean-target: maybe-clean-target-libtermcap + clean-target: maybe-clean-target-winsup + clean-target: maybe-clean-target-libgloss +@@ -2101,6 +2114,7 @@ distclean-target: maybe-distclean-target + distclean-target: maybe-distclean-target-libgfortran + distclean-target: maybe-distclean-target-libobjc + distclean-target: maybe-distclean-target-libgo ++distclean-target: maybe-distclean-target-libphobos + distclean-target: maybe-distclean-target-libtermcap + distclean-target: maybe-distclean-target-winsup + distclean-target: maybe-distclean-target-libgloss +@@ -2184,6 +2198,7 @@ maintainer-clean-target: maybe-maintaine + maintainer-clean-target: maybe-maintainer-clean-target-libgfortran + maintainer-clean-target: maybe-maintainer-clean-target-libobjc + maintainer-clean-target: maybe-maintainer-clean-target-libgo ++maintainer-clean-target: maybe-maintainer-clean-target-libphobos + maintainer-clean-target: maybe-maintainer-clean-target-libtermcap + maintainer-clean-target: maybe-maintainer-clean-target-winsup + maintainer-clean-target: maybe-maintainer-clean-target-libgloss +@@ -2322,6 +2337,7 @@ check-target: \ + maybe-check-target-libgfortran \ + maybe-check-target-libobjc \ + maybe-check-target-libgo \ ++ maybe-check-target-libphobos \ + maybe-check-target-libtermcap \ + maybe-check-target-winsup \ + maybe-check-target-libgloss \ +@@ -2478,6 +2494,7 @@ install-target: \ + maybe-install-target-libgfortran \ + maybe-install-target-libobjc \ + maybe-install-target-libgo \ ++ maybe-install-target-libphobos \ + maybe-install-target-libtermcap \ + maybe-install-target-winsup \ + maybe-install-target-libgloss \ +@@ -2581,6 +2598,7 @@ install-strip-target: \ + maybe-install-strip-target-libgfortran \ + maybe-install-strip-target-libobjc \ + maybe-install-strip-target-libgo \ ++ maybe-install-strip-target-libphobos \ + maybe-install-strip-target-libtermcap \ + maybe-install-strip-target-winsup \ + maybe-install-strip-target-libgloss \ +@@ -38755,6 +38773,463 @@ maintainer-clean-target-libgo: + + + ++.PHONY: configure-target-libphobos maybe-configure-target-libphobos ++maybe-configure-target-libphobos: ++@if gcc-bootstrap ++configure-target-libphobos: stage_current ++@endif gcc-bootstrap ++@if target-libphobos ++maybe-configure-target-libphobos: configure-target-libphobos ++configure-target-libphobos: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ echo "Checking multilib configuration for libphobos..."; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libphobos ; \ ++ $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libphobos/multilib.tmp 2> /dev/null ; \ ++ if test -r $(TARGET_SUBDIR)/libphobos/multilib.out; then \ ++ if cmp -s $(TARGET_SUBDIR)/libphobos/multilib.tmp $(TARGET_SUBDIR)/libphobos/multilib.out; then \ ++ rm -f $(TARGET_SUBDIR)/libphobos/multilib.tmp; \ ++ else \ ++ rm -f $(TARGET_SUBDIR)/libphobos/Makefile; \ ++ mv $(TARGET_SUBDIR)/libphobos/multilib.tmp $(TARGET_SUBDIR)/libphobos/multilib.out; \ ++ fi; \ ++ else \ ++ mv $(TARGET_SUBDIR)/libphobos/multilib.tmp $(TARGET_SUBDIR)/libphobos/multilib.out; \ ++ fi; \ ++ test ! -f $(TARGET_SUBDIR)/libphobos/Makefile || exit 0; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libphobos ; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo Configuring in $(TARGET_SUBDIR)/libphobos; \ ++ cd "$(TARGET_SUBDIR)/libphobos" || exit 1; \ ++ case $(srcdir) in \ ++ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ ++ *) topdir=`echo $(TARGET_SUBDIR)/libphobos/ | \ ++ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ ++ esac; \ ++ srcdiroption="--srcdir=$${topdir}/libphobos"; \ ++ libsrcdir="$$s/libphobos"; \ ++ rm -f no-such-file || : ; \ ++ CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ ++ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ ++ --target=${target_alias} $${srcdiroption} \ ++ || exit 1 ++@endif target-libphobos ++ ++ ++ ++ ++ ++.PHONY: all-target-libphobos maybe-all-target-libphobos ++maybe-all-target-libphobos: ++@if gcc-bootstrap ++all-target-libphobos: stage_current ++@endif gcc-bootstrap ++@if target-libphobos ++TARGET-target-libphobos=all ++maybe-all-target-libphobos: all-target-libphobos ++all-target-libphobos: configure-target-libphobos ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ ++ $(TARGET-target-libphobos)) ++@endif target-libphobos ++ ++ ++ ++ ++ ++.PHONY: check-target-libphobos maybe-check-target-libphobos ++maybe-check-target-libphobos: ++@if target-libphobos ++maybe-check-target-libphobos: check-target-libphobos ++ ++check-target-libphobos: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) check) ++ ++@endif target-libphobos ++ ++.PHONY: install-target-libphobos maybe-install-target-libphobos ++maybe-install-target-libphobos: ++@if target-libphobos ++maybe-install-target-libphobos: install-target-libphobos ++ ++install-target-libphobos: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) install) ++ ++@endif target-libphobos ++ ++.PHONY: install-strip-target-libphobos maybe-install-strip-target-libphobos ++maybe-install-strip-target-libphobos: ++@if target-libphobos ++maybe-install-strip-target-libphobos: install-strip-target-libphobos ++ ++install-strip-target-libphobos: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) ++ ++@endif target-libphobos ++ ++# Other targets (info, dvi, pdf, etc.) ++ ++.PHONY: maybe-info-target-libphobos info-target-libphobos ++maybe-info-target-libphobos: ++@if target-libphobos ++maybe-info-target-libphobos: info-target-libphobos ++ ++info-target-libphobos: \ ++ configure-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing info in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ info) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++.PHONY: maybe-dvi-target-libphobos dvi-target-libphobos ++maybe-dvi-target-libphobos: ++@if target-libphobos ++maybe-dvi-target-libphobos: dvi-target-libphobos ++ ++dvi-target-libphobos: \ ++ configure-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing dvi in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ dvi) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++.PHONY: maybe-pdf-target-libphobos pdf-target-libphobos ++maybe-pdf-target-libphobos: ++@if target-libphobos ++maybe-pdf-target-libphobos: pdf-target-libphobos ++ ++pdf-target-libphobos: \ ++ configure-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing pdf in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ pdf) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++.PHONY: maybe-html-target-libphobos html-target-libphobos ++maybe-html-target-libphobos: ++@if target-libphobos ++maybe-html-target-libphobos: html-target-libphobos ++ ++html-target-libphobos: \ ++ configure-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing html in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ html) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++.PHONY: maybe-TAGS-target-libphobos TAGS-target-libphobos ++maybe-TAGS-target-libphobos: ++@if target-libphobos ++maybe-TAGS-target-libphobos: TAGS-target-libphobos ++ ++TAGS-target-libphobos: \ ++ configure-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing TAGS in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ TAGS) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++.PHONY: maybe-install-info-target-libphobos install-info-target-libphobos ++maybe-install-info-target-libphobos: ++@if target-libphobos ++maybe-install-info-target-libphobos: install-info-target-libphobos ++ ++install-info-target-libphobos: \ ++ configure-target-libphobos \ ++ info-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-info in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-info) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++.PHONY: maybe-install-pdf-target-libphobos install-pdf-target-libphobos ++maybe-install-pdf-target-libphobos: ++@if target-libphobos ++maybe-install-pdf-target-libphobos: install-pdf-target-libphobos ++ ++install-pdf-target-libphobos: \ ++ configure-target-libphobos \ ++ pdf-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-pdf in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-pdf) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++.PHONY: maybe-install-html-target-libphobos install-html-target-libphobos ++maybe-install-html-target-libphobos: ++@if target-libphobos ++maybe-install-html-target-libphobos: install-html-target-libphobos ++ ++install-html-target-libphobos: \ ++ configure-target-libphobos \ ++ html-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-html in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-html) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++.PHONY: maybe-installcheck-target-libphobos installcheck-target-libphobos ++maybe-installcheck-target-libphobos: ++@if target-libphobos ++maybe-installcheck-target-libphobos: installcheck-target-libphobos ++ ++installcheck-target-libphobos: \ ++ configure-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing installcheck in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ installcheck) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++.PHONY: maybe-mostlyclean-target-libphobos mostlyclean-target-libphobos ++maybe-mostlyclean-target-libphobos: ++@if target-libphobos ++maybe-mostlyclean-target-libphobos: mostlyclean-target-libphobos ++ ++mostlyclean-target-libphobos: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing mostlyclean in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ mostlyclean) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++.PHONY: maybe-clean-target-libphobos clean-target-libphobos ++maybe-clean-target-libphobos: ++@if target-libphobos ++maybe-clean-target-libphobos: clean-target-libphobos ++ ++clean-target-libphobos: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing clean in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ clean) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++.PHONY: maybe-distclean-target-libphobos distclean-target-libphobos ++maybe-distclean-target-libphobos: ++@if target-libphobos ++maybe-distclean-target-libphobos: distclean-target-libphobos ++ ++distclean-target-libphobos: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing distclean in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ distclean) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++.PHONY: maybe-maintainer-clean-target-libphobos maintainer-clean-target-libphobos ++maybe-maintainer-clean-target-libphobos: ++@if target-libphobos ++maybe-maintainer-clean-target-libphobos: maintainer-clean-target-libphobos ++ ++maintainer-clean-target-libphobos: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ maintainer-clean) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++ ++ ++ ++ + .PHONY: configure-target-libtermcap maybe-configure-target-libtermcap + maybe-configure-target-libtermcap: + @if gcc-bootstrap +@@ -44772,6 +45247,14 @@ check-gcc-go: + (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-go); + check-go: check-gcc-go check-target-libgo + ++.PHONY: check-gcc-d check-d ++check-gcc-d: ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-d); ++check-d: check-gcc-d check-target-libphobos ++ + + # The gcc part of install-no-fixedincludes, which relies on an intimate + # knowledge of how a number of gcc internal targets (inter)operate. Delegate. +@@ -46901,6 +47384,7 @@ configure-target-libquadmath: stage_last + configure-target-libgfortran: stage_last + configure-target-libobjc: stage_last + configure-target-libgo: stage_last ++configure-target-libphobos: stage_last + configure-target-libtermcap: stage_last + configure-target-winsup: stage_last + configure-target-libgloss: stage_last +@@ -46933,6 +47417,7 @@ configure-target-libquadmath: maybe-all- + configure-target-libgfortran: maybe-all-gcc + configure-target-libobjc: maybe-all-gcc + configure-target-libgo: maybe-all-gcc ++configure-target-libphobos: maybe-all-gcc + configure-target-libtermcap: maybe-all-gcc + configure-target-winsup: maybe-all-gcc + configure-target-libgloss: maybe-all-gcc +@@ -47698,6 +48183,8 @@ configure-target-libgo: maybe-all-target + all-target-libgo: maybe-all-target-libbacktrace + all-target-libgo: maybe-all-target-libffi + all-target-libgo: maybe-all-target-libatomic ++configure-target-libphobos: maybe-configure-target-zlib ++all-target-libphobos: maybe-all-target-zlib + configure-target-libjava: maybe-configure-target-zlib + configure-target-libjava: maybe-configure-target-boehm-gc + configure-target-libjava: maybe-configure-target-libffi +@@ -47803,6 +48290,7 @@ configure-target-libquadmath: maybe-all- + configure-target-libgfortran: maybe-all-target-libgcc + configure-target-libobjc: maybe-all-target-libgcc + configure-target-libgo: maybe-all-target-libgcc ++configure-target-libphobos: maybe-all-target-libgcc + configure-target-libtermcap: maybe-all-target-libgcc + configure-target-winsup: maybe-all-target-libgcc + configure-target-libgloss: maybe-all-target-libgcc +@@ -47841,6 +48329,8 @@ configure-target-libobjc: maybe-all-targ + + configure-target-libgo: maybe-all-target-newlib maybe-all-target-libgloss + ++configure-target-libphobos: maybe-all-target-newlib maybe-all-target-libgloss ++ + configure-target-libtermcap: maybe-all-target-newlib maybe-all-target-libgloss + + configure-target-winsup: maybe-all-target-newlib maybe-all-target-libgloss --- gcc-4.9-4.9.2.orig/debian/patches/gdc-multiarch.diff +++ gcc-4.9-4.9.2/debian/patches/gdc-multiarch.diff @@ -0,0 +1,17 @@ +# DP: Set the D target include directory to a multiarch location. + +--- a/src/gcc/d/Make-lang.in ++++ b/src/gcc/d/Make-lang.in +@@ -61,7 +61,11 @@ + $(D_DMD_H) + + +-gcc_d_target_include_dir=$(gcc_d_include_dir)/$(target_noncanonical) ++ifneq (,$(MULTIARCH_DIRNAME)) ++ gcc_d_target_include_dir = /usr/include/$(MULTIARCH_DIRNAME)/d/$(version) ++else ++ gcc_d_target_include_dir=$(gcc_d_include_dir)/$(target_noncanonical) ++endif + + # Name of phobos library + D_LIBPHOBOS = -DLIBPHOBOS=\"gphobos2\" --- gcc-4.9-4.9.2.orig/debian/patches/gdc-texinfo.diff +++ gcc-4.9-4.9.2/debian/patches/gdc-texinfo.diff @@ -0,0 +1,55 @@ +# DP: Add macros for the gdc texinfo documentation. + +Index: b/src/gcc/d/gdc.texi +=================================================================== +--- a/src/gcc/d/gdc.texi ++++ b/src/gcc/d/gdc.texi +@@ -43,6 +43,22 @@ man page gfdl(7). + @insertcopying + @end ifinfo + ++@macro versionsubtitle ++@ifclear DEVELOPMENT ++@subtitle For @sc{gcc} version @value{version-GCC} ++@end ifclear ++@ifset DEVELOPMENT ++@subtitle For @sc{gcc} version @value{version-GCC} (pre-release) ++@end ifset ++@ifset VERSION_PACKAGE ++@sp 1 ++@subtitle @value{VERSION_PACKAGE} ++@end ifset ++@c Even if there are no authors, the second titlepage line should be ++@c forced to the bottom of the page. ++@vskip 0pt plus 1filll ++@end macro ++ + @titlepage + @title The GNU D Compiler + @versionsubtitle +@@ -138,6 +154,25 @@ remainder. + + @c man end + ++@macro gcctabopt{body} ++@code{\body\} ++@end macro ++@macro gccoptlist{body} ++@smallexample ++\body\ ++@end smallexample ++@end macro ++@c Makeinfo handles the above macro OK, TeX needs manual line breaks; ++@c they get lost at some point in handling the macro. But if @macro is ++@c used here rather than @alias, it produces double line breaks. ++@iftex ++@alias gol = * ++@end iftex ++@ifnottex ++@macro gol ++@end macro ++@end ifnottex ++ + @c man begin OPTIONS gdc + + @table @gcctabopt --- gcc-4.9-4.9.2.orig/debian/patches/gdc-updates.diff +++ gcc-4.9-4.9.2/debian/patches/gdc-updates.diff @@ -0,0 +1,2 @@ +# DP: gdc updates up to 2014xxyy. + --- gcc-4.9-4.9.2.orig/debian/patches/gdc-versym-cpu.diff +++ gcc-4.9-4.9.2/debian/patches/gdc-versym-cpu.diff @@ -0,0 +1,382 @@ +# DP: Implements D CPU version conditions. + +This implements the following versions: +* D_HardFloat +* D_SoftFloat + +for all supported architectures. And these where appropriate: +* ARM +** ARM_Thumb +** ARM_HardFloat +** ARM_SoftFloat +** ARM_SoftFP +* AArch64 +* Alpha +** Alpha_SoftFloat +** Alpha_HardFloat +* X86 +* X86_64 +** D_X32 +* IA64 +* MIPS32 +* MIPS64 +** MIPS_O32 +** MIPS_O64 +** MIPS_N32 +** MIPS_N64 +** MIPS_EABI +** MIPS_HardFloat +** MIPS_SoftFloat +* HPPA +* HPPA64 +* PPC +* PPC64 +** PPC_HardFloat +** PPC_SoftFloat +* S390 +* S390X +* SH +* SH64 +* SPARC +* SPARC64 +* SPARC_V8Plus +** SPARC_HardFloat +** SPARC_SoftFloat + +Index: b/src/gcc/config/aarch64/aarch64.h +=================================================================== +--- a/src/gcc/config/aarch64/aarch64.h ++++ b/src/gcc/config/aarch64/aarch64.h +@@ -61,6 +61,14 @@ + builtin_define ("__ARM_FEATURE_CRYPTO"); \ + } while (0) + ++/* Target CPU builtins for D. */ ++#define TARGET_CPU_D_BUILTINS() \ ++ do \ ++ { \ ++ builtin_define ("AArch64"); \ ++ builtin_define ("D_HardFloat"); \ ++ } while (0) ++ + + + /* Target machine storage layout. */ +Index: b/src/gcc/config/alpha/alpha.h +=================================================================== +--- a/src/gcc/config/alpha/alpha.h ++++ b/src/gcc/config/alpha/alpha.h +@@ -72,6 +72,23 @@ along with GCC; see the file COPYING3. + SUBTARGET_LANGUAGE_CPP_BUILTINS(); \ + } while (0) + ++/* Target CPU builtins for D. */ ++#define TARGET_CPU_D_BUILTINS() \ ++ do \ ++ { \ ++ builtin_define ("Alpha"); \ ++ if (TARGET_SOFT_FP) \ ++ { \ ++ builtin_define ("D_SoftFloat"); \ ++ builtin_define ("Alpha_SoftFloat"); \ ++ } \ ++ else \ ++ { \ ++ builtin_define ("D_HardFloat"); \ ++ builtin_define ("Alpha_HardFloat"); \ ++ } \ ++} while (0) ++ + #ifndef SUBTARGET_LANGUAGE_CPP_BUILTINS + #define SUBTARGET_LANGUAGE_CPP_BUILTINS() \ + do \ +Index: b/src/gcc/config/arm/arm.h +=================================================================== +--- a/src/gcc/config/arm/arm.h ++++ b/src/gcc/config/arm/arm.h +@@ -169,6 +169,31 @@ extern char arm_arch_name[]; + builtin_define ("__ARM_ARCH_EXT_IDIV__"); \ + } while (0) + ++/* Target CPU builtins for D. */ ++#define TARGET_CPU_D_BUILTINS() \ ++ do \ ++ { \ ++ builtin_define ("ARM"); \ ++ \ ++ if (TARGET_THUMB || TARGET_THUMB2) \ ++ builtin_define ("ARM_Thumb"); \ ++ \ ++ if (TARGET_HARD_FLOAT_ABI) \ ++ builtin_define ("ARM_HardFloat"); \ ++ else \ ++ { \ ++ if(TARGET_SOFT_FLOAT) \ ++ builtin_define ("ARM_SoftFloat"); \ ++ else if(TARGET_HARD_FLOAT) \ ++ builtin_define ("ARM_SoftFP"); \ ++ } \ ++ \ ++ if(TARGET_SOFT_FLOAT) \ ++ builtin_define ("D_SoftFloat"); \ ++ else if(TARGET_HARD_FLOAT) \ ++ builtin_define ("D_HardFloat"); \ ++ } while (0) ++ + #include "config/arm/arm-opts.h" + + enum target_cpus +Index: b/src/gcc/config/i386/i386.h +=================================================================== +--- a/src/gcc/config/i386/i386.h ++++ b/src/gcc/config/i386/i386.h +@@ -616,6 +616,24 @@ extern const char *host_detect_local_cpu + /* Target CPU builtins. */ + #define TARGET_CPU_CPP_BUILTINS() ix86_target_macros () + ++/* Target CPU builtins for D. */ ++#define TARGET_CPU_D_BUILTINS() \ ++ do { \ ++ if (TARGET_64BIT) \ ++ { \ ++ builtin_define("X86_64"); \ ++ if (TARGET_X32) \ ++ builtin_define("D_X32"); \ ++ } \ ++ else \ ++ builtin_define("X86"); \ ++ \ ++ if (TARGET_80387) \ ++ builtin_define("D_HardFloat"); \ ++ else \ ++ builtin_define("D_SoftFloat"); \ ++ } while (0) ++ + /* Target Pragmas. */ + #define REGISTER_TARGET_PRAGMAS() ix86_register_pragmas () + +Index: b/src/gcc/config/ia64/ia64.h +=================================================================== +--- a/src/gcc/config/ia64/ia64.h ++++ b/src/gcc/config/ia64/ia64.h +@@ -40,6 +40,13 @@ do { \ + builtin_define("__BIG_ENDIAN__"); \ + } while (0) + ++/* Target CPU builtins for D. */ ++#define TARGET_CPU_D_BUILTINS() \ ++do { \ ++ builtin_define ("IA64"); \ ++ builtin_define ("D_HardFloat"); \ ++} while (0) ++ + #ifndef SUBTARGET_EXTRA_SPECS + #define SUBTARGET_EXTRA_SPECS + #endif +Index: b/src/gcc/config/mips/mips.h +=================================================================== +--- a/src/gcc/config/mips/mips.h ++++ b/src/gcc/config/mips/mips.h +@@ -574,6 +574,54 @@ struct mips_cpu_info { + } \ + while (0) + ++/* Target CPU builtins for D. */ ++#define TARGET_CPU_D_BUILTINS() \ ++ do \ ++ { \ ++ if (TARGET_64BIT) \ ++ builtin_define("MIPS64"); \ ++ else \ ++ builtin_define("MIPS32"); \ ++ \ ++ switch (mips_abi) \ ++ { \ ++ case ABI_32: \ ++ builtin_define("MIPS_O32"); \ ++ break; \ ++ \ ++ case ABI_O64: \ ++ builtin_define("MIPS_O64"); \ ++ break; \ ++ \ ++ case ABI_N32: \ ++ builtin_define("MIPS_N32"); \ ++ break; \ ++ \ ++ case ABI_64: \ ++ builtin_define("MIPS_N64"); \ ++ break; \ ++ \ ++ case ABI_EABI: \ ++ builtin_define("MIPS_EABI"); \ ++ break; \ ++ \ ++ default: \ ++ gcc_unreachable(); \ ++ } \ ++ \ ++ if (TARGET_HARD_FLOAT_ABI) \ ++ { \ ++ builtin_define("MIPS_HardFloat"); \ ++ builtin_define("D_HardFloat"); \ ++ } \ ++ else if (TARGET_SOFT_FLOAT_ABI) \ ++ { \ ++ builtin_define("MIPS_SoftFloat"); \ ++ builtin_define("D_SoftFloat"); \ ++ } \ ++ } \ ++ while (0) ++ + /* Default target_flags if no switches are specified */ + + #ifndef TARGET_DEFAULT +Index: b/src/gcc/config/pa/pa.h +=================================================================== +--- a/src/gcc/config/pa/pa.h ++++ b/src/gcc/config/pa/pa.h +@@ -185,6 +185,20 @@ do { \ + builtin_define("_PA_RISC1_0"); \ + } while (0) + ++/* Target CPU builtins for D. */ ++#define TARGET_CPU_D_BUILTINS() \ ++do { \ ++ if(TARGET_64BIT) \ ++ builtin_define("HPPA64"); \ ++ else \ ++ builtin_define("HPPA"); \ ++ \ ++ if(TARGET_SOFT_FLOAT) \ ++ builtin_define ("D_SoftFloat"); \ ++ else \ ++ builtin_define ("D_HardFloat"); \ ++} while (0) ++ + /* An old set of OS defines for various BSD-like systems. */ + #define TARGET_OS_CPP_BUILTINS() \ + do \ +Index: b/src/gcc/config/rs6000/rs6000.h +=================================================================== +--- a/src/gcc/config/rs6000/rs6000.h ++++ b/src/gcc/config/rs6000/rs6000.h +@@ -703,6 +703,28 @@ extern unsigned char rs6000_recip_bits[] + #define TARGET_CPU_CPP_BUILTINS() \ + rs6000_cpu_cpp_builtins (pfile) + ++/* Target CPU builtins for D. */ ++#define TARGET_CPU_D_BUILTINS() \ ++ do \ ++ { \ ++ if (TARGET_64BIT) \ ++ builtin_define ("PPC64"); \ ++ else \ ++ builtin_define ("PPC"); \ ++ \ ++ if (TARGET_HARD_FLOAT) \ ++ { \ ++ builtin_define ("PPC_HardFloat"); \ ++ builtin_define ("D_HardFloat"); \ ++ } \ ++ else if (TARGET_SOFT_FLOAT) \ ++ { \ ++ builtin_define ("PPC_SoftFloat"); \ ++ builtin_define ("D_SoftFloat"); \ ++ } \ ++ } \ ++ while (0) ++ + /* This is used by rs6000_cpu_cpp_builtins to indicate the byte order + we're compiling for. Some configurations may need to override it. */ + #define RS6000_CPU_CPP_ENDIAN_BUILTINS() \ +Index: b/src/gcc/config/s390/s390.h +=================================================================== +--- a/src/gcc/config/s390/s390.h ++++ b/src/gcc/config/s390/s390.h +@@ -114,6 +114,22 @@ enum processor_flags + } \ + while (0) + ++/* Target CPU builtins for D. */ ++#define TARGET_CPU_D_BUILTINS() \ ++ do \ ++ { \ ++ if (TARGET_64BIT) \ ++ builtin_define ("S390X"); \ ++ else \ ++ builtin_define ("S390"); \ ++ \ ++ if(TARGET_SOFT_FLOAT) \ ++ builtin_define ("D_SoftFloat"); \ ++ else if(TARGET_HARD_FLOAT) \ ++ builtin_define ("D_HardFloat"); \ ++ } \ ++ while (0) ++ + #ifdef DEFAULT_TARGET_64BIT + #define TARGET_DEFAULT (MASK_64BIT | MASK_ZARCH | MASK_HARD_DFP | MASK_OPT_HTM) + #else +Index: b/src/gcc/config/sh/sh.h +=================================================================== +--- a/src/gcc/config/sh/sh.h ++++ b/src/gcc/config/sh/sh.h +@@ -31,6 +31,22 @@ extern int code_for_indirect_jump_scratc + + #define TARGET_CPU_CPP_BUILTINS() sh_cpu_cpp_builtins (pfile) + ++/* Target CPU builtins for D. */ ++#define TARGET_CPU_D_BUILTINS() \ ++ do \ ++ { \ ++ if (TARGET_SHMEDIA64) \ ++ builtin_define ("SH64"); \ ++ else \ ++ builtin_define ("SH"); \ ++ \ ++ if (TARGET_FPU_ANY) \ ++ builtin_define ("D_HardFloat"); \ ++ else \ ++ builtin_define ("D_SoftFloat"); \ ++ } \ ++ while (0) ++ + /* Value should be nonzero if functions must have frame pointers. + Zero means the frame pointer need not be set up (and parms may be accessed + via the stack pointer) in functions that seem suitable. */ +Index: b/src/gcc/config/sparc/sparc.h +=================================================================== +--- a/src/gcc/config/sparc/sparc.h ++++ b/src/gcc/config/sparc/sparc.h +@@ -27,6 +27,31 @@ along with GCC; see the file COPYING3. + + #define TARGET_CPU_CPP_BUILTINS() sparc_target_macros () + ++/* Target CPU builtins for D. */ ++#define TARGET_CPU_D_BUILTINS() \ ++do \ ++ { \ ++ if (TARGET_64BIT) \ ++ builtin_define ("SPARC64"); \ ++ else \ ++ builtin_define ("SPARC"); \ ++ \ ++ if(TARGET_V8PLUS) \ ++ builtin_define ("SPARC_V8Plus"); \ ++ \ ++ if(TARGET_FPU) \ ++ { \ ++ builtin_define ("D_HardFloat"); \ ++ builtin_define ("SPARC_HardFloat"); \ ++ } \ ++ else \ ++ { \ ++ builtin_define ("D_SoftFloat"); \ ++ builtin_define ("SPARC_SoftFloat"); \ ++ } \ ++ } \ ++ while (0) ++ + /* Specify this in a cover file to provide bi-architecture (32/64) support. */ + /* #define SPARC_BI_ARCH */ + --- gcc-4.9-4.9.2.orig/debian/patches/gdc-versym-os.diff +++ gcc-4.9-4.9.2/debian/patches/gdc-versym-os.diff @@ -0,0 +1,422 @@ +# DP: Implements D OS version conditions. + +This implements the following official versions: +* Windows +** Win32 +** Win64 +** Cygwin +** MinGW +* linux +* OSX +* FreeBSD +* OpenBSD +* NetBSD +* Solaris +* Posix +* AIX +* SysV4 +* Hurd +* Android + +These gdc specific versions are also implemented: +* GNU_MinGW64 (for mingw-w64) +* GNU_OpenSolaris (for opensolaris) +* GNU_GLibc (implemented for linux & bsd & opensolaris) +* GNU_UCLibc (implemented for linux) +* GNU_Bionic (implemented for linux) + +These official OS versions are not implemented: +* DragonFlyBSD +* BSD (other BSDs) +* Haiku +* SkyOS +* SysV3 + +Index: b/src/gcc/config/alpha/linux.h +=================================================================== +--- a/src/gcc/config/alpha/linux.h ++++ b/src/gcc/config/alpha/linux.h +@@ -33,6 +33,16 @@ along with GCC; see the file COPYING3. + builtin_define ("_GNU_SOURCE"); \ + } while (0) + ++#undef TARGET_OS_D_BUILTINS ++#define TARGET_OS_D_BUILTINS() \ ++ do { \ ++ if (OPTION_GLIBC) \ ++ builtin_define ("GNU_GLibc"); \ ++ \ ++ builtin_define ("linux"); \ ++ builtin_define ("Posix"); \ ++ } while (0) ++ + #undef LIB_SPEC + #define LIB_SPEC \ + "%{pthread:-lpthread} \ +Index: b/src/gcc/config/arm/linux-eabi.h +=================================================================== +--- a/src/gcc/config/arm/linux-eabi.h ++++ b/src/gcc/config/arm/linux-eabi.h +@@ -30,6 +30,15 @@ + } \ + while (false) + ++#undef TARGET_OS_D_BUILTINS ++#define TARGET_OS_D_BUILTINS() \ ++ do \ ++ { \ ++ TARGET_GENERIC_LINUX_OS_D_BUILTINS(); \ ++ ANDROID_TARGET_OS_D_BUILTINS(); \ ++ } \ ++ while (false) ++ + /* We default to a soft-float ABI so that binaries can run on all + target hardware. If you override this to use the hard-float ABI then + change the setting of GLIBC_DYNAMIC_LINKER_DEFAULT as well. */ +Index: b/src/gcc/config/darwin.h +=================================================================== +--- a/src/gcc/config/darwin.h ++++ b/src/gcc/config/darwin.h +@@ -918,4 +918,10 @@ extern void darwin_driver_init (unsigned + providing an osx-version-min of this unless overridden by the User. */ + #define DEF_MIN_OSX_VERSION "10.4" + ++#define TARGET_OS_D_BUILTINS() \ ++ do { \ ++ builtin_define ("OSX"); \ ++ builtin_define ("Posix"); \ ++ } while (0) ++ + #endif /* CONFIG_DARWIN_H */ +Index: b/src/gcc/config/freebsd.h +=================================================================== +--- a/src/gcc/config/freebsd.h ++++ b/src/gcc/config/freebsd.h +@@ -32,6 +32,13 @@ along with GCC; see the file COPYING3. + #undef TARGET_OS_CPP_BUILTINS + #define TARGET_OS_CPP_BUILTINS() FBSD_TARGET_OS_CPP_BUILTINS() + ++#undef TARGET_OS_D_BUILTINS ++#define TARGET_OS_D_BUILTINS() \ ++ do { \ ++ builtin_define ("FreeBSD"); \ ++ builtin_define ("Posix"); \ ++ } while (0) ++ + #undef CPP_SPEC + #define CPP_SPEC FBSD_CPP_SPEC + +Index: b/src/gcc/config/gnu.h +=================================================================== +--- a/src/gcc/config/gnu.h ++++ b/src/gcc/config/gnu.h +@@ -39,3 +39,11 @@ along with GCC. If not, see . symlink, and having a +# DP: /usr directory like the other ports. So this patch should NOT go +# DP: upstream. + +--- + config.gcc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/src/gcc/config.gcc (révision 182461) ++++ b/src/gcc/config.gcc (copie de travail) +@@ -583,7 +583,7 @@ + *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-kopensolaris*-gnu) + :;; + *-*-gnu*) +- native_system_header_dir=/include ++ # native_system_header_dir=/include + ;; + esac + # glibc / uclibc / bionic switch. --- gcc-4.9-4.9.2.orig/debian/patches/isl-0.13-compat.diff +++ gcc-4.9-4.9.2/debian/patches/isl-0.13-compat.diff @@ -0,0 +1,71 @@ +diff -Naur gcc-4.9-20140604-old/gcc/graphite-clast-to-gimple.c gcc-4.9-20140604/gcc/graphite-clast-to-gimple.c +--- gcc-4.9-20140604-old/src/gcc/graphite-clast-to-gimple.c 2014-03-03 21:39:22.000000000 +1000 ++++ gcc-4.9-20140604/src/gcc/graphite-clast-to-gimple.c 2014-06-25 15:07:57.958697105 +1000 +@@ -28,6 +28,8 @@ + #include + #include + #include ++#include ++#include + #include + #include + #endif +diff -Naur gcc-4.9-20140604-old/gcc/graphite-interchange.c gcc-4.9-20140604/gcc/graphite-interchange.c +--- gcc-4.9-20140604-old/src/gcc/graphite-interchange.c 2014-01-03 08:23:26.000000000 +1000 ++++ gcc-4.9-20140604/src/gcc/graphite-interchange.c 2014-06-25 15:10:06.882899243 +1000 +@@ -29,6 +29,9 @@ + #include + #include + #include ++#include ++#include ++#include + #include + #include + #endif +diff -Naur gcc-4.9-20140604-old/gcc/graphite-optimize-isl.c gcc-4.9-20140604/gcc/graphite-optimize-isl.c +--- gcc-4.9-20140604-old/src/gcc/graphite-optimize-isl.c 2014-01-03 08:23:26.000000000 +1000 ++++ gcc-4.9-20140604/src/gcc/graphite-optimize-isl.c 2014-06-25 15:16:57.038386166 +1000 +@@ -28,6 +28,8 @@ + #include + #include + #include ++#include ++#include + #endif + + #include "system.h" +@@ -373,7 +375,7 @@ + { + for (i = ScheduleDimensions - 1 ; i >= 0 ; i--) + { +- if (isl_band_member_is_zero_distance (Band, i)) ++ if (isl_band_member_is_coincident (Band, i)) + { + isl_map *TileMap; + isl_union_map *TileUMap; +diff -Naur gcc-4.9-20140604-old/gcc/graphite-poly.c gcc-4.9-20140604/gcc/graphite-poly.c +--- gcc-4.9-20140604-old/src/gcc/graphite-poly.c 2014-01-03 08:23:26.000000000 +1000 ++++ gcc-4.9-20140604/src/gcc/graphite-poly.c 2014-06-25 15:18:01.207157796 +1000 +@@ -28,6 +28,8 @@ + #include + #include + #include ++#include ++#include + #include + #include + #endif +diff -Naur gcc-4.9-20140604-old/gcc/graphite-sese-to-poly.c gcc-4.9-20140604/gcc/graphite-sese-to-poly.c +--- gcc-4.9-20140604-old/src/gcc/graphite-sese-to-poly.c 2014-04-08 20:59:40.000000000 +1000 ++++ gcc-4.9-20140604/src/gcc/graphite-sese-to-poly.c 2014-06-25 15:19:46.575140398 +1000 +@@ -26,6 +26,9 @@ + #include + #include + #include ++#include ++#include ++#include + #include + #include + #include --- gcc-4.9-4.9.2.orig/debian/patches/kfreebsd-boehm-gc.diff +++ gcc-4.9-4.9.2/debian/patches/kfreebsd-boehm-gc.diff @@ -0,0 +1,13 @@ +# DP: boehm-gc: use mmap instead of brk also on kfreebsd-*. + +--- a/src/boehm-gc/configure.host ++++ b/src/boehm-gc/configure.host +@@ -41,7 +41,7 @@ + fi + + case "${host}" in +- *-linux*) ++ *-linux*|*-kfreebsd*-gnu*) + gc_use_mmap=yes + ;; + esac --- gcc-4.9-4.9.2.orig/debian/patches/kfreebsd-unwind.diff +++ gcc-4.9-4.9.2/debian/patches/kfreebsd-unwind.diff @@ -0,0 +1,229 @@ +# DP: DWARF2 EH unwinding support for AMD x86-64 and x86 KFreeBSD. + +Index: b/src/libgcc/config.host +=================================================================== +--- a/src/libgcc/config.host ++++ b/src/libgcc/config.host +@@ -567,7 +567,12 @@ i[34567]86-*-linux*) + tmake_file="${tmake_file} i386/t-crtpc i386/t-crtfm i386/t-crtstuff t-dfprules" + md_unwind_header=i386/linux-unwind.h + ;; +-i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu) ++i[34567]86-*-kfreebsd*-gnu) ++ extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o" ++ tmake_file="${tmake_file} i386/t-crtpc i386/t-crtfm i386/t-crtstuff t-dfprules" ++ md_unwind_header=i386/freebsd-unwind.h ++ ;; ++i[34567]86-*-knetbsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu) + extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o" + tmake_file="${tmake_file} i386/t-crtpc i386/t-crtfm i386/t-crtstuff t-dfprules" + ;; +@@ -576,7 +581,12 @@ x86_64-*-linux*) + tmake_file="${tmake_file} i386/t-crtpc i386/t-crtfm i386/t-crtstuff t-dfprules" + md_unwind_header=i386/linux-unwind.h + ;; +-x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu) ++x86_64-*-kfreebsd*-gnu) ++ extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o" ++ tmake_file="${tmake_file} i386/t-crtpc i386/t-crtfm i386/t-crtstuff t-dfprules" ++ md_unwind_header=i386/freebsd-unwind.h ++ ;; ++x86_64-*-knetbsd*-gnu) + extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o" + tmake_file="${tmake_file} i386/t-crtpc i386/t-crtfm i386/t-crtstuff t-dfprules" + ;; +Index: b/src/libgcc/config/i386/freebsd-unwind.h +=================================================================== +--- /dev/null ++++ b/src/libgcc/config/i386/freebsd-unwind.h +@@ -0,0 +1,190 @@ ++/* DWARF2 EH unwinding support for AMD x86-64 and x86. ++ Copyright (C) 2004-2013 Free Software Foundation, Inc. ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 3, or (at your option) ++any later version. ++ ++GCC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++Under Section 7 of GPL version 3, you are granted additional ++permissions described in the GCC Runtime Library Exception, version ++3.1, as published by the Free Software Foundation. ++ ++You should have received a copy of the GNU General Public License and ++a copy of the GCC Runtime Library Exception along with this program; ++see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++. */ ++ ++/* Do code reading to identify a signal frame, and set the frame ++ state data appropriately. See unwind-dw2.c for the structs. ++ Don't use this at all if inhibit_libc is used. */ ++ ++#ifndef inhibit_libc ++ ++#include ++#include ++#include ++ ++#ifdef __x86_64__ ++ ++#define MD_FALLBACK_FRAME_STATE_FOR x86_64_fb_fallback_frame_state ++ ++static _Unwind_Reason_Code ++x86_64_fb_fallback_frame_state (struct _Unwind_Context *context, ++ _Unwind_FrameState *fs) ++{ ++ unsigned int *pc = context->ra; ++ struct sigframe *sf; ++ long new_cfa; ++ ++/* sys/amd64/amd64/sigtramp.S: ++ ++ 48 8d 7c 24 10 lea 0x10(%rsp),%rdi ++ 6a 00 pushq $0x0 ++ 48 c7 c0 a1 01 00 00 mov $0x1a1,%rax ++ 0f 05 syscall ++*/ ++ ++ if ( (pc[0] == 0x247c8d48U) ++ && (pc[1] == 0x48006a10U) ++ && (pc[2] == 0x01a1c0c7U) ++ && (pc[3] == 0x050f0000U)) ++ { ++ sf = (struct sigframe *) context->cfa; ++ } ++ else ++ return _URC_END_OF_STACK; ++ ++ new_cfa = sf->sf_uc.uc_mcontext.mc_rsp; ++ fs->regs.cfa_how = CFA_REG_OFFSET; ++ /* Register 7 is rsp */ ++ fs->regs.cfa_reg = 7; ++ fs->regs.cfa_offset = new_cfa - (long) context->cfa; ++ ++ /* The SVR4 register numbering macros aren't usable in libgcc. */ ++ fs->regs.reg[0].how = REG_SAVED_OFFSET; ++ fs->regs.reg[0].loc.offset = (long)&sf->sf_uc.uc_mcontext.mc_rax - new_cfa; ++ fs->regs.reg[1].how = REG_SAVED_OFFSET; ++ fs->regs.reg[1].loc.offset = (long)&sf->sf_uc.uc_mcontext.mc_rdx - new_cfa; ++ fs->regs.reg[2].how = REG_SAVED_OFFSET; ++ fs->regs.reg[2].loc.offset = (long)&sf->sf_uc.uc_mcontext.mc_rcx - new_cfa; ++ fs->regs.reg[3].how = REG_SAVED_OFFSET; ++ fs->regs.reg[3].loc.offset = (long)&sf->sf_uc.uc_mcontext.mc_rbx - new_cfa; ++ fs->regs.reg[4].how = REG_SAVED_OFFSET; ++ fs->regs.reg[4].loc.offset = (long)&sf->sf_uc.uc_mcontext.mc_rsi - new_cfa; ++ fs->regs.reg[5].how = REG_SAVED_OFFSET; ++ fs->regs.reg[5].loc.offset = (long)&sf->sf_uc.uc_mcontext.mc_rdi - new_cfa; ++ fs->regs.reg[6].how = REG_SAVED_OFFSET; ++ fs->regs.reg[6].loc.offset = (long)&sf->sf_uc.uc_mcontext.mc_rbp - new_cfa; ++ fs->regs.reg[8].how = REG_SAVED_OFFSET; ++ fs->regs.reg[8].loc.offset = (long)&sf->sf_uc.uc_mcontext.mc_r8 - new_cfa; ++ fs->regs.reg[9].how = REG_SAVED_OFFSET; ++ fs->regs.reg[9].loc.offset = (long)&sf->sf_uc.uc_mcontext.mc_r9 - new_cfa; ++ fs->regs.reg[10].how = REG_SAVED_OFFSET; ++ fs->regs.reg[10].loc.offset = (long)&sf->sf_uc.uc_mcontext.mc_r10 - new_cfa; ++ fs->regs.reg[11].how = REG_SAVED_OFFSET; ++ fs->regs.reg[11].loc.offset = (long)&sf->sf_uc.uc_mcontext.mc_r11 - new_cfa; ++ fs->regs.reg[12].how = REG_SAVED_OFFSET; ++ fs->regs.reg[12].loc.offset = (long)&sf->sf_uc.uc_mcontext.mc_r12 - new_cfa; ++ fs->regs.reg[13].how = REG_SAVED_OFFSET; ++ fs->regs.reg[13].loc.offset = (long)&sf->sf_uc.uc_mcontext.mc_r13 - new_cfa; ++ fs->regs.reg[14].how = REG_SAVED_OFFSET; ++ fs->regs.reg[14].loc.offset = (long)&sf->sf_uc.uc_mcontext.mc_r14 - new_cfa; ++ fs->regs.reg[15].how = REG_SAVED_OFFSET; ++ fs->regs.reg[15].loc.offset = (long)&sf->sf_uc.uc_mcontext.mc_r15 - new_cfa; ++ fs->regs.reg[16].how = REG_SAVED_OFFSET; ++ fs->regs.reg[16].loc.offset = (long)&sf->sf_uc.uc_mcontext.mc_rip - new_cfa; ++ fs->retaddr_column = 16; ++ fs->signal_frame = 1; ++ return _URC_NO_REASON; ++} ++ ++#else /* ifdef __x86_64__ */ ++ ++#define MD_FALLBACK_FRAME_STATE_FOR x86_fb_fallback_frame_state ++ ++static _Unwind_Reason_Code ++x86_fb_fallback_frame_state (struct _Unwind_Context *context, ++ _Unwind_FrameState *fs) ++{ ++ unsigned int *pc = context->ra; ++ struct sigframe *sf; ++ long new_cfa; ++ ++/* sys/amd64/ia32/ia32_sigtramp.S ++ ++ 8d 44 24 20 lea 0x20(%esp),%eax ++ 50 push %eax ++ b8 a1 01 00 00 mov $0x1a1,%eax ++ 50 push %eax ++ cd 80 int $0x80 ++ eb fe jmp - ++*/ ++ ++/* sys/i386/i386/locore.s: sigcode() ++ ++ 8d 44 24 20 lea 0x20(%esp),%eax ++ 50 push %eax ++ f7 40 54 00 00 02 00 testl $0x20000,0x54(%eax) ++ 75 03 jne + ++ 8e 68 14 mov 0x14(%eax),%gs ++ b8 a1 01 00 00 mov $0x1a1,%eax ++ 50 push %eax ++ cd 80 int $0x80 ++ eb fe jmp - ++*/ ++ ++ if ((pc[0] == 0x2024448dU) ++ && (( ++ (pc[1] == 0x01a1b850U) ++ && (pc[2] == 0xcd500000U) ++ && ((pc[3] & 0xFF) == 0x80) ++ ) ++ ++ || ( ++ (pc[4] == 0x01a1b814U) ++ && (pc[5] == 0xcd500000U) ++ && ((pc[6] & 0xFF) == 0x80) ++ ))) ++ { ++ sf = (struct sigframe *) context->cfa; ++ } ++ else ++ return _URC_END_OF_STACK; ++ ++ new_cfa = sf->sf_uc.uc_mcontext.mc_esp; ++ fs->regs.cfa_how = CFA_REG_OFFSET; ++ fs->regs.cfa_reg = 4; ++ fs->regs.cfa_offset = new_cfa - (long) context->cfa; ++ ++ /* The SVR4 register numbering macros aren't usable in libgcc. */ ++ fs->regs.reg[0].how = REG_SAVED_OFFSET; ++ fs->regs.reg[0].loc.offset = (long)&sf->sf_uc.uc_mcontext.mc_eax - new_cfa; ++ fs->regs.reg[3].how = REG_SAVED_OFFSET; ++ fs->regs.reg[3].loc.offset = (long)&sf->sf_uc.uc_mcontext.mc_ebx - new_cfa; ++ fs->regs.reg[1].how = REG_SAVED_OFFSET; ++ fs->regs.reg[1].loc.offset = (long)&sf->sf_uc.uc_mcontext.mc_ecx - new_cfa; ++ fs->regs.reg[2].how = REG_SAVED_OFFSET; ++ fs->regs.reg[2].loc.offset = (long)&sf->sf_uc.uc_mcontext.mc_edx - new_cfa; ++ fs->regs.reg[6].how = REG_SAVED_OFFSET; ++ fs->regs.reg[6].loc.offset = (long)&sf->sf_uc.uc_mcontext.mc_esi - new_cfa; ++ fs->regs.reg[7].how = REG_SAVED_OFFSET; ++ fs->regs.reg[7].loc.offset = (long)&sf->sf_uc.uc_mcontext.mc_edi - new_cfa; ++ fs->regs.reg[5].how = REG_SAVED_OFFSET; ++ fs->regs.reg[5].loc.offset = (long)&sf->sf_uc.uc_mcontext.mc_ebp - new_cfa; ++ fs->regs.reg[8].how = REG_SAVED_OFFSET; ++ fs->regs.reg[8].loc.offset = (long)&sf->sf_uc.uc_mcontext.mc_eip - new_cfa; ++ fs->retaddr_column = 8; ++ fs->signal_frame = 1; ++ return _URC_NO_REASON; ++} ++ ++#endif /* ifdef __x86_64__ */ ++#endif /* ifdef inhibit_libc */ --- gcc-4.9-4.9.2.orig/debian/patches/libcilkrts-targets.diff +++ gcc-4.9-4.9.2/debian/patches/libcilkrts-targets.diff @@ -0,0 +1,15 @@ +# DP: Disable libcilkrts on KFreeBSD and the Hurd. See #734973. + +Index: b/src/libcilkrts/configure.tgt +=================================================================== +--- a/src/libcilkrts/configure.tgt ++++ b/src/libcilkrts/configure.tgt +@@ -46,7 +46,7 @@ + if test x$enable_libcilkrts = x ; then + # Enable libcilkrts by default on hosted POSIX systems. + case "${target}" in +- *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | *-*-kopensolaris*-gnu) ++ *-*-linux* | *-*-kopensolaris*-gnu) + ;; + *-*-netbsd* | *-*-freebsd* | *-*-openbsd* | *-*-dragonfly*) + ;; --- gcc-4.9-4.9.2.orig/debian/patches/libffi-m68k.diff +++ gcc-4.9-4.9.2/debian/patches/libffi-m68k.diff @@ -0,0 +1,141 @@ +# DP: Apply #660525 fix to in-tree libffi + +--- a/src/libffi/src/m68k/sysv.S ++++ b/src/libffi/src/m68k/sysv.S +@@ -2,9 +2,10 @@ + + sysv.S - Copyright (c) 2012 Alan Hourihane + Copyright (c) 1998, 2012 Andreas Schwab +- Copyright (c) 2008 Red Hat, Inc. +- +- m68k Foreign Function Interface ++ Copyright (c) 2008 Red Hat, Inc. ++ Copyright (c) 2012 Thorsten Glaser ++ ++ m68k Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the +@@ -168,8 +169,28 @@ retstruct1: + + retstruct2: + btst #7,%d2 +- jbeq noretval ++ jbeq retsint8 + move.w %d0,(%a1) ++ jbra epilogue ++ ++retsint8: ++ btst #8,%d2 ++ jbeq retsint16 ++ | NOTE: On the mc68000, extb is not supported. 8->16, then 16->32. ++#if !defined(__mc68020__) && !defined(__mc68030__) && !defined(__mc68040__) && !defined(__mc68060__) && !defined(__mcoldfire__) ++ ext.w %d0 ++ ext.l %d0 ++#else ++ extb.l %d0 ++#endif ++ move.l %d0,(%a1) ++ jbra epilogue ++ ++retsint16: ++ btst #9,%d2 ++ jbeq noretval ++ ext.l %d0 ++ move.l %d0,(%a1) + + noretval: + epilogue: +@@ -201,8 +222,10 @@ CALLFUNC(ffi_closure_SYSV): + lsr.l #1,%d0 + jne 1f + jcc .Lcls_epilogue ++ | CIF_FLAGS_INT + move.l -12(%fp),%d0 + .Lcls_epilogue: ++ | no CIF_FLAGS_* + unlk %fp + rts + 1: +@@ -210,6 +233,7 @@ CALLFUNC(ffi_closure_SYSV): + lsr.l #2,%d0 + jne 1f + jcs .Lcls_ret_float ++ | CIF_FLAGS_DINT + move.l (%a0)+,%d0 + move.l (%a0),%d1 + jra .Lcls_epilogue +@@ -224,6 +248,7 @@ CALLFUNC(ffi_closure_SYSV): + lsr.l #2,%d0 + jne 1f + jcs .Lcls_ret_ldouble ++ | CIF_FLAGS_DOUBLE + #if defined(__MC68881__) || defined(__HAVE_68881__) + fmove.d (%a0),%fp0 + #else +@@ -242,17 +267,37 @@ CALLFUNC(ffi_closure_SYSV): + jra .Lcls_epilogue + 1: + lsr.l #2,%d0 +- jne .Lcls_ret_struct2 ++ jne 1f + jcs .Lcls_ret_struct1 ++ | CIF_FLAGS_POINTER + move.l (%a0),%a0 + move.l %a0,%d0 + jra .Lcls_epilogue + .Lcls_ret_struct1: + move.b (%a0),%d0 + jra .Lcls_epilogue +-.Lcls_ret_struct2: ++1: ++ lsr.l #2,%d0 ++ jne 1f ++ jcs .Lcls_ret_sint8 ++ | CIF_FLAGS_STRUCT2 + move.w (%a0),%d0 + jra .Lcls_epilogue ++.Lcls_ret_sint8: ++ move.l (%a0),%d0 ++ | NOTE: On the mc68000, extb is not supported. 8->16, then 16->32. ++#if !defined(__mc68020__) && !defined(__mc68030__) && !defined(__mc68040__) && !defined(__mc68060__) && !defined(__mcoldfire__) ++ ext.w %d0 ++ ext.l %d0 ++#else ++ extb.l %d0 ++#endif ++ jra .Lcls_epilogue ++1: ++ | CIF_FLAGS_SINT16 ++ move.l (%a0),%d0 ++ ext.l %d0 ++ jra .Lcls_epilogue + CFI_ENDPROC() + + .size CALLFUNC(ffi_closure_SYSV),.-CALLFUNC(ffi_closure_SYSV) +--- a/src/libffi/src/m68k/ffi.c ++++ b/src/libffi/src/m68k/ffi.c +@@ -123,6 +123,8 @@ ffi_prep_args (void *stack, extended_cif + #define CIF_FLAGS_POINTER 32 + #define CIF_FLAGS_STRUCT1 64 + #define CIF_FLAGS_STRUCT2 128 ++#define CIF_FLAGS_SINT8 256 ++#define CIF_FLAGS_SINT16 512 + + /* Perform machine dependent cif processing */ + ffi_status +@@ -200,6 +202,14 @@ ffi_prep_cif_machdep (ffi_cif *cif) + cif->flags = CIF_FLAGS_DINT; + break; + ++ case FFI_TYPE_SINT16: ++ cif->flags = CIF_FLAGS_SINT16; ++ break; ++ ++ case FFI_TYPE_SINT8: ++ cif->flags = CIF_FLAGS_SINT8; ++ break; ++ + default: + cif->flags = CIF_FLAGS_INT; + break; --- gcc-4.9-4.9.2.orig/debian/patches/libffi-ro-eh_frame_sect.diff +++ gcc-4.9-4.9.2/debian/patches/libffi-ro-eh_frame_sect.diff @@ -0,0 +1,15 @@ +# DP: PR libffi/47248, force a read only eh frame section. + +Index: b/src/libffi/configure.ac +=================================================================== +--- a/src/libffi/configure.ac ++++ b/src/libffi/configure.ac +@@ -420,6 +420,8 @@ + libffi_cv_ro_eh_frame=yes + fi + fi ++ # FIXME: see PR libffi/47248 ++ libffi_cv_ro_eh_frame=yes + rm -f conftest.* + ]) + if test "x$libffi_cv_ro_eh_frame" = xyes; then --- gcc-4.9-4.9.2.orig/debian/patches/libgo-revert-timeout-exp.diff +++ gcc-4.9-4.9.2/debian/patches/libgo-revert-timeout-exp.diff @@ -0,0 +1,10 @@ +--- a/src/libgo/testsuite/lib/libgo.exp ++++ b/src/libgo/testsuite/lib/libgo.exp +@@ -43,7 +43,6 @@ + load_gcc_lib target-libpath.exp + load_gcc_lib wrapper.exp + load_gcc_lib gcc-defs.exp +-load_gcc_lib timeout.exp + load_gcc_lib go.exp + + proc libgo_init { args } { --- gcc-4.9-4.9.2.orig/debian/patches/libgo-setcontext-config.diff +++ gcc-4.9-4.9.2/debian/patches/libgo-setcontext-config.diff @@ -0,0 +1,21 @@ +# DP: libgo: Overwrite the setcontext_clobbers_tls check on mips* + +Index: b/src/libgo/configure.ac +=================================================================== +--- a/src/libgo/configure.ac ++++ b/src/libgo/configure.ac +@@ -763,6 +763,14 @@ main () + CFLAGS="$CFLAGS_hold" + LIBS="$LIBS_hold" + ]) ++dnl overwrite for the mips* 64bit multilibs, fails on some buildds ++if test "$libgo_cv_lib_setcontext_clobbers_tls" = "yes"; then ++ case "$target" in ++ mips*-linux-*) ++ AC_MSG_WARN([FIXME: overwrite setcontext_clobbers_tls for $target:$ptr_type_size]) ++ libgo_cv_lib_setcontext_clobbers_tls=no ;; ++ esac ++fi + if test "$libgo_cv_lib_setcontext_clobbers_tls" = "yes"; then + AC_DEFINE(SETCONTEXT_CLOBBERS_TLS, 1, + [Define if setcontext clobbers TLS variables]) --- gcc-4.9-4.9.2.orig/debian/patches/libgo-testsuite.diff +++ gcc-4.9-4.9.2/debian/patches/libgo-testsuite.diff @@ -0,0 +1,52 @@ +# DP: Only run the libgo testsuite for flags configured in RUNTESTFLAGS + +Index: b/src/libgo/Makefile.am +=================================================================== +--- a/src/libgo/Makefile.am ++++ b/src/libgo/Makefile.am +@@ -1997,6 +1997,12 @@ CHECK = \ + export LD_LIBRARY_PATH; \ + $(MKDIR_P) $(@D); \ + rm -f $@-testsum $@-testlog; \ ++ run_check=yes; \ ++ MULTILIBDIR="$(MULTILIBDIR)"; \ ++ case "$$MULTILIBDIR" in /64|/x32) \ ++ echo "$$RUNTESTFLAGS" | grep -q "$${MULTILIBDIR\#/*}" || run_check=; \ ++ esac; \ ++ if test "$$run_check" = "yes"; then \ + if test "$(USE_DEJAGNU)" = "yes"; then \ + $(SHELL) $(srcdir)/testsuite/gotest --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$(go_$(subst /,_,$(@D))_files)" --testname="$(@D)" --goarch="$(GOARCH)" $(GOTESTFLAGS) $(go_$(subst /,_,$(@D))_test_files); \ + else \ +@@ -2010,6 +2016,7 @@ CHECK = \ + echo "FAIL: $(@D)" > $@-testsum; \ + exit 1; \ + fi; \ ++ fi; \ + fi + + # Build all packages before checking any. +Index: b/src/libgo/Makefile.in +=================================================================== +--- a/src/libgo/Makefile.in ++++ b/src/libgo/Makefile.in +@@ -2067,6 +2067,12 @@ CHECK = \ + export LD_LIBRARY_PATH; \ + $(MKDIR_P) $(@D); \ + rm -f $@-testsum $@-testlog; \ ++ run_check=yes; \ ++ MULTILIBDIR="$(MULTILIBDIR)"; \ ++ case "$$MULTILIBDIR" in /64|/x32) \ ++ echo "$$RUNTESTFLAGS" | grep -q "$${MULTILIBDIR\#/*}" || run_check=; \ ++ esac; \ ++ if test "$$run_check" = "yes"; then \ + if test "$(USE_DEJAGNU)" = "yes"; then \ + $(SHELL) $(srcdir)/testsuite/gotest --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$(go_$(subst /,_,$(@D))_files)" --testname="$(@D)" --goarch="$(GOARCH)" $(GOTESTFLAGS) $(go_$(subst /,_,$(@D))_test_files); \ + else \ +@@ -2080,6 +2086,7 @@ CHECK = \ + echo "FAIL: $(@D)" > $@-testsum; \ + exit 1; \ + fi; \ ++ fi; \ + fi + + --- gcc-4.9-4.9.2.orig/debian/patches/libgomp-kfreebsd-testsuite.diff +++ gcc-4.9-4.9.2/debian/patches/libgomp-kfreebsd-testsuite.diff @@ -0,0 +1,15 @@ +# DP: Disable lock-2.c test on kfreebsd-* + +--- a/src/libgomp/testsuite/libgomp.c/lock-2.c ++++ b/src/libgomp/testsuite/libgomp.c/lock-2.c +@@ -4,6 +4,9 @@ + int + main (void) + { ++#ifdef __FreeBSD_kernel__ ++ return 1; ++#endif + int l = 0; + omp_nest_lock_t lock; + omp_init_nest_lock (&lock); + --- gcc-4.9-4.9.2.orig/debian/patches/libgomp-omp_h-multilib.diff +++ gcc-4.9-4.9.2/debian/patches/libgomp-omp_h-multilib.diff @@ -0,0 +1,26 @@ +# DP: Fix up omp.h for multilibs. + +2008-06-09 Jakub Jelinek + + * omp.h.in (omp_nest_lock_t): Fix up for Linux multilibs. + +2015-03-25 Matthias Klose + + * omp.h.in (omp_nest_lock_t): Limit the fix Linux. + +--- a/src/libgomp/omp.h.in ++++ b/src/libgomp/omp.h.in +@@ -39,8 +39,13 @@ typedef struct + + typedef struct + { ++#if defined(__linux__) ++ unsigned char _x[8 + sizeof (void *)] ++ __attribute__((__aligned__(sizeof (void *)))); ++#else + unsigned char _x[@OMP_NEST_LOCK_SIZE@] + __attribute__((__aligned__(@OMP_NEST_LOCK_ALIGN@))); ++#endif + } omp_nest_lock_t; + #endif + --- gcc-4.9-4.9.2.orig/debian/patches/libitm-no-fortify-source.diff +++ gcc-4.9-4.9.2/debian/patches/libitm-no-fortify-source.diff @@ -0,0 +1,19 @@ +# DP: Build libitm with -U_FORTIFY_SOURCE on x86 and x86_64. + +Index: b/src/libitm/configure.tgt +=================================================================== +--- a/src/libitm/configure.tgt ++++ b/src/libitm/configure.tgt +@@ -118,6 +118,12 @@ + ;; + esac + ++# FIXME: ftbfs with -D_FORTIFY_SOURCE (error: invalid use of '__builtin_va_arg_pack ()) ++case "${target}" in ++ *-*-linux*) ++ XCFLAGS="${XCFLAGS} -U_FORTIFY_SOURCE" ++esac ++ + # For the benefit of top-level configure, determine if the cpu is supported. + test -d ${srcdir}/config/$ARCH || UNSUPPORTED=1 + --- gcc-4.9-4.9.2.orig/debian/patches/libjava-armel-unwind.diff +++ gcc-4.9-4.9.2/debian/patches/libjava-armel-unwind.diff @@ -0,0 +1,19 @@ +# DP: On armel, apply kludge to fix unwinder infinitely looping 'til it runs out +# DP: of memory (http://gcc.gnu.org/ml/java/2008-06/msg00010.html). + +--- + libjava/stacktrace.cc | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +--- a/src/libjava/stacktrace.cc ++++ b/src/libjava/stacktrace.cc +@@ -115,6 +115,9 @@ _Jv_StackTrace::UnwindTraceFn (struct _Unwind_Context *context, void *state_ptr) + // Check if the trace buffer needs to be extended. + if (pos == state->length) + { ++ // http://gcc.gnu.org/ml/java/2008-06/msg00010.html ++ return _URC_END_OF_STACK; ++ + int newLength = state->length * 2; + void *newFrames = _Jv_AllocBytes (newLength * sizeof(_Jv_StackFrame)); + memcpy (newFrames, state->frames, state->length * sizeof(_Jv_StackFrame)); --- gcc-4.9-4.9.2.orig/debian/patches/libjava-disable-plugin.diff +++ gcc-4.9-4.9.2/debian/patches/libjava-disable-plugin.diff @@ -0,0 +1,15 @@ +# DP: Don't build the gcjwebplugin, even when configured with --enable-plugin + +Index: b/src/libjava/configure.ac +=================================================================== +--- a/src/libjava/configure.ac ++++ b/src/libjava/configure.ac +@@ -67,6 +67,8 @@ + esac], + [browser_plugin_enabled=no] + ) ++# FIXME: don't build the plugin, this option collides with GCC plugin support ++plugin_enabled=no + + AC_ARG_ENABLE(gconf-peer, + AS_HELP_STRING([--enable-gconf-peer], --- gcc-4.9-4.9.2.orig/debian/patches/libjava-fixed-symlinks.diff +++ gcc-4.9-4.9.2/debian/patches/libjava-fixed-symlinks.diff @@ -0,0 +1,28 @@ +# DP: Remove unneed '..' elements from symlinks in JAVA_HOME + +Index: b/src/libjava/Makefile.am +=================================================================== +--- a/src/libjava/Makefile.am ++++ b/src/libjava/Makefile.am +@@ -836,7 +836,7 @@ if CREATE_JAVA_HOME + $(mkinstalldirs) $(DESTDIR)$(SDK_INCLUDE_DIR)/$(OS) + relative() { \ + $(PERL) -e 'use File::Spec; \ +- print File::Spec->abs2rel($$ARGV[0], $$ARGV[1])' $$1 $$2; \ ++ print File::Spec->abs2rel($$ARGV[0], $$ARGV[1])' $$1 $$2 | sed -r 's,(bin|lib)[^/]*/\.\./,,'; \ + }; \ + RELATIVE=$$(relative $(DESTDIR)$(bindir) $(DESTDIR)$(SDK_BIN_DIR)); \ + ln -sf $$RELATIVE/`echo gij | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \ +Index: b/src/libjava/Makefile.in +=================================================================== +--- a/src/libjava/Makefile.in ++++ b/src/libjava/Makefile.in +@@ -12506,7 +12506,7 @@ install-data-local: + @CREATE_JAVA_HOME_TRUE@ $(mkinstalldirs) $(DESTDIR)$(SDK_INCLUDE_DIR)/$(OS) + @CREATE_JAVA_HOME_TRUE@ relative() { \ + @CREATE_JAVA_HOME_TRUE@ $(PERL) -e 'use File::Spec; \ +-@CREATE_JAVA_HOME_TRUE@ print File::Spec->abs2rel($$ARGV[0], $$ARGV[1])' $$1 $$2; \ ++@CREATE_JAVA_HOME_TRUE@ print File::Spec->abs2rel($$ARGV[0], $$ARGV[1])' $$1 $$2 | sed -r 's,(bin|lib)[^/]*/\.\./,,'; \ + @CREATE_JAVA_HOME_TRUE@ }; \ + @CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$(bindir) $(DESTDIR)$(SDK_BIN_DIR)); \ + @CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/`echo gij | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \ --- gcc-4.9-4.9.2.orig/debian/patches/libjava-jnipath.diff +++ gcc-4.9-4.9.2/debian/patches/libjava-jnipath.diff @@ -0,0 +1,129 @@ +# DP: - Add /usr/lib/jni and /usr/lib//jni to java.library.path. +# DP: - When running the i386 binaries on amd64, look in +# DP: - /usr/lib32/gcj-x.y and /usr/lib32/jni instead. + +Index: b/src/libjava/configure.ac +=================================================================== +--- a/src/libjava/configure.ac ++++ b/src/libjava/configure.ac +@@ -1525,6 +1525,9 @@ AC_CHECK_SIZEOF(void *) + + AC_C_BIGENDIAN + ++MULTIARCH_DIR=$(dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null || true) ++AC_SUBST(MULTIARCH_DIR) ++ + ZLIBS= + SYS_ZLIBS= + ZINCS= +Index: b/src/libjava/Makefile.am +=================================================================== +--- a/src/libjava/Makefile.am ++++ b/src/libjava/Makefile.am +@@ -364,6 +364,7 @@ AM_CXXFLAGS = \ + $(WARNINGS) \ + -D_GNU_SOURCE \ + -DPREFIX="\"$(prefix)\"" \ ++ -DMULTIARCH_DIR="\"$(MULTIARCH_DIR)\"" \ + -DTOOLEXECLIBDIR="\"$(toolexeclibdir)\"" \ + -DJAVA_HOME="\"$(JAVA_HOME_DIR)\"" \ + -DBOOT_CLASS_PATH="\"$(BOOT_CLASS_PATH_DIR)\"" \ +Index: b/src/libjava/Makefile.in +=================================================================== +--- a/src/libjava/Makefile.in ++++ b/src/libjava/Makefile.in +@@ -639,6 +639,7 @@ MAINT = @MAINT@ + MAKE = @MAKE@ + MAKEINFO = @MAKEINFO@ + MKDIR_P = @MKDIR_P@ ++MULTIARCH_DIR = @MULTIARCH_DIR@ + NM = nm + NMEDIT = @NMEDIT@ + OBJDUMP = @OBJDUMP@ +@@ -1022,6 +1023,7 @@ AM_CXXFLAGS = \ + $(WARNINGS) \ + -D_GNU_SOURCE \ + -DPREFIX="\"$(prefix)\"" \ ++ -DMULTIARCH_DIR="\"$(MULTIARCH_DIR)\"" \ + -DTOOLEXECLIBDIR="\"$(toolexeclibdir)\"" \ + -DJAVA_HOME="\"$(JAVA_HOME_DIR)\"" \ + -DBOOT_CLASS_PATH="\"$(BOOT_CLASS_PATH_DIR)\"" \ +Index: b/src/libjava/gnu/classpath/natSystemProperties.cc +=================================================================== +--- a/src/libjava/gnu/classpath/natSystemProperties.cc ++++ b/src/libjava/gnu/classpath/natSystemProperties.cc +@@ -141,6 +141,44 @@ PrependVersionedLibdir (::java::lang::St + return retval; + } + ++static char* ++AppendJniLibdir (char *path, struct utsname *u) ++{ ++ char* retval; ++ const char* jnilibdir = "/usr/lib/jni"; ++#ifdef MULTIARCH_DIR ++ const char* jnilibdir2 = "/usr/lib/" MULTIARCH_DIR "/jni"; ++ jsize len2 = strlen (jnilibdir2) + 2; ++#else ++ jsize len2 = 0; ++#endif ++ ++#if defined(__linux__) && defined (__i386__) ++ if (! strcmp ("x86_64", u->machine)) ++ jnilibdir = "/usr/lib32/jni"; ++#endif ++ ++ if (path) ++ { ++ jsize total = strlen (path) ++ + (sizeof (PATH_SEPARATOR) - 1) + strlen (jnilibdir) +len2 + 1; ++ retval = (char*) _Jv_Malloc (total); ++ strcpy (retval, path); ++ strcat (retval, PATH_SEPARATOR); ++ strcat (retval, jnilibdir); ++ } ++ else ++ { ++ retval = (char*) _Jv_Malloc (strlen (jnilibdir) + len2 + 1); ++ strcpy (retval, jnilibdir); ++ } ++#ifdef MULTIARCH_DIR ++ strcat (retval, PATH_SEPARATOR); ++ strcat (retval, jnilibdir2); ++#endif ++ return retval; ++} ++ + void + gnu::classpath::SystemProperties::insertSystemProperties (::java::util::Properties *newprops) + { +@@ -373,8 +411,13 @@ gnu::classpath::SystemProperties::insert + // Prepend GCJ_VERSIONED_LIBDIR to the module load path so that + // libgcj will find its own JNI libraries, like libgtkpeer.so. + char* val = PrependVersionedLibdir (path); +- _Jv_SetDLLSearchPath (val); ++ ++ // Append jnilibdir ++ char* val2 = AppendJniLibdir (val, &u); ++ ++ _Jv_SetDLLSearchPath (val2); + _Jv_Free (val); ++ _Jv_Free (val2); + } + else + { +@@ -382,9 +425,12 @@ gnu::classpath::SystemProperties::insert + #ifdef USE_LTDL + char *libpath = getenv (LTDL_SHLIBPATH_VAR); + char* val = _Jv_PrependVersionedLibdir (libpath); +- SET ("java.library.path", val); +- _Jv_SetDLLSearchPath (val); ++ // Append jnilibdir ++ char* val2 = AppendJniLibdir (val, &u); ++ SET ("java.library.path", val2); ++ _Jv_SetDLLSearchPath (val2); + _Jv_Free (val); ++ _Jv_Free (val2); + #else + SET ("java.library.path", ""); + #endif --- gcc-4.9-4.9.2.orig/debian/patches/libjava-multiarch.diff +++ gcc-4.9-4.9.2/debian/patches/libjava-multiarch.diff @@ -0,0 +1,82 @@ +# DP: Install libjava libraries to multiarch location + +Index: b/src/libjava/configure.ac +=================================================================== +--- a/src/libjava/configure.ac ++++ b/src/libjava/configure.ac +@@ -1585,6 +1585,10 @@ + .) toolexeclibdir=$toolexecmainlibdir ;; # Avoid trailing /. + *) toolexeclibdir=$toolexecmainlibdir/$multi_os_directory ;; + esac ++ multiarch=`$CC -print-multiarch` ++ if test -n "$multiarch"; then ++ toolexeclibdir=$toolexecmainlibdir/$multiarch ++ fi + ;; + esac + AC_SUBST(toolexecdir) +@@ -1602,6 +1606,10 @@ + # libraries are found. + gcjsubdir=gcj-$gcjversion-$libgcj_soversion + dbexecdir='$(toolexeclibdir)/'$gcjsubdir ++multiarch=`$CC -print-multiarch` ++if test -n "$multiarch"; then ++ dbexecdir='$(libdir)/'$multiarch/$gcjsubdir ++fi + AC_SUBST(dbexecdir) + AC_SUBST(gcjsubdir) + +Index: b/src/libjava/Makefile.am +=================================================================== +--- a/src/libjava/Makefile.am ++++ b/src/libjava/Makefile.am +@@ -373,7 +373,7 @@ + -DGCJ_VERSIONED_LIBDIR="\"$(dbexecdir)\"" \ + -DPATH_SEPARATOR="\"$(CLASSPATH_SEPARATOR)\"" \ + -DECJ_JAR_FILE="\"$(ECJ_JAR)\"" \ +- -DLIBGCJ_DEFAULT_DATABASE="\"$(dbexecdir)/$(db_name)\"" \ ++ -DLIBGCJ_DEFAULT_DATABASE="\"/var/lib/$(MULTIARCH_DIR)/gcj-4.9/$(db_name)\"" \ + -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL="\"$(db_pathtail)\"" + + AM_GCJFLAGS = \ +Index: b/src/libjava/Makefile.in +=================================================================== +--- a/src/libjava/Makefile.in ++++ b/src/libjava/Makefile.in +@@ -1032,7 +1032,7 @@ + -DGCJ_VERSIONED_LIBDIR="\"$(dbexecdir)\"" \ + -DPATH_SEPARATOR="\"$(CLASSPATH_SEPARATOR)\"" \ + -DECJ_JAR_FILE="\"$(ECJ_JAR)\"" \ +- -DLIBGCJ_DEFAULT_DATABASE="\"$(dbexecdir)/$(db_name)\"" \ ++ -DLIBGCJ_DEFAULT_DATABASE="\"/var/lib/$(MULTIARCH_DIR)/gcj-4.9/$(db_name)\"" \ + -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL="\"$(db_pathtail)\"" + + AM_GCJFLAGS = \ +Index: b/src/libjava/classpath/m4/acinclude.m4 +=================================================================== +--- a/src/libjava/classpath/m4/acinclude.m4 ++++ b/src/libjava/classpath/m4/acinclude.m4 +@@ -276,6 +276,10 @@ + esac + ;; + esac ++ multiarch=`$CC -print-multiarch` ++ if test -n "$multiarch"; then ++ toolexeclibdir=${libdir}/${multiarch} ++ fi + AC_SUBST(toolexecdir) + AC_SUBST(toolexecmainlibdir) + AC_SUBST(toolexeclibdir) +Index: b/src/libjava/classpath/configure.ac +=================================================================== +--- a/src/libjava/classpath/configure.ac ++++ b/src/libjava/classpath/configure.ac +@@ -16,6 +16,8 @@ + + AC_CANONICAL_TARGET + ++dnl dummy change to run autoconf ++ + dnl GCJ LOCAL + AC_ARG_ENABLE(java-maintainer-mode, + AS_HELP_STRING([--enable-java-maintainer-mode], --- gcc-4.9-4.9.2.orig/debian/patches/libjava-nobiarch-check.diff +++ gcc-4.9-4.9.2/debian/patches/libjava-nobiarch-check.diff @@ -0,0 +1,27 @@ +# DP: For biarch builds, disable the testsuite for the non-default architecture +# DP: for runtime libraries, which are not built by default (libjava). + +--- + libjava/testsuite/Makefile.in | 4 +++- + 2 files changed, 25 insertions(+), 1 deletions(-) + +Index: b/src/libjava/testsuite/Makefile.in +=================================================================== +--- a/src/libjava/testsuite/Makefile.in ++++ b/src/libjava/testsuite/Makefile.in +@@ -384,12 +384,14 @@ + + + check-DEJAGNU: site.exp ++ runtestflags="`echo '$(RUNTESTFLAGS)' | sed -r 's/,-m(32|64|x32)//g;s/,-mabi=(n32|64)//g'`"; \ ++ case "$$runtestflags" in *\\{\\}) runtestflags=; esac; \ + srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \ + EXPECT=$(EXPECT); export EXPECT; \ + runtest=$(RUNTEST); \ + if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \ + exit_status=0; l='$(DEJATOOL)'; for tool in $$l; do \ +- if $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $(RUNTESTFLAGS); \ ++ if $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $$runtestflags; \ + then :; else exit_status=1; fi; \ + done; \ + else echo "WARNING: could not find \`runtest'" 1>&2; :;\ --- gcc-4.9-4.9.2.orig/debian/patches/libjava-rpath.diff +++ gcc-4.9-4.9.2/debian/patches/libjava-rpath.diff @@ -0,0 +1,29 @@ +# DP: - Link ecjx with -rpath $(dbexecdir) + +--- + libjava/Makefile.am | 2 +- + libjava/Makefile.in | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +--- a/src/libjava/Makefile.am ++++ b/src/libjava/Makefile.am +@@ -888,7 +888,7 @@ else !ENABLE_SHARED + ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) $(ECJ_BUILD_JAR) -fbootclasspath=$(BOOTCLASSPATH) + endif !ENABLE_SHARED + +-ecjx_LDADD = -L$(here)/.libs $(extra_ldflags) ++ecjx_LDADD = -L$(here)/.libs $(extra_ldflags) -rpath $(dbexecdir) + ecjx_DEPENDENCIES = libgcj.la libgcj.spec + if USE_LIBGCJ_BC + ecjx_DEPENDENCIES += libgcj_bc.la +--- a/src/libjava/Makefile.in ++++ b/src/libjava/Makefile.in +@@ -8360,7 +8360,7 @@ ECJX_BASE_FLAGS = -findirect-dispatch \ + @NATIVE_FALSE@ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) $(ECJ_BUILD_JAR) + @NATIVE_FALSE@ecjx_LDADD = + @NATIVE_TRUE@ecjx_LDADD = -L$(here)/.libs $(extra_ldflags) \ +-@NATIVE_TRUE@ $(am__append_21) ++@NATIVE_TRUE@ $(am__append_21) -rpath $(dbexecdir) + @NATIVE_FALSE@ecjx_DEPENDENCIES = + @NATIVE_TRUE@ecjx_DEPENDENCIES = libgcj.la libgcj.spec \ + @NATIVE_TRUE@ $(am__append_20) --- gcc-4.9-4.9.2.orig/debian/patches/libjava-sjlj.diff +++ gcc-4.9-4.9.2/debian/patches/libjava-sjlj.diff @@ -0,0 +1,40 @@ +# DP: Don't try to use _Unwind_Backtrace on SJLJ targets. +# DP: See bug #387875, #388505, GCC PR 29206. + +--- + libjava/sysdep/generic/backtrace.h | 17 +++++++++++++++++ + 1 files changed, 17 insertions(+), 0 deletions(-) + +Index: b/src/libjava/sysdep/generic/backtrace.h +=================================================================== +--- a/src/libjava/sysdep/generic/backtrace.h ++++ b/src/libjava/sysdep/generic/backtrace.h +@@ -13,6 +13,20 @@ + + #include + ++#ifdef SJLJ_EXCEPTIONS ++ ++#undef _Unwind_GetIPInfo ++#define _Unwind_GetIPInfo(ctx,ip_before_insn) \ ++ (abort (), (void) (ctx), *ip_before_insn = 1, 0) ++ ++#undef _Unwind_GetRegionStart ++#define _Unwind_GetRegionStart(ctx) \ ++ (abort (), (void) (ctx), 0) ++ ++#undef _Unwind_Backtrace ++#define _Unwind_Backtrace(trace_fn,state_ptr) \ ++ (fallback_backtrace (trace_fn, state_ptr)) ++ + /* Unwind through the call stack calling TRACE_FN with STATE for every stack + frame. Returns the reason why the unwinding was stopped. */ + _Unwind_Reason_Code +@@ -20,4 +34,7 @@ + { + return _URC_NO_REASON; + } ++ ++#endif /* SJLJ_EXCEPTIONS */ ++ + #endif --- gcc-4.9-4.9.2.orig/debian/patches/libjava-stacktrace.diff +++ gcc-4.9-4.9.2/debian/patches/libjava-stacktrace.diff @@ -0,0 +1,50 @@ +# DP: libgcj: Lookup source file name and line number in separated +# DP: debug files found in /usr/lib/debug + +--- + libjava/stacktrace.cc | 27 +++++++++++++++++++++++++++ + 1 files changed, 27 insertions(+), 0 deletions(-) + +--- a/src/libjava/stacktrace.cc ++++ b/src/libjava/stacktrace.cc +@@ -17,6 +17,11 @@ + #include + + #include ++#include ++#include ++#ifdef HAVE_UNISTD_H ++#include ++#endif + + #include + #include +@@ -260,6 +265,28 @@ + finder->lookup (binaryName, (jlong) offset); + *sourceFileName = finder->getSourceFile(); + *lineNum = finder->getLineNum(); ++ if (*lineNum == -1 && info.file_name[0] == '/') ++ { ++ const char *debugPrefix = "/usr/lib/debug"; ++ char *debugPath = (char *) malloc (strlen(debugPrefix) ++ + strlen(info.file_name) ++ + 2); ++ ++ if (debugPath) ++ { ++ strcpy (debugPath, debugPrefix); ++ strcat (debugPath, info.file_name); ++ //printf ("%s: 0x%x\n", debugPath, offset); ++ if (!access (debugPath, R_OK)) ++ { ++ binaryName = JvNewStringUTF (debugPath); ++ finder->lookup (binaryName, (jlong) offset); ++ *sourceFileName = finder->getSourceFile(); ++ *lineNum = finder->getLineNum(); ++ } ++ free (debugPath); ++ } ++ } + if (*lineNum == -1 && NameFinder::showRaw()) + { + gnu::gcj::runtime::StringBuffer *t = --- gcc-4.9-4.9.2.orig/debian/patches/libstdc++-doclink.diff +++ gcc-4.9-4.9.2/debian/patches/libstdc++-doclink.diff @@ -0,0 +1,68 @@ +# DP: adjust hrefs to point to the local documentation + +--- + libstdc++-v3/doc/doxygen/mainpage.html | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +Index: b/src/libstdc++-v3/doc/doxygen/mainpage.html +=================================================================== +--- a/src/libstdc++-v3/doc/doxygen/mainpage.html ++++ b/src/libstdc++-v3/doc/doxygen/mainpage.html +@@ -27,10 +27,10 @@ +

Generated on @DATE@.

+ +

There are two types of documentation for libstdc++. One is the +- distribution documentation, which can be read online +- here +- or offline from the file doc/html/index.html in the library source +- directory. ++ distribution documentation, which can be read ++ offline in the documentation directory ++ or ++ online. +

+ +

The other type is the source documentation, of which this is the first page. +@@ -81,9 +81,10 @@ + This style guide can also be viewed on the web. + +

License, Copyright, and Other Lawyerly Verbosity

+-

The libstdc++ documentation is released under +- +- these terms. ++

The libstdc++ documentation is released under these terms ++ (read offline or ++ read online. ++ ). +

+

Part of the generated documentation involved comments and notes from + SGI, who says we gotta say this: +Index: b/src/libstdc++-v3/doc/html/api.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/api.html ++++ b/src/libstdc++-v3/doc/html/api.html +@@ -18,6 +18,8 @@ + member functions for the library classes, finding out what is in a + particular include file, looking at inheritance diagrams, etc. +

++The API documentation, rendered into HTML, can be viewed offline. ++

+ The API documentation, rendered into HTML, can be viewed online: +


1.1. ++


1.1. + What is libstdc++? +
1.2. + Why should I use libstdc++? +Index: libstdc++-v3/doc/html/index.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/index.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/index.html (.../branches/gcc-4_9-branch) +@@ -34,13 +34,13 @@ +
Exceptions
API Reference
Adding Data to exception
Concept Checking
6. + Utilities + +-
Functors
Pairs
Memory
Allocators
Requirements
Design Issues
Implementation
Interface Design
Selecting Default Allocation Policy
Disabling Memory Caching
Using a Specific Allocator
Custom Allocators
Extension Allocators
auto_ptr
Limitations
Use in Containers
shared_ptr
Requirements
Design Issues
Implementation
Class Hierarchy
Thread Safety
Selecting Lock Policy
Related functions and classes
Use
Examples
Unresolved Issues
Acknowledgments
Traits
7. ++
Functors
Pairs
Memory
Allocators
Requirements
Design Issues
Implementation
Interface Design
Selecting Default Allocation Policy
Disabling Memory Caching
Using a Specific Allocator
Custom Allocators
Extension Allocators
auto_ptr
Limitations
Use in Containers
shared_ptr
Requirements
Design Issues
Implementation
Class Hierarchy
Thread Safety
Selecting Lock Policy
Related functions and classes
Use
Examples
Unresolved Issues
Acknowledgments
Traits
7. + Strings + +
String Classes
Simple Transformations
Case Sensitivity
Arbitrary Character Types
Tokenizing
Shrink to Fit
CString (MFC)
8. + Localization + +-
Locales
locale
Requirements
Design
Implementation
Interacting with "C" locales
Future
Facets
ctype
Implementation
Specializations
Future
codecvt
Requirements
Design
wchar_t Size
Support for Unicode
Other Issues
Implementation
Use
Future
messages
Requirements
Design
Implementation
Models
The GNU Model
Use
Future
9. ++
Locales
locale
Requirements
Design
Implementation
Interacting with "C" locales
Future
Facets
ctype
Implementation
Specializations
Future
codecvt
Requirements
Design
wchar_t Size
Support for Unicode
Other Issues
Implementation
Use
Future
messages
Requirements
Design
Implementation
Models
The GNU Model
Use
Future
9. + Containers + +
Sequences
list
list::size() is O(n)
Associative
Insertion Hints
bitset
Size Variable
Type String
Unordered Associative
Insertion Hints
Hash Code
Hash Code Caching Policy
Interacting with C
Containers vs. Arrays
10. +@@ -142,7 +142,7 @@ + Existing tests +
+ C++11 Requirements Test Sequence Descriptions +-
ABI Policy and Guidelines
The C++ Interface
Versioning
Goals
History
Prerequisites
Configuring
Checking Active
Allowed Changes
Prohibited Changes
Implementation
Testing
Single ABI Testing
Multiple ABI Testing
Outstanding Issues
API Evolution and Deprecation History
3.0
3.1
3.2
3.3
3.4
4.0
4.1
4.2
4.3
4.4
4.5
Backwards Compatibility
First
No ios_base
No cout in <ostream.h>, no cin in <istream.h>
Second
Namespace std:: not supported
Illegal iterator usage
isspace from <cctype> is a macro ++
ABI Policy and Guidelines
The C++ Interface
Versioning
Goals
History
Prerequisites
Configuring
Checking Active
Allowed Changes
Prohibited Changes
Implementation
Testing
Single ABI Testing
Multiple ABI Testing
Outstanding Issues
API Evolution and Deprecation History
3.0
3.1
3.2
3.3
3.4
4.0
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
Backwards Compatibility
First
No ios_base
No cout in <ostream.h>, no cin in <istream.h>
Second
Namespace std:: not supported
Illegal iterator usage
isspace from <cctype> is a macro +
No vector::at, deque::at, string::at
No std::char_traits<char>::eof
No string::clear
+ Removal of ostream::form and istream::scan + extensions +Index: libstdc++-v3/doc/html/api.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/api.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/api.html (.../branches/gcc-4_9-branch) +@@ -6,7 +6,7 @@ + + FSF + +-

++


+Index: libstdc++-v3/doc/html/manual/iterators.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/iterators.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/iterators.html (.../branches/gcc-4_9-branch) +@@ -6,7 +6,7 @@ + Standard Contents +  Next


Chapter 10.  + Iterators +- ++ +

Predefined

Iterators vs. Pointers

+ The following + FAQ entry points out that +Index: libstdc++-v3/doc/html/manual/status.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/status.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/status.html (.../branches/gcc-4_9-branch) +@@ -7,7 +7,7 @@ +

+ This page describes the C++ support in mainline GCC SVN, not in any + particular release. +-

Table 1.1. C++ 1998/2003 Implementation Status

SectionDescriptionStatusComments
++

Table 1.1. C++ 1998/2003 Implementation Status

SectionDescriptionStatusComments
+ 18 + + Language support +@@ -158,7 +158,7 @@ +

+ This page describes the C++11 support in mainline GCC SVN, not in any + particular release. +-

Table 1.2. C++ 2011 Implementation Status

SectionDescriptionStatusComments
++

Table 1.2. C++ 2011 Implementation Status

SectionDescriptionStatusComments
+ 18 + + Language support +@@ -296,7 +296,7 @@ +

+ This page describes the C++14 and library TS support in mainline GCC SVN, + not in any particular release. +-

Table 1.3. C++ 2014 Implementation Status

PaperTitleStatusComments
++

Table 1.3. C++ 2014 Implementation Status

PaperTitleStatusComments
+ + N3669 + +@@ -368,7 +368,7 @@ + + N3644 + +- Null Forward IteratorsN 

Table 1.4. C++ Technical Specifications Implementation Status

PaperTitleStatusComments
++ Null Forward IteratorsN 

Table 1.4. C++ Technical Specifications Implementation Status

PaperTitleStatusComments
+ + N3662 + +@@ -439,7 +439,7 @@ +

+ This page describes the TR1 support in mainline GCC SVN, not in any particular + release. +-

Table 1.5. C++ TR1 Implementation Status

SectionDescriptionStatusComments
2General Utilities
2.1Reference wrappers  
2.1.1Additions to header <functional> synopsisY 
2.1.2Class template reference_wrapper  
2.1.2.1reference_wrapper construct/copy/destroyY 
2.1.2.2reference_wrapper assignmentY 
2.1.2.3reference_wrapper accessY 
2.1.2.4reference_wrapper invocationY 
2.1.2.5reference_wrapper helper functionsY 
2.2Smart pointers  
2.2.1Additions to header <memory> synopsisY 
2.2.2Class bad_weak_ptrY 
2.2.3Class template shared_ptr  ++

Table 1.5. C++ TR1 Implementation Status

SectionDescriptionStatusComments
2General Utilities
2.1Reference wrappers  
2.1.1Additions to header <functional> synopsisY 
2.1.2Class template reference_wrapper  
2.1.2.1reference_wrapper construct/copy/destroyY 
2.1.2.2reference_wrapper assignmentY 
2.1.2.3reference_wrapper accessY 
2.1.2.4reference_wrapper invocationY 
2.1.2.5reference_wrapper helper functionsY 
2.2Smart pointers  
2.2.1Additions to header <memory> synopsisY 
2.2.2Class bad_weak_ptrY 
2.2.3Class template shared_ptr  +

+ Uses code from + boost::shared_ptr. +@@ -460,7 +460,7 @@ +

+ This page describes the TR 24733 support in mainline GCC SVN, not in any + particular release. +-

Table 1.6. C++ TR 24733 Implementation Status

SectionDescriptionStatusComments
++

Table 1.6. C++ TR 24733 Implementation Status

SectionDescriptionStatusComments
+ 0 + + Introduction +Index: libstdc++-v3/doc/html/manual/policy_data_structures_design.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/policy_data_structures_design.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/policy_data_structures_design.html (.../branches/gcc-4_9-branch) +@@ -170,7 +170,7 @@ + naturally; collision-chaining hash tables (label B) store + equivalent-key values in the same bucket, the bucket can be + arranged so that equivalent-key values are consecutive. +-

Figure 22.8. Non-unique Mapping Standard Containers

Non-unique Mapping Standard Containers

++

Figure 22.8. Non-unique Mapping Standard Containers

Non-unique Mapping Standard Containers

+ Put differently, the standards' non-unique mapping + associative-containers are associative containers that map + primary keys to linked lists that are embedded into the +@@ -252,7 +252,7 @@ + first graphic above. Labels A and B, respectively. Each shaded + box represents some size-type or secondary + associative-container. +-

Figure 22.10. Non-unique Mapping Containers

Non-unique Mapping Containers

++

Figure 22.10. Non-unique Mapping Containers

Non-unique Mapping Containers

+ In the first example above, then, one would use an associative + container mapping each user to an associative container which + maps each application id to a start time (see +@@ -305,7 +305,7 @@ + shows invariants for order-preserving containers: point-type + iterators are synonymous with range-type iterators. + Orthogonally, Cshows invariants for "set" +- containers: iterators are synonymous with const iterators.

Figure 22.11. Point Iterator Hierarchy

Point Iterator Hierarchy

Note that point-type iterators in self-organizing containers ++ containers: iterators are synonymous with const iterators.

Figure 22.11. Point Iterator Hierarchy

Point Iterator Hierarchy

Note that point-type iterators in self-organizing containers + (hash-based associative containers) lack movement + operators, such as operator++ - in fact, this + is the reason why this library differentiates from the standard C++ librarys +@@ -344,7 +344,7 @@ + to the question of whether point-type iterators and range-type + iterators are valid. The graphic below shows tags corresponding to + different types of invalidation guarantees. +-

Figure 22.12. Invalidation Guarantee Tags Hierarchy

Invalidation Guarantee Tags Hierarchy

  • ++

    Figure 22.12. Invalidation Guarantee Tags Hierarchy

    Invalidation Guarantee Tags Hierarchy

    • + basic_invalidation_guarantee + corresponds to a basic guarantee that a point-type iterator, + a found pointer, or a found reference, remains valid as long +@@ -428,7 +428,7 @@ +

      + This library contains a container tag hierarchy corresponding to the + diagram below. +-

      Figure 22.13. Container Tag Hierarchy

      Container Tag Hierarchy

      ++

      Figure 22.13. Container Tag Hierarchy

      Container Tag Hierarchy

      + Given any container Cntnr, the tag of + the underlying data structure can be found via typename + Cntnr::container_category. +@@ -487,7 +487,7 @@ + collision-chaining container, except for the following.

      1. Comb_Probe_Fn describes how to transform a probe + sequence into a sequence of positions within the table.

      2. Probe_Fn describes a probe sequence policy.

      Some of the default template values depend on the values of + other parameters, and are explained below.

    Details
    Hash Policies
    General

    Following is an explanation of some functions which hashing +- involves. The graphic below illustrates the discussion.

    Figure 22.14. Hash functions, ranged-hash functions, and ++ involves. The graphic below illustrates the discussion.

    Figure 22.14. Hash functions, ranged-hash functions, and + range-hashing functions

    Hash functions, ranged-hash functions, and range-hashing functions

    Let U be a domain (e.g., the integers, or the + strings of 3 characters). A hash-table algorithm needs to map + elements of U "uniformly" into the range [0,..., m - +@@ -504,7 +504,7 @@ + Z+,

    which maps a non-negative hash value, and a non-negative + range upper-bound into a non-negative integral in the range + between 0 (inclusive) and the range upper bound (exclusive), +- i.e., for any r in Z+,

    0 ≤ g(r, m) ≤ m - 1

    The resulting ranged-hash function, is

    Equation 22.1. Ranged Hash Function

    ++ i.e., for any r in Z+,

    0 ≤ g(r, m) ≤ m - 1

    The resulting ranged-hash function, is

    Equation 22.1. Ranged Hash Function

    + f(u , m) = g(h(u), m) +

    From the above, it is obvious that given g and + h, f can always be composed (however the converse +@@ -524,7 +524,7 @@ + transforming the sequence of hash values into a sequence of + positions.

    Range Hashing

    Some common choices for range-hashing functions are the + division, multiplication, and middle-square methods ([biblio.knuth98sorting]), defined +- as

    Equation 22.2. Range-Hashing, Division Method

    ++ as

    Equation 22.2. Range-Hashing, Division Method

    + g(r, m) = r mod m +

    g(r, m) = ⌈ u/v ( a r mod v ) ⌉

    and

    g(r, m) = ⌈ u/v ( r2 mod v ) ⌉

    respectively, for some positive integrals u and + v (typically powers of 2), and some a. Each of +@@ -535,9 +535,9 @@ + implement using the low + level % (modulo) operation (for any m), or the + low level & (bit-mask) operation (for the case where +- m is a power of 2), i.e.,

    Equation 22.3. Division via Prime Modulo

    ++ m is a power of 2), i.e.,

    Equation 22.3. Division via Prime Modulo

    + g(r, m) = r % m +-

    and

    Equation 22.4. Division via Bit Mask

    ++

    and

    Equation 22.4. Division via Bit Mask

    + g(r, m) = r & m - 1, (with m = + 2k for some k) +

    respectively.

    The % (modulo) implementation has the advantage that for +@@ -563,7 +563,7 @@ + s = [ s0,..., st - 1] +

    be a string of t characters, each of which is from + domain S. Consider the following ranged-hash +- function:

    Equation 22.5.  ++ function:

    Equation 22.5.  + A Standard String Hash Function +

    + f1(s, m) = ∑ i = +@@ -575,7 +575,7 @@ + of a long DNA sequence (and so S = {'A', 'C', 'G', + 'T'}). In this case, scanning the entire string might be + prohibitively expensive. A possible alternative might be to use +- only the first k characters of the string, where

    |S|k ≥ m ,

    i.e., using the hash function

    Equation 22.6.  ++ only the first k characters of the string, where

    |S|k ≥ m ,

    i.e., using the hash function

    Equation 22.6.  + Only k String DNA Hash +

    + f2(s, m) = ∑ i +@@ -606,12 +606,12 @@ + the container transforms the key into a non-negative integral + using the hash functor (points B and C), and transforms the + result into a position using the combining functor (points D +- and E).

    Figure 22.15. Insert hash sequence diagram

    Insert hash sequence diagram

    If cc_hash_table's ++ and E).

    Figure 22.15. Insert hash sequence diagram

    Insert hash sequence diagram

    If cc_hash_table's + hash-functor, Hash_Fn is instantiated by null_type , then Comb_Hash_Fn is taken to be + a ranged-hash function. The graphic below shows an insert sequence + diagram. The user inserts an element (point A), the container + transforms the key into a position using the combining functor +- (points B and C).

    Figure 22.16. Insert hash sequence diagram with a null policy

    Insert hash sequence diagram with a null policy

    ++ (points B and C).

    Figure 22.16. Insert hash sequence diagram with a null policy

    Insert hash sequence diagram with a null policy

    + Probing tables +

    gp_hash_table is parametrized by + Hash_Fn, Probe_Fn, +@@ -634,7 +634,7 @@ + a linear probe and a quadratic probe function, + respectively.

+ The graphic below shows the relationships. +-

Figure 22.17. Hash policy class diagram

Hash policy class diagram

Resize Policies
General

Hash-tables, as opposed to trees, do not naturally grow or ++

Figure 22.17. Hash policy class diagram

Hash policy class diagram

Resize Policies
General

Hash-tables, as opposed to trees, do not naturally grow or + shrink. It is necessary to specify policies to determine how + and when a hash table should change its size. Usually, resize + policies can be decomposed into orthogonal policies:

  1. A size policy indicating how a hash table +@@ -667,10 +667,10 @@ + and some load factor be denoted by Α. We would like to + calculate the minimal length of k, such that if there were Α + m elements in the hash table, a probe sequence of length k would +- be found with probability at most 1/m.

    Figure 22.18. Balls and bins

    Balls and bins

    Denote the probability that a probe sequence of length ++ be found with probability at most 1/m.

    Figure 22.18. Balls and bins

    Balls and bins

    Denote the probability that a probe sequence of length + k appears in bin i by pi, the + length of the probe sequence of bin i by +- li, and assume uniform distribution. Then

    Equation 22.7.  ++ li, and assume uniform distribution. Then

    Equation 22.7.  + Probability of Probe Sequence of Length k +

    + p1 = +@@ -684,7 +684,7 @@ + li are negatively-dependent + ([biblio.dubhashi98neg]) + . Let +- I(.) denote the indicator function. Then

    Equation 22.8.  ++ I(.) denote the indicator function. Then

    Equation 22.8.  + Probability Probe Sequence in Some Bin +

    + P( existsi li ≥ k ) = +@@ -723,7 +723,7 @@ + a resize is needed, and if so, what is the new size (points D + to G); following the resize, it notifies the policy that a + resize has completed (point H); finally, the element is +- inserted, and the policy notified (point I).

    Figure 22.19. Insert resize sequence diagram

    Insert resize sequence diagram

    In practice, a resize policy can be usually orthogonally ++ inserted, and the policy notified (point I).

    Figure 22.19. Insert resize sequence diagram

    Insert resize sequence diagram

    In practice, a resize policy can be usually orthogonally + decomposed to a size policy and a trigger policy. Consequently, + the library contains a single class for instantiating a resize + policy: hash_standard_resize_policy +@@ -732,8 +732,8 @@ + both, and acts as a standard delegate ([biblio.gof]) + to these policies.

    The two graphics immediately below show sequence diagrams + illustrating the interaction between the standard resize policy +- and its trigger and size policies, respectively.

    Figure 22.20. Standard resize policy trigger sequence +- diagram

    Standard resize policy trigger sequence diagram

    Figure 22.21. Standard resize policy size sequence ++ and its trigger and size policies, respectively.

    Figure 22.20. Standard resize policy trigger sequence ++ diagram

    Standard resize policy trigger sequence diagram

    Figure 22.21. Standard resize policy size sequence + diagram

    Standard resize policy size sequence diagram

    Predefined Policies

    The library includes the following + instantiations of size and trigger policies:

    1. hash_load_check_resize_trigger + implements a load check trigger policy.

    2. cc_hash_max_collision_check_resize_trigger +@@ -876,7 +876,7 @@ + each node, and maintains node invariants (see [biblio.clrs2001].) The first stores in + each node the size of the sub-tree rooted at the node; the + second stores at each node the maximal endpoint of the +- intervals at the sub-tree rooted at the node.

      Figure 22.22. Tree node invariants

      Tree node invariants

      Supporting such trees is difficult for a number of ++ intervals at the sub-tree rooted at the node.

      Figure 22.22. Tree node invariants

      Tree node invariants

      Supporting such trees is difficult for a number of + reasons:

      1. There must be a way to specify what a node's metadata + should be (if any).

      2. Various operations can invalidate node + invariants. The graphic below shows how a right rotation, +@@ -890,7 +890,7 @@ + metadata.

      3. It is not feasible to know in advance which methods trees + can support. Besides the usual find method, the + first tree can support a find_by_order method, while +- the second can support an overlaps method.

      Figure 22.23. Tree node invalidation

      Tree node invalidation

      These problems are solved by a combination of two means: ++ the second can support an overlaps method.

    Figure 22.23. Tree node invalidation

    Tree node invalidation

    These problems are solved by a combination of two means: + node iterators, and template-template node updater + parameters.

    Node Iterators

    Each tree-based container defines two additional iterator + types, const_node_iterator +@@ -919,7 +919,7 @@ + node_update class, and publicly subclasses + node_update. The graphic below shows this + scheme, as well as some predefined policies (which are explained +- below).

    Figure 22.24. A tree and its update policy

    A tree and its update policy

    node_update (an instantiation of ++ below).

    Figure 22.24. A tree and its update policy

    A tree and its update policy

    node_update (an instantiation of + Node_Update) must define metadata_type as + the type of metadata it requires. For order statistics, + e.g., metadata_type might be size_t. +@@ -938,7 +938,7 @@ + nd_it. For example, say node x in the + graphic below label A has an invalid invariant, but its' children, + y and z have valid invariants. After the invocation, all three +- nodes should have valid invariants, as in label B.

    Figure 22.25. Restoring node invariants

    Restoring node invariants

    When a tree operation might invalidate some node invariant, ++ nodes should have valid invariants, as in label B.

    Figure 22.25. Restoring node invariants

    Restoring node invariants

    When a tree operation might invalidate some node invariant, + it invokes this method in its node_update base to + restore the invariant. For example, the graphic below shows + an insert operation (point A); the tree performs some +@@ -946,7 +946,7 @@ + C, and D). (It is well known that any insert, + erase, split or join, can restore + all node invariants by a small number of node invariant updates ([biblio.clrs2001]) +- .

    Figure 22.26. Insert update sequence

    Insert update sequence

    To complete the description of the scheme, three questions ++ .

    Figure 22.26. Insert update sequence

    Insert update sequence

    To complete the description of the scheme, three questions + need to be answered:

    1. How can a tree which supports order statistics define a + method such as find_by_order?

    2. How can the node updater base access methods of the + tree?

    3. How can the following cyclic dependency be resolved? +@@ -988,7 +988,7 @@ + node's metadata (this is halting reducible). In the graphic + below, assume the shaded node is inserted. The tree would have + to traverse the useless path shown to the root, applying +- redundant updates all the way.

    Figure 22.27. Useless update path

    Useless update path

    A null policy class, null_node_update ++ redundant updates all the way.

Figure 22.27. Useless update path

Useless update path

A null policy class, null_node_update + solves both these problems. The tree detects that node + invariants are irrelevant, and defines all accordingly.

Split and Join

Tree-based containers support split and join methods. + It is possible to split a tree so that it passes +@@ -1071,7 +1071,7 @@ + sub-tree with leafs "a" and "as". The maximal common prefix is + "a". The internal node contains, consequently, to const + iterators, one pointing to 'a', and the other to +- 's'.

Figure 22.28. A PATRICIA trie

A PATRICIA trie

Node Invariants

Trie-based containers support node invariants, as do ++ 's'.

Figure 22.28. A PATRICIA trie

A PATRICIA trie

Node Invariants

Trie-based containers support node invariants, as do + tree-based containers. There are two minor + differences, though, which, unfortunately, thwart sharing them + sharing the same node-updating policies:

  1. A trie's Node_Update template-template +@@ -1080,7 +1080,7 @@ + parametrized by Cmp_Fn.

  2. Tree-based containers store values in all nodes, while + trie-based containers (at least in this implementation) store + values in leafs.

The graphic below shows the scheme, as well as some predefined +- policies (which are explained below).

Figure 22.29. A trie and its update policy

A trie and its update policy

This library offers the following pre-defined trie node ++ policies (which are explained below).

Figure 22.29. A trie and its update policy

A trie and its update policy

This library offers the following pre-defined trie node + updating policies:

  1. + trie_order_statistics_node_update + supports order statistics. +@@ -1128,7 +1128,7 @@ + simple list of integer keys. If we search for the integer 6, we + are paying an overhead: the link with key 6 is only the fifth + link; if it were the first link, it could be accessed +- faster.

    Figure 22.30. A simple list

    A simple list

    List-update algorithms reorder lists as elements are ++ faster.

    Figure 22.30. A simple list

    A simple list

    List-update algorithms reorder lists as elements are + accessed. They try to determine, by the access history, which + keys to move to the front of the list. Some of these algorithms + require adding some metadata alongside each entry.

    For example, in the graphic below label A shows the counter +@@ -1138,7 +1138,7 @@ + predetermined value, say 10, as shown in label C, the count is set + to 0 and the node is moved to the front of the list, as in label + D. +-

    Figure 22.31. The counter algorithm

    The counter algorithm

Policies

this library allows instantiating lists with policies ++

Figure 22.31. The counter algorithm

The counter algorithm

Policies

this library allows instantiating lists with policies + implementing any algorithm moving nodes to the front of the + list (policies implementing algorithms interchanging nodes are + unsupported).

Associative containers based on lists are parametrized by a +@@ -1310,7 +1310,7 @@ + sequence; the second uses a tree (or forest of trees), which is + typically less structured than an associative container's tree; + the third simply uses an associative container. These are +- shown in the graphic below, in labels A1 and A2, label B, and label C.

Figure 22.32. Underlying Priority-Queue Data-Structures.

Underlying Priority-Queue Data-Structures.

Roughly speaking, any value that is both pushed and popped ++ shown in the graphic below, in labels A1 and A2, label B, and label C.

Figure 22.32. Underlying Priority-Queue Data-Structures.

Underlying Priority-Queue Data-Structures.

Roughly speaking, any value that is both pushed and popped + from a priority queue must incur a logarithmic expense (in the + amortized sense). Any priority queue implementation that would + avoid this, would violate known bounds on comparison-based +@@ -1390,7 +1390,7 @@ + container Cntnr, the tag of the underlying + data structure can be found via typename + Cntnr::container_category; this is one of the possible tags shown in the graphic below. +-

Figure 22.33. Priority-Queue Data-Structure Tags.

Priority-Queue Data-Structure Tags.

Additionally, a traits mechanism can be used to query a ++

Figure 22.33. Priority-Queue Data-Structure Tags.

Priority-Queue Data-Structure Tags.

Additionally, a traits mechanism can be used to query a + container type for its attributes. Given any container + Cntnr, then

__gnu_pbds::container_traits<Cntnr>

+ is a traits class identifying the properties of the +Index: libstdc++-v3/doc/html/manual/using.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/using.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/using.html (.../branches/gcc-4_9-branch) +@@ -10,5 +10,5 @@ + enumerated and detailed in the table below. +

+ By default, g++ is equivalent to g++ -std=gnu++98. The standard library also defaults to this dialect. +-

Table 3.1. C++ Command Options

Option FlagsDescription
-std=c++98Use the 1998 ISO C++ standard plus amendments.
-std=gnu++98As directly above, with GNU extensions.
-std=c++11Use the 2011 ISO C++ standard.
-std=gnu++11As directly above, with GNU extensions.
-fexceptionsSee exception-free dialect
-frttiAs above, but RTTI-free dialect.
-pthread or -pthreadsFor ISO C++11 <thread>, <future>, ++

Table 3.1. C++ Command Options

Option FlagsDescription
-std=c++98Use the 1998 ISO C++ standard plus amendments.
-std=gnu++98As directly above, with GNU extensions.
-std=c++11Use the 2011 ISO C++ standard.
-std=gnu++11As directly above, with GNU extensions.
-fexceptionsSee exception-free dialect
-frttiAs above, but RTTI-free dialect.
-pthread or -pthreadsFor ISO C++11 <thread>, <future>, + <mutex>, or <condition_variable>.
-fopenmpFor parallel mode.

+\ No newline at end of file +Index: libstdc++-v3/doc/html/manual/concurrency.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/concurrency.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/concurrency.html (.../branches/gcc-4_9-branch) +@@ -6,7 +6,7 @@ + Standard Contents +
 Next

Chapter 15.  + Concurrency +- ++ +

Table of Contents

API Reference

+ Facilities for concurrent operation, and control thereof. +

API Reference

+Index: libstdc++-v3/doc/html/manual/policy_data_structures.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/policy_data_structures.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/policy_data_structures.html (.../branches/gcc-4_9-branch) +@@ -248,7 +248,7 @@ + these invariants, one must supply some policy that is aware + of these changes. Without this, it would be better to use a + linked list (in itself very efficient for these purposes). +-

Figure 22.1. Node Invariants

Node Invariants

Underlying Data Structures

++

Figure 22.1. Node Invariants

Node Invariants

Underlying Data Structures

+ The standard C++ library contains associative containers based on + red-black trees and collision-chaining hash tables. These are + very useful, but they are not ideal for all types of +@@ -256,7 +256,7 @@ +

+ The figure below shows the different underlying data structures + currently supported in this library. +-

Figure 22.2. Underlying Associative Data Structures

Underlying Associative Data Structures

++

Figure 22.2. Underlying Associative Data Structures

Underlying Associative Data Structures

+ A shows a collision-chaining hash-table, B shows a probing + hash-table, C shows a red-black tree, D shows a splay tree, E shows + a tree based on an ordered vector(implicit in the order of the +@@ -375,7 +375,7 @@ + no guarantee that the elements traversed will coincide with the + logical elements between 1 and 5, as in + label B. +-

Figure 22.3. Range Iteration in Different Data Structures

Node Invariants

++

Figure 22.3. Range Iteration in Different Data Structures

Node Invariants

+ In our opinion, this problem is not caused just because + red-black trees are order preserving while + collision-chaining hash tables are (generally) not - it +@@ -426,7 +426,7 @@ + list, as in the graphic below, label B. Here the iterators are as + light as can be, but the hash-table's operations are more + complicated. +-

Figure 22.4. Point Iteration in Hash Data Structures

Point Iteration in Hash Data Structures

++

Figure 22.4. Point Iteration in Hash Data Structures

Point Iteration in Hash Data Structures

+ It should be noted that containers based on collision-chaining + hash-tables are not the only ones with this type of behavior; + many other self-organizing data structures display it as well. +@@ -442,7 +442,7 @@ + container. The graphic below shows three cases: A1 and A2 show + a red-black tree; B1 and B2 show a probing hash-table; C1 and C2 + show a collision-chaining hash table. +-

Figure 22.5. Effect of erase in different underlying data structures

Effect of erase in different underlying data structures

  1. ++

    Figure 22.5. Effect of erase in different underlying data structures

    Effect of erase in different underlying data structures

    1. + Erasing 5 from A1 yields A2. Clearly, an iterator to 3 can + be de-referenced and incremented. The sequence of iterators + changed, but in a way that is well-defined by the interface. +@@ -678,7 +678,7 @@ + typically less structured than an associative container's tree; + the third simply uses an associative container. These are + shown in the figure below with labels A1 and A2, B, and C. +-

      Figure 22.6. Underlying Priority Queue Data Structures

      Underlying Priority Queue Data Structures

      ++

      Figure 22.6. Underlying Priority Queue Data Structures

      Underlying Priority Queue Data Structures

      + No single implementation can completely replace any of the + others. Some have better push + and pop amortized performance, some have +@@ -1304,4 +1304,4 @@ + Wickland + . + National Psychological Institute +- .

++ .

+\ No newline at end of file +Index: libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html (.../branches/gcc-4_9-branch) +@@ -75,7 +75,7 @@ +

+ Consider a block of size 64 ints. In memory, it would look like this: + (assume a 32-bit system where, size_t is a 32-bit entity). +-

Table 21.1. Bitmap Allocator Memory Map

268042949672954294967295Data -> Space for 64 ints

++

Table 21.1. Bitmap Allocator Memory Map

268042949672954294967295Data -> Space for 64 ints

+ The first Column(268) represents the size of the Block in bytes as + seen by the Bitmap Allocator. Internally, a global free list is + used to keep track of the free blocks used and given back by the +Index: libstdc++-v3/doc/html/manual/appendix_contributing.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/appendix_contributing.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/appendix_contributing.html (.../branches/gcc-4_9-branch) +@@ -6,7 +6,7 @@ + Appendices +

 Next

+ Contributing +- ++ +

+ The GNU C++ Library is part of GCC and follows the same development model, + so the general rules for +Index: libstdc++-v3/doc/html/manual/profile_mode.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/profile_mode.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/profile_mode.html (.../branches/gcc-4_9-branch) +@@ -137,7 +137,7 @@ + call context. + (Environment variable not supported.) +

+-

Bibliography

++

Bibliography

+ Perflint: A Context Sensitive Performance Advisor for C++ Programs + . Lixia Liu. Silvius Rus. Copyright © 2009 . + Proceedings of the 2009 International Symposium on Code Generation +Index: libstdc++-v3/doc/html/manual/support.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/support.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/support.html (.../branches/gcc-4_9-branch) +@@ -6,7 +6,7 @@ + Standard Contents +

 Next

Chapter 4.  + Support +- ++ +

+ This part deals with the functions called and objects created + automatically during the course of a program's existence. +Index: libstdc++-v3/doc/html/manual/numerics.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/numerics.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/numerics.html (.../branches/gcc-4_9-branch) +@@ -6,7 +6,7 @@ + Standard Contents +

 Next

Chapter 12.  + Numerics +- ++ +

Complex

+

complex Processing

+

Using complex<> becomes even more comple- er, sorry, +Index: libstdc++-v3/doc/html/manual/using_exceptions.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/using_exceptions.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/using_exceptions.html (.../branches/gcc-4_9-branch) +@@ -265,7 +265,7 @@ + } + catch(...) + { this->_M_setstate(ios_base::badbit); } +-

Bibliography

++

Bibliography

+ + System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) + +@@ -274,40 +274,40 @@ + . Copyright © 2008 + The Open Group/The Institute of Electrical and Electronics + Engineers, Inc. +- .

++ .

+ + Error and Exception Handling + + . David Abrahams . + Boost +- .

++ .

+ + Exception-Safety in Generic Components + + . David Abrahams. + Boost +- .

++ .

+ + Standard Library Exception Policy + + . Matt Austern. + WG21 N1077 +- .

++ .

+ + ia64 c++ abi exception handling + + . Richard Henderson. + GNU +- .

++ .

++ . Bjarne Stroustrup.

+ Exceptional C++ + . + Exception-Safety Issues and Techniques +- . Herb Sutter.

++ . Herb Sutter.

++ .

+\ No newline at end of file +Index: libstdc++-v3/doc/html/manual/abi.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/abi.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/abi.html (.../branches/gcc-4_9-branch) +@@ -493,39 +493,39 @@ + + C++ ABI Summary + +- .

++ .

++ .

++ .

++ .

++ . Ulrich Drepper.

++ .

+ + Dynamic Shared Objects: Survey and Issues + + . + ISO C++ J16/06-0046 +- . Benjamin Kosnik.

++ . Benjamin Kosnik.

+ + Versioning With Namespaces + + . + ISO C++ J16/06-0083 +- . Benjamin Kosnik.

++ . Benjamin Kosnik.

Prev The GNU C++ Library Manual Next

+\ No newline at end of file +Index: libstdc++-v3/doc/html/manual/atomics.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/atomics.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/atomics.html (.../branches/gcc-4_9-branch) +@@ -6,7 +6,7 @@ + Standard Contents +
 Next

Chapter 14.  + Atomics +- ++ +

Table of Contents

API Reference

+ Facilities for atomic operations. +

API Reference

+Index: libstdc++-v3/doc/html/manual/policy_data_structures_using.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/policy_data_structures_using.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/policy_data_structures_using.html (.../branches/gcc-4_9-branch) +@@ -61,7 +61,7 @@ + In addition, there are the following diagnostics classes, + used to report errors specific to this library's data + structures. +-

Figure 22.7. Exception Hierarchy

Exception Hierarchy

Tutorial

Basic Use

++

Figure 22.7. Exception Hierarchy

Exception Hierarchy

Tutorial

Basic Use

+ For the most part, the policy-based containers containers in + namespace __gnu_pbds have the same interface as + the equivalent containers in the standard C++ library, except for +Index: libstdc++-v3/doc/html/manual/parallel_mode_using.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/parallel_mode_using.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/parallel_mode_using.html (.../branches/gcc-4_9-branch) +@@ -62,4 +62,4 @@ + flags for atomic operations.) +

The following table provides the names and headers of all the + parallel algorithms that can be used in a similar manner: +-

Table 18.1. Parallel Algorithms

AlgorithmHeaderParallel algorithmParallel header
std::accumulatenumeric__gnu_parallel::accumulateparallel/numeric
std::adjacent_differencenumeric__gnu_parallel::adjacent_differenceparallel/numeric
std::inner_productnumeric__gnu_parallel::inner_productparallel/numeric
std::partial_sumnumeric__gnu_parallel::partial_sumparallel/numeric
std::adjacent_findalgorithm__gnu_parallel::adjacent_findparallel/algorithm
std::countalgorithm__gnu_parallel::countparallel/algorithm
std::count_ifalgorithm__gnu_parallel::count_ifparallel/algorithm
std::equalalgorithm__gnu_parallel::equalparallel/algorithm
std::findalgorithm__gnu_parallel::findparallel/algorithm
std::find_ifalgorithm__gnu_parallel::find_ifparallel/algorithm
std::find_first_ofalgorithm__gnu_parallel::find_first_ofparallel/algorithm
std::for_eachalgorithm__gnu_parallel::for_eachparallel/algorithm
std::generatealgorithm__gnu_parallel::generateparallel/algorithm
std::generate_nalgorithm__gnu_parallel::generate_nparallel/algorithm
std::lexicographical_comparealgorithm__gnu_parallel::lexicographical_compareparallel/algorithm
std::mismatchalgorithm__gnu_parallel::mismatchparallel/algorithm
std::searchalgorithm__gnu_parallel::searchparallel/algorithm
std::search_nalgorithm__gnu_parallel::search_nparallel/algorithm
std::transformalgorithm__gnu_parallel::transformparallel/algorithm
std::replacealgorithm__gnu_parallel::replaceparallel/algorithm
std::replace_ifalgorithm__gnu_parallel::replace_ifparallel/algorithm
std::max_elementalgorithm__gnu_parallel::max_elementparallel/algorithm
std::mergealgorithm__gnu_parallel::mergeparallel/algorithm
std::min_elementalgorithm__gnu_parallel::min_elementparallel/algorithm
std::nth_elementalgorithm__gnu_parallel::nth_elementparallel/algorithm
std::partial_sortalgorithm__gnu_parallel::partial_sortparallel/algorithm
std::partitionalgorithm__gnu_parallel::partitionparallel/algorithm
std::random_shufflealgorithm__gnu_parallel::random_shuffleparallel/algorithm
std::set_unionalgorithm__gnu_parallel::set_unionparallel/algorithm
std::set_intersectionalgorithm__gnu_parallel::set_intersectionparallel/algorithm
std::set_symmetric_differencealgorithm__gnu_parallel::set_symmetric_differenceparallel/algorithm
std::set_differencealgorithm__gnu_parallel::set_differenceparallel/algorithm
std::sortalgorithm__gnu_parallel::sortparallel/algorithm
std::stable_sortalgorithm__gnu_parallel::stable_sortparallel/algorithm
std::unique_copyalgorithm__gnu_parallel::unique_copyparallel/algorithm

+\ No newline at end of file ++

Table 18.1. Parallel Algorithms

AlgorithmHeaderParallel algorithmParallel header
std::accumulatenumeric__gnu_parallel::accumulateparallel/numeric
std::adjacent_differencenumeric__gnu_parallel::adjacent_differenceparallel/numeric
std::inner_productnumeric__gnu_parallel::inner_productparallel/numeric
std::partial_sumnumeric__gnu_parallel::partial_sumparallel/numeric
std::adjacent_findalgorithm__gnu_parallel::adjacent_findparallel/algorithm
std::countalgorithm__gnu_parallel::countparallel/algorithm
std::count_ifalgorithm__gnu_parallel::count_ifparallel/algorithm
std::equalalgorithm__gnu_parallel::equalparallel/algorithm
std::findalgorithm__gnu_parallel::findparallel/algorithm
std::find_ifalgorithm__gnu_parallel::find_ifparallel/algorithm
std::find_first_ofalgorithm__gnu_parallel::find_first_ofparallel/algorithm
std::for_eachalgorithm__gnu_parallel::for_eachparallel/algorithm
std::generatealgorithm__gnu_parallel::generateparallel/algorithm
std::generate_nalgorithm__gnu_parallel::generate_nparallel/algorithm
std::lexicographical_comparealgorithm__gnu_parallel::lexicographical_compareparallel/algorithm
std::mismatchalgorithm__gnu_parallel::mismatchparallel/algorithm
std::searchalgorithm__gnu_parallel::searchparallel/algorithm
std::search_nalgorithm__gnu_parallel::search_nparallel/algorithm
std::transformalgorithm__gnu_parallel::transformparallel/algorithm
std::replacealgorithm__gnu_parallel::replaceparallel/algorithm
std::replace_ifalgorithm__gnu_parallel::replace_ifparallel/algorithm
std::max_elementalgorithm__gnu_parallel::max_elementparallel/algorithm
std::mergealgorithm__gnu_parallel::mergeparallel/algorithm
std::min_elementalgorithm__gnu_parallel::min_elementparallel/algorithm
std::nth_elementalgorithm__gnu_parallel::nth_elementparallel/algorithm
std::partial_sortalgorithm__gnu_parallel::partial_sortparallel/algorithm
std::partitionalgorithm__gnu_parallel::partitionparallel/algorithm
std::random_shufflealgorithm__gnu_parallel::random_shuffleparallel/algorithm
std::set_unionalgorithm__gnu_parallel::set_unionparallel/algorithm
std::set_intersectionalgorithm__gnu_parallel::set_intersectionparallel/algorithm
std::set_symmetric_differencealgorithm__gnu_parallel::set_symmetric_differenceparallel/algorithm
std::set_differencealgorithm__gnu_parallel::set_differenceparallel/algorithm
std::sortalgorithm__gnu_parallel::sortparallel/algorithm
std::stable_sortalgorithm__gnu_parallel::stable_sortparallel/algorithm
std::unique_copyalgorithm__gnu_parallel::unique_copyparallel/algorithm

+\ No newline at end of file +Index: libstdc++-v3/doc/html/manual/std_contents.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/std_contents.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/std_contents.html (.../branches/gcc-4_9-branch) +@@ -12,13 +12,13 @@ +
Exceptions
API Reference
Adding Data to exception
Concept Checking
6. + Utilities + +-
Functors
Pairs
Memory
Allocators
Requirements
Design Issues
Implementation
Interface Design
Selecting Default Allocation Policy
Disabling Memory Caching
Using a Specific Allocator
Custom Allocators
Extension Allocators
auto_ptr
Limitations
Use in Containers
shared_ptr
Requirements
Design Issues
Implementation
Class Hierarchy
Thread Safety
Selecting Lock Policy
Related functions and classes
Use
Examples
Unresolved Issues
Acknowledgments
Traits
7. ++
Functors
Pairs
Memory
Allocators
Requirements
Design Issues
Implementation
Interface Design
Selecting Default Allocation Policy
Disabling Memory Caching
Using a Specific Allocator
Custom Allocators
Extension Allocators
auto_ptr
Limitations
Use in Containers
shared_ptr
Requirements
Design Issues
Implementation
Class Hierarchy
Thread Safety
Selecting Lock Policy
Related functions and classes
Use
Examples
Unresolved Issues
Acknowledgments
Traits
7. + Strings + +
String Classes
Simple Transformations
Case Sensitivity
Arbitrary Character Types
Tokenizing
Shrink to Fit
CString (MFC)
8. + Localization + +-
Locales
locale
Requirements
Design
Implementation
Interacting with "C" locales
Future
Facets
ctype
Implementation
Specializations
Future
codecvt
Requirements
Design
wchar_t Size
Support for Unicode
Other Issues
Implementation
Use
Future
messages
Requirements
Design
Implementation
Models
The GNU Model
Use
Future
9. ++
Locales
locale
Requirements
Design
Implementation
Interacting with "C" locales
Future
Facets
ctype
Implementation
Specializations
Future
codecvt
Requirements
Design
wchar_t Size
Support for Unicode
Other Issues
Implementation
Use
Future
messages
Requirements
Design
Implementation
Models
The GNU Model
Use
Future
9. + Containers + +
Sequences
list
list::size() is O(n)
Associative
Insertion Hints
bitset
Size Variable
Type String
Unordered Associative
Insertion Hints
Hash Code
Hash Code Caching Policy
Interacting with C
Containers vs. Arrays
10. +Index: libstdc++-v3/doc/html/manual/appendix.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/appendix.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/appendix.html (.../branches/gcc-4_9-branch) +@@ -16,7 +16,7 @@ + Existing tests +
+ C++11 Requirements Test Sequence Descriptions +-
ABI Policy and Guidelines
The C++ Interface
Versioning
Goals
History
Prerequisites
Configuring
Checking Active
Allowed Changes
Prohibited Changes
Implementation
Testing
Single ABI Testing
Multiple ABI Testing
Outstanding Issues
API Evolution and Deprecation History
3.0
3.1
3.2
3.3
3.4
4.0
4.1
4.2
4.3
4.4
4.5
Backwards Compatibility
First
No ios_base
No cout in <ostream.h>, no cin in <istream.h>
Second
Namespace std:: not supported
Illegal iterator usage
isspace from <cctype> is a macro ++
ABI Policy and Guidelines
The C++ Interface
Versioning
Goals
History
Prerequisites
Configuring
Checking Active
Allowed Changes
Prohibited Changes
Implementation
Testing
Single ABI Testing
Multiple ABI Testing
Outstanding Issues
API Evolution and Deprecation History
3.0
3.1
3.2
3.3
3.4
4.0
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
Backwards Compatibility
First
No ios_base
No cout in <ostream.h>, no cin in <istream.h>
Second
Namespace std:: not supported
Illegal iterator usage
isspace from <cctype> is a macro +
No vector::at, deque::at, string::at
No std::char_traits<char>::eof
No string::clear
+ Removal of ostream::form and istream::scan + extensions +Index: libstdc++-v3/doc/html/manual/memory.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/memory.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/memory.html (.../branches/gcc-4_9-branch) +@@ -92,7 +92,7 @@ + or loading and unloading shared objects in memory. As such, using + caching allocators on systems that do not support + abi::__cxa_atexit is not recommended. +-

Implementation

Interface Design

++

Implementation

Interface Design

+ The only allocator interface that + is supported is the standard C++ interface. As such, all STL + containers have been adjusted, and all external allocators have +@@ -105,7 +105,7 @@ +

+ The base class that allocator is derived from + may not be user-configurable. +-

Selecting Default Allocation Policy

++

Selecting Default Allocation Policy

+ It's difficult to pick an allocation strategy that will provide + maximum utility, without excessively penalizing some behavior. In + fact, it's difficult just deciding which typical actions to measure +@@ -142,7 +142,7 @@ + The current default choice for + allocator is + __gnu_cxx::new_allocator. +-

Disabling Memory Caching

++

Disabling Memory Caching

+ In use, allocator may allocate and + deallocate using implementation-specific strategies and + heuristics. Because of this, a given call to an allocator object's +@@ -309,33 +309,33 @@ + of the used and unused memory locations. It has its own + chapter + in the documentation. +-

Bibliography

++

Bibliography

+ ISO/IEC 14882:1998 Programming languages - C++ + . + isoc++_1998 +- 20.4 Memory.

++ 20.4 Memory.

+ + The Standard Librarian: What Are Allocators Good For? + + . Matt Austern. + C/C++ Users Journal +- .

++ .

++ . Emery Berger.

+ + Reconsidering Custom Memory Allocation + +- . Emery Berger. Ben Zorn. Kathryn McKinley. Copyright © 2002 OOPSLA.

++ . Emery Berger. Ben Zorn. Kathryn McKinley. Copyright © 2002 OOPSLA.

+ + Allocator Types + + . Klaus Kreft. Angelika Langer. + C/C++ Users Journal +- .

The C++ Programming Language. Bjarne Stroustrup. Copyright © 2000 . 19.4 Allocators. ++ .

The C++ Programming Language. Bjarne Stroustrup. Copyright © 2000 . 19.4 Allocators. + Addison Wesley +- .

Yalloc: A Recycling C++ Allocator. Felix Yen.

auto_ptr

Limitations

Explaining all of the fun and delicious things that can ++ .

Yalloc: A Recycling C++ Allocator. Felix Yen.

auto_ptr

Limitations

Explaining all of the fun and delicious things that can + happen with misuse of the auto_ptr class + template (called AP here) would take some + time. Suffice it to say that the use of AP +@@ -445,7 +445,7 @@ + Derived classes override those functions to destroy resources in a context + where the correct dynamic type is known. This is an application of the + technique known as type erasure. +-

Implementation

Class Hierarchy

++

Implementation

Class Hierarchy

+ A shared_ptr<T> contains a pointer of + type T* and an object of type + __shared_count. The shared_count contains a +@@ -492,7 +492,7 @@ + aliasing constructor, make_shared & allocate_shared. Additionally, + the constructors taking auto_ptr parameters are + deprecated in C++11 mode. +-

Thread Safety

++

Thread Safety

+ The + Thread + Safety section of the Boost shared_ptr documentation says "shared_ptr +@@ -537,7 +537,7 @@ + shared_ptr in libstdc++ the compiler and library are fixed, which + makes things much simpler: we have an atomic CAS or we don't, see Lock + Policy below for details. +-

Selecting Lock Policy

++

Selecting Lock Policy

+

+ There is a single _Sp_counted_base class, + which is a template parameterized on the enum +@@ -578,7 +578,7 @@ + ext/atomicity.h, which detect if the program + is multi-threaded. If only one thread of execution exists in + the program then less expensive non-atomic operations are used. +-

Related functions and classes
dynamic_pointer_cast, static_pointer_cast, ++

Related functions and classes
dynamic_pointer_cast, static_pointer_cast, + const_pointer_cast

+ As noted in N2351, these functions can be implemented non-intrusively using + the alias constructor. However the aliasing constructor is only available +@@ -611,13 +611,13 @@ + As well as the extra constructors, this implementation also needs some + members of _Sp_counted_deleter to be protected where they could otherwise + be private. +-

Use

Examples

++

Use

Examples

+ Examples of use can be found in the testsuite, under + testsuite/tr1/2_general_utilities/shared_ptr, + testsuite/20_util/shared_ptr + and + testsuite/20_util/weak_ptr. +-

Unresolved Issues

++

Unresolved Issues

+ The shared_ptr atomic access + clause in the C++11 standard is not implemented in GCC. +

+@@ -658,28 +658,28 @@ + code to work with, Peter Dimov in particular for his help and + invaluable advice on thread safety. Phillip Jordan and Paolo + Carlini for the lock policy implementation. +-

++ .

+\ No newline at end of file +Index: libstdc++-v3/doc/html/manual/api.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/api.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/api.html (.../branches/gcc-4_9-branch) +@@ -77,11 +77,11 @@ + __alloc to select an underlying allocator that + satisfied memory allocation requests. The selection of this + underlying allocator was not user-configurable. +-

Table B.6. Extension Allocators

Allocator (3.4)Header (3.4)Allocator (3.[0-3])Header (3.[0-3])
__gnu_cxx::new_allocator<T>ext/new_allocator.hstd::__new_allocmemory
__gnu_cxx::malloc_allocator<T>ext/malloc_allocator.hstd::__malloc_alloc_template<int>memory
__gnu_cxx::debug_allocator<T>ext/debug_allocator.hstd::debug_alloc<T>memory
__gnu_cxx::__pool_alloc<T>ext/pool_allocator.hstd::__default_alloc_template<bool,int>memory
__gnu_cxx::__mt_alloc<T>ext/mt_allocator.h
__gnu_cxx::bitmap_allocator<T>ext/bitmap_allocator.h

Releases after gcc-3.4 have continued to add to the collection ++

Table B.6. Extension Allocators

Allocator (3.4)Header (3.4)Allocator (3.[0-3])Header (3.[0-3])
__gnu_cxx::new_allocator<T>ext/new_allocator.hstd::__new_allocmemory
__gnu_cxx::malloc_allocator<T>ext/malloc_allocator.hstd::__malloc_alloc_template<int>memory
__gnu_cxx::debug_allocator<T>ext/debug_allocator.hstd::debug_alloc<T>memory
__gnu_cxx::__pool_alloc<T>ext/pool_allocator.hstd::__default_alloc_template<bool,int>memory
__gnu_cxx::__mt_alloc<T>ext/mt_allocator.h
__gnu_cxx::bitmap_allocator<T>ext/bitmap_allocator.h

Releases after gcc-3.4 have continued to add to the collection + of available allocators. All of these new allocators are + standard-style. The following table includes details, along with + the first released version of GCC that included the extension allocator. +-

Table B.7. Extension Allocators Continued

AllocatorIncludeVersion
__gnu_cxx::array_allocator<T>ext/array_allocator.h4.0.0
__gnu_cxx::throw_allocator<T>ext/throw_allocator.h4.2.0

++

Table B.7. Extension Allocators Continued

AllocatorIncludeVersion
__gnu_cxx::array_allocator<T>ext/array_allocator.h4.0.0
__gnu_cxx::throw_allocator<T>ext/throw_allocator.h4.2.0

+ Debug mode first appears. +

+ Precompiled header support PCH support. +@@ -233,10 +233,34 @@ +

+ Python pretty-printers are added for use with appropriately-advanced versions of gdb. +

+-Audit for application of function attributes notrow, const, pure, and noreturn. ++Audit for application of function attributes nothrow, const, pure, and noreturn. +

+ The default behavior for comparing typeinfo names changed, so + in typeinfo, __GXX_MERGED_TYPEINFO_NAMES + now defaults to zero. +

Extensions modified: ext/throw_allocator.h. +-

+\ No newline at end of file ++

4.6

++ Use constexpr and nullptr where appropriate throughout the library. ++

++ The library was updated to avoid including ++ stddef.h in order ++ to reduce namespace pollution. ++

Reference-count annotations to assist data race detectors. ++

++ Added make_exception_ptr as an alias of ++ copy_exception. ++

4.7

Use of noexcept throughout library.

Partial support for C++11 allocators first appears.

++ monotonic_clock renamed to ++ steady_clock as required by the final C++11 ++ standard. ++

A new clocale model for newlib is available.

++ The library was updated to avoid including ++ unistd.h in order ++ to reduce namespace pollution. ++

Debug Mode was improved for unordered containers.

4.8

++ New random number engines and distributions. ++ Optimisations for random. ++

New --enable-libstdcxx-verbose configure option

++ The --enable-libstdcxx-time configure option becomes unnecessary given a ++ sufficiently recent glibc. ++

4.9

Implementation of regex completed.

C++14 library and TS implementations are added.

copy_exception deprecated.

__gnu_cxx::array_allocator deprecated.

+\ No newline at end of file +Index: libstdc++-v3/doc/html/manual/ext_preface.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/ext_preface.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/ext_preface.html (.../branches/gcc-4_9-branch) +@@ -2,7 +2,7 @@ +

++

 Next

+ Here we will make an attempt at describing the non-Standard + extensions to the library. Some of these are from older versions of + standard library components, namely SGI's STL, and some of these are +Index: libstdc++-v3/doc/html/manual/strings.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/strings.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/strings.html (.../branches/gcc-4_9-branch) +@@ -6,7 +6,7 @@ + Standard Contents +

 Next

Chapter 7.  + Strings +- ++ +

String Classes

Simple Transformations

+ Here are Standard, simple, and portable ways to perform common + transformations on a string instance, such as +Index: libstdc++-v3/doc/html/manual/profile_mode_diagnostics.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/profile_mode_diagnostics.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/profile_mode_diagnostics.html (.../branches/gcc-4_9-branch) +@@ -17,7 +17,7 @@ + A high accuracy means that the diagnostic is unlikely to be wrong. + These grades are not perfect. They are just meant to guide users with + specific needs or time budgets. +-

Table 19.2. Profile Diagnostics

GroupFlagBenefitCostFreq.Implemented 
++

Table 19.2. Profile Diagnostics

GroupFlagBenefitCostFreq.Implemented 
+ CONTAINERS + HASHTABLE_TOO_SMALL101 10yes
  + HASHTABLE_TOO_LARGE51 10yes
  +Index: libstdc++-v3/doc/html/manual/ext_concurrency_impl.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/ext_concurrency_impl.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/ext_concurrency_impl.html (.../branches/gcc-4_9-branch) +@@ -41,4 +41,4 @@ + functions, and usage found in the usual <pthread.h> file, + including pthread_t, pthread_once_t, pthread_create, + etc. +-

++

+\ No newline at end of file +Index: libstdc++-v3/doc/html/manual/documentation_hacking.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/documentation_hacking.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/documentation_hacking.html (.../branches/gcc-4_9-branch) +@@ -112,7 +112,7 @@ + supported, and are always aliased to dummy rules. These + unsupported formats are: info, + ps, and dvi. +-

Doxygen

Prerequisites

Table B.1. Doxygen Prerequisites

ToolVersionRequired By
coreutils8.5all
bash4.1all
doxygen1.7.6.1all
graphviz2.26graphical hierarchies
pdflatex2007-59pdf output

++

Doxygen

Prerequisites

Table B.1. Doxygen Prerequisites

ToolVersionRequired By
coreutils8.5all
bash4.1all
doxygen1.7.6.1all
graphviz2.26graphical hierarchies
pdflatex2007-59pdf output

+ Prerequisite tools are Bash 2.0 or later, + Doxygen, and + the GNU +@@ -309,7 +309,7 @@ + writing Doxygen comments. Single and double quotes, and + separators in filenames are two common trouble spots. When in + doubt, consult the following table. +-

Table B.2. HTML to Doxygen Markup Comparison

HTMLDoxygen
\\\
"\"
'\'
<i>@a word
<b>@b word
<code>@c word
<em>@a word
<em><em>two words or more</em>

Docbook

Prerequisites

Table B.3. Docbook Prerequisites

ToolVersionRequired By
docbook5-style-xsl1.76.1all
xsltproc1.1.26all
xmllint2.7.7validation
dblatex0.3pdf output
pdflatex2007-59pdf output
docbook2X0.8.8info output
epub3 stylesheetsb3epub output

++

Table B.2. HTML to Doxygen Markup Comparison

HTMLDoxygen
\\\
"\"
'\'
<i>@a word
<b>@b word
<code>@c word
<em>@a word
<em><em>two words or more</em>

Docbook

Prerequisites

Table B.3. Docbook Prerequisites

ToolVersionRequired By
docbook5-style-xsl1.76.1all
xsltproc1.1.26all
xmllint2.7.7validation
dblatex0.3pdf output
pdflatex2007-59pdf output
docbook2X0.8.8info output
epub3 stylesheetsb3epub output

+ Editing the DocBook sources requires an XML editor. Many + exist: some notable options + include emacs, Kate, +@@ -519,11 +519,11 @@ + online. + An incomplete reference for HTML to Docbook conversion is + detailed in the table below. +-

Table B.4. HTML to Docbook XML Markup Comparison

HTMLDocbook
<p><para>
<pre><computeroutput>, <programlisting>, ++

Table B.4. HTML to Docbook XML Markup Comparison

HTMLDocbook
<p><para>
<pre><computeroutput>, <programlisting>, + <literallayout>
<ul><itemizedlist>
<ol><orderedlist>
<il><listitem>
<dl><variablelist>
<dt><term>
<dd><listitem>
<a href=""><ulink url="">
<code><literal>, <programlisting>
<strong><emphasis>
<em><emphasis>
"<quote>

+ And examples of detailed markup for which there are no real HTML + equivalents are listed in the table below. +-

Table B.5. Docbook XML Element Use

ElementUse
<structname><structname>char_traits</structname>
<classname><classname>string</classname>
<function> ++

Table B.5. Docbook XML Element Use

ElementUse
<structname><structname>char_traits</structname>
<classname><classname>string</classname>
<function> +

<function>clear()</function>

+

<function>fs.clear()</function>

+
<type><type>long long</type>
<varname><varname>fs</varname>
<literal> +Index: libstdc++-v3/doc/html/manual/extensions.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/extensions.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/extensions.html (.../branches/gcc-4_9-branch) +@@ -4,7 +4,7 @@ + +
Prev The GNU C++ Library Manual Next

Part III.  + Extensions +- ++ +

Table of Contents

16. Compile Time Checks
17. Debug Mode
Intro
Semantics
Using
Using the Debug Mode
Using a Specific Debug Container
Design
Goals
Methods
The Wrapper Model
Safe Iterators
Safe Sequences (Containers)
Precondition Checking
Release- and debug-mode coexistence
Compile-time coexistence of release- and debug-mode components
Link- and run-time coexistence of release- and + debug-mode components
Alternatives for Coexistence
Other Implementations
18. Parallel Mode
Intro
Semantics
Using
Prerequisite Compiler Flags
Using Parallel Mode
Using Specific Parallel Components
Design
Interface Basics
Configuration and Tuning
Setting up the OpenMP Environment
Compile Time Switches
Run Time Settings and Defaults
Implementation Namespaces
Testing
Bibliography
19. Profile Mode
Intro
Using the Profile Mode
Tuning the Profile Mode
Design
Wrapper Model
Instrumentation
Run Time Behavior
Analysis and Diagnostics
Cost Model
Reports
Testing
Extensions for Custom Containers
Empirical Cost Model
Implementation Issues
Stack Traces
Symbolization of Instruction Addresses
Concurrency
Using the Standard Library in the Instrumentation Implementation
Malloc Hooks
Construction and Destruction of Global Objects
Developer Information
Big Picture
How To Add A Diagnostic
Diagnostics
Diagnostic Template
Containers
Hashtable Too Small
Hashtable Too Large
Inefficient Hash
Vector Too Small
Vector Too Large
Vector to Hashtable
Hashtable to Vector
Vector to List
List to Vector
List to Forward List (Slist)
Ordered to Unordered Associative Container
Algorithms
Sort Algorithm Performance
Data Locality
Need Software Prefetch
Linked Structure Locality
Multithreaded Data Access
Data Dependence Violations at Container Level
False Sharing
Statistics
Bibliography
20. The mt_allocator
Intro
Design Issues
Overview
Implementation
Tunable Parameters
Initialization
Deallocation Notes
Single Thread Example
Multiple Thread Example
21. The bitmap_allocator
Design
Implementation
Free List Store
Super Block
Super Block Data Layout
Maximum Wasted Percentage
allocate
deallocate
Questions
1
2
3
Locality
Overhead and Grow Policy
22. Policy-Based Data Structures
Intro
Performance Issues
Associative
Priority Que
Goals
Associative
Policy Choices
Underlying Data Structures
Iterators
Functional
Priority Queues
Policy Choices
Underlying Data Structures
Binary Heaps
Using
Prerequisites
Organization
Tutorial
Basic Use
+ Configuring via Template Parameters +Index: libstdc++-v3/doc/html/manual/debug_mode_using.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/debug_mode_using.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/debug_mode_using.html (.../branches/gcc-4_9-branch) +@@ -18,6 +18,6 @@ + mode or with debug mode. The + following table provides the names and headers of the debugging + containers: +-

Table 17.1. Debugging Containers

ContainerHeaderDebug containerDebug header
std::bitsetbitset__gnu_debug::bitset<debug/bitset>
std::dequedeque__gnu_debug::deque<debug/deque>
std::listlist__gnu_debug::list<debug/list>
std::mapmap__gnu_debug::map<debug/map>
std::multimapmap__gnu_debug::multimap<debug/map>
std::multisetset__gnu_debug::multiset<debug/set>
std::setset__gnu_debug::set<debug/set>
std::stringstring__gnu_debug::string<debug/string>
std::wstringstring__gnu_debug::wstring<debug/string>
std::basic_stringstring__gnu_debug::basic_string<debug/string>
std::vectorvector__gnu_debug::vector<debug/vector>

In addition, when compiling in C++11 mode, these additional ++

Table 17.1. Debugging Containers

ContainerHeaderDebug containerDebug header
std::bitsetbitset__gnu_debug::bitset<debug/bitset>
std::dequedeque__gnu_debug::deque<debug/deque>
std::listlist__gnu_debug::list<debug/list>
std::mapmap__gnu_debug::map<debug/map>
std::multimapmap__gnu_debug::multimap<debug/map>
std::multisetset__gnu_debug::multiset<debug/set>
std::setset__gnu_debug::set<debug/set>
std::stringstring__gnu_debug::string<debug/string>
std::wstringstring__gnu_debug::wstring<debug/string>
std::basic_stringstring__gnu_debug::basic_string<debug/string>
std::vectorvector__gnu_debug::vector<debug/vector>

In addition, when compiling in C++11 mode, these additional + containers have additional debug capability. +-

Table 17.2. Debugging Containers C++11

ContainerHeaderDebug containerDebug header
std::unordered_mapunordered_map__gnu_debug::unordered_map<debug/unordered_map>
std::unordered_multimapunordered_map__gnu_debug::unordered_multimap<debug/unordered_map>
std::unordered_setunordered_set__gnu_debug::unordered_set<debug/unordered_set>
std::unordered_multisetunordered_set__gnu_debug::unordered_multiset<debug/unordered_set>

+\ No newline at end of file ++

Table 17.2. Debugging Containers C++11

ContainerHeaderDebug containerDebug header
std::unordered_mapunordered_map__gnu_debug::unordered_map<debug/unordered_map>
std::unordered_multimapunordered_map__gnu_debug::unordered_multimap<debug/unordered_map>
std::unordered_setunordered_set__gnu_debug::unordered_set<debug/unordered_set>
std::unordered_multisetunordered_set__gnu_debug::unordered_multiset<debug/unordered_set>

+\ No newline at end of file +Index: libstdc++-v3/doc/html/manual/parallel_mode.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/parallel_mode.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/parallel_mode.html (.../branches/gcc-4_9-branch) +@@ -12,11 +12,11 @@ + specific compiler flag. +

Intro

The following library components in the include + numeric are included in the parallel mode:

  • std::accumulate

  • std::adjacent_difference

  • std::inner_product

  • std::partial_sum

The following library components in the include +-algorithm are included in the parallel mode:

  • std::adjacent_find

  • std::count

  • std::count_if

  • std::equal

  • std::find

  • std::find_if

  • std::find_first_of

  • std::for_each

  • std::generate

  • std::generate_n

  • std::lexicographical_compare

  • std::mismatch

  • std::search

  • std::search_n

  • std::transform

  • std::replace

  • std::replace_if

  • std::max_element

  • std::merge

  • std::min_element

  • std::nth_element

  • std::partial_sort

  • std::partition

  • std::random_shuffle

  • std::set_union

  • std::set_intersection

  • std::set_symmetric_difference

  • std::set_difference

  • std::sort

  • std::stable_sort

  • std::unique_copy

Bibliography

++algorithm are included in the parallel mode:

  • std::adjacent_find

  • std::count

  • std::count_if

  • std::equal

  • std::find

  • std::find_if

  • std::find_first_of

  • std::for_each

  • std::generate

  • std::generate_n

  • std::lexicographical_compare

  • std::mismatch

  • std::search

  • std::search_n

  • std::transform

  • std::replace

  • std::replace_if

  • std::max_element

  • std::merge

  • std::min_element

  • std::nth_element

  • std::partial_sort

  • std::partition

  • std::random_shuffle

  • std::set_union

  • std::set_intersection

  • std::set_symmetric_difference

  • std::set_difference

  • std::sort

  • std::stable_sort

  • std::unique_copy

Bibliography

+ Parallelization of Bulk Operations for STL Dictionaries + . Johannes Singler. Leonor Frias. Copyright © 2007 . + Workshop on Highly Parallel Processing on a Chip (HPPC) 2007. (LNCS) +- .

++ .

+ The Multi-Core Standard Template Library + . Johannes Singler. Peter Sanders. Felix Putze. Copyright © 2007 . + Euro-Par 2007: Parallel Processing. (LNCS 4641) +Index: libstdc++-v3/doc/html/manual/backwards.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/backwards.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/backwards.html (.../branches/gcc-4_9-branch) +@@ -947,15 +947,15 @@ + This is a change in behavior from older versions. Now, most + iterator_type typedefs in container classes are POD + objects, not value_type pointers. +-

Bibliography

++

Bibliography

+ + Migrating to GCC 4.1 + +- . Dan Kegel.

++ . Dan Kegel.

++ . Martin Michlmayr.

+ + Migration guide for GCC-3.2 + +@@ -962,4 +962,4 @@ + .

++
+\ No newline at end of file +Index: libstdc++-v3/doc/html/manual/facets.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/facets.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/facets.html (.../branches/gcc-4_9-branch) +@@ -2,7 +2,7 @@ + Facets

Facets

ctype

Implementation

Specializations

++

 Next

Facets

ctype

Implementation

Specializations

+ For the required specialization codecvt<wchar_t, char, mbstate_t>, + conversions are made between the internal character set (always UCS4 + on GNU/Linux) and whatever the currently selected locale for the +@@ -53,24 +53,24 @@ +

  • + Rename abstract base class. See if just smash-overriding is a + better approach. Clarify, add sanity to naming. +-

  • Bibliography

    ++

    Bibliography

    + The GNU C Library +- . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling and 7 Locales and Internationalization.

    ++ . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling and 7 Locales and Internationalization.

    + Correspondence +- . Ulrich Drepper. Copyright © 2002 .

    ++ . Ulrich Drepper. Copyright © 2002 .

    + ISO/IEC 14882:1998 Programming languages - C++ +- . Copyright © 1998 ISO.

    ++ . Copyright © 1998 ISO.

    + ISO/IEC 9899:1999 Programming languages - C +- . Copyright © 1999 ISO.

    ++ . Copyright © 1999 ISO.

    + + The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004) + + . Copyright © 1999 +- The Open Group/The Institute of Electrical and Electronics Engineers, Inc..

    ++ The Open Group/The Institute of Electrical and Electronics Engineers, Inc..

    + The C++ Programming Language, Special Edition + . Bjarne Stroustrup. Copyright © 2000 Addison Wesley, Inc.. Appendix D. + Addison Wesley +- .

    ++ .

    + Standard C++ IOStreams and Locales + . + Advanced Programmer's Guide and Reference +@@ -424,17 +424,17 @@ +

  • + wchar_t/char internal buffers and conversions between + internal/external buffers? +-

  • Bibliography

    ++

    Bibliography

    + The GNU C Library + . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. + Chapters 6 Character Set Handling and 7 Locales and Internationalization +- .

    ++ .

    + Correspondence +- . Ulrich Drepper. Copyright © 2002 .

    ++ . Ulrich Drepper. Copyright © 2002 .

    + ISO/IEC 14882:1998 Programming languages - C++ +- . Copyright © 1998 ISO.

    ++ . Copyright © 1998 ISO.

    + ISO/IEC 9899:1999 Programming languages - C +- . Copyright © 1999 ISO.

    ++ . Copyright © 1999 ISO.

    + + System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) + +@@ -441,25 +441,25 @@ + . Copyright © 2008 + The Open Group/The Institute of Electrical and Electronics + Engineers, Inc. +- .

    ++ .

    + The C++ Programming Language, Special Edition + . Bjarne Stroustrup. Copyright © 2000 Addison Wesley, Inc.. Appendix D. + Addison Wesley +- .

    ++ .

    + Standard C++ IOStreams and Locales + . + Advanced Programmer's Guide and Reference + . Angelika Langer. Klaus Kreft. Copyright © 2000 Addison Wesley Longman, Inc.. + Addison Wesley Longman +- .

    ++ .

    + + A brief description of Normative Addendum 1 + +- . Clive Feather. Extended Character Sets.

    ++ . Clive Feather. Extended Character Sets.

    + + The Unicode HOWTO + +- . Bruno Haible.

    ++ . Bruno Haible.

    + + UTF-8 and Unicode FAQ for Unix/Linux + +@@ -705,16 +705,16 @@ + model. As of this writing, it is unknown how to query to see + if a specified message catalog exists using the gettext + package. +-

    Bibliography

    ++

    Bibliography

    + The GNU C Library + . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling, and 7 Locales and Internationalization +- .

    ++ .

    + Correspondence +- . Ulrich Drepper. Copyright © 2002 .

    ++ . Ulrich Drepper. Copyright © 2002 .

    + ISO/IEC 14882:1998 Programming languages - C++ +- . Copyright © 1998 ISO.

    ++ . Copyright © 1998 ISO.

    + ISO/IEC 9899:1999 Programming languages - C +- . Copyright © 1999 ISO.

    ++ . Copyright © 1999 ISO.

    + + System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) + +@@ -721,23 +721,23 @@ + . Copyright © 2008 + The Open Group/The Institute of Electrical and Electronics + Engineers, Inc. +- .

    ++ .

    + The C++ Programming Language, Special Edition + . Bjarne Stroustrup. Copyright © 2000 Addison Wesley, Inc.. Appendix D. + Addison Wesley +- .

    ++ .

    + Standard C++ IOStreams and Locales + . + Advanced Programmer's Guide and Reference + . Angelika Langer. Klaus Kreft. Copyright © 2000 Addison Wesley Longman, Inc.. + Addison Wesley Longman +- .

    ++ .

    + + API Specifications, Java Platform + + . java.util.Properties, java.text.MessageFormat, + java.util.Locale, java.util.ResourceBundle +- .

    ++ .

     Next

    Chapter 5.  + Diagnostics +- ++ +

    Exceptions

    API Reference

    + All exception objects are defined in one of the standard header + files: exception, +Index: libstdc++-v3/doc/html/manual/appendix_free.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/appendix_free.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/appendix_free.html (.../branches/gcc-4_9-branch) +@@ -6,7 +6,7 @@ + Appendices +

     Next

    + Free Software Needs Free Documentation +- ++ +

    + The biggest deficiency in free operating systems is not in the + software--it is the lack of good free manuals that we can include in +Index: libstdc++-v3/doc/html/manual/algorithms.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/algorithms.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/algorithms.html (.../branches/gcc-4_9-branch) +@@ -6,7 +6,7 @@ + Standard Contents +

     Next

    Chapter 11.  + Algorithms +- ++ +

    + The neatest accomplishment of the algorithms section is that all the + work is done via iterators, not containers directly. This means two +Index: libstdc++-v3/doc/html/manual/appendix_porting.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/appendix_porting.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/appendix_porting.html (.../branches/gcc-4_9-branch) +@@ -6,7 +6,7 @@ + Appendices +

     Next

    + Porting and Maintenance +- ++ +

    Table of Contents

    Configure and Build Hacking
    Prerequisites
    Overview
    General Process
    What Comes from Where
    Configure
    Storing Information in non-AC files (like configure.host)
    Coding and Commenting Conventions
    The acinclude.m4 layout
    GLIBCXX_ENABLE, the --enable maker
    Make
    Writing and Generating Documentation
    Introduction
    Generating Documentation
    Doxygen
    Prerequisites
    Generating the Doxygen Files
    Debugging Generation
    Markup
    Docbook
    Prerequisites
    Generating the DocBook Files
    Debugging Generation
    Editing and Validation
    File Organization and Basics
    Markup By Example
    Porting to New Hardware or Operating Systems
    Operating System
    CPU
    Character Types
    Thread Safety
    Numeric Limits
    Libtool
    Test
    Organization
    Directory Layout
    Naming Conventions
    Running the Testsuite
    Basic
    Variations
    Permutations
    Writing a new test case
    Test Harness and Utilities
    Dejagnu Harness Details
    Utilities
    Special Topics
    + Qualifying Exception Safety Guarantees + +@@ -14,7 +14,7 @@ + Existing tests +
    + C++11 Requirements Test Sequence Descriptions +-
    ABI Policy and Guidelines
    The C++ Interface
    Versioning
    Goals
    History
    Prerequisites
    Configuring
    Checking Active
    Allowed Changes
    Prohibited Changes
    Implementation
    Testing
    Single ABI Testing
    Multiple ABI Testing
    Outstanding Issues
    API Evolution and Deprecation History
    3.0
    3.1
    3.2
    3.3
    3.4
    4.0
    4.1
    4.2
    4.3
    4.4
    4.5
    Backwards Compatibility
    First
    No ios_base
    No cout in <ostream.h>, no cin in <istream.h>
    Second
    Namespace std:: not supported
    Illegal iterator usage
    isspace from <cctype> is a macro ++
    ABI Policy and Guidelines
    The C++ Interface
    Versioning
    Goals
    History
    Prerequisites
    Configuring
    Checking Active
    Allowed Changes
    Prohibited Changes
    Implementation
    Testing
    Single ABI Testing
    Multiple ABI Testing
    Outstanding Issues
    API Evolution and Deprecation History
    3.0
    3.1
    3.2
    3.3
    3.4
    4.0
    4.1
    4.2
    4.3
    4.4
    4.5
    4.6
    4.7
    4.8
    4.9
    Backwards Compatibility
    First
    No ios_base
    No cout in <ostream.h>, no cin in <istream.h>
    Second
    Namespace std:: not supported
    Illegal iterator usage
    isspace from <cctype> is a macro +
    No vector::at, deque::at, string::at
    No std::char_traits<char>::eof
    No string::clear
    + Removal of ostream::form and istream::scan + extensions +@@ -61,7 +61,7 @@ + in the build directory starts the build process. The all target comes from the Makefile file, which is generated via configure from the Makefile.in file, which is in turn generated (via + automake) from the file + Makefile.am. +-

    What Comes from Where

    Figure B.1. Configure and Build File Dependencies

    Dependency Graph for Configure and Build Files

    ++

    What Comes from Where

    Figure B.1. Configure and Build File Dependencies

    Dependency Graph for Configure and Build Files

    + Regenerate all generated files by using the command + autoreconf at the top level of the libstdc++ source + directory. +Index: libstdc++-v3/doc/html/manual/test.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/test.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/test.html (.../branches/gcc-4_9-branch) +@@ -492,7 +492,7 @@ + reporting functions including: +

    • time_counter

    • resource_counter

    • report_performance

    Special Topics

    + Qualifying Exception Safety Guarantees +- ++ +

    Overview

    + Testing is composed of running a particular test sequence, + and looking at what happens to the surrounding code when +Index: libstdc++-v3/doc/html/manual/using_headers.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/using_headers.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/using_headers.html (.../branches/gcc-4_9-branch) +@@ -18,19 +18,19 @@ + the 1998 standard as updated for 2003, and the current 2011 standard. +

    + C++98/03 include files. These are available in the default compilation mode, i.e. -std=c++98 or -std=gnu++98. +-

    Table 3.2. C++ 1998 Library Headers

    algorithmbitsetcomplexdequeexception
    fstreamfunctionaliomanipiosiosfwd
    iostreamistreamiteratorlimitslist
    localemapmemorynewnumeric
    ostreamqueuesetsstreamstack
    stdexceptstreambufstringutilitytypeinfo
    valarrayvector   

    Table 3.3. C++ 1998 Library Headers for C Library Facilities

    cassertcerrnocctypecfloatciso646
    climitsclocalecmathcsetjmpcsignal
    cstdargcstddefcstdiocstdlibcstring
    ctimecwcharcwctype  

    ++

    Table 3.2. C++ 1998 Library Headers

    algorithmbitsetcomplexdequeexception
    fstreamfunctionaliomanipiosiosfwd
    iostreamistreamiteratorlimitslist
    localemapmemorynewnumeric
    ostreamqueuesetsstreamstack
    stdexceptstreambufstringutilitytypeinfo
    valarrayvector   

    Table 3.3. C++ 1998 Library Headers for C Library Facilities

    cassertcerrnocctypecfloatciso646
    climitsclocalecmathcsetjmpcsignal
    cstdargcstddefcstdiocstdlibcstring
    ctimecwcharcwctype  

    + C++11 include files. These are only available in C++11 compilation + mode, i.e. -std=c++11 or -std=gnu++11. +-

    Table 3.4. C++ 2011 Library Headers

    algorithmarraybitsetchronocomplex
    condition_variabledequeexceptionforward_listfstream
    functionalfutureinitalizer_listiomanipios
    iosfwdiostreamistreamiteratorlimits
    listlocalemapmemorymutex
    newnumericostreamqueuerandom
    ratioregexsetsstreamstack
    stdexceptstreambufstringsystem_errorthread
    tupletype_traitstypeinfounordered_mapunordered_set
    utilityvalarrayvector  

    Table 3.5. C++ 2011 Library Headers for C Library Facilities

    cassertccomplexcctypecerrnocfenv
    cfloatcinttypesciso646climitsclocale
    cmathcsetjmpcsignalcstdargcstdbool
    cstddefcstdintcstdlibcstdiocstring
    ctgmathctimecucharcwcharcwctype

    ++

    Table 3.4. C++ 2011 Library Headers

    algorithmarraybitsetchronocomplex
    condition_variabledequeexceptionforward_listfstream
    functionalfutureinitalizer_listiomanipios
    iosfwdiostreamistreamiteratorlimits
    listlocalemapmemorymutex
    newnumericostreamqueuerandom
    ratioregexsetsstreamstack
    stdexceptstreambufstringsystem_errorthread
    tupletype_traitstypeinfounordered_mapunordered_set
    utilityvalarrayvector  

    Table 3.5. C++ 2011 Library Headers for C Library Facilities

    cassertccomplexcctypecerrnocfenv
    cfloatcinttypesciso646climitsclocale
    cmathcsetjmpcsignalcstdargcstdbool
    cstddefcstdintcstdlibcstdiocstring
    ctgmathctimecucharcwcharcwctype

    + In addition, TR1 includes as: +-

    Table 3.6. C++ TR 1 Library Headers

    tr1/arraytr1/complextr1/memorytr1/functionaltr1/random
    tr1/regextr1/tupletr1/type_traitstr1/unordered_maptr1/unordered_set
    tr1/utility    

    Table 3.7. C++ TR 1 Library Headers for C Library Facilities

    tr1/ccomplextr1/cfenvtr1/cfloattr1/cmathtr1/cinttypes
    tr1/climitstr1/cstdargtr1/cstdbooltr1/cstdinttr1/cstdio
    tr1/cstdlibtr1/ctgmathtr1/ctimetr1/cwchartr1/cwctype

    Decimal floating-point arithmetic is available if the C++ ++

    Table 3.6. C++ TR 1 Library Headers

    tr1/arraytr1/complextr1/memorytr1/functionaltr1/random
    tr1/regextr1/tupletr1/type_traitstr1/unordered_maptr1/unordered_set
    tr1/utility    

    Table 3.7. C++ TR 1 Library Headers for C Library Facilities

    tr1/ccomplextr1/cfenvtr1/cfloattr1/cmathtr1/cinttypes
    tr1/climitstr1/cstdargtr1/cstdbooltr1/cstdinttr1/cstdio
    tr1/cstdlibtr1/ctgmathtr1/ctimetr1/cwchartr1/cwctype

    Decimal floating-point arithmetic is available if the C++ + compiler supports scalar decimal floating-point types defined via + __attribute__((mode(SD|DD|LD))). +-

    Table 3.8. C++ TR 24733 Decimal Floating-Point Header

    decimal/decimal

    ++

    Table 3.8. C++ TR 24733 Decimal Floating-Point Header

    decimal/decimal

    + Also included are files for the C++ ABI interface: +-

    Table 3.9. C++ ABI Headers

    cxxabi.hcxxabi_forced.h

    ++

    Table 3.9. C++ ABI Headers

    cxxabi.hcxxabi_forced.h

    + And a large variety of extensions. +-

    Table 3.10. Extension Headers

    ext/algorithmext/atomicity.hext/array_allocator.hext/bitmap_allocator.hext/cast.h
    ext/codecvt_specializations.hext/concurrence.hext/debug_allocator.hext/enc_filebuf.hext/extptr_allocator.h
    ext/functionalext/iteratorext/malloc_allocator.hext/memoryext/mt_allocator.h
    ext/new_allocator.hext/numericext/numeric_traits.hext/pb_ds/assoc_container.hext/pb_ds/priority_queue.h
    ext/pod_char_traits.hext/pool_allocator.hext/rb_treeext/ropeext/slist
    ext/stdio_filebuf.hext/stdio_sync_filebuf.hext/throw_allocator.hext/typelist.hext/type_traits.h
    ext/vstring.h    

    Table 3.11. Extension Debug Headers

    debug/bitsetdebug/dequedebug/listdebug/mapdebug/set
    debug/stringdebug/unordered_mapdebug/unordered_setdebug/vector 

    Table 3.12. Extension Profile Headers

    profile/bitsetprofile/dequeprofile/listprofile/map
    profile/setprofile/unordered_mapprofile/unordered_setprofile/vector

    Table 3.13. Extension Parallel Headers

    parallel/algorithmparallel/numeric

    Mixing Headers

    A few simple rules. ++

    Table 3.10. Extension Headers

    ext/algorithmext/atomicity.hext/array_allocator.hext/bitmap_allocator.hext/cast.h
    ext/codecvt_specializations.hext/concurrence.hext/debug_allocator.hext/enc_filebuf.hext/extptr_allocator.h
    ext/functionalext/iteratorext/malloc_allocator.hext/memoryext/mt_allocator.h
    ext/new_allocator.hext/numericext/numeric_traits.hext/pb_ds/assoc_container.hext/pb_ds/priority_queue.h
    ext/pod_char_traits.hext/pool_allocator.hext/rb_treeext/ropeext/slist
    ext/stdio_filebuf.hext/stdio_sync_filebuf.hext/throw_allocator.hext/typelist.hext/type_traits.h
    ext/vstring.h    

    Table 3.11. Extension Debug Headers

    debug/bitsetdebug/dequedebug/listdebug/mapdebug/set
    debug/stringdebug/unordered_mapdebug/unordered_setdebug/vector 

    Table 3.12. Extension Profile Headers

    profile/bitsetprofile/dequeprofile/listprofile/map
    profile/setprofile/unordered_mapprofile/unordered_setprofile/vector

    Table 3.13. Extension Parallel Headers

    parallel/algorithmparallel/numeric

    Mixing Headers

    A few simple rules. +

    First, mixing different dialects of the standard headers is not + possible. It's an all-or-nothing affair. Thus, code like +

    +Index: libstdc++-v3/doc/html/manual/localization.html
    +===================================================================
    +--- a/src/libstdc++-v3/doc/html/manual/localization.html	(.../tags/gcc_4_9_2_release)
    ++++ b/src/libstdc++-v3/doc/html/manual/localization.html	(.../branches/gcc-4_9-branch)
    +@@ -6,8 +6,8 @@
    +     Standard Contents
    +   
     Next

    Locales

    locale

    + Describes the basic locale object, including nested + classes id, facet, and the reference-counted implementation object, + class _Impl. +@@ -402,18 +402,18 @@ + What should non-required facet instantiations do? If the + generic implementation is provided, then how to end-users + provide specializations? +-

    Bibliography

    ++

    Bibliography

    + The GNU C Library + . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. + Chapters 6 Character Set Handling and 7 Locales and + Internationalization +- .

    ++ .

    + Correspondence +- . Ulrich Drepper. Copyright © 2002 .

    ++ . Ulrich Drepper. Copyright © 2002 .

    + ISO/IEC 14882:1998 Programming languages - C++ +- . Copyright © 1998 ISO.

    ++ . Copyright © 1998 ISO.

    + ISO/IEC 9899:1999 Programming languages - C +- . Copyright © 1999 ISO.

    ++ . Copyright © 1999 ISO.

    + + System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) + +@@ -420,11 +420,11 @@ + . Copyright © 2008 + The Open Group/The Institute of Electrical and Electronics + Engineers, Inc. +- .

    ++ .

    + The C++ Programming Language, Special Edition + . Bjarne Stroustrup. Copyright © 2000 Addison Wesley, Inc.. Appendix D. + Addison Wesley +- .

    ++ .

    + Standard C++ IOStreams and Locales + . + Advanced Programmer's Guide and Reference +Index: libstdc++-v3/doc/html/manual/profile_mode_design.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/profile_mode_design.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/profile_mode_design.html (.../branches/gcc-4_9-branch) +@@ -1,6 +1,6 @@ + + Design

    Design

    +-

    Table 19.1. Profile Code Location

    Code LocationUse
    libstdc++-v3/include/std/*Preprocessor code to redirect to profile extension headers.
    libstdc++-v3/include/profile/*Profile extension public headers (map, vector, ...).
    libstdc++-v3/include/profile/impl/*Profile extension internals. Implementation files are ++

    Table 19.1. Profile Code Location

    Code LocationUse
    libstdc++-v3/include/std/*Preprocessor code to redirect to profile extension headers.
    libstdc++-v3/include/profile/*Profile extension public headers (map, vector, ...).
    libstdc++-v3/include/profile/impl/*Profile extension internals. Implementation files are + only included from impl/profiler.h, which is the only + file included from the public headers.

    +

    Wrapper Model

    +Index: libstdc++-v3/doc/html/manual/containers.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/containers.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/containers.html (.../branches/gcc-4_9-branch) +@@ -6,7 +6,7 @@ + Standard Contents +

     Next

    Chapter 9.  + Containers +- ++ +

    Sequences

    list

    list::size() is O(n)

    + Yes it is, and that was okay until the 2011 edition of the C++ standard. + In future GCC will change it to O(1) but O(N) was a decision that we +Index: libstdc++-v3/doc/html/manual/io.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/io.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/io.html (.../branches/gcc-4_9-branch) +@@ -6,7 +6,7 @@ + Standard Contents +  Next


    Chapter 13.  + Input and Output +- ++ +

    Iostream Objects

    To minimize the time you have to wait on the compiler, it's good to + only include the headers you really need. Many people simply include + <iostream> when they don't +Index: libstdc++-v3/doc/html/manual/index.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/index.html (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/doc/html/manual/index.html (.../branches/gcc-4_9-branch) +@@ -15,13 +15,13 @@ +

    Exceptions
    API Reference
    Adding Data to exception
    Concept Checking
    6. + Utilities + +-
    Functors
    Pairs
    Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Interface Design
    Selecting Default Allocation Policy
    Disabling Memory Caching
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Class Hierarchy
    Thread Safety
    Selecting Lock Policy
    Related functions and classes
    Use
    Examples
    Unresolved Issues
    Acknowledgments
    Traits
    7. ++
    Functors
    Pairs
    Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Interface Design
    Selecting Default Allocation Policy
    Disabling Memory Caching
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Class Hierarchy
    Thread Safety
    Selecting Lock Policy
    Related functions and classes
    Use
    Examples
    Unresolved Issues
    Acknowledgments
    Traits
    7. + Strings + +
    String Classes
    Simple Transformations
    Case Sensitivity
    Arbitrary Character Types
    Tokenizing
    Shrink to Fit
    CString (MFC)
    8. + Localization + +-
    Locales
    locale
    Requirements
    Design
    Implementation
    Interacting with "C" locales
    Future
    Facets
    ctype
    Implementation
    Specializations
    Future
    codecvt
    Requirements
    Design
    wchar_t Size
    Support for Unicode
    Other Issues
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Models
    The GNU Model
    Use
    Future
    9. ++
    Locales
    locale
    Requirements
    Design
    Implementation
    Interacting with "C" locales
    Future
    Facets
    ctype
    Implementation
    Specializations
    Future
    codecvt
    Requirements
    Design
    wchar_t Size
    Support for Unicode
    Other Issues
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Models
    The GNU Model
    Use
    Future
    9. + Containers + +
    Sequences
    list
    list::size() is O(n)
    Associative
    Insertion Hints
    bitset
    Size Variable
    Type String
    Unordered Associative
    Insertion Hints
    Hash Code
    Hash Code Caching Policy
    Interacting with C
    Containers vs. Arrays
    10. +@@ -123,7 +123,7 @@ + Existing tests +
    + C++11 Requirements Test Sequence Descriptions +-
    ABI Policy and Guidelines
    The C++ Interface
    Versioning
    Goals
    History
    Prerequisites
    Configuring
    Checking Active
    Allowed Changes
    Prohibited Changes
    Implementation
    Testing
    Single ABI Testing
    Multiple ABI Testing
    Outstanding Issues
    API Evolution and Deprecation History
    3.0
    3.1
    3.2
    3.3
    3.4
    4.0
    4.1
    4.2
    4.3
    4.4
    4.5
    Backwards Compatibility
    First
    No ios_base
    No cout in <ostream.h>, no cin in <istream.h>
    Second
    Namespace std:: not supported
    Illegal iterator usage
    isspace from <cctype> is a macro ++
    ABI Policy and Guidelines
    The C++ Interface
    Versioning
    Goals
    History
    Prerequisites
    Configuring
    Checking Active
    Allowed Changes
    Prohibited Changes
    Implementation
    Testing
    Single ABI Testing
    Multiple ABI Testing
    Outstanding Issues
    API Evolution and Deprecation History
    3.0
    3.1
    3.2
    3.3
    3.4
    4.0
    4.1
    4.2
    4.3
    4.4
    4.5
    4.6
    4.7
    4.8
    4.9
    Backwards Compatibility
    First
    No ios_base
    No cout in <ostream.h>, no cin in <istream.h>
    Second
    Namespace std:: not supported
    Illegal iterator usage
    isspace from <cctype> is a macro +
    No vector::at, deque::at, string::at
    No std::char_traits<char>::eof
    No string::clear
    + Removal of ostream::form and istream::scan + extensions +@@ -143,19 +143,19 @@ + +
    D. + GNU General Public License version 3 +-
    E. GNU Free Documentation License

    Functors

    If you don't know what functors are, you're not alone. Many people + get slightly the wrong idea. In the interest of not reinventing + the wheel, we will refer you to the introduction to the functor + concept written by SGI as part of their STL, in +Index: libstdc++-v3/include/debug/array +=================================================================== +--- a/src/libstdc++-v3/include/debug/array (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/debug/array (.../branches/gcc-4_9-branch) +@@ -216,11 +216,11 @@ + + pointer + data() noexcept +- { return std::__addressof(_AT_Type::_S_ref(_M_elems, 0)); } ++ { return _AT_Type::_S_ptr(_M_elems); } + + const_pointer + data() const noexcept +- { return std::__addressof(_AT_Type::_S_ref(_M_elems, 0)); } ++ { return _AT_Type::_S_ptr(_M_elems); } + }; + + // Array comparisons. +Index: libstdc++-v3/include/std/shared_mutex +=================================================================== +--- a/src/libstdc++-v3/include/std/shared_mutex (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/std/shared_mutex (.../branches/gcc-4_9-branch) +@@ -36,10 +36,8 @@ + #else + + #include +-#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) +-# include +-# include +-#endif ++#include ++#include + #include + + namespace std _GLIBCXX_VISIBILITY(default) +@@ -51,7 +49,8 @@ + * @{ + */ + +-#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) ++#ifdef _GLIBCXX_USE_C99_STDINT_TR1 ++#ifdef _GLIBCXX_HAS_GTHREADS + + #define __cpp_lib_shared_timed_mutex 201402 + +@@ -58,34 +57,53 @@ + /// shared_timed_mutex + class shared_timed_mutex + { +-#if _GTHREAD_USE_MUTEX_TIMEDLOCK +- struct _Mutex : mutex, __timed_mutex_impl<_Mutex> +- { +- template +- bool +- try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) +- { return _M_try_lock_for(__rtime); } ++ // Must use the same clock as condition_variable ++ typedef chrono::system_clock __clock_t; + +- template +- bool +- try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) +- { return _M_try_lock_until(__atime); } +- }; +-#else +- typedef mutex _Mutex; +-#endif ++ // Based on Howard Hinnant's reference implementation from N2406. + +- // Based on Howard Hinnant's reference implementation from N2406 ++ // The high bit of _M_state is the write-entered flag which is set to ++ // indicate a writer has taken the lock or is queuing to take the lock. ++ // The remaining bits are the count of reader locks. ++ // ++ // To take a reader lock, block on gate1 while the write-entered flag is ++ // set or the maximum number of reader locks is held, then increment the ++ // reader lock count. ++ // To release, decrement the count, then if the write-entered flag is set ++ // and the count is zero then signal gate2 to wake a queued writer, ++ // otherwise if the maximum number of reader locks was held signal gate1 ++ // to wake a reader. ++ // ++ // To take a writer lock, block on gate1 while the write-entered flag is ++ // set, then set the write-entered flag to start queueing, then block on ++ // gate2 while the number of reader locks is non-zero. ++ // To release, unset the write-entered flag and signal gate1 to wake all ++ // blocked readers and writers. ++ // ++ // This means that when no reader locks are held readers and writers get ++ // equal priority. When one or more reader locks is held a writer gets ++ // priority and no more reader locks can be taken while the writer is ++ // queued. + +- _Mutex _M_mut; ++ // Only locked when accessing _M_state or waiting on condition variables. ++ mutex _M_mut; ++ // Used to block while write-entered is set or reader count at maximum. + condition_variable _M_gate1; ++ // Used to block queued writers while reader count is non-zero. + condition_variable _M_gate2; ++ // The write-entered flag and reader count. + unsigned _M_state; + + static constexpr unsigned _S_write_entered + = 1U << (sizeof(unsigned)*__CHAR_BIT__ - 1); +- static constexpr unsigned _M_n_readers = ~_S_write_entered; ++ static constexpr unsigned _S_max_readers = ~_S_write_entered; + ++ // Test whether the write-entered flag is set. _M_mut must be locked. ++ bool _M_write_entered() const { return _M_state & _S_write_entered; } ++ ++ // The number of reader locks currently held. _M_mut must be locked. ++ unsigned _M_readers() const { return _M_state & _S_max_readers; } ++ + public: + shared_timed_mutex() : _M_state(0) {} + +@@ -103,11 +121,11 @@ + lock() + { + unique_lock __lk(_M_mut); +- while (_M_state & _S_write_entered) +- _M_gate1.wait(__lk); ++ // Wait until we can set the write-entered flag. ++ _M_gate1.wait(__lk, [=]{ return !_M_write_entered(); }); + _M_state |= _S_write_entered; +- while (_M_state & _M_n_readers) +- _M_gate2.wait(__lk); ++ // Then wait until there are no more readers. ++ _M_gate2.wait(__lk, [=]{ return _M_readers() == 0; }); + } + + bool +@@ -122,18 +140,11 @@ + return false; + } + +-#if _GTHREAD_USE_MUTEX_TIMEDLOCK + template + bool + try_lock_for(const chrono::duration<_Rep, _Period>& __rel_time) + { +- unique_lock<_Mutex> __lk(_M_mut, __rel_time); +- if (__lk.owns_lock() && _M_state == 0) +- { +- _M_state = _S_write_entered; +- return true; +- } +- return false; ++ return try_lock_until(__clock_t::now() + __rel_time); + } + + template +@@ -140,23 +151,32 @@ + bool + try_lock_until(const chrono::time_point<_Clock, _Duration>& __abs_time) + { +- unique_lock<_Mutex> __lk(_M_mut, __abs_time); +- if (__lk.owns_lock() && _M_state == 0) ++ unique_lock __lk(_M_mut); ++ if (!_M_gate1.wait_until(__lk, __abs_time, ++ [=]{ return !_M_write_entered(); })) + { +- _M_state = _S_write_entered; +- return true; ++ return false; + } +- return false; ++ _M_state |= _S_write_entered; ++ if (!_M_gate2.wait_until(__lk, __abs_time, ++ [=]{ return _M_readers() == 0; })) ++ { ++ _M_state ^= _S_write_entered; ++ // Wake all threads blocked while the write-entered flag was set. ++ _M_gate1.notify_all(); ++ return false; ++ } ++ return true; + } +-#endif + + void + unlock() + { +- { +- lock_guard<_Mutex> __lk(_M_mut); +- _M_state = 0; +- } ++ lock_guard __lk(_M_mut); ++ _GLIBCXX_DEBUG_ASSERT( _M_write_entered() ); ++ _M_state = 0; ++ // call notify_all() while mutex is held so that another thread can't ++ // lock and unlock the mutex then destroy *this before we make the call. + _M_gate1.notify_all(); + } + +@@ -166,51 +186,29 @@ + lock_shared() + { + unique_lock __lk(_M_mut); +- while ((_M_state & _S_write_entered) +- || (_M_state & _M_n_readers) == _M_n_readers) +- { +- _M_gate1.wait(__lk); +- } +- unsigned __num_readers = (_M_state & _M_n_readers) + 1; +- _M_state &= ~_M_n_readers; +- _M_state |= __num_readers; ++ _M_gate1.wait(__lk, [=]{ return _M_state < _S_max_readers; }); ++ ++_M_state; + } + + bool + try_lock_shared() + { +- unique_lock<_Mutex> __lk(_M_mut, try_to_lock); +- unsigned __num_readers = _M_state & _M_n_readers; +- if (__lk.owns_lock() && !(_M_state & _S_write_entered) +- && __num_readers != _M_n_readers) ++ unique_lock __lk(_M_mut, try_to_lock); ++ if (!__lk.owns_lock()) ++ return false; ++ if (_M_state < _S_max_readers) + { +- ++__num_readers; +- _M_state &= ~_M_n_readers; +- _M_state |= __num_readers; ++ ++_M_state; + return true; + } + return false; + } + +-#if _GTHREAD_USE_MUTEX_TIMEDLOCK + template + bool + try_lock_shared_for(const chrono::duration<_Rep, _Period>& __rel_time) + { +- unique_lock<_Mutex> __lk(_M_mut, __rel_time); +- if (__lk.owns_lock()) +- { +- unsigned __num_readers = _M_state & _M_n_readers; +- if (!(_M_state & _S_write_entered) +- && __num_readers != _M_n_readers) +- { +- ++__num_readers; +- _M_state &= ~_M_n_readers; +- _M_state |= __num_readers; +- return true; +- } +- } +- return false; ++ return try_lock_shared_until(__clock_t::now() + __rel_time); + } + + template +@@ -218,43 +216,40 @@ + try_lock_shared_until(const chrono::time_point<_Clock, + _Duration>& __abs_time) + { +- unique_lock<_Mutex> __lk(_M_mut, __abs_time); +- if (__lk.owns_lock()) ++ unique_lock __lk(_M_mut); ++ if (!_M_gate1.wait_until(__lk, __abs_time, ++ [=]{ return _M_state < _S_max_readers; })) + { +- unsigned __num_readers = _M_state & _M_n_readers; +- if (!(_M_state & _S_write_entered) +- && __num_readers != _M_n_readers) +- { +- ++__num_readers; +- _M_state &= ~_M_n_readers; +- _M_state |= __num_readers; +- return true; +- } ++ return false; + } +- return false; ++ ++_M_state; ++ return true; + } +-#endif + + void + unlock_shared() + { +- lock_guard<_Mutex> __lk(_M_mut); +- unsigned __num_readers = (_M_state & _M_n_readers) - 1; +- _M_state &= ~_M_n_readers; +- _M_state |= __num_readers; +- if (_M_state & _S_write_entered) ++ lock_guard __lk(_M_mut); ++ _GLIBCXX_DEBUG_ASSERT( _M_readers() > 0 ); ++ auto __prev = _M_state--; ++ if (_M_write_entered()) + { +- if (__num_readers == 0) ++ // Wake the queued writer if there are no more readers. ++ if (_M_readers() == 0) + _M_gate2.notify_one(); ++ // No need to notify gate1 because we give priority to the queued ++ // writer, and that writer will eventually notify gate1 after it ++ // clears the write-entered flag. + } + else + { +- if (__num_readers == _M_n_readers - 1) ++ // Wake any thread that was blocked on reader overflow. ++ if (__prev == _S_max_readers) + _M_gate1.notify_one(); + } + } + }; +-#endif // _GLIBCXX_HAS_GTHREADS && _GLIBCXX_USE_C99_STDINT_TR1 ++#endif // _GLIBCXX_HAS_GTHREADS + + /// shared_lock + template +@@ -393,6 +388,8 @@ + swap(shared_lock<_Mutex>& __x, shared_lock<_Mutex>& __y) noexcept + { __x.swap(__y); } + ++#endif // _GLIBCXX_USE_C99_STDINT_TR1 ++ + // @} group mutexes + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace +Index: libstdc++-v3/include/std/tuple +=================================================================== +--- a/src/libstdc++-v3/include/std/tuple (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/std/tuple (.../branches/gcc-4_9-branch) +@@ -88,21 +88,22 @@ + constexpr _Head_base(const _Head& __h) + : _Head(__h) { } + +- template::value>::type> ++ constexpr _Head_base(const _Head_base&) = default; ++ constexpr _Head_base(_Head_base&&) = default; ++ ++ template + constexpr _Head_base(_UHead&& __h) + : _Head(std::forward<_UHead>(__h)) { } + +- _Head_base(__uses_alloc0) ++ _Head_base(allocator_arg_t, __uses_alloc0) + : _Head() { } + + template +- _Head_base(__uses_alloc1<_Alloc> __a) ++ _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) + : _Head(allocator_arg, *__a._M_a) { } + + template +- _Head_base(__uses_alloc2<_Alloc> __a) ++ _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) + : _Head(*__a._M_a) { } + + template +@@ -133,21 +134,22 @@ + constexpr _Head_base(const _Head& __h) + : _M_head_impl(__h) { } + +- template::value>::type> ++ constexpr _Head_base(const _Head_base&) = default; ++ constexpr _Head_base(_Head_base&&) = default; ++ ++ template + constexpr _Head_base(_UHead&& __h) + : _M_head_impl(std::forward<_UHead>(__h)) { } + +- _Head_base(__uses_alloc0) ++ _Head_base(allocator_arg_t, __uses_alloc0) + : _M_head_impl() { } + + template +- _Head_base(__uses_alloc1<_Alloc> __a) ++ _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) + : _M_head_impl(allocator_arg, *__a._M_a) { } + + template +- _Head_base(__uses_alloc2<_Alloc> __a) ++ _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) + : _M_head_impl(*__a._M_a) { } + + template +@@ -285,7 +287,7 @@ + template + _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) + : _Inherited(__tag, __a), +- _Base(__use_alloc<_Head>(__a)) { } ++ _Base(__tag, __use_alloc<_Head>(__a)) { } + + template + _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, +Index: libstdc++-v3/include/std/thread +=================================================================== +--- a/src/libstdc++-v3/include/std/thread (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/std/thread (.../branches/gcc-4_9-branch) +@@ -268,6 +268,8 @@ + inline void + sleep_for(const chrono::duration<_Rep, _Period>& __rtime) + { ++ if (__rtime <= __rtime.zero()) ++ return; + auto __s = chrono::duration_cast(__rtime); + auto __ns = chrono::duration_cast(__rtime - __s); + #ifdef _GLIBCXX_USE_NANOSLEEP +@@ -286,7 +288,11 @@ + template + inline void + sleep_until(const chrono::time_point<_Clock, _Duration>& __atime) +- { sleep_for(__atime - _Clock::now()); } ++ { ++ auto __now = _Clock::now(); ++ if (__now < __atime) ++ sleep_for(__atime - __now); ++ } + + _GLIBCXX_END_NAMESPACE_VERSION + } +Index: libstdc++-v3/include/std/future +=================================================================== +--- a/src/libstdc++-v3/include/std/future (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/std/future (.../branches/gcc-4_9-branch) +@@ -1450,7 +1450,8 @@ + operator()(_ArgTypes... __args) + { + __future_base::_State_base::_S_check(_M_state); +- _M_state->_M_run(std::forward<_ArgTypes>(__args)...); ++ auto __state = _M_state; ++ __state->_M_run(std::forward<_ArgTypes>(__args)...); + } + + void +Index: libstdc++-v3/include/std/atomic +=================================================================== +--- a/src/libstdc++-v3/include/std/atomic (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/std/atomic (.../branches/gcc-4_9-branch) +@@ -815,11 +815,13 @@ + + template + inline void +- atomic_init(atomic<_ITp>* __a, _ITp __i) noexcept; ++ atomic_init(atomic<_ITp>* __a, _ITp __i) noexcept ++ { __a->store(__i, memory_order_relaxed); } + + template + inline void +- atomic_init(volatile atomic<_ITp>* __a, _ITp __i) noexcept; ++ atomic_init(volatile atomic<_ITp>* __a, _ITp __i) noexcept ++ { __a->store(__i, memory_order_relaxed); } + + template + inline void +Index: libstdc++-v3/include/std/chrono +=================================================================== +--- a/src/libstdc++-v3/include/std/chrono (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/std/chrono (.../branches/gcc-4_9-branch) +@@ -904,6 +904,15 @@ + } // inline namespace chrono_literals + } // inline namespace literals + ++ namespace chrono ++ { ++ _GLIBCXX_BEGIN_NAMESPACE_VERSION ++ ++ using namespace literals::chrono_literals; ++ ++ _GLIBCXX_END_NAMESPACE_VERSION ++ } // namespace chrono ++ + #endif // __cplusplus > 201103L + + // @} group chrono +Index: libstdc++-v3/include/std/functional +=================================================================== +--- a/src/libstdc++-v3/include/std/functional (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/std/functional (.../branches/gcc-4_9-branch) +@@ -2407,9 +2407,9 @@ + { + if (static_cast(__x)) + { ++ __x._M_manager(_M_functor, __x._M_functor, __clone_functor); + _M_invoker = __x._M_invoker; + _M_manager = __x._M_manager; +- __x._M_manager(_M_functor, __x._M_functor, __clone_functor); + } + } + +Index: libstdc++-v3/include/std/istream +=================================================================== +--- a/src/libstdc++-v3/include/std/istream (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/std/istream (.../branches/gcc-4_9-branch) +@@ -870,7 +870,10 @@ + template + inline basic_istream<_CharT, _Traits>& + operator>>(basic_istream<_CharT, _Traits>&& __is, _Tp& __x) +- { return (__is >> __x); } ++ { ++ __is >> __x; ++ return __is; ++ } + #endif // C++11 + + _GLIBCXX_END_NAMESPACE_VERSION +Index: libstdc++-v3/include/std/ostream +=================================================================== +--- a/src/libstdc++-v3/include/std/ostream (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/std/ostream (.../branches/gcc-4_9-branch) +@@ -600,7 +600,10 @@ + template + inline basic_ostream<_CharT, _Traits>& + operator<<(basic_ostream<_CharT, _Traits>&& __os, const _Tp& __x) +- { return (__os << __x); } ++ { ++ __os << __x; ++ return __os; ++ } + #endif // C++11 + + _GLIBCXX_END_NAMESPACE_VERSION +Index: libstdc++-v3/include/std/scoped_allocator +=================================================================== +--- a/src/libstdc++-v3/include/std/scoped_allocator (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/std/scoped_allocator (.../branches/gcc-4_9-branch) +@@ -105,6 +105,8 @@ + __inner_type_impl() = default; + __inner_type_impl(const __inner_type_impl&) = default; + __inner_type_impl(__inner_type_impl&&) = default; ++ __inner_type_impl& operator=(const __inner_type_impl&) = default; ++ __inner_type_impl& operator=(__inner_type_impl&&) = default; + + template + __inner_type_impl(const __inner_type_impl<_Alloc>& __other) +@@ -136,6 +138,8 @@ + __inner_type_impl() = default; + __inner_type_impl(const __inner_type_impl&) = default; + __inner_type_impl(__inner_type_impl&&) = default; ++ __inner_type_impl& operator=(const __inner_type_impl&) = default; ++ __inner_type_impl& operator=(__inner_type_impl&&) = default; + + template + __inner_type_impl(const __inner_type_impl<_Allocs...>& __other) +@@ -310,6 +314,12 @@ + _M_inner(std::move(__other._M_inner)) + { } + ++ scoped_allocator_adaptor& ++ operator=(const scoped_allocator_adaptor&) = default; ++ ++ scoped_allocator_adaptor& ++ operator=(scoped_allocator_adaptor&&) = default; ++ + inner_allocator_type& inner_allocator() noexcept + { return _M_inner._M_get(this); } + +Index: libstdc++-v3/include/std/array +=================================================================== +--- a/src/libstdc++-v3/include/std/array (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/std/array (.../branches/gcc-4_9-branch) +@@ -51,6 +51,10 @@ + static constexpr _Tp& + _S_ref(const _Type& __t, std::size_t __n) noexcept + { return const_cast<_Tp&>(__t[__n]); } ++ ++ static constexpr _Tp* ++ _S_ptr(const _Type& __t) noexcept ++ { return const_cast<_Tp*>(__t); } + }; + + template +@@ -61,6 +65,10 @@ + static constexpr _Tp& + _S_ref(const _Type&, std::size_t) noexcept + { return *static_cast<_Tp*>(nullptr); } ++ ++ static constexpr _Tp* ++ _S_ptr(const _Type&) noexcept ++ { return nullptr; } + }; + + /** +@@ -219,11 +227,11 @@ + + pointer + data() noexcept +- { return std::__addressof(_AT_Type::_S_ref(_M_elems, 0)); } ++ { return _AT_Type::_S_ptr(_M_elems); } + + const_pointer + data() const noexcept +- { return std::__addressof(_AT_Type::_S_ref(_M_elems, 0)); } ++ { return _AT_Type::_S_ptr(_M_elems); } + }; + + // Array comparisons. +Index: libstdc++-v3/include/parallel/numeric +=================================================================== +--- a/src/libstdc++-v3/include/parallel/numeric (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/parallel/numeric (.../branches/gcc-4_9-branch) +@@ -85,8 +85,7 @@ + __accumulate_switch(__RAIter __begin, __RAIter __end, + _Tp __init, _BinaryOperation __binary_op, + random_access_iterator_tag, +- __gnu_parallel::_Parallelism __parallelism_tag +- = __gnu_parallel::parallel_unbalanced) ++ __gnu_parallel::_Parallelism __parallelism_tag) + { + if (_GLIBCXX_PARALLEL_CONDITION( + static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin) +@@ -193,8 +192,7 @@ + _BinaryFunction2 __binary_op2, + random_access_iterator_tag, + random_access_iterator_tag, +- __gnu_parallel::_Parallelism __parallelism_tag +- = __gnu_parallel::parallel_unbalanced) ++ __gnu_parallel::_Parallelism __parallelism_tag) + { + if (_GLIBCXX_PARALLEL_CONDITION((__last1 - __first1) + >= __gnu_parallel::_Settings::get(). +@@ -419,8 +417,7 @@ + random_access_iterator_tag, + random_access_iterator_tag, + __gnu_parallel::_Parallelism +- __parallelism_tag +- = __gnu_parallel::parallel_balanced) ++ __parallelism_tag) + { + if (_GLIBCXX_PARALLEL_CONDITION( + static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin) +Index: libstdc++-v3/include/parallel/algo.h +=================================================================== +--- a/src/libstdc++-v3/include/parallel/algo.h (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/parallel/algo.h (.../branches/gcc-4_9-branch) +@@ -81,9 +81,8 @@ + template + _Function + __for_each_switch(_RAIter __begin, _RAIter __end, +- _Function __f, random_access_iterator_tag, +- __gnu_parallel::_Parallelism __parallelism_tag +- = __gnu_parallel::parallel_balanced) ++ _Function __f, random_access_iterator_tag, ++ __gnu_parallel::_Parallelism __parallelism_tag) + { + if (_GLIBCXX_PARALLEL_CONDITION( + static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin) +@@ -896,8 +895,7 @@ + typename iterator_traits<_RAIter>::difference_type + __count_switch(_RAIter __begin, _RAIter __end, + const _Tp& __value, random_access_iterator_tag, +- __gnu_parallel::_Parallelism __parallelism_tag +- = __gnu_parallel::parallel_unbalanced) ++ __gnu_parallel::_Parallelism __parallelism_tag) + { + typedef iterator_traits<_RAIter> _TraitsType; + typedef typename _TraitsType::value_type _ValueType; +@@ -966,8 +964,7 @@ + typename iterator_traits<_RAIter>::difference_type + __count_if_switch(_RAIter __begin, _RAIter __end, + _Predicate __pred, random_access_iterator_tag, +- __gnu_parallel::_Parallelism __parallelism_tag +- = __gnu_parallel::parallel_unbalanced) ++ __gnu_parallel::_Parallelism __parallelism_tag) + { + typedef iterator_traits<_RAIter> _TraitsType; + typedef typename _TraitsType::value_type _ValueType; +@@ -1225,8 +1222,7 @@ + __transform1_switch(_RAIter1 __begin, _RAIter1 __end, + _RAIter2 __result, _UnaryOperation __unary_op, + random_access_iterator_tag, random_access_iterator_tag, +- __gnu_parallel::_Parallelism __parallelism_tag +- = __gnu_parallel::parallel_balanced) ++ __gnu_parallel::_Parallelism __parallelism_tag) + { + if (_GLIBCXX_PARALLEL_CONDITION( + static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin) +@@ -1315,8 +1311,7 @@ + _RAIter3 __result, _BinaryOperation __binary_op, + random_access_iterator_tag, random_access_iterator_tag, + random_access_iterator_tag, +- __gnu_parallel::_Parallelism __parallelism_tag +- = __gnu_parallel::parallel_balanced) ++ __gnu_parallel::_Parallelism __parallelism_tag) + { + if (_GLIBCXX_PARALLEL_CONDITION( + (__end1 - __begin1) >= +@@ -1422,8 +1417,7 @@ + __replace_switch(_RAIter __begin, _RAIter __end, + const _Tp& __old_value, const _Tp& __new_value, + random_access_iterator_tag, +- __gnu_parallel::_Parallelism __parallelism_tag +- = __gnu_parallel::parallel_balanced) ++ __gnu_parallel::_Parallelism __parallelism_tag) + { + // XXX parallel version is where? + replace(__begin, __end, __old_value, __new_value, +@@ -1478,8 +1472,7 @@ + __replace_if_switch(_RAIter __begin, _RAIter __end, + _Predicate __pred, const _Tp& __new_value, + random_access_iterator_tag, +- __gnu_parallel::_Parallelism __parallelism_tag +- = __gnu_parallel::parallel_balanced) ++ __gnu_parallel::_Parallelism __parallelism_tag) + { + if (_GLIBCXX_PARALLEL_CONDITION( + static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin) +@@ -1544,8 +1537,7 @@ + void + __generate_switch(_RAIter __begin, _RAIter __end, + _Generator __gen, random_access_iterator_tag, +- __gnu_parallel::_Parallelism __parallelism_tag +- = __gnu_parallel::parallel_balanced) ++ __gnu_parallel::_Parallelism __parallelism_tag) + { + if (_GLIBCXX_PARALLEL_CONDITION( + static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin) +@@ -1608,8 +1600,7 @@ + inline _RAIter + __generate_n_switch(_RAIter __begin, _Size __n, _Generator __gen, + random_access_iterator_tag, +- __gnu_parallel::_Parallelism __parallelism_tag +- = __gnu_parallel::parallel_balanced) ++ __gnu_parallel::_Parallelism __parallelism_tag) + { + // XXX parallel version is where? + return generate_n(__begin, __n, __gen, __gnu_parallel::sequential_tag()); +@@ -2204,8 +2195,7 @@ + _RAIter + __max_element_switch(_RAIter __begin, _RAIter __end, + _Compare __comp, random_access_iterator_tag, +- __gnu_parallel::_Parallelism __parallelism_tag +- = __gnu_parallel::parallel_balanced) ++ __gnu_parallel::_Parallelism __parallelism_tag) + { + if (_GLIBCXX_PARALLEL_CONDITION( + static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin) +@@ -2296,8 +2286,7 @@ + _RAIter + __min_element_switch(_RAIter __begin, _RAIter __end, + _Compare __comp, random_access_iterator_tag, +- __gnu_parallel::_Parallelism __parallelism_tag +- = __gnu_parallel::parallel_balanced) ++ __gnu_parallel::_Parallelism __parallelism_tag) + { + if (_GLIBCXX_PARALLEL_CONDITION( + static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin) +Index: libstdc++-v3/include/experimental/optional +=================================================================== +--- a/src/libstdc++-v3/include/experimental/optional (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/experimental/optional (.../branches/gcc-4_9-branch) +@@ -106,9 +106,9 @@ + class bad_optional_access : public logic_error + { + public: +- // XXX Should not be inline +- explicit bad_optional_access(const string& __arg) : logic_error(__arg) { } ++ bad_optional_access() : logic_error("bad optional access") { } + ++ // XXX This constructor is non-standard. Should not be inline + explicit bad_optional_access(const char* __arg) : logic_error(__arg) { } + + virtual ~bad_optional_access() noexcept = default; +Index: libstdc++-v3/include/profile/array +=================================================================== +--- a/src/libstdc++-v3/include/profile/array (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/profile/array (.../branches/gcc-4_9-branch) +@@ -178,11 +178,11 @@ + + pointer + data() noexcept +- { return std::__addressof(_AT_Type::_S_ref(_M_elems, 0)); } ++ { return _AT_Type::_S_ptr(_M_elems); } + + const_pointer + data() const noexcept +- { return std::__addressof(_AT_Type::_S_ref(_M_elems, 0)); } ++ { return _AT_Type::_S_ptr(_M_elems); } + }; + + // Array comparisons. +Index: libstdc++-v3/include/bits/stl_algobase.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/stl_algobase.h (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/bits/stl_algobase.h (.../branches/gcc-4_9-branch) +@@ -711,8 +711,8 @@ + __fill_a(_Tp* __first, _Tp* __last, const _Tp& __c) + { + const _Tp __tmp = __c; +- __builtin_memset(__first, static_cast(__tmp), +- __last - __first); ++ if (const size_t __len = __last - __first) ++ __builtin_memset(__first, static_cast(__tmp), __len); + } + + /** +@@ -818,8 +818,9 @@ + static bool + equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2) + { +- return !__builtin_memcmp(__first1, __first2, sizeof(_Tp) +- * (__last1 - __first1)); ++ if (const size_t __len = (__last1 - __first1)) ++ return !__builtin_memcmp(__first1, __first2, sizeof(_Tp) * __len); ++ return true; + } + }; + +@@ -923,9 +924,10 @@ + { + const size_t __len1 = __last1 - __first1; + const size_t __len2 = __last2 - __first2; +- const int __result = __builtin_memcmp(__first1, __first2, +- std::min(__len1, __len2)); +- return __result != 0 ? __result < 0 : __len1 < __len2; ++ if (const size_t __len = std::min(__len1, __len2)) ++ if (int __result = __builtin_memcmp(__first1, __first2, __len)) ++ return __result < 0; ++ return __len1 < __len2; + } + }; + +Index: libstdc++-v3/include/bits/regex_compiler.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/regex_compiler.h (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/bits/regex_compiler.h (.../branches/gcc-4_9-branch) +@@ -118,7 +118,8 @@ + + template + void +- _M_expression_term(_BracketMatcher<_TraitsT, __icase, __collate>& ++ _M_expression_term(pair& __last_char, ++ _BracketMatcher<_TraitsT, __icase, __collate>& + __matcher); + + int +@@ -390,6 +391,8 @@ + void + _M_make_range(_CharT __l, _CharT __r) + { ++ if (__l > __r) ++ __throw_regex_error(regex_constants::error_range); + _M_range_set.push_back(make_pair(_M_translator._M_transform(__l), + _M_translator._M_transform(__r))); + #ifdef _GLIBCXX_DEBUG +Index: libstdc++-v3/include/bits/basic_string.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/basic_string.h (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/bits/basic_string.h (.../branches/gcc-4_9-branch) +@@ -2844,8 +2844,7 @@ + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace + +-#if ((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99) \ +- && !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF)) ++#if __cplusplus >= 201103L && defined(_GLIBCXX_USE_C99) + + #include + +@@ -2995,6 +2994,7 @@ + stold(const wstring& __str, size_t* __idx = 0) + { return __gnu_cxx::__stoa(&std::wcstold, "stold", __str.c_str(), __idx); } + ++#ifndef _GLIBCXX_HAVE_BROKEN_VSWPRINTF + // DR 1261. + inline wstring + to_wstring(int __val) +@@ -3056,6 +3056,7 @@ + return __gnu_cxx::__to_xstring(&std::vswprintf, __n, + L"%Lf", __val); + } ++#endif // _GLIBCXX_HAVE_BROKEN_VSWPRINTF + #endif + + _GLIBCXX_END_NAMESPACE_VERSION +Index: libstdc++-v3/include/bits/stl_uninitialized.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/stl_uninitialized.h (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/bits/stl_uninitialized.h (.../branches/gcc-4_9-branch) +@@ -115,8 +115,9 @@ + const bool __assignable = true; + #else + // trivial types can have deleted assignment +- typedef typename iterator_traits<_InputIterator>::reference _RefType; +- const bool __assignable = is_assignable<_ValueType1, _RefType>::value; ++ typedef typename iterator_traits<_InputIterator>::reference _RefType1; ++ typedef typename iterator_traits<_ForwardIterator>::reference _RefType2; ++ const bool __assignable = is_assignable<_RefType2, _RefType1>::value; + #endif + + return std::__uninitialized_copy<__is_trivial(_ValueType1) +Index: libstdc++-v3/include/bits/stl_algo.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/stl_algo.h (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/bits/stl_algo.h (.../branches/gcc-4_9-branch) +@@ -3595,7 +3595,8 @@ + + // Efficiently compare identical prefixes: O(N) if sequences + // have the same elements in the same order. +- for (; __first1 != __last1; ++__first1, ++__first2) ++ for (; __first1 != __last1 && __first2 != __last2; ++ ++__first1, ++__first2) + if (!__pred(__first1, __first2)) + break; + +Index: libstdc++-v3/include/bits/regex_executor.tcc +=================================================================== +--- a/src/libstdc++-v3/include/bits/regex_executor.tcc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/bits/regex_executor.tcc (.../branches/gcc-4_9-branch) +@@ -267,9 +267,11 @@ + _M_dfs<__match_mode>(__state._M_next); + break; + case _S_opcode_match: ++ if (_M_current == _M_end) ++ break; + if (__dfs_mode) + { +- if (_M_current != _M_end && __state._M_matches(*_M_current)) ++ if (__state._M_matches(*_M_current)) + { + ++_M_current; + _M_dfs<__match_mode>(__state._M_next); +@@ -350,23 +352,24 @@ + bool _Executor<_BiIter, _Alloc, _TraitsT, __dfs_mode>:: + _M_word_boundary(_State<_TraitsT> __state) const + { +- // By definition. +- bool __ans = false; +- auto __pre = _M_current; +- --__pre; +- if (!(_M_at_begin() && _M_at_end())) ++ bool __left_is_word = false; ++ if (_M_current != _M_begin ++ || (_M_flags & regex_constants::match_prev_avail)) + { +- if (_M_at_begin()) +- __ans = _M_is_word(*_M_current) +- && !(_M_flags & regex_constants::match_not_bow); +- else if (_M_at_end()) +- __ans = _M_is_word(*__pre) +- && !(_M_flags & regex_constants::match_not_eow); +- else +- __ans = _M_is_word(*_M_current) +- != _M_is_word(*__pre); ++ auto __prev = _M_current; ++ if (_M_is_word(*std::prev(__prev))) ++ __left_is_word = true; + } +- return __ans; ++ bool __right_is_word = ++ _M_current != _M_end && _M_is_word(*_M_current); ++ ++ if (__left_is_word == __right_is_word) ++ return false; ++ if (__left_is_word && !(_M_flags & regex_constants::match_not_eow)) ++ return true; ++ if (__right_is_word && !(_M_flags & regex_constants::match_not_bow)) ++ return true; ++ return false; + } + + _GLIBCXX_END_NAMESPACE_VERSION +Index: libstdc++-v3/include/bits/regex.tcc +=================================================================== +--- a/src/libstdc++-v3/include/bits/regex.tcc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/bits/regex.tcc (.../branches/gcc-4_9-branch) +@@ -62,6 +62,7 @@ + return false; + + typename match_results<_BiIter, _Alloc>::_Base_type& __res = __m; ++ __m._M_begin = __s; + __res.resize(__re._M_automaton->_M_sub_count() + 2); + for (auto& __it : __res) + __it.matched = false; +@@ -274,53 +275,20 @@ + "right-curly-bracket", + "tilde", + "DEL", +- "" + }; + +- // same as boost +- //static const char* __digraphs[] = +- // { +- // "ae", +- // "Ae", +- // "AE", +- // "ch", +- // "Ch", +- // "CH", +- // "ll", +- // "Ll", +- // "LL", +- // "ss", +- // "Ss", +- // "SS", +- // "nj", +- // "Nj", +- // "NJ", +- // "dz", +- // "Dz", +- // "DZ", +- // "lj", +- // "Lj", +- // "LJ", +- // "" +- // }; ++ string __s; ++ for (; __first != __last; ++__first) ++ __s += __fctyp.narrow(*__first, 0); + +- std::string __s(__last - __first, '?'); +- __fctyp.narrow(__first, __last, '?', &*__s.begin()); ++ for (const auto& __it : __collatenames) ++ if (__s == __it) ++ return string_type(1, __fctyp.widen( ++ static_cast(&__it - __collatenames))); + +- for (unsigned int __i = 0; *__collatenames[__i]; __i++) +- if (__s == __collatenames[__i]) +- return string_type(1, __fctyp.widen(static_cast(__i))); ++ // TODO Add digraph support: ++ // http://boost.sourceforge.net/libs/regex/doc/collating_names.html + +- //for (unsigned int __i = 0; *__digraphs[__i]; __i++) +- // { +- // const char* __now = __digraphs[__i]; +- // if (__s == __now) +- // { +- // string_type ret(__s.size(), __fctyp.widen('?')); +- // __fctyp.widen(__now, __now + 2/* ouch */, &*ret.begin()); +- // return ret; +- // } +- // } + return string_type(); + } + +@@ -331,12 +299,10 @@ + lookup_classname(_Fwd_iter __first, _Fwd_iter __last, bool __icase) const + { + typedef std::ctype __ctype_type; +- typedef std::ctype __cctype_type; +- typedef const pair _ClassnameEntry; + const __ctype_type& __fctyp(use_facet<__ctype_type>(_M_locale)); +- const __cctype_type& __cctyp(use_facet<__cctype_type>(_M_locale)); + +- static _ClassnameEntry __classnames[] = ++ // Mappings from class name to class mask. ++ static const pair __classnames[] = + { + {"d", ctype_base::digit}, + {"w", {ctype_base::alnum, _RegexMask::_S_under}}, +@@ -355,22 +321,19 @@ + {"xdigit", ctype_base::xdigit}, + }; + +- std::string __s(__last - __first, '?'); +- __fctyp.narrow(__first, __last, '?', &__s[0]); +- __cctyp.tolower(&*__s.begin(), &*__s.begin() + __s.size()); +- for (_ClassnameEntry* __it = __classnames; +- __it < *(&__classnames + 1); +- ++__it) +- { +- if (__s == __it->first) +- { +- if (__icase +- && ((__it->second +- & (ctype_base::lower | ctype_base::upper)) != 0)) +- return ctype_base::alpha; +- return __it->second; +- } +- } ++ string __s; ++ for (; __first != __last; ++__first) ++ __s += __fctyp.narrow(__fctyp.tolower(*__first), 0); ++ ++ for (const auto& __it : __classnames) ++ if (__s == __it.first) ++ { ++ if (__icase ++ && ((__it.second ++ & (ctype_base::lower | ctype_base::upper)) != 0)) ++ return ctype_base::alpha; ++ return __it.second; ++ } + return 0; + } + +@@ -581,8 +544,10 @@ + | regex_constants::match_continuous)) + { + _GLIBCXX_DEBUG_ASSERT(_M_match[0].matched); +- _M_match.at(_M_match.size()).first = __prefix_first; +- _M_match._M_in_iterator = true; ++ auto& __prefix = _M_match.at(_M_match.size()); ++ __prefix.first = __prefix_first; ++ __prefix.matched = __prefix.first != __prefix.second; ++ // [28.12.1.4.5] + _M_match._M_begin = _M_begin; + return *this; + } +@@ -594,8 +559,10 @@ + if (regex_search(__start, _M_end, _M_match, *_M_pregex, _M_flags)) + { + _GLIBCXX_DEBUG_ASSERT(_M_match[0].matched); +- _M_match.at(_M_match.size()).first = __prefix_first; +- _M_match._M_in_iterator = true; ++ auto& __prefix = _M_match.at(_M_match.size()); ++ __prefix.first = __prefix_first; ++ __prefix.matched = __prefix.first != __prefix.second; ++ // [28.12.1.4.5] + _M_match._M_begin = _M_begin; + } + else +@@ -614,11 +581,9 @@ + _M_position = __rhs._M_position; + _M_subs = __rhs._M_subs; + _M_n = __rhs._M_n; +- _M_result = __rhs._M_result; + _M_suffix = __rhs._M_suffix; + _M_has_m1 = __rhs._M_has_m1; +- if (__rhs._M_result == &__rhs._M_suffix) +- _M_result = &_M_suffix; ++ _M_normalize_result(); + return *this; + } + +Index: libstdc++-v3/include/bits/regex.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/regex.h (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/bits/regex.h (.../branches/gcc-4_9-branch) +@@ -449,7 +449,7 @@ + */ + explicit + basic_regex(const _Ch_type* __p, flag_type __f = ECMAScript) +- : basic_regex(__p, __p + _Rx_traits::length(__p), __f) ++ : basic_regex(__p, __p + char_traits<_Ch_type>::length(__p), __f) + { } + + /** +@@ -476,7 +476,10 @@ + */ + basic_regex(const basic_regex& __rhs) + : _M_flags(__rhs._M_flags), _M_original_str(__rhs._M_original_str) +- { this->imbue(__rhs.getloc()); } ++ { ++ _M_traits.imbue(__rhs.getloc()); ++ this->assign(_M_original_str, _M_flags); ++ } + + /** + * @brief Move-constructs a basic regular expression. +@@ -490,7 +493,8 @@ + : _M_flags(__rhs._M_flags), + _M_original_str(std::move(__rhs._M_original_str)) + { +- this->imbue(__rhs.getloc()); ++ _M_traits.imbue(__rhs.getloc()); ++ this->assign(_M_original_str, _M_flags); + __rhs._M_automaton.reset(); + } + +@@ -580,10 +584,22 @@ + */ + basic_regex& + operator=(const _Ch_type* __p) +- { return this->assign(__p, flags()); } ++ { return this->assign(__p); } + + /** + * @brief Replaces a regular expression with a new one constructed from ++ * an initializer list. ++ * ++ * @param __l The initializer list. ++ * ++ * @throws regex_error if @p __l is not a valid regular expression. ++ */ ++ basic_regex& ++ operator=(initializer_list<_Ch_type> __l) ++ { return this->assign(__l.begin(), __l.end()); } ++ ++ /** ++ * @brief Replaces a regular expression with a new one constructed from + * a string. + * + * @param __s A pointer to a string containing a regular expression. +@@ -591,7 +607,7 @@ + template + basic_regex& + operator=(const basic_string<_Ch_type, _Ch_typeraits, _Alloc>& __s) +- { return this->assign(__s, flags()); } ++ { return this->assign(__s); } + + // [7.8.3] assign + /** +@@ -604,7 +620,8 @@ + { + _M_flags = __rhs._M_flags; + _M_original_str = __rhs._M_original_str; +- this->imbue(__rhs.getloc()); ++ _M_traits.imbue(__rhs.getloc()); ++ this->assign(_M_original_str, _M_flags); + return *this; + } + +@@ -622,7 +639,9 @@ + _M_flags = __rhs._M_flags; + _M_original_str = std::move(__rhs._M_original_str); + __rhs._M_automaton.reset(); +- this->imbue(__rhs.getloc()); ++ _M_traits.imbue(__rhs.getloc()); ++ this->assign(_M_original_str, _M_flags); ++ return *this; + } + + /** +@@ -675,12 +694,10 @@ + assign(const basic_string<_Ch_type, _Ch_typeraits, _Alloc>& __s, + flag_type __flags = ECMAScript) + { ++ _M_automaton = __detail::__compile_nfa( ++ __s.data(), __s.data() + __s.size(), _M_traits, __flags); ++ _M_original_str = __s; + _M_flags = __flags; +- _M_original_str.assign(__s.begin(), __s.end()); +- auto __p = _M_original_str.c_str(); +- _M_automaton = __detail::__compile_nfa(__p, +- __p + _M_original_str.size(), +- _M_traits, _M_flags); + return *this; + } + +@@ -725,7 +742,11 @@ + */ + unsigned int + mark_count() const +- { return _M_automaton->_M_sub_count() - 1; } ++ { ++ if (_M_automaton) ++ return _M_automaton->_M_sub_count() - 1; ++ return 0; ++ } + + /** + * @brief Gets the flags used to construct the regular expression +@@ -744,9 +765,8 @@ + locale_type + imbue(locale_type __loc) + { +- auto __ret = _M_traits.imbue(__loc); +- this->assign(_M_original_str, _M_flags); +- return __ret; ++ _M_automaton.reset(); ++ return _M_traits.imbue(__loc); + } + + /** +@@ -767,8 +787,10 @@ + swap(basic_regex& __rhs) + { + std::swap(_M_flags, __rhs._M_flags); +- std::swap(_M_original_str, __rhs._M_original_str); +- this->imbue(__rhs.imbue(this->getloc())); ++ std::swap(_M_traits, __rhs._M_traits); ++ auto __tmp = std::move(_M_original_str); ++ this->assign(__rhs._M_original_str, _M_flags); ++ __rhs.assign(__tmp, __rhs._M_flags); + } + + #ifdef _GLIBCXX_DEBUG +@@ -777,7 +799,7 @@ + { _M_automaton->_M_dot(__ostr); } + #endif + +- protected: ++ private: + typedef std::shared_ptr<__detail::_NFA<_Rx_traits>> _AutomatonPtr; + + templateprefix().first, +- (*this)[__sub].first) : -1; ++ return __sub < size() ? std::distance(_M_begin, ++ (*this)[__sub].first) : -1; + } + + /** +@@ -1778,7 +1783,7 @@ + */ + const_iterator + cbegin() const +- { return _Base_type::cbegin() + 2; } ++ { return this->begin(); } + + /** + * @brief Gets an iterator to one-past-the-end of the collection. +@@ -1792,7 +1797,7 @@ + */ + const_iterator + cend() const +- { return _Base_type::cend(); } ++ { return this->end(); } + + //@} + +@@ -1881,7 +1886,11 @@ + */ + void + swap(match_results& __that) +- { _Base_type::swap(__that); } ++ { ++ using std::swap; ++ _Base_type::swap(__that); ++ swap(_M_begin, __that._M_begin); ++ } + //@} + + private: +@@ -2620,7 +2629,7 @@ + regex_constants::match_flag_type __m + = regex_constants::match_default) + : _M_position(__a, __b, __re, __m), +- _M_subs(__submatches, *(&__submatches+1)), _M_n(0) ++ _M_subs(__submatches, __submatches + _Nm), _M_n(0) + { _M_init(__a, __b); } + + /** +@@ -2629,12 +2638,8 @@ + */ + regex_token_iterator(const regex_token_iterator& __rhs) + : _M_position(__rhs._M_position), _M_subs(__rhs._M_subs), +- _M_suffix(__rhs._M_suffix), _M_n(__rhs._M_n), _M_result(__rhs._M_result), +- _M_has_m1(__rhs._M_has_m1) +- { +- if (__rhs._M_result == &__rhs._M_suffix) +- _M_result = &_M_suffix; +- } ++ _M_suffix(__rhs._M_suffix), _M_n(__rhs._M_n), _M_has_m1(__rhs._M_has_m1) ++ { _M_normalize_result(); } + + /** + * @brief Assigns a %regex_token_iterator to another. +@@ -2706,6 +2711,18 @@ + _M_end_of_seq() const + { return _M_result == nullptr; } + ++ // [28.12.2.2.4] ++ void ++ _M_normalize_result() ++ { ++ if (_M_position != _Position()) ++ _M_result = &_M_current_match(); ++ else if (_M_has_m1) ++ _M_result = &_M_suffix; ++ else ++ _M_result = nullptr; ++ } ++ + _Position _M_position; + std::vector _M_subs; + value_type _M_suffix; +Index: libstdc++-v3/include/bits/regex_compiler.tcc +=================================================================== +--- a/src/libstdc++-v3/include/bits/regex_compiler.tcc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/bits/regex_compiler.tcc (.../branches/gcc-4_9-branch) +@@ -271,7 +271,7 @@ + { + auto& __tmp = _M_nfa[__stack.top()]; + __stack.pop(); +- swap(__tmp._M_next, __tmp._M_alt); ++ std::swap(__tmp._M_next, __tmp._M_alt); + } + } + _M_stack.push(__e); +@@ -410,11 +410,21 @@ + _M_insert_bracket_matcher(bool __neg) + { + _BracketMatcher<_TraitsT, __icase, __collate> __matcher(__neg, _M_traits); ++ pair __last_char; // Optional<_CharT> ++ __last_char.first = false; ++ if (!(_M_flags & regex_constants::ECMAScript)) ++ if (_M_try_char()) ++ { ++ __matcher._M_add_char(_M_value[0]); ++ __last_char.first = true; ++ __last_char.second = _M_value[0]; ++ } + while (!_M_match_token(_ScannerT::_S_token_bracket_end)) +- _M_expression_term(__matcher); ++ _M_expression_term(__last_char, __matcher); + __matcher._M_ready(); +- _M_stack.push(_StateSeqT(_M_nfa, +- _M_nfa._M_insert_matcher(std::move(__matcher)))); ++ _M_stack.push(_StateSeqT( ++ _M_nfa, ++ _M_nfa._M_insert_matcher(std::move(__matcher)))); + } + + template +@@ -421,7 +431,9 @@ + template + void + _Compiler<_TraitsT>:: +- _M_expression_term(_BracketMatcher<_TraitsT, __icase, __collate>& __matcher) ++ _M_expression_term(pair& __last_char, ++ _BracketMatcher<_TraitsT, __icase, __collate>& __matcher) ++ + { + if (_M_match_token(_ScannerT::_S_token_collsymbol)) + __matcher._M_add_collating_element(_M_value); +@@ -429,27 +441,50 @@ + __matcher._M_add_equivalence_class(_M_value); + else if (_M_match_token(_ScannerT::_S_token_char_class_name)) + __matcher._M_add_character_class(_M_value, false); +- else if (_M_try_char()) // [a ++ // POSIX doesn't permit '-' as a start-range char (say [a-z--0]), ++ // except when the '-' is the first character in the bracket expression ++ // ([--0]). ECMAScript treats all '-' after a range as a normal character. ++ // Also see above, where _M_expression_term gets called. ++ // ++ // As a result, POSIX rejects [-----], but ECMAScript doesn't. ++ // Boost (1.57.0) always uses POSIX style even in its ECMAScript syntax. ++ // Clang (3.5) always uses ECMAScript style even in its POSIX syntax. ++ // ++ // It turns out that no one reads BNFs ;) ++ else if (_M_try_char()) + { +- auto __ch = _M_value[0]; +- if (_M_try_char()) ++ if (!__last_char.first) + { +- if (_M_value[0] == '-') // [a- ++ if (_M_value[0] == '-' ++ && !(_M_flags & regex_constants::ECMAScript)) ++ __throw_regex_error(regex_constants::error_range); ++ __matcher._M_add_char(_M_value[0]); ++ __last_char.first = true; ++ __last_char.second = _M_value[0]; ++ } ++ else ++ { ++ if (_M_value[0] == '-') + { +- if (_M_try_char()) // [a-z] ++ if (_M_try_char()) + { +- __matcher._M_make_range(__ch, _M_value[0]); +- return; ++ __matcher._M_make_range(__last_char.second , _M_value[0]); ++ __last_char.first = false; + } +- // If the dash is the last character in the bracket +- // expression, it is not special. +- if (_M_scanner._M_get_token() +- != _ScannerT::_S_token_bracket_end) +- __throw_regex_error(regex_constants::error_range); ++ else ++ { ++ if (_M_scanner._M_get_token() ++ != _ScannerT::_S_token_bracket_end) ++ __throw_regex_error(regex_constants::error_range); ++ __matcher._M_add_char(_M_value[0]); ++ } + } +- __matcher._M_add_char(_M_value[0]); ++ else ++ { ++ __matcher._M_add_char(_M_value[0]); ++ __last_char.second = _M_value[0]; ++ } + } +- __matcher._M_add_char(__ch); + } + else if (_M_match_token(_ScannerT::_S_token_quoted_class)) + __matcher._M_add_character_class(_M_value, +Index: libstdc++-v3/include/tr1/functional +=================================================================== +--- a/src/libstdc++-v3/include/tr1/functional (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/include/tr1/functional (.../branches/gcc-4_9-branch) +@@ -2112,9 +2112,9 @@ + { + if (static_cast(__x)) + { ++ __x._M_manager(_M_functor, __x._M_functor, __clone_functor); + _M_invoker = __x._M_invoker; + _M_manager = __x._M_manager; +- __x._M_manager(_M_functor, __x._M_functor, __clone_functor); + } + } + +@@ -2130,9 +2130,9 @@ + + if (_My_handler::_M_not_empty_function(__f)) + { ++ _My_handler::_M_init_functor(_M_functor, __f); + _M_invoker = &_My_handler::_M_invoke; + _M_manager = &_My_handler::_M_manager; +- _My_handler::_M_init_functor(_M_functor, __f); + } + } + +Index: libstdc++-v3/ChangeLog +=================================================================== +--- a/src/libstdc++-v3/ChangeLog (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/ChangeLog (.../branches/gcc-4_9-branch) +@@ -1,3 +1,350 @@ ++2015-06-16 Ramana Radhakrishnan ++ ++ PR target/66200 ++ * configure.host (host_cpu): Add aarch64 case. ++ * config/cpu/aarch64/atomic_word.h: New file. ++ ++2015-06-10 Jonathan Wakely ++ ++ Backport from mainline ++ 2015-01-20 Jonathan Wakely ++ ++ PR libstdc++/64650 ++ * include/experimental/optional (bad_optional_access): Add default ++ constructor. ++ * testsuite/experimental/optional/requirements.cc: Test for default ++ constructor. ++ ++2015-06-08 Jonathan Wakely ++ ++ Backported from mainline ++ 2015-06-01 Jonathan Wakely ++ ++ * testsuite/lib/libstdc++.exp (libstdc++_init): Unset LANGUAGE ++ environment variable. ++ ++ PR libstdc++/66354 ++ * include/bits/stl_algobase.h (__fill_a): Check length before calling ++ memset. ++ ++ PR libstdc++/66327 ++ * include/bits/stl_algobase.h (__equal::equal): Do not call ++ memcmp for empty ranges. ++ (__lexicographical_compare::__lc): Likewise. ++ ++ Backport from mainline ++ 2015-04-13 Jonathan Wakely ++ ++ * doc/xml/manual/evolution.xml: Document changes since 4.5 release. ++ * doc/html/*: Regenerate. ++ ++2015-06-05 Tim Shen ++ ++ PR libstdc++/66359 ++ Backport from mainline ++ 2014-11-13 Tim Shen ++ ++ PR libstdc++/63775 ++ * include/bits/regex_compiler.h (_Compiler<>::_M_expression_term, ++ _BracketMatcher<>::_M_make_range): Throw regex_erorr on invalid range ++ like [z-a]. Change _M_expression_term interface. ++ * include/bits/regex_compiler.tcc ( ++ _Compiler<>::_M_insert_bracket_matcher, ++ _Compiler<>::_M_expression_term): Rewrite bracket expression parsing. ++ * testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc: ++ Add testcases and move file out of extended. ++ ++2015-06-04 Renlin Li ++ ++ Backported from mainline ++ 2015-06-02 Renlin Li ++ ++ * testsuite/27_io/fpos/14775.cc: Add _GLIBCXX_HAVE_LIMIT_FSIZE check. ++ ++2015-05-28 Jonathan Wakely ++ ++ PR libstdc++/65352 ++ * include/profile/array (array::data): Use __array_traits::_S_ptr. ++ * include/debug/array (array::data): Likewise. ++ * include/std/array (__array_traits::_S_ptr): New function. ++ (array::data): Use _S_ptr to avoid creating invalid reference. ++ * testsuite/23_containers/array/tuple_interface/get_neg.cc: Adjust ++ dg-error line numbers. ++ * testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc: ++ likewise. ++ ++ Backport from mainline ++ 2015-01-20 Jonathan Wakely ++ ++ PR libstdc++/64658 ++ * include/std/atomic (atomic_init): Define. ++ * testsuite/29_atomics/atomic/64658.cc: New. ++ ++ Backport from mainline ++ 2014-12-22 Jonathan Wakely ++ ++ PR libstdc++/37522 ++ * include/bits/basic_string.h (stod, stof, stoi, stol, stold, stoll, ++ stoul, stoull, to_string): Only use _GLIBCXX_HAVE_BROKEN_VSWPRINTF ++ to guard definition of to_wstring. ++ ++2015-05-22 David Edelsohn ++ ++ Backport from mainline ++ 2015-05-21 David Edelsohn ++ ++ PR target/66224 ++ * config/cpu/powerpc/atomic_word.h (_GLIBCXX_READ_MEM_BARRIER): ++ Don't use isync. Use lwsync if available. ++ ++2015-05-07 Renlin Li ++ ++ Backported from mainline ++ 2015-04-22 Renlin Li ++ ++ * testsuite/lib/dg-options.exp (dg-require-thread-fence): New. ++ * testsuite/lib/libstdc++.exp (check_v3_target_thread_fence): New. ++ * testsuite/29_atomics/atomic_flag/clear/1.cc: Use it. ++ * testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc: Likewise. ++ * testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc: Likewise. ++ ++2015-04-11 Jonathan Wakely ++ ++ * testsuite/30_threads/shared_lock/cons/5.cc: Remove ++ dg-require-gthreads-timed. ++ * testsuite/30_threads/shared_lock/cons/6.cc: Likewise. ++ * testsuite/30_threads/shared_lock/locking/3.cc: Likewise. ++ * testsuite/30_threads/shared_lock/locking/4.cc: Likewise. ++ ++ Backport from mainline ++ 2015-04-10 Jonathan Wakely ++ ++ * include/std/shared_mutex (shared_timed_mutex): Add comments to ++ explain the logic in the non-pthread_rwlock_t version. ++ (_Mutex): Remove redundant type. ++ (_M_n_readers): Rename to _S_max_readers. ++ (_M_write_entered, _M_readers): New convenience functions. ++ (lock, lock_shared, try_lock_shared, unlock_shared): Use convenience ++ functions. Use predicates with condition variables. Simplify bitwise ++ operations. ++ (try_lock_for, try_shared_lock_for): Convert duration to time_point ++ and call try_lock_until or try_shared_lock_until respectively. ++ (try_lock_until, try_shared_lock_until): Wait on the condition ++ variables until the specified time passes. ++ (unlock): Add Debug Mode assertion. ++ (unlock_shared): Add Debug Mode assertion. ++ * testsuite/30_threads/shared_timed_mutex/try_lock/3.cc: New. ++ ++ Backport from mainline ++ 2015-03-27 Jonathan Wakely ++ ++ PR libstdc++/65499 ++ * include/std/chrono: Add using-directive for literals to std::chrono. ++ * testsuite/20_util/duration/literals/65499.cc: New. ++ ++ Backport from mainline ++ 2015-03-26 Jonathan Wakely ++ ++ PR libstdc++/58038 ++ * include/std/thread (this_thread::sleep_for): Check for negative ++ durations. ++ (this_thread::sleep_until): Check for times in the past. ++ * testsuite/30_threads/this_thread/58038.cc: New. ++ * testsuite/30_threads/this_thread/60421.cc: New. ++ ++2015-03-25 Jonathan Wakely ++ ++ Backport from mainline ++ 2015-03-02 Jonathan Wakely ++ PR libstdc++/65279 ++ * include/std/scoped_allocator (__inner_type_impl, ++ scoped_allocator_adaptor): Add defaulted copy assignment and move ++ assignment operators. ++ * testsuite/20_util/scoped_allocator/65279.cc: New. ++ ++2015-03-25 Paolo Carlini ++ ++ PR libstdc++/65543 ++ * include/std/istream (operator>>(basic_istream<>&&, _Tp&): Revert ++ thinko in r150387. ++ * include/std/ostream (operator<<(basic_ostream<>&&, const _Tp&): ++ Likewise. ++ * testsuite/27_io/rvalue_streams-2.cc: New. ++ ++2015-02-03 Tim Shen ++ ++ PR libstdc++/64680 ++ Backported from mainline ++ 2015-01-22 Tim Shen ++ ++ * include/bits/regex.h (basic_regex<>::basic_regex, ++ basic_regex<>::operator=, basic_regex<>::imbue): Conform to the ++ standard interface. ++ * testsuite/28_regex/basic_regex/assign/char/cstring.cc: New testcase. ++ ++2015-02-03 Tim Shen ++ ++ PR libstdc++/64649 ++ Backported from mainline ++ 2015-01-22 Tim Shen ++ ++ * include/bits/regex.tcc (regex_traits<>::lookup_collatename, ++ regex_traits<>::lookup_classname): Correctly narrow input chars. ++ * testsuite/28_regex/traits/wchar_t/user_defined.cc: New testcase. ++ ++2015-01-19 Tim Shen ++ ++ PR libstdc++/64649 ++ Backported from mainline ++ 2015-01-19 Tim Shen ++ ++ * include/bits/regex.tcc (regex_traits<>::lookup_collatename, ++ regex_traits<>::lookup_classname): Support forward iterators. ++ * testsuite/28_regex/traits/char/lookup_classname.cc: New testcases. ++ * testsuite/28_regex/traits/char/lookup_collatename.cc: New testcase. ++ ++2015-01-19 Tim Shen ++ ++ PR libstdc++/64584 ++ PR libstdc++/64585 ++ * include/bits/regex.h (basic_regex<>::basic_regex, ++ basic_regex<>::assign, basic_regex<>::imbue, ++ basic_regex<>::swap, basic_regex<>::mark_count): Drop NFA after ++ imbuing basic_regex; Make assign() transactional against exception. ++ * testsuite/28_regex/basic_regex/assign/char/string.cc: New testcase. ++ * testsuite/28_regex/basic_regex/imbue/string.cc: New testcase. ++ ++2015-01-18 Jonathan Wakely ++ ++ PR libstdc++/64646 ++ * include/bits/stl_algo.h (__is_permutation): Also test for reaching ++ end of the second range. ++ * testsuite/25_algorithms/is_permutation/64646.cc: New. ++ ++2015-01-09 Jonathan Wakely ++ ++ PR libstdc++/64476 ++ * include/bits/stl_uninitialized.h (uninitialized_copy): Fix ++ is_assignable arguments. ++ * testsuite/20_util/specialized_algorithms/uninitialized_copy/64476.cc: ++ New. ++ ++2015-01-09 Jonathan Wakely ++ ++ PR libstdc++/60966 ++ * include/std/future (packaged_task::operator()): Increment the ++ reference count on the shared state until the function returns. ++ ++2015-01-09 Tim Shen ++ ++ PR libstdc++/64239 ++ Backported form mainline ++ 2015-01-09 Tim Shen ++ ++ * include/bits/regex.h (match_results<>::swap): Use std::swap ++ instead of swap. ++ * include/bits/regex_compiler.tcc (_Compiler<>::_M_quantifier): ++ Likewise. ++ * testsuite/28_regex/match_results/swap.cc: New testcase. ++ ++2014-12-17 Tim Shen ++ ++ PR libstdc++/64302 ++ PR libstdc++/64303 ++ Backported form mainline ++ 2014-12-17 Tim Shen ++ ++ * include/bits/regex.h (match_results::cbegin, match_results::cend, ++ regex_token_iterator::regex_token_iterator, ++ regex_token_iterator::_M_normalize_result): Fix match_results cbegin ++ and cend and regex_token_iterator::_M_result invariant. ++ * include/bits/regex.tcc: Fix regex_token_iterator::_M_result invariant. ++ * testsuite/28_regex/iterators/regex_token_iterator/64303.cc: Testcase. ++ ++2014-12-13 Tim Shen ++ ++ PR libstdc++/64239 ++ * include/bits/regex.h (match_results<>::match_results, ++ match_results<>::operator=, match_results<>::position, ++ match_results<>::swap): Fix ctor/assign/swap. ++ * include/bits/regex.tcc: (__regex_algo_impl<>, ++ regex_iterator<>::operator++): Set match_results::_M_begin as ++ "start position". ++ * testsuite/28_regex/iterators/regex_iterator/char/ ++ string_position_01.cc: Test cases. ++ ++2014-12-09 Jonathan Wakely ++ ++ PR libstdc++/64203 ++ * include/std/shared_mutex: Fix preprocessor conditions. ++ * testsuite/experimental/feat-cxx14.cc: Check conditions. ++ ++2014-12-06 Jonathan Wakely ++ ++ PR libstdc++/63840 ++ * include/std/functional (function::function(const function&)): Set ++ _M_manager after operations that might throw. ++ * include/tr1/functional (function::function(const function&), ++ function::function(_Functor, _Useless)): Likewise. ++ * testsuite/20_util/function/63840.cc: New. ++ * testsuite/tr1/3_function_objects/function/63840.cc: New. ++ ++ PR libstdc++/61947 ++ * include/std/tuple (_Head_base): Use allocator_arg_t parameters to ++ disambiguate unary constructors. ++ (_Tuple_impl): Pass allocator_arg_t arguments. ++ * testsuite/20_util/tuple/61947.cc: New. ++ * testsuite/20_util/uses_allocator/cons_neg.cc: Adjust dg-error line. ++ ++2014-12-06 Tim Shen ++ ++ PR libstdc++/64140 ++ Backport form mainline ++ 2014-12-04 Tim Shen ++ ++ * include/bits/regex.tcc (regex_iterator<>::operator++): Update ++ prefix.matched after modifying prefix.first. ++ * testsuite/28_regex/iterators/regex_iterator/char/64140.cc: New ++ testcase. ++ ++2014-12-02 Matthias Klose ++ ++ PR libstdc++/64103 ++ Backport from mainline ++ 2014-11-03 Paolo Carlini ++ ++ * include/parallel/algo.h: Do not use default arguments in function ++ template redeclarations (definitions). ++ ++ 2014-11-04 Jonathan Wakely ++ ++ * include/parallel/numeric.h: Do not use default arguments in function ++ template redeclarations (definitions). ++ ++2014-11-28 Tim Shen ++ ++ PR libstdc++/63497 ++ * include/bits/regex_executor.tcc (_Executor::_M_dfs, ++ _Executor::_M_word_boundary): Avoid dereferecing _M_current at _M_end ++ or other invalid position. ++ ++2014-11-13 Thomas Preud'homme ++ ++ Backport from mainline ++ 2014-09-10 Tony Wang ++ ++ PR target/56846 ++ * libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): ++ Return with CONTINUE_UNWINDING when the state pattern ++ contains: _US_VIRTUAL_UNWIND_FRAME | _US_FORCE_UNWIND ++ ++2014-10-30 David Edelsohn ++ ++ Backported from mainline. ++ 2014-10-30 David Edelsohn ++ ++ * configure.host (aix4.3+, 5+): Do not use -G in link command. ++ + 2014-10-30 Release Manager + + * GCC 4.9.2 released. +Index: libstdc++-v3/libsupc++/eh_personality.cc +=================================================================== +--- a/src/libstdc++-v3/libsupc++/eh_personality.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/libsupc++/eh_personality.cc (.../branches/gcc-4_9-branch) +@@ -378,6 +378,12 @@ + switch (state & _US_ACTION_MASK) + { + case _US_VIRTUAL_UNWIND_FRAME: ++ // If the unwind state pattern is ++ // _US_VIRTUAL_UNWIND_FRAME | _US_FORCE_UNWIND ++ // then we don't need to search for any handler as it is not a real ++ // exception. Just unwind the stack. ++ if (state & _US_FORCE_UNWIND) ++ CONTINUE_UNWINDING; + actions = _UA_SEARCH_PHASE; + break; + +Index: libstdc++-v3/testsuite/25_algorithms/is_permutation/64646.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/25_algorithms/is_permutation/64646.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/25_algorithms/is_permutation/64646.cc (.../branches/gcc-4_9-branch) +@@ -0,0 +1,35 @@ ++// Copyright (C) 2015 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-options "-std=gnu++14" } ++ ++#include ++#include ++#include ++ ++void ++test01() ++{ ++ std::forward_list l1{0}, l2; ++ VERIFY( !std::is_permutation(l1.begin(), l1.end(), l2.begin(), l2.end()) ); ++} ++ ++int ++main() ++{ ++ test01(); ++} +Index: libstdc++-v3/testsuite/27_io/rvalue_streams-2.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/27_io/rvalue_streams-2.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/27_io/rvalue_streams-2.cc (.../branches/gcc-4_9-branch) +@@ -0,0 +1,35 @@ ++// { dg-options "-std=gnu++11" } ++// { dg-do compile } ++ ++// Copyright (C) 2015 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++#include ++ ++struct A {}; ++ ++void operator<<(std::ostream&, const A&) { } ++void operator>>(std::istream&, A&) { } ++ ++// PR libstdc++/65543 ++int main() ++{ ++ A a; ++ ++ std::ostringstream() << a; ++ std::istringstream() >> a; ++} +Index: libstdc++-v3/testsuite/27_io/fpos/14775.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/27_io/fpos/14775.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/27_io/fpos/14775.cc (.../branches/gcc-4_9-branch) +@@ -27,7 +27,7 @@ + // Basic test for LFS support. + void test01() + { +-#ifdef _GLIBCXX_USE_LFS ++#if defined (_GLIBCXX_USE_LFS) && defined (_GLIBCXX_HAVE_LIMIT_FSIZE) + using namespace std; + bool test __attribute__((unused)) = true; + +Index: libstdc++-v3/testsuite/28_regex/traits/wchar_t/user_defined.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/28_regex/traits/wchar_t/user_defined.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/28_regex/traits/wchar_t/user_defined.cc (.../branches/gcc-4_9-branch) +@@ -55,8 +55,32 @@ + VERIFY(!regex_match(L"\u2029", re)); + } + ++struct MyCtype : std::ctype ++{ ++ char ++ do_narrow(wchar_t c, char dflt) const override ++ { ++ if (c >= 256) ++ return dflt; ++ return ((char)c)+1; ++ } ++}; ++ ++void ++test02() ++{ ++ std::locale loc(std::locale(), new MyCtype); ++ std::regex_traits traits; ++ traits.imbue(loc); ++ wchar_t wch = L'p'; ++ VERIFY(traits.lookup_collatename(&wch, &wch+1) == L"q"); ++ std::wstring ws = L"chfhs"; // chars of "digit" shifted by 1. ++ VERIFY(traits.lookup_classname(ws.begin(), ws.end()) != 0); ++} ++ + int main() + { + test01(); ++ test02(); + return 0; + } +Index: libstdc++-v3/testsuite/28_regex/traits/char/lookup_collatename.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/28_regex/traits/char/lookup_collatename.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/28_regex/traits/char/lookup_collatename.cc (.../branches/gcc-4_9-branch) +@@ -26,6 +26,7 @@ + // 28.7 (8) Class template regex_traits [re.traits] + + #include ++#include + #include + + void +@@ -40,8 +41,19 @@ + VERIFY(t.lookup_collatename(name, name+sizeof(name)-1) == "~"); + } + ++// Test forward iterator. ++void ++test02() ++{ ++ const char strlit[] = "tilde"; ++ std::forward_list s(strlit, strlit + strlen(strlit)); ++ std::regex_traits traits; ++ VERIFY(traits.lookup_collatename(s.begin(), s.end()) == "~"); ++} ++ + int main() + { + test01(); ++ test02(); + return 0; + } +Index: libstdc++-v3/testsuite/28_regex/traits/char/lookup_classname.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/28_regex/traits/char/lookup_classname.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/28_regex/traits/char/lookup_classname.cc (.../branches/gcc-4_9-branch) +@@ -26,6 +26,7 @@ + // 28.7(9) Class template regex_traits [re.traits] + + #include ++#include + #include + + void +@@ -47,8 +48,29 @@ + VERIFY( c2 == c3 ); + } + ++// Test forward iterator ++void ++test02() ++{ ++ const char strlit[] = "upper"; ++ std::forward_list s(strlit, strlit + strlen(strlit)); ++ std::regex_traits traits; ++ VERIFY(traits.isctype('C', traits.lookup_classname(s.begin(), s.end(), false))); ++} ++ ++// icase ++void ++test03() ++{ ++ std::string s("lower"); ++ std::regex_traits traits; ++ VERIFY(traits.isctype('C', traits.lookup_classname(s.begin(), s.end(), true))); ++} ++ + int main() + { + test01(); ++ test02(); ++ test03(); + return 0; + } +Index: libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_bracket_01.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_bracket_01.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_bracket_01.cc (.../branches/gcc-4_9-branch) +@@ -1,75 +0,0 @@ +-// { dg-options "-std=gnu++11" } +- +-// +-// 2013-08-01 Tim Shen +-// +-// Copyright (C) 2013-2014 Free Software Foundation, Inc. +-// +-// This file is part of the GNU ISO C++ Library. This library is free +-// software; you can redistribute it and/or modify it under the +-// terms of the GNU General Public License as published by the +-// Free Software Foundation; either version 3, or (at your option) +-// any later version. +-// +-// This library is distributed in the hope that it will be useful, +-// but WITHOUT ANY WARRANTY; without even the implied warranty of +-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-// GNU General Public License for more details. +-// +-// You should have received a copy of the GNU General Public License along +-// with this library; see the file COPYING3. If not see +-// . +- +-// 28.11.2 regex_match +-// Tests Extended bracket expression against a C-string. +- +-#include +-#include +-#include +- +-using namespace __gnu_test; +-using namespace std; +- +-void +-test01() +-{ +- bool test __attribute__((unused)) = true; +- +- { +- std::regex re("pre/[za-x]", std::regex::extended); +- VERIFY( regex_match_debug("pre/z", re) ); +- VERIFY( regex_match_debug("pre/a", re) ); +- VERIFY( !regex_match_debug("pre/y", re) ); +- } +- { +- std::regex re("pre/[[:uPPer:]]", std::regex::extended); +- VERIFY( regex_match_debug("pre/Z", re) ); +- VERIFY( !regex_match_debug("pre/_", re) ); +- VERIFY( !regex_match_debug("pre/a", re) ); +- VERIFY( !regex_match_debug("pre/0", re) ); +- } +- { +- std::regex re("pre/[[:lOWer:]]", std::regex::extended | std::regex::icase); +- VERIFY( regex_match_debug("pre/Z", re) ); +- VERIFY( regex_match_debug("pre/a", re) ); +- } +- { +- std::regex re("pre/[[:w:][.tilde.]]", std::regex::extended); +- VERIFY( regex_match_debug("pre/~", re) ); +- VERIFY( regex_match_debug("pre/_", re) ); +- VERIFY( regex_match_debug("pre/a", re) ); +- VERIFY( regex_match_debug("pre/0", re) ); +- } +- { +- std::regex re("pre/[[=a=]]", std::regex::extended); +- VERIFY( regex_match_debug("pre/a", re) ); +- VERIFY( regex_match_debug("pre/A", re) ); +- } +-} +- +-int +-main() +-{ +- test01(); +- return 0; +-} +Index: libstdc++-v3/testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc (.../branches/gcc-4_9-branch) +@@ -0,0 +1,126 @@ ++// { dg-options "-std=gnu++11" } ++ ++// ++// 2013-08-01 Tim Shen ++// ++// Copyright (C) 2013-2015 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++// ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++// ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// 28.11.2 regex_match ++// Tests Extended bracket expression against a C-string. ++ ++#include ++#include ++#include ++ ++using namespace __gnu_test; ++using namespace std; ++ ++void ++test01() ++{ ++ bool test __attribute__((unused)) = true; ++ ++ { ++ std::regex re("pre/[za-x]", std::regex::extended); ++ VERIFY( regex_match_debug("pre/z", re) ); ++ VERIFY( regex_match_debug("pre/a", re) ); ++ VERIFY( !regex_match_debug("pre/y", re) ); ++ } ++ { ++ std::regex re("pre/[[:uPPer:]]", std::regex::extended); ++ VERIFY( regex_match_debug("pre/Z", re) ); ++ VERIFY( !regex_match_debug("pre/_", re) ); ++ VERIFY( !regex_match_debug("pre/a", re) ); ++ VERIFY( !regex_match_debug("pre/0", re) ); ++ } ++ { ++ std::regex re("pre/[[:lOWer:]]", std::regex::extended | std::regex::icase); ++ VERIFY( regex_match_debug("pre/Z", re) ); ++ VERIFY( regex_match_debug("pre/a", re) ); ++ } ++ { ++ std::regex re("pre/[[:w:][.tilde.]]", std::regex::extended); ++ VERIFY( regex_match_debug("pre/~", re) ); ++ VERIFY( regex_match_debug("pre/_", re) ); ++ VERIFY( regex_match_debug("pre/a", re) ); ++ VERIFY( regex_match_debug("pre/0", re) ); ++ } ++ { ++ std::regex re("pre/[[=a=]]", std::regex::extended); ++ VERIFY( regex_match_debug("pre/a", re) ); ++ VERIFY( regex_match_debug("pre/A", re) ); ++ } ++} ++ ++void ++test02() ++{ ++ bool test __attribute__((unused)) = true; ++ ++ try ++ { ++ std::regex re("[-----]", std::regex::extended); ++ VERIFY(false); ++ } ++ catch (const std::regex_error& e) ++ { ++ VERIFY(e.code() == std::regex_constants::error_range); ++ } ++ std::regex re("[-----]", std::regex::ECMAScript); ++} ++ ++void ++test03() ++{ ++ bool test __attribute__((unused)) = true; ++ ++ try ++ { ++ std::regex re("[z-a]", std::regex::extended); ++ VERIFY(false); ++ } ++ catch (const std::regex_error& e) ++ { ++ VERIFY(e.code() == std::regex_constants::error_range); ++ } ++} ++ ++void ++test04() ++{ ++ bool test __attribute__((unused)) = true; ++ ++ std::regex re("[-0-9a-z]"); ++ VERIFY(regex_match_debug("-", re)); ++ VERIFY(regex_match_debug("1", re)); ++ VERIFY(regex_match_debug("w", re)); ++ re.assign("[-0-9a-z]", regex_constants::basic); ++ VERIFY(regex_match_debug("-", re)); ++ VERIFY(regex_match_debug("1", re)); ++ VERIFY(regex_match_debug("w", re)); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++ test03(); ++ test04(); ++ return 0; ++} +Index: libstdc++-v3/testsuite/28_regex/basic_regex/imbue/string.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/28_regex/basic_regex/imbue/string.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/28_regex/basic_regex/imbue/string.cc (.../branches/gcc-4_9-branch) +@@ -0,0 +1,44 @@ ++// { dg-options "-std=gnu++11" } ++ ++// Copyright (C) 2015 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// [28.8.5] class template basic_regex locale ++ ++#include ++#include ++#include ++ ++// libstdc++/64585 ++void test01() ++{ ++ bool test __attribute__((unused)) = true; ++ ++ static const char s[] = "a"; ++ std::regex re("a"); ++ VERIFY(std::regex_search(s, re)); ++ ++ auto loc = re.imbue(re.getloc()); ++ VERIFY(!std::regex_search(s, re)); ++} ++ ++int ++main() ++{ ++ test01(); ++ return 0; ++} +Index: libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/string.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/string.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/string.cc (.../branches/gcc-4_9-branch) +@@ -1,4 +1,3 @@ +-// { dg-do compile } + // { dg-options "-std=gnu++0x" } + + // 2007-03-12 Stephen M. Webb +@@ -29,6 +28,7 @@ + // Tests C++ string assignment of the basic_regex class. + void test01() + { ++ bool test __attribute__((unused)) = true; + typedef std::basic_regex test_type; + + std::string s("a*b"); +@@ -36,9 +36,27 @@ + re.assign(s); + } + ++// libstdc++/64584 ++void test02() ++{ ++ bool test __attribute__((unused)) = true; ++ std::regex re("", std::regex_constants::extended); ++ auto flags = re.flags(); ++ try ++ { ++ re.assign("(", std::regex_constants::icase); ++ VERIFY(false); ++ } ++ catch (const std::regex_error& e) ++ { ++ VERIFY(flags == re.flags()); ++ } ++} ++ + int + main() + { + test01(); ++ test02(); + return 0; + } +Index: libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring.cc (.../branches/gcc-4_9-branch) +@@ -1,5 +1,4 @@ +-// { dg-do compile } +-// { dg-options "-std=c++0x" } ++// { dg-options "-std=c++11" } + + // 2009-06-05 Stephen M. Webb + // +@@ -36,9 +35,19 @@ + re.assign(cs); + } + ++// basic_regex::operator=() resets flags. libstdc++/64680 ++void test02() ++{ ++ bool test __attribute__((unused)) = true; ++ ++ std::regex re("[[:alnum:]]", std::regex_constants::basic); ++ re = "\\w+"; ++} ++ + int + main() + { + test01(); ++ test02(); + return 0; + } +Index: libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/char/64140.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/char/64140.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/char/64140.cc (.../branches/gcc-4_9-branch) +@@ -0,0 +1,53 @@ ++// { dg-options "-std=gnu++11" } ++ ++// ++// Copyright (C) 2014 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++// ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++// ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// libstdc++/64140 ++ ++#include ++#include ++ ++void ++test01() ++{ ++ bool test __attribute__((unused)) = true; ++ ++ const std::regex e("z*"); ++ const std::string s("ab"); ++ ++ auto it = std::sregex_iterator(s.begin(), s.end(), e); ++ auto end = std::sregex_iterator(); ++ VERIFY(it != end); ++ VERIFY(!it->prefix().matched); ++ ++it; ++ VERIFY(it != end); ++ VERIFY(it->prefix().matched); ++ ++it; ++ VERIFY(it != end); ++ VERIFY(it->prefix().matched); ++ ++it; ++ VERIFY(it == end); ++} ++ ++int ++main() ++{ ++ test01(); ++ return 0; ++} +Index: libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/char/string_position_01.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/char/string_position_01.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/char/string_position_01.cc (.../branches/gcc-4_9-branch) +@@ -24,6 +24,7 @@ + // Tests iter->position() behavior + + #include ++#include + #include + + void +@@ -41,9 +42,53 @@ + } + } + ++// PR libstdc++/64239 ++void ++test02() ++{ ++ bool test __attribute__((unused)) = true; ++ ++ std::regex re("\\w+"); ++ std::string s("-a-b-c-"); ++ ++ std::tuple expected[] = ++ { ++ std::make_tuple(1, 1, "a"), ++ std::make_tuple(3, 1, "b"), ++ std::make_tuple(5, 1, "c"), ++ }; ++ ++ int i = 0; ++ for (auto it1 = std::sregex_iterator(s.begin(), s.end(), re), ++ end = std::sregex_iterator(); it1 != end; ++it1, i++) ++ { ++ auto it2 = it1; ++ VERIFY(it1->position() == std::get<0>(expected[i])); ++ VERIFY(it1->length() == std::get<1>(expected[i])); ++ VERIFY(it1->str() == std::get<2>(expected[i])); ++ VERIFY(it2->position() == std::get<0>(expected[i])); ++ VERIFY(it2->length() == std::get<1>(expected[i])); ++ VERIFY(it2->str() == std::get<2>(expected[i])); ++ } ++} ++ ++void ++test03() ++{ ++ bool test __attribute__((unused)) = true; ++ ++ std::smatch m; ++ std::string s = "abcde"; ++ std::regex_search(s, m, std::regex("bcd")); ++ VERIFY(m.position() == 1); ++ VERIFY(m.position() == m.prefix().length()); ++} ++ + int + main() + { + test01(); ++ test02(); ++ test03(); + return 0; + } +Index: libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/64303.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/64303.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/64303.cc (.../branches/gcc-4_9-branch) +@@ -0,0 +1,49 @@ ++// { dg-do run } ++// { dg-options "-std=gnu++11" } ++ ++// ++// Copyright (C) 2014 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++// ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++// ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// 28.12.2 Class template regex_token_iterator ++ ++#include ++#include ++ ++void ++test01() ++{ ++ bool test __attribute__((unused)) = true; ++ ++ const std::string s(" 111 222 "); ++ const std::regex re("\\w+"); ++ ++ std::sregex_token_iterator it1(s.begin(), s.end(), re), it2(it1), end; ++ ++ for (; it1 != end; ++it1, ++it2) { ++ VERIFY(it1 == it2); ++ VERIFY(*it1 == *it2); ++ } ++ VERIFY(it2 == end); ++} ++ ++int ++main() ++{ ++ test01(); ++ return 0; ++} +Index: libstdc++-v3/testsuite/28_regex/match_results/swap.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/28_regex/match_results/swap.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/28_regex/match_results/swap.cc (.../branches/gcc-4_9-branch) +@@ -0,0 +1,43 @@ ++// { dg-options "-std=gnu++11" } ++ ++// ++// Copyright (C) 2015 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++// ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++// ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++#include ++#include ++ ++void ++test01() ++{ ++ bool test __attribute__((unused)) = true; ++ ++ std::cmatch m; ++ std::regex_match("a", m, std::regex("a")); ++ std::cmatch mm1 = m, mm2; ++ mm1.swap(mm2); ++ VERIFY(m == mm2); ++ std::swap(mm1, mm2); ++ VERIFY(m == mm1); ++} ++ ++int ++main() ++{ ++ test01(); ++ return 0; ++} +Index: libstdc++-v3/testsuite/30_threads/this_thread/60421.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/30_threads/this_thread/60421.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/30_threads/this_thread/60421.cc (.../branches/gcc-4_9-branch) +@@ -0,0 +1,38 @@ ++// Copyright (C) 2015 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-options "-std=gnu++11" } ++// { dg-require-cstdint "" } ++// { dg-require-time "" } ++ ++#include ++#include ++#include ++ ++void ++test01() ++{ ++ std::this_thread::sleep_for(std::chrono::seconds(0)); ++ std::this_thread::sleep_for(std::chrono::seconds(-1)); ++ std::this_thread::sleep_for(std::chrono::duration::zero()); ++} ++ ++int ++main() ++{ ++ test01(); ++} +Index: libstdc++-v3/testsuite/30_threads/this_thread/58038.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/30_threads/this_thread/58038.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/30_threads/this_thread/58038.cc (.../branches/gcc-4_9-branch) +@@ -0,0 +1,44 @@ ++// Copyright (C) 2015 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-options "-std=gnu++11" } ++// { dg-require-cstdint "" } ++// { dg-require-time "" } ++ ++#include ++#include ++ ++void ++test01() ++{ ++ auto now = std::chrono::system_clock::now(); ++ std::this_thread::sleep_until(now - 1ul * std::chrono::seconds(1)); ++} ++ ++void ++test02() ++{ ++ auto now = std::chrono::steady_clock::now(); ++ std::this_thread::sleep_until(now - 1ul * std::chrono::seconds(1)); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++} +Index: libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/3.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/3.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/3.cc (.../branches/gcc-4_9-branch) +@@ -0,0 +1,75 @@ ++// { dg-do run { target *-*-freebsd* *-*-dragonfly* *-*-netbsd* *-*-linux* *-*-solaris* *-*-cygwin *-*-darwin* powerpc-ibm-aix* } } ++// { dg-options " -std=gnu++14 -pthread" { target *-*-freebsd* *-*-dragonfly* *-*-netbsd* *-*-linux* powerpc-ibm-aix* } } ++// { dg-options " -std=gnu++14 -pthreads" { target *-*-solaris* } } ++// { dg-options " -std=gnu++14 " { target *-*-cygwin *-*-darwin* } } ++// { dg-require-cstdint "" } ++// { dg-require-gthreads "" } ++ ++// Copyright (C) 2013-2015 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++ ++#include ++#include ++#include ++#include ++ ++int main() ++{ ++ bool test __attribute__((unused)) = true; ++ typedef std::shared_timed_mutex mutex_type; ++ ++ try ++ { ++ mutex_type m; ++ m.lock(); ++ bool b; ++ ++ std::thread t([&] { ++ try ++ { ++ using namespace std::chrono; ++ auto timeout = 100ms; ++ auto start = system_clock::now(); ++ b = m.try_lock_for(timeout); ++ auto t = system_clock::now() - start; ++ VERIFY( !b ); ++ VERIFY( t >= timeout ); ++ ++ start = system_clock::now(); ++ b = m.try_lock_until(start + timeout); ++ t = system_clock::now() - start; ++ VERIFY( !b ); ++ VERIFY( t >= timeout ); ++ } ++ catch (const std::system_error& e) ++ { ++ VERIFY( false ); ++ } ++ }); ++ t.join(); ++ m.unlock(); ++ } ++ catch (const std::system_error& e) ++ { ++ VERIFY( false ); ++ } ++ catch (...) ++ { ++ VERIFY( false ); ++ } ++} +Index: libstdc++-v3/testsuite/30_threads/shared_lock/cons/5.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/30_threads/shared_lock/cons/5.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/30_threads/shared_lock/cons/5.cc (.../branches/gcc-4_9-branch) +@@ -3,7 +3,6 @@ + // { dg-options " -std=gnu++1y -pthreads" { target *-*-solaris* } } + // { dg-options " -std=gnu++1y " { target *-*-cygwin *-*-darwin* } } + // { dg-require-cstdint "" } +-// { dg-require-gthreads-timed "" } + + // Copyright (C) 2013-2014 Free Software Foundation, Inc. + // +Index: libstdc++-v3/testsuite/30_threads/shared_lock/cons/6.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/30_threads/shared_lock/cons/6.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/30_threads/shared_lock/cons/6.cc (.../branches/gcc-4_9-branch) +@@ -3,7 +3,6 @@ + // { dg-options " -std=gnu++1y -pthreads" { target *-*-solaris* } } + // { dg-options " -std=gnu++1y " { target *-*-cygwin *-*-darwin* } } + // { dg-require-cstdint "" } +-// { dg-require-gthreads-timed "" } + + // Copyright (C) 2013-2014 Free Software Foundation, Inc. + // +Index: libstdc++-v3/testsuite/30_threads/shared_lock/locking/3.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/30_threads/shared_lock/locking/3.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/30_threads/shared_lock/locking/3.cc (.../branches/gcc-4_9-branch) +@@ -3,7 +3,6 @@ + // { dg-options " -std=gnu++1y -pthreads" { target *-*-solaris* } } + // { dg-options " -std=gnu++1y " { target *-*-cygwin *-*-darwin* } } + // { dg-require-cstdint "" } +-// { dg-require-gthreads-timed "" } + + // Copyright (C) 2013-2014 Free Software Foundation, Inc. + // +Index: libstdc++-v3/testsuite/30_threads/shared_lock/locking/4.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/30_threads/shared_lock/locking/4.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/30_threads/shared_lock/locking/4.cc (.../branches/gcc-4_9-branch) +@@ -3,7 +3,6 @@ + // { dg-options " -std=gnu++1y -pthreads" { target *-*-solaris* } } + // { dg-options " -std=gnu++1y " { target *-*-cygwin *-*-darwin* } } + // { dg-require-cstdint "" } +-// { dg-require-gthreads-timed "" } + + // Copyright (C) 2013-2014 Free Software Foundation, Inc. + // +Index: libstdc++-v3/testsuite/experimental/optional/requirements.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/optional/requirements.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/experimental/optional/requirements.cc (.../branches/gcc-4_9-branch) +@@ -23,6 +23,9 @@ + + #include + ++using std::experimental::bad_optional_access; ++static_assert( std::is_default_constructible::value, "" ); ++ + struct trivially_destructible + { + trivially_destructible() = delete; +Index: libstdc++-v3/testsuite/experimental/feat-cxx14.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/feat-cxx14.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/experimental/feat-cxx14.cc (.../branches/gcc-4_9-branch) +@@ -106,10 +106,12 @@ + # error "" + #endif + +-#ifndef __cpp_lib_shared_timed_mutex +-# error "__cpp_lib_shared_timed_mutex" +-#elif __cpp_lib_shared_timed_mutex != 201402 +-# error "__cpp_lib_shared_timed_mutex != 201402" ++#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) ++# ifndef __cpp_lib_shared_timed_mutex ++# error "__cpp_lib_shared_timed_mutex" ++# elif __cpp_lib_shared_timed_mutex != 201402 ++# error "__cpp_lib_shared_timed_mutex != 201402" ++# endif + #endif + + #ifndef __cpp_lib_is_final +Index: libstdc++-v3/testsuite/lib/libstdc++.exp +=================================================================== +--- a/src/libstdc++-v3/testsuite/lib/libstdc++.exp (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/lib/libstdc++.exp (.../branches/gcc-4_9-branch) +@@ -99,6 +99,10 @@ + setenv LC_ALL C + setenv LANG C + ++ # LANGUAGE changes the behavior of GNU gettext(3) and causes ++ # std::messages tests to fail. ++ array unset env LANGUAGE ++ + # Many hosts now default to a non-ASCII C locale, however, so + # they can set a charset encoding here if they need. + if { [ishost "*-*-cygwin*"] } { +@@ -1200,6 +1204,62 @@ + return $et_c99_math + } + ++proc check_v3_target_thread_fence { } { ++ global cxxflags ++ global DEFAULT_CXXFLAGS ++ global et_thread_fence ++ ++ global tool ++ ++ if { ![info exists et_thread_fence_target_name] } { ++ set et_thread_fence_target_name "" ++ } ++ ++ # If the target has changed since we set the cached value, clear it. ++ set current_target [current_target_name] ++ if { $current_target != $et_thread_fence_target_name } { ++ verbose "check_v3_target_thread_fence: `$et_thread_fence_target_name'" 2 ++ set et_thread_fence_target_name $current_target ++ if [info exists et_thread_fence] { ++ verbose "check_v3_target_thread_fence: removing cached result" 2 ++ unset et_thread_fence ++ } ++ } ++ ++ if [info exists et_thread_fence] { ++ verbose "check_v3_target_thread_fence: using cached result" 2 ++ } else { ++ set et_thread_fence 0 ++ ++ # Set up and preprocess a C++11 test program that depends ++ # on the thread fence to be available. ++ set src thread_fence[pid].cc ++ ++ set f [open $src "w"] ++ puts $f "int main() {" ++ puts $f "__atomic_thread_fence (__ATOMIC_SEQ_CST);" ++ puts $f "return 0;" ++ puts $f "}" ++ close $f ++ ++ set cxxflags_saved $cxxflags ++ set cxxflags "$cxxflags $DEFAULT_CXXFLAGS -Werror -std=gnu++11" ++ ++ set lines [v3_target_compile $src /dev/null executable ""] ++ set cxxflags $cxxflags_saved ++ file delete $src ++ ++ if [string match "" $lines] { ++ # No error message, linking succeeded. ++ set et_thread_fence 1 ++ } else { ++ verbose "check_v3_target_thread_fence: compilation failed" 2 ++ } ++ } ++ verbose "check_v3_target_thread_fence: $et_thread_fence" 2 ++ return $et_thread_fence ++} ++ + proc check_v3_target_atomic_builtins { } { + global cxxflags + global DEFAULT_CXXFLAGS +Index: libstdc++-v3/testsuite/lib/dg-options.exp +=================================================================== +--- a/src/libstdc++-v3/testsuite/lib/dg-options.exp (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/lib/dg-options.exp (.../branches/gcc-4_9-branch) +@@ -115,6 +115,15 @@ + return + } + ++proc dg-require-thread-fence { args } { ++ if { ![ check_v3_target_thread_fence ] } { ++ upvar dg-do-what dg-do-what ++ set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] ++ return ++ } ++ return ++} ++ + proc dg-require-atomic-builtins { args } { + if { ![ check_v3_target_atomic_builtins ] } { + upvar dg-do-what dg-do-what +Index: libstdc++-v3/testsuite/tr1/3_function_objects/function/63840.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/tr1/3_function_objects/function/63840.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/tr1/3_function_objects/function/63840.cc (.../branches/gcc-4_9-branch) +@@ -0,0 +1,55 @@ ++// Copyright (C) 2014 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++#include ++#include ++#include ++ ++struct functor ++{ ++ functor() : copies(0) { } ++ ++ functor(const functor& f) ++ : copies(f.copies + 1) ++ { ++ if (copies > 1) ++ throw std::runtime_error("functor"); ++ } ++ ++ void operator()() const { } ++ ++ int copies; ++}; ++ ++ ++void ++test01() ++{ ++ std::tr1::function f = functor(); ++ try { ++ std::tr1::function g = f; ++ } catch (const std::runtime_error& e) { ++ return; ++ } ++ VERIFY(false); ++} ++ ++int ++main() ++{ ++ test01(); ++} +Index: libstdc++-v3/testsuite/29_atomics/atomic_flag/clear/1.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/29_atomics/atomic_flag/clear/1.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/29_atomics/atomic_flag/clear/1.cc (.../branches/gcc-4_9-branch) +@@ -1,4 +1,5 @@ + // { dg-options "-std=gnu++0x" } ++// { dg-require-thread-fence "" } + + // Copyright (C) 2009-2014 Free Software Foundation, Inc. + // +Index: libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc (.../branches/gcc-4_9-branch) +@@ -1,4 +1,5 @@ + // { dg-options "-std=gnu++0x" } ++// { dg-require-thread-fence "" } + + // Copyright (C) 2008-2014 Free Software Foundation, Inc. + // +Index: libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc (.../branches/gcc-4_9-branch) +@@ -1,4 +1,5 @@ + // { dg-options "-std=gnu++0x" } ++// { dg-require-thread-fence "" } + + // Copyright (C) 2008-2014 Free Software Foundation, Inc. + // +Index: libstdc++-v3/testsuite/29_atomics/atomic/64658.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/29_atomics/atomic/64658.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/29_atomics/atomic/64658.cc (.../branches/gcc-4_9-branch) +@@ -0,0 +1,30 @@ ++// Copyright (C) 2015 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-require-atomic-builtins "" } ++// { dg-options "-std=gnu++11" } ++ ++#include ++#include ++ ++int ++main() ++{ ++ std::atomic i; ++ atomic_init(&i, 5); ++ VERIFY( i == 5 ); ++} +Index: libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc (.../branches/gcc-4_9-branch) +@@ -23,4 +23,4 @@ + + typedef std::tuple_element<1, std::array>::type type; + +-// { dg-error "static assertion failed" "" { target *-*-* } 320 } ++// { dg-error "static assertion failed" "" { target *-*-* } 328 } +Index: libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc (.../branches/gcc-4_9-branch) +@@ -28,6 +28,6 @@ + int n2 = std::get<1>(std::move(a)); + int n3 = std::get<1>(ca); + +-// { dg-error "static assertion failed" "" { target *-*-* } 274 } +-// { dg-error "static assertion failed" "" { target *-*-* } 283 } ++// { dg-error "static assertion failed" "" { target *-*-* } 282 } + // { dg-error "static assertion failed" "" { target *-*-* } 291 } ++// { dg-error "static assertion failed" "" { target *-*-* } 299 } +Index: libstdc++-v3/testsuite/20_util/duration/literals/65499.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/duration/literals/65499.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/20_util/duration/literals/65499.cc (.../branches/gcc-4_9-branch) +@@ -0,0 +1,26 @@ ++// Copyright (C) 2015 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-options "-std=gnu++14" } ++// { dg-do compile } ++ ++// PR libstdc++/65499 ++ ++#include ++ ++using namespace std::chrono; ++minutes min = 36min; +Index: libstdc++-v3/testsuite/20_util/tuple/61947.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/tuple/61947.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/20_util/tuple/61947.cc (.../branches/gcc-4_9-branch) +@@ -0,0 +1,29 @@ ++// { dg-options "-std=gnu++11" } ++// { dg-do compile } ++ ++// Copyright (C) 2014 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++#include ++ ++struct ConvertibleToAny { ++ template operator T() const { return T(); } ++}; ++ ++int main() { ++ std::tuple t(ConvertibleToAny{}); ++} +Index: libstdc++-v3/testsuite/20_util/uses_allocator/cons_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/uses_allocator/cons_neg.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/20_util/uses_allocator/cons_neg.cc (.../branches/gcc-4_9-branch) +@@ -44,4 +44,4 @@ + + tuple t(allocator_arg, a, 1); + } +-// { dg-error "no matching function" "" { target *-*-* } 118 } ++// { dg-error "no matching function" "" { target *-*-* } 119 } +Index: libstdc++-v3/testsuite/20_util/scoped_allocator/65279.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/scoped_allocator/65279.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/20_util/scoped_allocator/65279.cc (.../branches/gcc-4_9-branch) +@@ -0,0 +1,54 @@ ++// Copyright (C) 2015 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-options "-std=gnu++11" } ++// { dg-do compile } ++ ++#include ++#include ++#include ++ ++template ++ struct Allocator : std::allocator ++ { ++ template ++ struct rebind { using other = Allocator; }; ++ ++ using propagate_on_container_copy_assignment = std::true_type; ++ using propagate_on_container_move_assignment = std::true_type; ++ }; ++ ++template ++ using alloc = std::scoped_allocator_adaptor...>; ++ ++void ++test01() ++{ ++ // Test partial specialization for sizeof...(InnerAlloc) == 0 ++ alloc a; ++ a = a; ++ a = std::move(a); ++} ++ ++void ++test02() ++{ ++ // Test partial specialization for sizeof...(InnerAlloc) >= 1 ++ alloc a; ++ a = a; ++ a = std::move(a); ++} +Index: libstdc++-v3/testsuite/20_util/function/63840.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/function/63840.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/20_util/function/63840.cc (.../branches/gcc-4_9-branch) +@@ -0,0 +1,55 @@ ++// Copyright (C) 2014 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-options "-std=gnu++11" } ++ ++#include ++#include ++#include ++ ++struct functor ++{ ++ functor() = default; ++ ++ functor(const functor&) ++ { ++ throw std::runtime_error("test"); ++ } ++ ++ functor(functor&& f) = default; ++ ++ void operator()() const { } ++}; ++ ++ ++void ++test01() ++{ ++ std::function f = functor{}; ++ try { ++ auto g = f; ++ } catch (const std::runtime_error& e) { ++ return; ++ } ++ VERIFY(false); ++} ++ ++int ++main() ++{ ++ test01(); ++} +Index: libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/64476.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/64476.cc (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/64476.cc (.../branches/gcc-4_9-branch) +@@ -0,0 +1,65 @@ ++// Copyright (C) 2015 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-options "-std=gnu++11" } ++ ++#include ++#include ++ ++struct X ++{ ++ X() = default; ++ X(X const &) = default; ++ X& operator=(X const&) = delete; ++}; ++ ++static_assert(__is_trivial(X), "X is trivial"); ++ ++int constructed = 0; ++int assigned = 0; ++ ++struct Y ++{ ++ Y() = default; ++ Y(Y const &) = default; ++ Y& operator=(Y const&) = default; ++ ++ Y(const X&) { ++constructed; } ++ Y& operator=(const X&)& { ++assigned; return *this; } ++ Y& operator=(const X&)&& = delete; ++ Y& operator=(X&&) = delete; ++}; ++ ++static_assert(__is_trivial(Y), "Y is trivial"); ++ ++void ++test01() ++{ ++ X a[100]; ++ Y b[100]; ++ ++ std::uninitialized_copy(a, a+10, b); ++ ++ VERIFY(constructed == 0); ++ VERIFY(assigned == 10); ++} ++ ++int ++main() ++{ ++ test01(); ++} +Index: libstdc++-v3/config/cpu/powerpc/atomic_word.h +=================================================================== +--- a/src/libstdc++-v3/config/cpu/powerpc/atomic_word.h (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/config/cpu/powerpc/atomic_word.h (.../branches/gcc-4_9-branch) +@@ -1,6 +1,6 @@ + // Low-level type for atomic operations -*- C++ -*- + +-// Copyright (C) 2004-2014 Free Software Foundation, Inc. ++// Copyright (C) 2004-2015 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the +@@ -27,10 +27,11 @@ + + typedef int _Atomic_word; + +-#define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("isync":::"memory") + #ifdef __NO_LWSYNC__ ++#define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("sync":::"memory") + #define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("sync":::"memory") + #else ++#define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("lwsync":::"memory") + #define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("lwsync":::"memory") + #endif + +Index: libstdc++-v3/config/cpu/aarch64/atomic_word.h +=================================================================== +--- a/src/libstdc++-v3/config/cpu/aarch64/atomic_word.h (.../tags/gcc_4_9_2_release) ++++ b/src/libstdc++-v3/config/cpu/aarch64/atomic_word.h (.../branches/gcc-4_9-branch) +@@ -0,0 +1,44 @@ ++// Low-level type for atomic operations -*- C++ -*- ++ ++// Copyright (C) 2015 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// Under Section 7 of GPL version 3, you are granted additional ++// permissions described in the GCC Runtime Library Exception, version ++// 3.1, as published by the Free Software Foundation. ++ ++// You should have received a copy of the GNU General Public License and ++// a copy of the GCC Runtime Library Exception along with this program; ++// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++// . ++ ++/** @file atomic_word.h ++ * This file is a GNU extension to the Standard C++ Library. ++ */ ++ ++#ifndef _GLIBCXX_ATOMIC_WORD_H ++#define _GLIBCXX_ATOMIC_WORD_H 1 ++ ++ ++typedef int _Atomic_word; ++ ++// This one prevents loads from being hoisted across the barrier; ++// in other words, this is a Load-Load acquire barrier. ++// This is necessary iff TARGET_RELAXED_ORDERING is defined in tm.h. ++#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) ++ ++// This one prevents stores from being sunk across the barrier; in other ++// words, a Store-Store release barrier. ++#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) ++ ++#endif +Index: configure.ac +=================================================================== +--- a/src/configure.ac (.../tags/gcc_4_9_2_release) ++++ b/src/configure.ac (.../branches/gcc-4_9-branch) +@@ -1177,7 +1177,7 @@ + *-mingw*) + host_makefile_frag="config/mh-mingw" + ;; +- alpha*-*-linux*) ++ alpha*-linux*) + host_makefile_frag="config/mh-alpha-linux" + ;; + hppa*-hp-hpux10*) +@@ -1658,6 +1658,9 @@ + ISL_CHECK_VERSION(0,11) + if test "${gcc_cv_isl}" = no ; then + ISL_CHECK_VERSION(0,12) ++ if test "${gcc_cv_isl}" = no ; then ++ ISL_CHECK_VERSION(0,14) ++ fi + fi + fi + dnl Only execute fail-action, if ISL has been requested. +Index: ChangeLog +=================================================================== +--- a/src/ChangeLog (.../tags/gcc_4_9_2_release) ++++ b/src/ChangeLog (.../branches/gcc-4_9-branch) +@@ -1,3 +1,15 @@ ++2015-05-03 Matthias Klose ++ ++ * configure.ac: Match $host configured with triplets. ++ * configure: Regenerate. ++ ++2014-12-04 Tobias Burnus ++ ++ * configure.ac: Permit also ISL 0.14 with CLooG. ++ * Makefile.def: Make more dependent on mpfr, mpc, isl, and cloog. ++ * Makefile.in: Regenerate. ++ * configure: Regenerate. ++ + 2014-10-30 Release Manager + + * GCC 4.9.2 released. +Index: libatomic/fop_n.c +=================================================================== +--- a/src/libatomic/fop_n.c (.../tags/gcc_4_9_2_release) ++++ b/src/libatomic/fop_n.c (.../branches/gcc-4_9-branch) +@@ -112,9 +112,9 @@ + + pre_barrier (smodel); + +- wptr = (UWORD *)mptr; +- shift = 0; +- mask = -1; ++ wptr = (UWORD *)((uintptr_t)mptr & -WORDSIZE); ++ shift = (((uintptr_t)mptr % WORDSIZE) * CHAR_BIT) ^ SIZE(INVERT_MASK); ++ mask = SIZE(MASK) << shift; + + wopval = (UWORD)opval << shift; + woldval = __atomic_load_n (wptr, __ATOMIC_RELAXED); +@@ -136,9 +136,9 @@ + + pre_barrier (smodel); + +- wptr = (UWORD *)mptr; +- shift = 0; +- mask = -1; ++ wptr = (UWORD *)((uintptr_t)mptr & -WORDSIZE); ++ shift = (((uintptr_t)mptr % WORDSIZE) * CHAR_BIT) ^ SIZE(INVERT_MASK); ++ mask = SIZE(MASK) << shift; + + wopval = (UWORD)opval << shift; + woldval = __atomic_load_n (wptr, __ATOMIC_RELAXED); +Index: libatomic/ChangeLog +=================================================================== +--- a/src/libatomic/ChangeLog (.../tags/gcc_4_9_2_release) ++++ b/src/libatomic/ChangeLog (.../branches/gcc-4_9-branch) +@@ -1,3 +1,8 @@ ++2015-01-21 Andrew Waterman ++ ++ * fop_n.c (libat_fetch_op): Align address to word boundary. ++ (libat_op_fetch): Likewise. ++ + 2014-10-30 Release Manager + + * GCC 4.9.2 released. +Index: libbacktrace/configure +=================================================================== +--- a/src/libbacktrace/configure (.../tags/gcc_4_9_2_release) ++++ b/src/libbacktrace/configure (.../branches/gcc-4_9-branch) +@@ -614,7 +614,6 @@ + WARN_FLAGS + EXTRA_FLAGS + BACKTRACE_FILE +-multi_basedir + OTOOL64 + OTOOL + LIPO +@@ -680,6 +679,7 @@ + build_vendor + build_cpu + build ++multi_basedir + target_alias + host_alias + build_alias +@@ -721,6 +721,7 @@ + ac_subst_files='' + ac_user_opts=' + enable_option_checking ++enable_multilib + enable_maintainer_mode + with_target_subdir + enable_shared +@@ -729,7 +730,6 @@ + enable_fast_install + with_gnu_ld + enable_libtool_lock +-enable_multilib + with_system_libunwind + enable_host_shared + ' +@@ -1362,6 +1362,7 @@ + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] ++ --enable-multilib build many library versions (default) + --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer + --enable-shared[=PKGS] build shared libraries [default=no] +@@ -1369,7 +1370,6 @@ + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) +- --enable-multilib build many library versions (default) + --enable-host-shared build host code as shared libraries + + Optional Packages: +@@ -2453,6 +2453,46 @@ + ac_config_headers="$ac_config_headers config.h" + + ++if test -n "${with_target_subdir}"; then ++ # Default to --enable-multilib ++# Check whether --enable-multilib was given. ++if test "${enable_multilib+set}" = set; then : ++ enableval=$enable_multilib; case "$enableval" in ++ yes) multilib=yes ;; ++ no) multilib=no ;; ++ *) as_fn_error "bad value $enableval for multilib option" "$LINENO" 5 ;; ++ esac ++else ++ multilib=yes ++fi ++ ++ ++# We may get other options which we leave undocumented: ++# --with-target-subdir, --with-multisrctop, --with-multisubdir ++# See config-ml.in if you want the gory details. ++ ++if test "$srcdir" = "."; then ++ if test "$with_target_subdir" != "."; then ++ multi_basedir="$srcdir/$with_multisrctop../.." ++ else ++ multi_basedir="$srcdir/$with_multisrctop.." ++ fi ++else ++ multi_basedir="$srcdir/.." ++fi ++ ++ ++# Even if the default multilib is not a cross compilation, ++# it may be that some of the other multilibs are. ++if test $cross_compiling = no && test $multilib = yes \ ++ && test "x${with_multisubdir}" != x ; then ++ cross_compiling=maybe ++fi ++ ++ac_config_commands="$ac_config_commands default-1" ++ ++fi ++ + ac_aux_dir= + for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + for ac_t in install-sh install.sh shtool; do +@@ -11089,7 +11129,7 @@ + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11092 "configure" ++#line 11132 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11195,7 +11235,7 @@ + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11198 "configure" ++#line 11238 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11439,43 +11479,6 @@ + if test -n "${with_target_subdir}"; then + # We are compiling a GCC library. We can assume that the unwind + # library exists. +- # Default to --enable-multilib +-# Check whether --enable-multilib was given. +-if test "${enable_multilib+set}" = set; then : +- enableval=$enable_multilib; case "$enableval" in +- yes) multilib=yes ;; +- no) multilib=no ;; +- *) as_fn_error "bad value $enableval for multilib option" "$LINENO" 5 ;; +- esac +-else +- multilib=yes +-fi +- +- +-# We may get other options which we leave undocumented: +-# --with-target-subdir, --with-multisrctop, --with-multisubdir +-# See config-ml.in if you want the gory details. +- +-if test "$srcdir" = "."; then +- if test "$with_target_subdir" != "."; then +- multi_basedir="$srcdir/$with_multisrctop../.." +- else +- multi_basedir="$srcdir/$with_multisrctop.." +- fi +-else +- multi_basedir="$srcdir/.." +-fi +- +- +-# Even if the default multilib is not a cross compilation, +-# it may be that some of the other multilibs are. +-if test $cross_compiling = no && test $multilib = yes \ +- && test "x${with_multisubdir}" != x ; then +- cross_compiling=maybe +-fi +- +-ac_config_commands="$ac_config_commands default-1" +- + BACKTRACE_FILE="backtrace.lo simple.lo" + else + ac_fn_c_check_header_mongrel "$LINENO" "unwind.h" "ac_cv_header_unwind_h" "$ac_includes_default" +@@ -13174,7 +13177,21 @@ + # INIT-COMMANDS + # + ++srcdir="$srcdir" ++host="$host" ++target="$target" ++with_multisubdir="$with_multisubdir" ++with_multisrctop="$with_multisrctop" ++with_target_subdir="$with_target_subdir" ++ac_configure_args="${multilib_arg} ${ac_configure_args}" ++multi_basedir="$multi_basedir" ++CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} ++CC="$CC" ++CXX="$CXX" ++GFORTRAN="$GFORTRAN" ++GCJ="$GCJ" + ++ + # The HP-UX ksh and POSIX shell print the target directory to stdout + # if CDPATH is set. + (unset CDPATH) >/dev/null 2>&1 && unset CDPATH +@@ -13434,20 +13451,6 @@ + + + +-srcdir="$srcdir" +-host="$host" +-target="$target" +-with_multisubdir="$with_multisubdir" +-with_multisrctop="$with_multisrctop" +-with_target_subdir="$with_target_subdir" +-ac_configure_args="${multilib_arg} ${ac_configure_args}" +-multi_basedir="$multi_basedir" +-CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} +-CC="$CC" +-CXX="$CXX" +-GFORTRAN="$GFORTRAN" +-GCJ="$GCJ" +- + GCC="$GCC" + CC="$CC" + acx_cv_header_stdint="$acx_cv_header_stdint" +@@ -13480,8 +13483,8 @@ + do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; ++ "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; +- "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "gstdint.h") CONFIG_COMMANDS="$CONFIG_COMMANDS gstdint.h" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "backtrace-supported.h") CONFIG_FILES="$CONFIG_FILES backtrace-supported.h" ;; +@@ -14070,6 +14073,14 @@ + + + case $ac_file$ac_mode in ++ "default-1":C) ++# Only add multilib support code if we just rebuilt the top-level ++# Makefile. ++case " $CONFIG_FILES " in ++ *" Makefile "*) ++ ac_file=Makefile . ${multi_basedir}/config-ml.in ++ ;; ++esac ;; + "libtool":C) + + # See if we are running on zsh, and set the options which allow our +@@ -14709,14 +14720,6 @@ + chmod +x "$ofile" + + ;; +- "default-1":C) +-# Only add multilib support code if we just rebuilt the top-level +-# Makefile. +-case " $CONFIG_FILES " in +- *" Makefile "*) +- ac_file=Makefile . ${multi_basedir}/config-ml.in +- ;; +-esac ;; + "gstdint.h":C) + if test "$GCC" = yes; then + echo "/* generated for " `$CC --version | sed 1q` "*/" > tmp-stdint.h +Index: libbacktrace/ChangeLog +=================================================================== +--- a/src/libbacktrace/ChangeLog (.../tags/gcc_4_9_2_release) ++++ b/src/libbacktrace/ChangeLog (.../branches/gcc-4_9-branch) +@@ -1,3 +1,8 @@ ++2015-01-26 Matthias Klose ++ ++ * configure.ac: Move AM_ENABLE_MULTILIB before AC_PROG_CC. ++ * configure: Regenerate. ++ + 2014-10-30 Release Manager + + * GCC 4.9.2 released. +Index: libbacktrace/configure.ac +=================================================================== +--- a/src/libbacktrace/configure.ac (.../tags/gcc_4_9_2_release) ++++ b/src/libbacktrace/configure.ac (.../branches/gcc-4_9-branch) +@@ -34,6 +34,10 @@ + AC_CONFIG_SRCDIR(backtrace.h) + AC_CONFIG_HEADER(config.h) + ++if test -n "${with_target_subdir}"; then ++ AM_ENABLE_MULTILIB(, ..) ++fi ++ + AC_CANONICAL_SYSTEM + target_alias=${target_alias-$host_alias} + +@@ -83,7 +87,6 @@ + if test -n "${with_target_subdir}"; then + # We are compiling a GCC library. We can assume that the unwind + # library exists. +- AM_ENABLE_MULTILIB(, ..) + BACKTRACE_FILE="backtrace.lo simple.lo" + else + AC_CHECK_HEADER([unwind.h], +Index: configure +=================================================================== +--- a/src/configure (.../tags/gcc_4_9_2_release) ++++ b/src/configure (.../branches/gcc-4_9-branch) +@@ -3868,7 +3868,7 @@ + *-mingw*) + host_makefile_frag="config/mh-mingw" + ;; +- alpha*-*-linux*) ++ alpha*-linux*) + host_makefile_frag="config/mh-alpha-linux" + ;; + hppa*-hp-hpux10*) +@@ -6024,6 +6024,55 @@ + fi + + ++ if test "${gcc_cv_isl}" = no ; then ++ ++ if test "${ENABLE_ISL_CHECK}" = yes ; then ++ _isl_saved_CFLAGS=$CFLAGS ++ _isl_saved_LDFLAGS=$LDFLAGS ++ _isl_saved_LIBS=$LIBS ++ ++ CFLAGS="${_isl_saved_CFLAGS} ${islinc} ${gmpinc}" ++ LDFLAGS="${_isl_saved_LDFLAGS} ${isllibs}" ++ LIBS="${_isl_saved_LIBS} -lisl" ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for version 0.14 of ISL" >&5 ++$as_echo_n "checking for version 0.14 of ISL... " >&6; } ++ if test "$cross_compiling" = yes; then : ++ gcc_cv_isl=yes ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++ #include ++int ++main () ++{ ++if (strncmp (isl_version (), "isl-0.14", strlen ("isl-0.14")) != 0) ++ return 1; ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_run "$LINENO"; then : ++ gcc_cv_isl=yes ++else ++ gcc_cv_isl=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext ++fi ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_isl" >&5 ++$as_echo "$gcc_cv_isl" >&6; } ++ ++ CFLAGS=$_isl_saved_CFLAGS ++ LDFLAGS=$_isl_saved_LDFLAGS ++ LIBS=$_isl_saved_LIBS ++ fi ++ ++ ++ fi + fi + fi + +Index: libgcc/ChangeLog +=================================================================== +--- a/src/libgcc/ChangeLog (.../tags/gcc_4_9_2_release) ++++ b/src/libgcc/ChangeLog (.../branches/gcc-4_9-branch) +@@ -1,3 +1,83 @@ ++2015-02-26 Matthew Fortune ++ ++ Backported from mainline r213870 ++ ++ * config/mips/mips16.S: Do not build for soft-float. ++ ++2015-02-17 Sandra Loosemore ++ ++ Backported from mainline ++ 2015-02-17 Sandra Loosemore ++ ++ * config/arm/bpabi.S (test_div_by_zero): Make label names ++ consistent between thumb2 and arm mode cases. Separate the ++ signed comparison on the high word of the numerator from the ++ unsigned comparison on the low word. ++ * config/arm/bpabi-v6m.S (test_div_by_zero): Similarly separate ++ signed comparison. ++ ++2015-02-01 H.J. Lu ++ ++ Backported from mainline ++ 2015-01-24 H.J. Lu ++ ++ * config/i386/cpuinfo.c (processor_subtypes): Add ++ INTEL_COREI7_BROADWELL. ++ (get_intel_cpu): Support new Silvermont, Haswell and Broadwell ++ model numbers. ++ ++2015-01-31 John David Anglin ++ ++ * config/pa/linux-atomic.c (__kernel_cmpxchg2): Change declaration of ++ oldval and newval to const void *. Fix typo. ++ (FETCH_AND_OP_2): Use __atomic_load_n to load value. ++ (FETCH_AND_OP_WORD): Likewise. ++ (OP_AND_FETCH_WORD): Likewise. ++ (COMPARE_AND_SWAP_2): Likewise. ++ (__sync_val_compare_and_swap_4): Likewise. ++ (__sync_lock_test_and_set_4): Likewise. ++ (SYNC_LOCK_RELEASE_2): Likewise. ++ Remove support for long long atomic operations. ++ ++2015-01-20 Chung-Lin Tang ++ ++ Backport from mainline ++ * config/nios2/linux-unwind.h (nios2_fallback_frame_state): ++ Update rt_sigframe format and address for current Nios II ++ Linux conventions. ++ ++2014-12-09 John David Anglin ++ ++ Backport from mainline ++ 2014-11-24 John David Anglin ++ ++ * config/pa/linux-atomic.c (ABORT_INSTRUCTION): Use __builtin_trap() ++ instead. ++ ++ 2014-11-21 Guy Martin ++ John David Anglin ++ ++ * config/pa/linux-atomic.c (__kernel_cmpxchg2): New. ++ (FETCH_AND_OP_2): New. Use for subword and double word operations. ++ (OP_AND_FETCH_2): Likewise. ++ (COMPARE_AND_SWAP_2): Likewise. ++ (SYNC_LOCK_TEST_AND_SET_2): Likewise. ++ (SYNC_LOCK_RELEASE_2): Likewise. ++ (SUBWORD_SYNC_OP): Remove. ++ (SUBWORD_VAL_CAS): Likewise. ++ (SUBWORD_BOOL_CAS): Likewise. ++ (FETCH_AND_OP_WORD): Update. ++ Consistently use signed types. ++ ++2014-12-09 Oleg Endo ++ ++ Backport from mainline ++ 2014-11-30 Oleg Endo ++ ++ PR target/55351 ++ * config/sh/lib1funcs.S: Check value of __SHMEDIA__ instead of checking ++ whether it's defined. ++ + 2014-10-30 Release Manager + + * GCC 4.9.2 released. +Index: libgcc/config/i386/cpuinfo.c +=================================================================== +--- a/src/libgcc/config/i386/cpuinfo.c (.../tags/gcc_4_9_2_release) ++++ b/src/libgcc/config/i386/cpuinfo.c (.../branches/gcc-4_9-branch) +@@ -75,6 +75,7 @@ + AMDFAM15H_BDVER4, + INTEL_COREI7_IVYBRIDGE, + INTEL_COREI7_HASWELL, ++ INTEL_COREI7_BROADWELL, + CPU_SUBTYPE_MAX + }; + +@@ -184,7 +185,10 @@ + __cpu_model.__cpu_type = INTEL_BONNELL; + break; + case 0x37: ++ case 0x4a: + case 0x4d: ++ case 0x5a: ++ case 0x5d: + /* Silvermont. */ + __cpu_model.__cpu_type = INTEL_SILVERMONT; + break; +@@ -216,6 +220,7 @@ + __cpu_model.__cpu_subtype = INTEL_COREI7_IVYBRIDGE; + break; + case 0x3c: ++ case 0x3f: + case 0x45: + case 0x46: + /* Haswell. */ +@@ -222,6 +227,13 @@ + __cpu_model.__cpu_type = INTEL_COREI7; + __cpu_model.__cpu_subtype = INTEL_COREI7_HASWELL; + break; ++ case 0x3d: ++ case 0x4f: ++ case 0x56: ++ /* Broadwell. */ ++ __cpu_model.__cpu_type = INTEL_COREI7; ++ __cpu_model.__cpu_subtype = INTEL_COREI7_BROADWELL; ++ break; + case 0x17: + case 0x1d: + /* Penryn. */ +Index: libgcc/config/sh/lib1funcs.S +=================================================================== +--- a/src/libgcc/config/sh/lib1funcs.S (.../tags/gcc_4_9_2_release) ++++ b/src/libgcc/config/sh/lib1funcs.S (.../branches/gcc-4_9-branch) +@@ -1278,7 +1278,7 @@ + #endif + ENDFUNC(GLOBAL(sdivsi3_2)) + #endif +-#elif defined __SHMEDIA__ ++#elif __SHMEDIA__ + /* m5compact-nofpu */ + // clobbered: r18,r19,r20,r21,r25,tr0,tr1,tr2 + .mode SHmedia +@@ -1683,7 +1683,7 @@ + add.l r18,r25,r0 + blink tr0,r63 + #endif +-#elif defined (__SHMEDIA__) ++#elif __SHMEDIA__ + /* m5compact-nofpu - more emphasis on code size than on speed, but don't + ignore speed altogether - div1 needs 9 cycles, subc 7 and rotcl 4. + So use a short shmedia loop. */ +@@ -1707,7 +1707,7 @@ + bnei r25,-32,tr1 + add.l r20,r63,r0 + blink tr2,r63 +-#else /* ! defined (__SHMEDIA__) */ ++#else /* ! __SHMEDIA__ */ + LOCAL(div8): + div1 r5,r4 + LOCAL(div7): +@@ -1773,7 +1773,7 @@ + #endif /* L_udivsi3 */ + + #ifdef L_udivdi3 +-#ifdef __SHMEDIA__ ++#if __SHMEDIA__ + .mode SHmedia + .section .text..SHmedia32,"ax" + .align 2 +@@ -1901,7 +1901,7 @@ + #endif /* L_udivdi3 */ + + #ifdef L_divdi3 +-#ifdef __SHMEDIA__ ++#if __SHMEDIA__ + .mode SHmedia + .section .text..SHmedia32,"ax" + .align 2 +@@ -1925,7 +1925,7 @@ + #endif /* L_divdi3 */ + + #ifdef L_umoddi3 +-#ifdef __SHMEDIA__ ++#if __SHMEDIA__ + .mode SHmedia + .section .text..SHmedia32,"ax" + .align 2 +@@ -2054,7 +2054,7 @@ + #endif /* L_umoddi3 */ + + #ifdef L_moddi3 +-#ifdef __SHMEDIA__ ++#if __SHMEDIA__ + .mode SHmedia + .section .text..SHmedia32,"ax" + .align 2 +@@ -3142,7 +3142,7 @@ + + #ifdef L_div_table + #if __SH5__ +-#if defined(__pic__) && defined(__SHMEDIA__) ++#if defined(__pic__) && __SHMEDIA__ + .global GLOBAL(sdivsi3) + FUNC(GLOBAL(sdivsi3)) + #if __SH5__ == 32 +@@ -3215,7 +3215,7 @@ + #else /* ! __pic__ || ! __SHMEDIA__ */ + .section .rodata + #endif /* __pic__ */ +-#if defined(TEXT_DATA_BUG) && defined(__pic__) && defined(__SHMEDIA__) ++#if defined(TEXT_DATA_BUG) && defined(__pic__) && __SHMEDIA__ + .balign 2 + .type Local_div_table,@object + .size Local_div_table,128 +Index: libgcc/config/arm/bpabi-v6m.S +=================================================================== +--- a/src/libgcc/config/arm/bpabi-v6m.S (.../tags/gcc_4_9_2_release) ++++ b/src/libgcc/config/arm/bpabi-v6m.S (.../branches/gcc-4_9-branch) +@@ -85,10 +85,10 @@ + cmp yyl, #0 + bne 7f + cmp xxh, #0 ++ .ifc \signed, unsigned + bne 2f + cmp xxl, #0 + 2: +- .ifc \signed, unsigned + beq 3f + mov xxh, #0 + mvn xxh, xxh @ 0xffffffff +@@ -95,9 +95,11 @@ + mov xxl, xxh + 3: + .else ++ blt 6f ++ bgt 4f ++ cmp xxl, #0 + beq 5f +- blt 6f +- mov xxl, #0 ++4: mov xxl, #0 + mvn xxl, xxl @ 0xffffffff + lsr xxh, xxl, #1 @ 0x7fffffff + b 5f +Index: libgcc/config/arm/bpabi.S +=================================================================== +--- a/src/libgcc/config/arm/bpabi.S (.../tags/gcc_4_9_2_release) ++++ b/src/libgcc/config/arm/bpabi.S (.../branches/gcc-4_9-branch) +@@ -78,26 +78,29 @@ + /* Tail-call to divide-by-zero handlers which may be overridden by the user, + so unwinding works properly. */ + #if defined(__thumb2__) +- cbnz yyh, 1f +- cbnz yyl, 1f ++ cbnz yyh, 2f ++ cbnz yyl, 2f + cmp xxh, #0 ++ .ifc \signed, unsigned + do_it eq + cmpeq xxl, #0 +- .ifc \signed, unsigned +- beq 2f +- mov xxh, #0xffffffff +- mov xxl, xxh +-2: ++ do_it ne, t ++ movne xxh, #0xffffffff ++ movne xxl, #0xffffffff + .else +- do_it lt, t ++ do_it lt, tt + movlt xxl, #0 + movlt xxh, #0x80000000 +- do_it gt, t +- movgt xxh, #0x7fffffff +- movgt xxl, #0xffffffff ++ blt 1f ++ do_it eq ++ cmpeq xxl, #0 ++ do_it ne, t ++ movne xxh, #0x7fffffff ++ movne xxl, #0xffffffff + .endif ++1: + b SYM (__aeabi_ldiv0) __PLT__ +-1: ++2: + #else + /* Note: Thumb-1 code calls via an ARM shim on processors which + support ARM mode. */ +@@ -105,16 +108,19 @@ + cmpeq yyl, #0 + bne 2f + cmp xxh, #0 ++ .ifc \signed, unsigned + cmpeq xxl, #0 +- .ifc \signed, unsigned + movne xxh, #0xffffffff + movne xxl, #0xffffffff + .else + movlt xxh, #0x80000000 + movlt xxl, #0 +- movgt xxh, #0x7fffffff +- movgt xxl, #0xffffffff ++ blt 1f ++ cmpeq xxl, #0 ++ movne xxh, #0x7fffffff ++ movne xxl, #0xffffffff + .endif ++1: + b SYM (__aeabi_ldiv0) __PLT__ + 2: + #endif +Index: libgcc/config/pa/linux-atomic.c +=================================================================== +--- a/src/libgcc/config/pa/linux-atomic.c (.../tags/gcc_4_9_2_release) ++++ b/src/libgcc/config/pa/linux-atomic.c (.../branches/gcc-4_9-branch) +@@ -41,11 +41,8 @@ + using the kernel helper defined below. There is no support for + 64-bit operations yet. */ + +-/* A privileged instruction to crash a userspace program with SIGILL. */ +-#define ABORT_INSTRUCTION asm ("iitlbp %r0,(%sr0, %r0)") +- + /* Determine kernel LWS function call (0=32-bit, 1=64-bit userspace). */ +-#define LWS_CAS (sizeof(unsigned long) == 4 ? 0 : 1) ++#define LWS_CAS (sizeof(long) == 4 ? 0 : 1) + + /* Kernel helper for compare-and-exchange a 32-bit value. */ + static inline long +@@ -64,7 +61,7 @@ + : "r1", "r20", "r22", "r23", "r29", "r31", "memory" + ); + if (__builtin_expect (lws_errno == -EFAULT || lws_errno == -ENOSYS, 0)) +- ABORT_INSTRUCTION; ++ __builtin_trap (); + + /* If the kernel LWS call succeeded (lws_errno == 0), lws_ret contains + the old value from memory. If this value is equal to OLDVAL, the +@@ -75,6 +72,31 @@ + return lws_errno; + } + ++static inline long ++__kernel_cmpxchg2 (const void *oldval, const void *newval, void *mem, ++ int val_size) ++{ ++ register unsigned long lws_mem asm("r26") = (unsigned long) (mem); ++ register long lws_ret asm("r28"); ++ register long lws_errno asm("r21"); ++ register unsigned long lws_old asm("r25") = (unsigned long) oldval; ++ register unsigned long lws_new asm("r24") = (unsigned long) newval; ++ register int lws_size asm("r23") = val_size; ++ asm volatile ( "ble 0xb0(%%sr2, %%r0) \n\t" ++ "ldi %2, %%r20 \n\t" ++ : "=r" (lws_ret), "=r" (lws_errno) ++ : "i" (2), "r" (lws_mem), "r" (lws_old), "r" (lws_new), "r" (lws_size) ++ : "r1", "r20", "r22", "r29", "r31", "fr4", "memory" ++ ); ++ if (__builtin_expect (lws_errno == -EFAULT || lws_errno == -ENOSYS, 0)) ++ __builtin_trap (); ++ ++ /* If the kernel LWS call fails, return EBUSY */ ++ if (!lws_errno && lws_ret) ++ lws_errno = -EBUSY; ++ ++ return lws_errno; ++} + #define HIDDEN __attribute__ ((visibility ("hidden"))) + + /* Big endian masks */ +@@ -84,69 +106,87 @@ + #define MASK_1 0xffu + #define MASK_2 0xffffu + +-#define FETCH_AND_OP_WORD(OP, PFX_OP, INF_OP) \ +- int HIDDEN \ +- __sync_fetch_and_##OP##_4 (int *ptr, int val) \ ++#define FETCH_AND_OP_2(OP, PFX_OP, INF_OP, TYPE, WIDTH, INDEX) \ ++ TYPE HIDDEN \ ++ __sync_fetch_and_##OP##_##WIDTH (TYPE *ptr, TYPE val) \ + { \ +- int failure, tmp; \ ++ TYPE tmp, newval; \ ++ int failure; \ + \ + do { \ +- tmp = *ptr; \ +- failure = __kernel_cmpxchg (tmp, PFX_OP (tmp INF_OP val), ptr); \ ++ tmp = __atomic_load_n (ptr, __ATOMIC_SEQ_CST); \ ++ newval = PFX_OP (tmp INF_OP val); \ ++ failure = __kernel_cmpxchg2 (&tmp, &newval, ptr, INDEX); \ + } while (failure != 0); \ + \ + return tmp; \ + } + +-FETCH_AND_OP_WORD (add, , +) +-FETCH_AND_OP_WORD (sub, , -) +-FETCH_AND_OP_WORD (or, , |) +-FETCH_AND_OP_WORD (and, , &) +-FETCH_AND_OP_WORD (xor, , ^) +-FETCH_AND_OP_WORD (nand, ~, &) ++FETCH_AND_OP_2 (add, , +, short, 2, 1) ++FETCH_AND_OP_2 (sub, , -, short, 2, 1) ++FETCH_AND_OP_2 (or, , |, short, 2, 1) ++FETCH_AND_OP_2 (and, , &, short, 2, 1) ++FETCH_AND_OP_2 (xor, , ^, short, 2, 1) ++FETCH_AND_OP_2 (nand, ~, &, short, 2, 1) + +-#define NAME_oldval(OP, WIDTH) __sync_fetch_and_##OP##_##WIDTH +-#define NAME_newval(OP, WIDTH) __sync_##OP##_and_fetch_##WIDTH ++FETCH_AND_OP_2 (add, , +, signed char, 1, 0) ++FETCH_AND_OP_2 (sub, , -, signed char, 1, 0) ++FETCH_AND_OP_2 (or, , |, signed char, 1, 0) ++FETCH_AND_OP_2 (and, , &, signed char, 1, 0) ++FETCH_AND_OP_2 (xor, , ^, signed char, 1, 0) ++FETCH_AND_OP_2 (nand, ~, &, signed char, 1, 0) + +-/* Implement both __sync__and_fetch and __sync_fetch_and_ for +- subword-sized quantities. */ +- +-#define SUBWORD_SYNC_OP(OP, PFX_OP, INF_OP, TYPE, WIDTH, RETURN) \ ++#define OP_AND_FETCH_2(OP, PFX_OP, INF_OP, TYPE, WIDTH, INDEX) \ + TYPE HIDDEN \ +- NAME##_##RETURN (OP, WIDTH) (TYPE *ptr, TYPE val) \ ++ __sync_##OP##_and_fetch_##WIDTH (TYPE *ptr, TYPE val) \ + { \ +- int *wordptr = (int *) ((unsigned long) ptr & ~3); \ +- unsigned int mask, shift, oldval, newval; \ ++ TYPE tmp, newval; \ + int failure; \ + \ +- shift = (((unsigned long) ptr & 3) << 3) ^ INVERT_MASK_##WIDTH; \ +- mask = MASK_##WIDTH << shift; \ ++ do { \ ++ tmp = __atomic_load_n (ptr, __ATOMIC_SEQ_CST); \ ++ newval = PFX_OP (tmp INF_OP val); \ ++ failure = __kernel_cmpxchg2 (&tmp, &newval, ptr, INDEX); \ ++ } while (failure != 0); \ + \ ++ return PFX_OP (tmp INF_OP val); \ ++ } ++ ++OP_AND_FETCH_2 (add, , +, short, 2, 1) ++OP_AND_FETCH_2 (sub, , -, short, 2, 1) ++OP_AND_FETCH_2 (or, , |, short, 2, 1) ++OP_AND_FETCH_2 (and, , &, short, 2, 1) ++OP_AND_FETCH_2 (xor, , ^, short, 2, 1) ++OP_AND_FETCH_2 (nand, ~, &, short, 2, 1) ++ ++OP_AND_FETCH_2 (add, , +, signed char, 1, 0) ++OP_AND_FETCH_2 (sub, , -, signed char, 1, 0) ++OP_AND_FETCH_2 (or, , |, signed char, 1, 0) ++OP_AND_FETCH_2 (and, , &, signed char, 1, 0) ++OP_AND_FETCH_2 (xor, , ^, signed char, 1, 0) ++OP_AND_FETCH_2 (nand, ~, &, signed char, 1, 0) ++ ++#define FETCH_AND_OP_WORD(OP, PFX_OP, INF_OP) \ ++ int HIDDEN \ ++ __sync_fetch_and_##OP##_4 (int *ptr, int val) \ ++ { \ ++ int failure, tmp; \ ++ \ + do { \ +- oldval = *wordptr; \ +- newval = ((PFX_OP (((oldval & mask) >> shift) \ +- INF_OP (unsigned int) val)) << shift) & mask; \ +- newval |= oldval & ~mask; \ +- failure = __kernel_cmpxchg (oldval, newval, wordptr); \ ++ tmp = __atomic_load_n (ptr, __ATOMIC_SEQ_CST); \ ++ failure = __kernel_cmpxchg (tmp, PFX_OP (tmp INF_OP val), ptr); \ + } while (failure != 0); \ + \ +- return (RETURN & mask) >> shift; \ ++ return tmp; \ + } + +-SUBWORD_SYNC_OP (add, , +, unsigned short, 2, oldval) +-SUBWORD_SYNC_OP (sub, , -, unsigned short, 2, oldval) +-SUBWORD_SYNC_OP (or, , |, unsigned short, 2, oldval) +-SUBWORD_SYNC_OP (and, , &, unsigned short, 2, oldval) +-SUBWORD_SYNC_OP (xor, , ^, unsigned short, 2, oldval) +-SUBWORD_SYNC_OP (nand, ~, &, unsigned short, 2, oldval) ++FETCH_AND_OP_WORD (add, , +) ++FETCH_AND_OP_WORD (sub, , -) ++FETCH_AND_OP_WORD (or, , |) ++FETCH_AND_OP_WORD (and, , &) ++FETCH_AND_OP_WORD (xor, , ^) ++FETCH_AND_OP_WORD (nand, ~, &) + +-SUBWORD_SYNC_OP (add, , +, unsigned char, 1, oldval) +-SUBWORD_SYNC_OP (sub, , -, unsigned char, 1, oldval) +-SUBWORD_SYNC_OP (or, , |, unsigned char, 1, oldval) +-SUBWORD_SYNC_OP (and, , &, unsigned char, 1, oldval) +-SUBWORD_SYNC_OP (xor, , ^, unsigned char, 1, oldval) +-SUBWORD_SYNC_OP (nand, ~, &, unsigned char, 1, oldval) +- + #define OP_AND_FETCH_WORD(OP, PFX_OP, INF_OP) \ + int HIDDEN \ + __sync_##OP##_and_fetch_4 (int *ptr, int val) \ +@@ -154,7 +194,7 @@ + int tmp, failure; \ + \ + do { \ +- tmp = *ptr; \ ++ tmp = __atomic_load_n (ptr, __ATOMIC_SEQ_CST); \ + failure = __kernel_cmpxchg (tmp, PFX_OP (tmp INF_OP val), ptr); \ + } while (failure != 0); \ + \ +@@ -168,20 +208,41 @@ + OP_AND_FETCH_WORD (xor, , ^) + OP_AND_FETCH_WORD (nand, ~, &) + +-SUBWORD_SYNC_OP (add, , +, unsigned short, 2, newval) +-SUBWORD_SYNC_OP (sub, , -, unsigned short, 2, newval) +-SUBWORD_SYNC_OP (or, , |, unsigned short, 2, newval) +-SUBWORD_SYNC_OP (and, , &, unsigned short, 2, newval) +-SUBWORD_SYNC_OP (xor, , ^, unsigned short, 2, newval) +-SUBWORD_SYNC_OP (nand, ~, &, unsigned short, 2, newval) ++typedef unsigned char bool; + +-SUBWORD_SYNC_OP (add, , +, unsigned char, 1, newval) +-SUBWORD_SYNC_OP (sub, , -, unsigned char, 1, newval) +-SUBWORD_SYNC_OP (or, , |, unsigned char, 1, newval) +-SUBWORD_SYNC_OP (and, , &, unsigned char, 1, newval) +-SUBWORD_SYNC_OP (xor, , ^, unsigned char, 1, newval) +-SUBWORD_SYNC_OP (nand, ~, &, unsigned char, 1, newval) ++#define COMPARE_AND_SWAP_2(TYPE, WIDTH, INDEX) \ ++ TYPE HIDDEN \ ++ __sync_val_compare_and_swap_##WIDTH (TYPE *ptr, TYPE oldval, \ ++ TYPE newval) \ ++ { \ ++ TYPE actual_oldval; \ ++ int fail; \ ++ \ ++ while (1) \ ++ { \ ++ actual_oldval = __atomic_load_n (ptr, __ATOMIC_SEQ_CST); \ ++ \ ++ if (__builtin_expect (oldval != actual_oldval, 0)) \ ++ return actual_oldval; \ ++ \ ++ fail = __kernel_cmpxchg2 (&actual_oldval, &newval, ptr, INDEX); \ ++ \ ++ if (__builtin_expect (!fail, 1)) \ ++ return actual_oldval; \ ++ } \ ++ } \ ++ \ ++ bool HIDDEN \ ++ __sync_bool_compare_and_swap_##WIDTH (TYPE *ptr, TYPE oldval, \ ++ TYPE newval) \ ++ { \ ++ int failure = __kernel_cmpxchg2 (&oldval, &newval, ptr, INDEX); \ ++ return (failure != 0); \ ++ } + ++COMPARE_AND_SWAP_2 (short, 2, 1) ++COMPARE_AND_SWAP_2 (char, 1, 0) ++ + int HIDDEN + __sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval) + { +@@ -189,7 +250,7 @@ + + while (1) + { +- actual_oldval = *ptr; ++ actual_oldval = __atomic_load_n (ptr, __ATOMIC_SEQ_CST); + + if (__builtin_expect (oldval != actual_oldval, 0)) + return actual_oldval; +@@ -201,41 +262,6 @@ + } + } + +-#define SUBWORD_VAL_CAS(TYPE, WIDTH) \ +- TYPE HIDDEN \ +- __sync_val_compare_and_swap_##WIDTH (TYPE *ptr, TYPE oldval, \ +- TYPE newval) \ +- { \ +- int *wordptr = (int *)((unsigned long) ptr & ~3), fail; \ +- unsigned int mask, shift, actual_oldval, actual_newval; \ +- \ +- shift = (((unsigned long) ptr & 3) << 3) ^ INVERT_MASK_##WIDTH; \ +- mask = MASK_##WIDTH << shift; \ +- \ +- while (1) \ +- { \ +- actual_oldval = *wordptr; \ +- \ +- if (__builtin_expect (((actual_oldval & mask) >> shift) \ +- != (unsigned int) oldval, 0)) \ +- return (actual_oldval & mask) >> shift; \ +- \ +- actual_newval = (actual_oldval & ~mask) \ +- | (((unsigned int) newval << shift) & mask); \ +- \ +- fail = __kernel_cmpxchg (actual_oldval, actual_newval, \ +- wordptr); \ +- \ +- if (__builtin_expect (!fail, 1)) \ +- return (actual_oldval & mask) >> shift; \ +- } \ +- } +- +-SUBWORD_VAL_CAS (unsigned short, 2) +-SUBWORD_VAL_CAS (unsigned char, 1) +- +-typedef unsigned char bool; +- + bool HIDDEN + __sync_bool_compare_and_swap_4 (int *ptr, int oldval, int newval) + { +@@ -243,18 +269,23 @@ + return (failure == 0); + } + +-#define SUBWORD_BOOL_CAS(TYPE, WIDTH) \ +- bool HIDDEN \ +- __sync_bool_compare_and_swap_##WIDTH (TYPE *ptr, TYPE oldval, \ +- TYPE newval) \ ++#define SYNC_LOCK_TEST_AND_SET_2(TYPE, WIDTH, INDEX) \ ++TYPE HIDDEN \ ++ __sync_lock_test_and_set_##WIDTH (TYPE *ptr, TYPE val) \ + { \ +- TYPE actual_oldval \ +- = __sync_val_compare_and_swap_##WIDTH (ptr, oldval, newval); \ +- return (oldval == actual_oldval); \ ++ TYPE oldval; \ ++ int failure; \ ++ \ ++ do { \ ++ oldval = __atomic_load_n (ptr, __ATOMIC_SEQ_CST); \ ++ failure = __kernel_cmpxchg2 (&oldval, &val, ptr, INDEX); \ ++ } while (failure != 0); \ ++ \ ++ return oldval; \ + } + +-SUBWORD_BOOL_CAS (unsigned short, 2) +-SUBWORD_BOOL_CAS (unsigned char, 1) ++SYNC_LOCK_TEST_AND_SET_2 (short, 2, 1) ++SYNC_LOCK_TEST_AND_SET_2 (signed char, 1, 0) + + int HIDDEN + __sync_lock_test_and_set_4 (int *ptr, int val) +@@ -262,7 +293,7 @@ + int failure, oldval; + + do { +- oldval = *ptr; ++ oldval = __atomic_load_n (ptr, __ATOMIC_SEQ_CST); + failure = __kernel_cmpxchg (oldval, val, ptr); + } while (failure != 0); + +@@ -269,37 +300,28 @@ + return oldval; + } + +-#define SUBWORD_TEST_AND_SET(TYPE, WIDTH) \ +- TYPE HIDDEN \ +- __sync_lock_test_and_set_##WIDTH (TYPE *ptr, TYPE val) \ +- { \ +- int failure; \ +- unsigned int oldval, newval, shift, mask; \ +- int *wordptr = (int *) ((unsigned long) ptr & ~3); \ +- \ +- shift = (((unsigned long) ptr & 3) << 3) ^ INVERT_MASK_##WIDTH; \ +- mask = MASK_##WIDTH << shift; \ +- \ +- do { \ +- oldval = *wordptr; \ +- newval = (oldval & ~mask) \ +- | (((unsigned int) val << shift) & mask); \ +- failure = __kernel_cmpxchg (oldval, newval, wordptr); \ +- } while (failure != 0); \ +- \ +- return (oldval & mask) >> shift; \ ++#define SYNC_LOCK_RELEASE_2(TYPE, WIDTH, INDEX) \ ++ void HIDDEN \ ++ __sync_lock_release_##WIDTH (TYPE *ptr) \ ++ { \ ++ TYPE failure, oldval, zero = 0; \ ++ \ ++ do { \ ++ oldval = __atomic_load_n (ptr, __ATOMIC_SEQ_CST); \ ++ failure = __kernel_cmpxchg2 (&oldval, &zero, ptr, INDEX); \ ++ } while (failure != 0); \ + } + +-SUBWORD_TEST_AND_SET (unsigned short, 2) +-SUBWORD_TEST_AND_SET (unsigned char, 1) ++SYNC_LOCK_RELEASE_2 (short, 2, 1) ++SYNC_LOCK_RELEASE_2 (signed char, 1, 0) + +-#define SYNC_LOCK_RELEASE(TYPE, WIDTH) \ +- void HIDDEN \ +- __sync_lock_release_##WIDTH (TYPE *ptr) \ +- { \ +- *ptr = 0; \ +- } ++void HIDDEN ++__sync_lock_release_4 (int *ptr) ++{ ++ int failure, oldval; + +-SYNC_LOCK_RELEASE (int, 4) +-SYNC_LOCK_RELEASE (short, 2) +-SYNC_LOCK_RELEASE (char, 1) ++ do { ++ oldval = *ptr; ++ failure = __kernel_cmpxchg (oldval, 0, ptr); ++ } while (failure != 0); ++} +Index: libgcc/config/mips/mips16.S +=================================================================== +--- a/src/libgcc/config/mips/mips16.S (.../tags/gcc_4_9_2_release) ++++ b/src/libgcc/config/mips/mips16.S (.../branches/gcc-4_9-branch) +@@ -21,8 +21,12 @@ + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + . */ + +-#ifdef __mips_micromips +- /* DO NOTHING */ ++#if defined(__mips_micromips) || defined(__mips_soft_float) ++ /* Do nothing because this code is only needed when linking ++ against mips16 hard-float objects. Neither micromips code ++ nor soft-float code can be linked against mips16 hard-float ++ objects so we do not need these routines when building libgcc ++ for those cases. */ + #else + + /* This file contains mips16 floating point support functions. These +@@ -749,4 +753,4 @@ + #endif /* !__mips_single_float */ + + #endif +-#endif /* __mips_micromips */ ++#endif /* defined(__mips_micromips) || defined(__mips_soft_float) */ +Index: libgcc/config/nios2/linux-unwind.h +=================================================================== +--- a/src/libgcc/config/nios2/linux-unwind.h (.../tags/gcc_4_9_2_release) ++++ b/src/libgcc/config/nios2/linux-unwind.h (.../branches/gcc-4_9-branch) +@@ -67,10 +67,9 @@ + if (pc[0] == (0x00800004 | (__NR_rt_sigreturn << 6))) + { + struct rt_sigframe { +- char retcode[12]; + siginfo_t info; + struct nios2_ucontext uc; +- } *rt_ = context->ra; ++ } *rt_ = context->cfa; + struct nios2_mcontext *regs = &rt_->uc.uc_mcontext; + int i; + +Index: gcc/tree-vrp.c +=================================================================== +--- a/src/gcc/tree-vrp.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/tree-vrp.c (.../branches/gcc-4_9-branch) +@@ -7172,7 +7172,7 @@ + tree type = TREE_TYPE (op0); + value_range_t *vr0 = get_value_range (op0); + +- if (vr0->type != VR_VARYING ++ if (vr0->type == VR_RANGE + && INTEGRAL_TYPE_P (type) + && vrp_val_is_min (vr0->min) + && vrp_val_is_max (vr0->max) +@@ -9377,8 +9377,10 @@ + } + else + { +- tree r1 = int_const_binop (subcode, vr0.min, vr1.min); +- tree r2 = int_const_binop (subcode, vr0.max, vr1.max); ++ tree r1 = int_const_binop (subcode, vr0.min, ++ subcode == MINUS_EXPR ? vr1.max : vr1.min); ++ tree r2 = int_const_binop (subcode, vr0.max, ++ subcode == MINUS_EXPR ? vr1.min : vr1.max); + if (r1 == NULL_TREE || TREE_OVERFLOW (r1) + || r2 == NULL_TREE || TREE_OVERFLOW (r2)) + return false; +@@ -9728,7 +9730,7 @@ + substitute_and_fold (op_with_constant_singleton_value_range, + vrp_fold_stmt, false); + +- if (warn_array_bounds) ++ if (warn_array_bounds && first_pass_instance) + check_all_array_refs (); + + /* We must identify jump threading opportunities before we release +Index: gcc/ira-conflicts.c +=================================================================== +--- a/src/gcc/ira-conflicts.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/ira-conflicts.c (.../branches/gcc-4_9-branch) +@@ -774,6 +774,27 @@ + temp_hard_reg_set); + } + ++ /* Now we deal with paradoxical subreg cases where certain registers ++ cannot be accessed in the widest mode. */ ++ enum machine_mode outer_mode = ALLOCNO_WMODE (a); ++ enum machine_mode inner_mode = ALLOCNO_MODE (a); ++ if (GET_MODE_SIZE (outer_mode) > GET_MODE_SIZE (inner_mode)) ++ { ++ enum reg_class aclass = ALLOCNO_CLASS (a); ++ for (int j = ira_class_hard_regs_num[aclass] - 1; j >= 0; --j) ++ { ++ int inner_regno = ira_class_hard_regs[aclass][j]; ++ int outer_regno = simplify_subreg_regno (inner_regno, ++ inner_mode, 0, ++ outer_mode); ++ if (outer_regno < 0 ++ || !in_hard_reg_set_p (reg_class_contents[aclass], ++ outer_mode, outer_regno)) ++ SET_HARD_REG_BIT (OBJECT_CONFLICT_HARD_REGS (obj), ++ inner_regno); ++ } ++ } ++ + if (ALLOCNO_CALLS_CROSSED_NUM (a) != 0) + { + int regno; +Index: gcc/tree-ssa-tail-merge.c +=================================================================== +--- a/src/gcc/tree-ssa-tail-merge.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/tree-ssa-tail-merge.c (.../branches/gcc-4_9-branch) +@@ -314,7 +314,8 @@ + + if (gimple_vdef (stmt) != NULL_TREE + || gimple_has_side_effects (stmt) +- || gimple_could_trap_p_1 (stmt, false, false)) ++ || gimple_could_trap_p_1 (stmt, false, false) ++ || gimple_vuse (stmt) != NULL_TREE) + return false; + + def_p = SINGLE_SSA_DEF_OPERAND (stmt, SSA_OP_DEF); +@@ -569,7 +570,7 @@ + if (!inverse_flags (e1, e2)) + { + for (i = 0; i < e1->succ_flags.length (); ++i) +- if (e1->succ_flags[i] != e1->succ_flags[i]) ++ if (e1->succ_flags[i] != e2->succ_flags[i]) + return 0; + } + +@@ -1164,7 +1165,8 @@ + gimple_assign_rhs1 (s2))); + else if (TREE_CODE (lhs1) == SSA_NAME + && TREE_CODE (lhs2) == SSA_NAME) +- return vn_valueize (lhs1) == vn_valueize (lhs2); ++ return operand_equal_p (gimple_assign_rhs1 (s1), ++ gimple_assign_rhs1 (s2), 0); + return false; + + case GIMPLE_COND: +Index: gcc/c-family/c-opts.c +=================================================================== +--- a/src/gcc/c-family/c-opts.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/c-family/c-opts.c (.../branches/gcc-4_9-branch) +@@ -1363,6 +1363,12 @@ + static void + push_command_line_include (void) + { ++ /* This can happen if disabled by -imacros for example. ++ Punt so that we don't set "" as the filename for ++ the header. */ ++ if (include_cursor > deferred_count) ++ return; ++ + if (!done_preinclude) + { + done_preinclude = true; +Index: gcc/c-family/ChangeLog +=================================================================== +--- a/src/gcc/c-family/ChangeLog (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/c-family/ChangeLog (.../branches/gcc-4_9-branch) +@@ -1,3 +1,45 @@ ++2015-03-06 Eric Botcazou ++ ++ * g++.dg/other/dump-ada-spec-3.C: Remove include and adjust. ++ ++2015-03-06 Eric Botcazou ++ Jonathan Wakely ++ ++ * c-ada-spec.c (dump_ada_double_name): Fix pasto. ++ ++2015-03-05 Eric Botcazou ++ ++ PR ada/65319 ++ * c-ada-spec.c (print_destructor): Remove obsolete code. ++ ++2015-02-11 Jakub Jelinek ++ ++ Backported from mainline ++ 2015-02-04 Jakub Jelinek ++ ++ PR c/64824 ++ PR c/64868 ++ * c-omp.c (c_finish_omp_atomic): Use TRUNC_DIV_EXPR ++ instead of RDIV_EXPR. Use build_binary_op instead of ++ build2_loc. ++ ++2015-02-11 Richard Biener ++ ++ Backport from mainline ++ 2014-07-24 Marek Polacek ++ ++ PR c/57653 ++ * c-opts.c (c_finish_options): If -imacros is in effect, return. ++ ++2015-01-20 Marek Polacek ++ ++ Backport from mainline ++ 2014-06-23 Marek Polacek ++ ++ PR c/61553 ++ * c-common.c (get_atomic_generic_size): Don't segfault if the ++ type doesn't have a size. ++ + 2014-10-30 Release Manager + + * GCC 4.9.2 released. +Index: gcc/c-family/c-common.c +=================================================================== +--- a/src/gcc/c-family/c-common.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/c-family/c-common.c (.../branches/gcc-4_9-branch) +@@ -10402,7 +10402,8 @@ + function); + return 0; + } +- size = tree_to_uhwi (TYPE_SIZE_UNIT (TREE_TYPE (type))); ++ tree type_size = TYPE_SIZE_UNIT (TREE_TYPE (type)); ++ size = type_size ? tree_to_uhwi (type_size) : 0; + if (size != size_0) + { + error_at (loc, "size mismatch in argument %d of %qE", x + 1, +Index: gcc/c-family/c-omp.c +=================================================================== +--- a/src/gcc/c-family/c-omp.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/c-family/c-omp.c (.../branches/gcc-4_9-branch) +@@ -156,6 +156,9 @@ + return error_mark_node; + } + ++ if (opcode == RDIV_EXPR) ++ opcode = TRUNC_DIV_EXPR; ++ + /* ??? Validate that rhs does not overlap lhs. */ + + /* Take and save the address of the lhs. From then on we'll reference it +@@ -190,7 +193,7 @@ + to do this, and then take it apart again. */ + if (swapped) + { +- rhs = build2_loc (loc, opcode, TREE_TYPE (lhs), rhs, lhs); ++ rhs = build_binary_op (loc, opcode, rhs, lhs, 1); + opcode = NOP_EXPR; + } + bool save = in_late_binary_op; +Index: gcc/c-family/c-ubsan.c +=================================================================== +--- a/src/gcc/c-family/c-ubsan.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/c-family/c-ubsan.c (.../branches/gcc-4_9-branch) +@@ -98,19 +98,19 @@ + tree op1_utype = unsigned_type_for (type1); + HOST_WIDE_INT op0_prec = TYPE_PRECISION (type0); + tree uprecm1 = build_int_cst (op1_utype, op0_prec - 1); +- tree precm1 = build_int_cst (type1, op0_prec - 1); + + t = fold_convert_loc (loc, op1_utype, op1); + t = fold_build2 (GT_EXPR, boolean_type_node, t, uprecm1); + + /* For signed x << y, in C99/C11, the following: +- (unsigned) x >> (precm1 - y) ++ (unsigned) x >> (uprecm1 - y) + if non-zero, is undefined. */ + if (code == LSHIFT_EXPR + && !TYPE_UNSIGNED (type0) + && flag_isoc99) + { +- tree x = fold_build2 (MINUS_EXPR, integer_type_node, precm1, op1); ++ tree x = fold_build2 (MINUS_EXPR, unsigned_type_node, uprecm1, ++ fold_convert (op1_utype, op1)); + tt = fold_convert_loc (loc, unsigned_type_for (type0), op0); + tt = fold_build2 (RSHIFT_EXPR, TREE_TYPE (tt), tt, x); + tt = fold_build2 (NE_EXPR, boolean_type_node, tt, +@@ -118,13 +118,14 @@ + } + + /* For signed x << y, in C++11/C++14, the following: +- x < 0 || ((unsigned) x >> (precm1 - y)) ++ x < 0 || ((unsigned) x >> (uprecm1 - y)) + if > 1, is undefined. */ + if (code == LSHIFT_EXPR + && !TYPE_UNSIGNED (TREE_TYPE (op0)) + && (cxx_dialect == cxx11 || cxx_dialect == cxx1y)) + { +- tree x = fold_build2 (MINUS_EXPR, integer_type_node, precm1, op1); ++ tree x = fold_build2 (MINUS_EXPR, unsigned_type_node, uprecm1, ++ fold_convert (op1_utype, op1)); + tt = fold_convert_loc (loc, unsigned_type_for (type0), op0); + tt = fold_build2 (RSHIFT_EXPR, TREE_TYPE (tt), tt, x); + tt = fold_build2 (GT_EXPR, boolean_type_node, tt, +Index: gcc/c-family/c-ada-spec.c +=================================================================== +--- a/src/gcc/c-family/c-ada-spec.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/c-family/c-ada-spec.c (.../branches/gcc-4_9-branch) +@@ -1392,7 +1392,7 @@ + + pp_underscore (buffer); + +- if (DECL_NAME (t1)) ++ if (DECL_NAME (t2)) + pp_ada_tree_identifier (buffer, DECL_NAME (t2), t2, false); + else + { +@@ -2538,18 +2538,9 @@ + print_destructor (pretty_printer *buffer, tree t) + { + tree decl_name = DECL_NAME (DECL_ORIGIN (t)); +- const char *s = IDENTIFIER_POINTER (decl_name); + +- if (*s == '_') +- { +- for (s += 2; *s != ' '; s++) +- pp_character (buffer, *s); +- } +- else +- { +- pp_string (buffer, "Delete_"); +- pp_ada_tree_identifier (buffer, decl_name, t, false); +- } ++ pp_string (buffer, "Delete_"); ++ pp_ada_tree_identifier (buffer, decl_name, t, false); + } + + /* Return the name of type T. */ +Index: gcc/tree-loop-distribution.c +=================================================================== +--- a/src/gcc/tree-loop-distribution.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/tree-loop-distribution.c (.../branches/gcc-4_9-branch) +@@ -1342,6 +1342,7 @@ + for (int ii = 0; drs1.iterate (ii, &dr1); ++ii) + for (int jj = 0; drs2.iterate (jj, &dr2); ++jj) + { ++ data_reference_p saved_dr1 = dr1; + int this_dir = 1; + ddr_p ddr; + /* Re-shuffle data-refs to be in dominator order. */ +@@ -1387,6 +1388,8 @@ + dir = this_dir; + else if (dir != this_dir) + return 2; ++ /* Shuffle "back" dr1. */ ++ dr1 = saved_dr1; + } + return dir; + } +Index: gcc/lra-assigns.c +=================================================================== +--- a/src/gcc/lra-assigns.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/lra-assigns.c (.../branches/gcc-4_9-branch) +@@ -849,6 +849,7 @@ + enum reg_class rclass; + unsigned int spill_regno, reload_regno, uid; + int insn_pseudos_num, best_insn_pseudos_num; ++ int bad_spills_num, smallest_bad_spills_num; + lra_live_range_t r; + bitmap_iterator bi; + +@@ -867,6 +868,7 @@ + best_hard_regno = -1; + best_cost = INT_MAX; + best_insn_pseudos_num = INT_MAX; ++ smallest_bad_spills_num = INT_MAX; + rclass_size = ira_class_hard_regs_num[rclass]; + mode = PSEUDO_REGNO_MODE (regno); + /* Invalidate try_hard_reg_pseudos elements. */ +@@ -895,6 +897,7 @@ + && ! bitmap_bit_p (&lra_optional_reload_pseudos, spill_regno)) + goto fail; + insn_pseudos_num = 0; ++ bad_spills_num = 0; + if (lra_dump_file != NULL) + fprintf (lra_dump_file, " Trying %d:", hard_regno); + sparseset_clear (live_range_reload_inheritance_pseudos); +@@ -902,6 +905,8 @@ + { + if (bitmap_bit_p (&insn_conflict_pseudos, spill_regno)) + insn_pseudos_num++; ++ if (spill_regno >= (unsigned int) lra_bad_spill_regno_start) ++ bad_spills_num++; + for (r = lra_reg_info[spill_regno].live_ranges; + r != NULL; + r = r->next) +@@ -972,15 +977,19 @@ + } + if (best_insn_pseudos_num > insn_pseudos_num + || (best_insn_pseudos_num == insn_pseudos_num +- && best_cost > cost)) ++ && (bad_spills_num < smallest_bad_spills_num ++ || (bad_spills_num == smallest_bad_spills_num ++ && best_cost > cost)))) + { + best_insn_pseudos_num = insn_pseudos_num; ++ smallest_bad_spills_num = bad_spills_num; + best_cost = cost; + best_hard_regno = hard_regno; + bitmap_copy (&best_spill_pseudos_bitmap, &spill_pseudos_bitmap); + if (lra_dump_file != NULL) +- fprintf (lra_dump_file, " Now best %d(cost=%d)\n", +- hard_regno, cost); ++ fprintf (lra_dump_file, ++ " Now best %d(cost=%d, bad_spills=%d, insn_pseudos=%d)\n", ++ hard_regno, cost, bad_spills_num, insn_pseudos_num); + } + assign_temporarily (regno, -1); + for (j = 0; j < n; j++) +Index: gcc/c/ChangeLog +=================================================================== +--- a/src/gcc/c/ChangeLog (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/c/ChangeLog (.../branches/gcc-4_9-branch) +@@ -1,3 +1,47 @@ ++2015-06-03 Jakub Jelinek ++ ++ Backported from mainline ++ 2015-03-19 Jakub Jelinek ++ ++ * c-decl.c (c_decl_attributes): Also add "omp declare target" ++ attribute for DECL_EXTERNAL VAR_DECLs. ++ ++2015-02-27 Marek Polacek ++ ++ Backported from mainline ++ 2015-02-27 Marek Polacek ++ ++ PR c/65228 ++ * c-decl.c (start_decl): Return NULL_TREE if decl is an error node. ++ ++2015-02-11 Jakub Jelinek ++ ++ PR c/64824 ++ * c-parser.c (c_parser_binary_expression): Fix OpenMP stack[sp].prec ++ check in the POP macro. ++ ++ Backported from mainline ++ 2015-02-04 Jakub Jelinek ++ ++ PR c/64824 ++ PR c/64868 ++ * c-parser.c (c_parser_omp_atomic): Handle RDIV_EXPR. ++ ++2015-02-01 Jakub Jelinek ++ ++ Backported from mainline ++ 2015-01-27 Jakub Jelinek ++ ++ PR c/64766 ++ * c-typeck.c (store_init_value): Don't overwrite DECL_INITIAL ++ of FUNCTION_DECLs with error_mark_node. ++ ++ 2015-01-26 Jakub Jelinek ++ ++ PR c/64778 ++ * c-typeck.c (convert_arguments): Return -1 if there are ++ error_args, even if we've diagnosed too many arguments. ++ + 2014-10-30 Release Manager + + * GCC 4.9.2 released. +Index: gcc/c/c-parser.c +=================================================================== +--- a/src/gcc/c/c-parser.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/c/c-parser.c (.../branches/gcc-4_9-branch) +@@ -6103,8 +6103,8 @@ + if (__builtin_expect (omp_atomic_lhs != NULL_TREE, 0) && sp == 1 \ + && c_parser_peek_token (parser)->type == CPP_SEMICOLON \ + && ((1 << stack[sp].prec) \ +- & (1 << (PREC_BITOR | PREC_BITXOR | PREC_BITAND | PREC_SHIFT \ +- | PREC_ADD | PREC_MULT))) \ ++ & ((1 << PREC_BITOR) | (1 << PREC_BITXOR) | (1 << PREC_BITAND) \ ++ | (1 << PREC_SHIFT) | (1 << PREC_ADD) | (1 << PREC_MULT))) \ + && stack[sp].op != TRUNC_MOD_EXPR \ + && stack[0].expr.value != error_mark_node \ + && stack[1].expr.value != error_mark_node \ +@@ -11423,6 +11423,7 @@ + { + case MULT_EXPR: + case TRUNC_DIV_EXPR: ++ case RDIV_EXPR: + case PLUS_EXPR: + case MINUS_EXPR: + case LSHIFT_EXPR: +Index: gcc/c/c-typeck.c +=================================================================== +--- a/src/gcc/c/c-typeck.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/c/c-typeck.c (.../branches/gcc-4_9-branch) +@@ -3085,7 +3085,7 @@ + else + error_at (loc, "too many arguments to function %qE", function); + inform_declaration (fundecl); +- return parmnum; ++ return error_args ? -1 : (int) parmnum; + } + + if (selector && argnum > 2) +@@ -6249,7 +6249,8 @@ + warning (OPT_Wtraditional, "traditional C rejects automatic " + "aggregate initialization"); + +- DECL_INITIAL (decl) = value; ++ if (value != error_mark_node || TREE_CODE (decl) != FUNCTION_DECL) ++ DECL_INITIAL (decl) = value; + + /* ANSI wants warnings about out-of-range constant initializers. */ + STRIP_TYPE_NOPS (value); +Index: gcc/c/c-decl.c +=================================================================== +--- a/src/gcc/c/c-decl.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/c/c-decl.c (.../branches/gcc-4_9-branch) +@@ -4014,7 +4014,8 @@ + { + /* Add implicit "omp declare target" attribute if requested. */ + if (current_omp_declare_target_attribute +- && ((TREE_CODE (*node) == VAR_DECL && TREE_STATIC (*node)) ++ && ((TREE_CODE (*node) == VAR_DECL ++ && (TREE_STATIC (*node) || DECL_EXTERNAL (*node))) + || TREE_CODE (*node) == FUNCTION_DECL)) + { + if (TREE_CODE (*node) == VAR_DECL +@@ -4067,8 +4068,8 @@ + decl = grokdeclarator (declarator, declspecs, + NORMAL, initialized, NULL, &attributes, &expr, NULL, + deprecated_state); +- if (!decl) +- return 0; ++ if (!decl || decl == error_mark_node) ++ return NULL_TREE; + + if (expr) + add_stmt (fold_convert (void_type_node, expr)); +Index: gcc/lra-int.h +=================================================================== +--- a/src/gcc/lra-int.h (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/lra-int.h (.../branches/gcc-4_9-branch) +@@ -312,6 +312,7 @@ + + extern int lra_new_regno_start; + extern int lra_constraint_new_regno_start; ++extern int lra_bad_spill_regno_start; + extern bitmap_head lra_inheritance_pseudos; + extern bitmap_head lra_split_regs; + extern bitmap_head lra_subreg_reload_pseudos; +Index: gcc/DATESTAMP +=================================================================== +--- a/src/gcc/DATESTAMP (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/DATESTAMP (.../branches/gcc-4_9-branch) +@@ -1 +1 @@ +-20141030 ++20150623 +Index: gcc/lra.c +=================================================================== +--- a/src/gcc/lra.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/lra.c (.../branches/gcc-4_9-branch) +@@ -2215,6 +2215,10 @@ + /* Start of reload pseudo regnos before the new spill pass. */ + int lra_constraint_new_regno_start; + ++/* Avoid spilling pseudos with regno more than the following value if ++ it is possible. */ ++int lra_bad_spill_regno_start; ++ + /* Inheritance pseudo regnos before the new spill pass. */ + bitmap_head lra_inheritance_pseudos; + +@@ -2306,6 +2310,7 @@ + permit changing reg classes for pseudos created by this + simplification. */ + lra_constraint_new_regno_start = lra_new_regno_start = max_reg_num (); ++ lra_bad_spill_regno_start = INT_MAX; + remove_scratches (); + scratch_p = lra_constraint_new_regno_start != max_reg_num (); + +@@ -2418,6 +2423,12 @@ + some eliminations. So update the offsets here. */ + lra_eliminate (false, false); + lra_constraint_new_regno_start = max_reg_num (); ++ if (lra_bad_spill_regno_start == INT_MAX ++ && lra_inheritance_iter > LRA_MAX_INHERITANCE_PASSES) ++ /* After switching off inheritance and rematerialization ++ passes, avoid spilling reload pseudos will be created to ++ prevent LRA cycling in some complicated cases. */ ++ lra_bad_spill_regno_start = lra_constraint_new_regno_start; + lra_constraint_new_insn_uid_start = get_max_uid (); + lra_assignment_iter_after_spill = 0; + } +Index: gcc/tree-ssa-strlen.c +=================================================================== +--- a/src/gcc/tree-ssa-strlen.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/tree-ssa-strlen.c (.../branches/gcc-4_9-branch) +@@ -1856,7 +1856,7 @@ + break; + } + } +- else if (is_gimple_assign (stmt)) ++ else if (is_gimple_assign (stmt) && !gimple_clobber_p (stmt)) + { + tree lhs = gimple_assign_lhs (stmt); + +Index: gcc/tree.c +=================================================================== +--- a/src/gcc/tree.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/tree.c (.../branches/gcc-4_9-branch) +@@ -1120,7 +1120,7 @@ + const_tree const t = (const_tree) x; + + return (TREE_INT_CST_HIGH (t) ^ TREE_INT_CST_LOW (t) +- ^ htab_hash_pointer (TREE_TYPE (t))); ++ ^ TYPE_UID (TREE_TYPE (t))); + } + + /* Return nonzero if the value represented by *X (an INTEGER_CST tree node) +@@ -6215,8 +6215,11 @@ + else if (TYPE_CANONICAL (type) != type) + /* Build the underlying canonical type, since it is different + from TYPE. */ +- TYPE_CANONICAL (t) = build_qualified_type (TYPE_CANONICAL (type), +- type_quals); ++ { ++ tree c = build_qualified_type (TYPE_CANONICAL (type), ++ type_quals); ++ TYPE_CANONICAL (t) = TYPE_CANONICAL (c); ++ } + else + /* T is its own canonical type. */ + TYPE_CANONICAL (t) = t; +Index: gcc/reload.c +=================================================================== +--- a/src/gcc/reload.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/reload.c (.../branches/gcc-4_9-branch) +@@ -1622,6 +1622,7 @@ + end_hard_regno (rel_mode, + regno), + PATTERN (this_insn), inloc) ++ && ! find_reg_fusage (this_insn, USE, XEXP (note, 0)) + /* If this is also an output reload, IN cannot be used as + the reload register if it is set in this insn unless IN + is also OUT. */ +Index: gcc/rtlanal.c +=================================================================== +--- a/src/gcc/rtlanal.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/rtlanal.c (.../branches/gcc-4_9-branch) +@@ -873,6 +873,17 @@ + int + reg_set_p (const_rtx reg, const_rtx insn) + { ++ /* After delay slot handling, call and branch insns might be in a ++ sequence. Check all the elements there. */ ++ if (INSN_P (insn) && GET_CODE (PATTERN (insn)) == SEQUENCE) ++ { ++ for (int i = 0; i < XVECLEN (PATTERN (insn), 0); ++i) ++ if (reg_set_p (reg, XVECEXP (PATTERN (insn), 0, i))) ++ return true; ++ ++ return false; ++ } ++ + /* We can be passed an insn or part of one. If we are passed an insn, + check if a side-effect of the insn clobbers REG. */ + if (INSN_P (insn) +@@ -884,7 +895,7 @@ + GET_MODE (reg), REGNO (reg))) + || MEM_P (reg) + || find_reg_fusage (insn, CLOBBER, reg))))) +- return 1; ++ return true; + + return set_of (reg, insn) != NULL_RTX; + } +Index: gcc/configure +=================================================================== +--- a/src/gcc/configure (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/configure (.../branches/gcc-4_9-branch) +@@ -920,6 +920,7 @@ + enable_initfini_array + enable_comdat + enable_fix_cortex_a53_835769 ++enable_fix_cortex_a53_843419 + with_glibc_version + enable_gnu_unique_object + enable_linker_build_id +@@ -1644,6 +1645,14 @@ + disable workaround for AArch64 Cortex-A53 erratum + 835769 by default + ++ ++ --enable-fix-cortex-a53-843419 ++ enable workaround for AArch64 Cortex-A53 erratum ++ 843419 by default ++ --disable-fix-cortex-a53-843419 ++ disable workaround for AArch64 Cortex-A53 erratum ++ 843419 by default ++ + --enable-gnu-unique-object + enable the use of the @gnu_unique_object ELF + extension on glibc systems +@@ -17936,7 +17945,7 @@ + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 17939 "configure" ++#line 17948 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -18042,7 +18051,7 @@ + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 18045 "configure" ++#line 18054 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -24032,6 +24041,25 @@ + + fi + ++ # Enable default workaround for AArch64 Cortex-A53 erratum 843419. ++ # Check whether --enable-fix-cortex-a53-843419 was given. ++if test "${enable_fix_cortex_a53_843419+set}" = set; then : ++ enableval=$enable_fix_cortex_a53_843419; ++ case $enableval in ++ yes) ++ tm_defines="${tm_defines} TARGET_FIX_ERR_A53_843419_DEFAULT=1" ++ ;; ++ no) ++ ;; ++ *) ++ as_fn_error "'$enableval' is an invalid value for --enable-fix-cortex-a53-843419.\ ++ Valid choices are 'yes' and 'no'." "$LINENO" 5 ++ ;; ++ ++ esac ++ ++fi ++ + ;; + + # All TARGET_ABI_OSF targets. +@@ -24158,6 +24186,39 @@ + fi + ;; + ++ avr-*-*) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for -mrmw option" >&5 ++$as_echo_n "checking assembler for -mrmw option... " >&6; } ++if test "${gcc_cv_as_avr_mrmw+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ gcc_cv_as_avr_mrmw=no ++ if test x$gcc_cv_as != x; then ++ $as_echo '.text' > conftest.s ++ if { ac_try='$gcc_cv_as $gcc_cv_as_flags -mrmw -o conftest.o conftest.s >&5' ++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; } ++ then ++ gcc_cv_as_avr_mrmw=yes ++ else ++ echo "configure: failed program was" >&5 ++ cat conftest.s >&5 ++ fi ++ rm -f conftest.o conftest.s ++ fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_avr_mrmw" >&5 ++$as_echo "$gcc_cv_as_avr_mrmw" >&6; } ++if test $gcc_cv_as_avr_mrmw = yes; then ++ ++$as_echo "#define HAVE_AS_AVR_MRMW_OPTION 1" >>confdefs.h ++ ++fi ++ ;; ++ + sparc*-*-*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .register" >&5 + $as_echo_n "checking assembler for .register... " >&6; } +@@ -26140,6 +26201,38 @@ + + fi + ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .module support" >&5 ++$as_echo_n "checking assembler for .module support... " >&6; } ++if test "${gcc_cv_as_mips_dot_module+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ gcc_cv_as_mips_dot_module=no ++ if test x$gcc_cv_as != x; then ++ $as_echo '.module mips2 ++ .module fp=xx' > conftest.s ++ if { ac_try='$gcc_cv_as $gcc_cv_as_flags -32 -o conftest.o conftest.s >&5' ++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; } ++ then ++ gcc_cv_as_mips_dot_module=yes ++ else ++ echo "configure: failed program was" >&5 ++ cat conftest.s >&5 ++ fi ++ rm -f conftest.o conftest.s ++ fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_mips_dot_module" >&5 ++$as_echo "$gcc_cv_as_mips_dot_module" >&6; } ++if test $gcc_cv_as_mips_dot_module = yes; then ++ ++$as_echo "#define HAVE_AS_DOT_MODULE 1" >>confdefs.h ++ ++fi ++ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .micromips support" >&5 + $as_echo_n "checking assembler for .micromips support... " >&6; } + if test "${gcc_cv_as_micromips_support+set}" = set; then : +@@ -27851,8 +27944,48 @@ + + $as_echo "#define HAVE_cloog 1" >>confdefs.h + ++ ++ # Check whether isl_schedule_constraints_compute_schedule is available; ++ # it's new in ISL-0.13. ++ saved_CFLAGS="$CFLAGS" ++ CFLAGS="$CFLAGS $ISLINC" ++ saved_LIBS="$LIBS" ++ LIBS="$LIBS $CLOOGLIBS $ISLLIBS $GMPLIBS" ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Checking for isl_schedule_constraints_compute_schedule" >&5 ++$as_echo_n "checking Checking for isl_schedule_constraints_compute_schedule... " >&6; } ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++int ++main () ++{ ++isl_schedule_constraints_compute_schedule (NULL); ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_has_isl_schedule_constraints_compute_schedule=yes ++else ++ ac_has_isl_schedule_constraints_compute_schedule=no + fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_has_isl_schedule_constraints_compute_schedule" >&5 ++$as_echo "$ac_has_isl_schedule_constraints_compute_schedule" >&6; } + ++ LIBS="$saved_LIBS" ++ CFLAGS="$saved_CFLAGS" ++ ++ if test x"$ac_has_isl_schedule_constraints_compute_schedule" = x"yes"; then ++ ++$as_echo "#define HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE 1" >>confdefs.h ++ ++ fi ++fi ++ ++ + # Check for plugin support + # Check whether --enable-plugin was given. + if test "${enable_plugin+set}" = set; then : +Index: gcc/builtins.c +=================================================================== +--- a/src/gcc/builtins.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/builtins.c (.../branches/gcc-4_9-branch) +@@ -369,13 +369,15 @@ + tree addr = TREE_OPERAND (exp, 0); + unsigned ptr_align; + unsigned HOST_WIDE_INT ptr_bitpos; ++ unsigned HOST_WIDE_INT ptr_bitmask = ~0; + ++ /* If the address is explicitely aligned, handle that. */ + if (TREE_CODE (addr) == BIT_AND_EXPR + && TREE_CODE (TREE_OPERAND (addr, 1)) == INTEGER_CST) + { +- align = (TREE_INT_CST_LOW (TREE_OPERAND (addr, 1)) +- & -TREE_INT_CST_LOW (TREE_OPERAND (addr, 1))); +- align *= BITS_PER_UNIT; ++ ptr_bitmask = TREE_INT_CST_LOW (TREE_OPERAND (addr, 1)); ++ ptr_bitmask *= BITS_PER_UNIT; ++ align = ptr_bitmask & -ptr_bitmask; + addr = TREE_OPERAND (addr, 0); + } + +@@ -383,6 +385,9 @@ + = get_pointer_alignment_1 (addr, &ptr_align, &ptr_bitpos); + align = MAX (ptr_align, align); + ++ /* Re-apply explicit alignment to the bitpos. */ ++ ptr_bitpos &= ptr_bitmask; ++ + /* The alignment of the pointer operand in a TARGET_MEM_REF + has to take the variable offset parts into account. */ + if (TREE_CODE (exp) == TARGET_MEM_REF) +Index: gcc/fold-const.c +=================================================================== +--- a/src/gcc/fold-const.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/fold-const.c (.../branches/gcc-4_9-branch) +@@ -7941,6 +7941,11 @@ + return fold_convert_loc (loc, type, op0); + return NULL_TREE; + ++ case NON_LVALUE_EXPR: ++ if (!maybe_lvalue_p (op0)) ++ return fold_convert_loc (loc, type, op0); ++ return NULL_TREE; ++ + CASE_CONVERT: + case FLOAT_EXPR: + case FIX_TRUNC_EXPR: +@@ -8006,16 +8011,12 @@ + (for integers). Avoid this if the final type is a pointer since + then we sometimes need the middle conversion. Likewise if the + final type has a precision not equal to the size of its mode. */ +- if (((inter_int && inside_int) +- || (inter_float && inside_float) +- || (inter_vec && inside_vec)) ++ if (((inter_int && inside_int) || (inter_float && inside_float)) ++ && (final_int || final_float) + && inter_prec >= inside_prec +- && (inter_float || inter_vec +- || inter_unsignedp == inside_unsignedp) ++ && (inter_float || inter_unsignedp == inside_unsignedp) + && ! (final_prec != GET_MODE_PRECISION (TYPE_MODE (type)) +- && TYPE_MODE (type) == TYPE_MODE (inter_type)) +- && ! final_ptr +- && (! final_vec || inter_prec == inside_prec)) ++ && TYPE_MODE (type) == TYPE_MODE (inter_type))) + return fold_build1_loc (loc, code, type, TREE_OPERAND (op0, 0)); + + /* If we have a sign-extension of a zero-extended value, we can +@@ -8204,7 +8205,7 @@ + } + } + +- tem = fold_convert_const (code, type, op0); ++ tem = fold_convert_const (code, type, arg0); + return tem ? tem : NULL_TREE; + + case ADDR_SPACE_CONVERT_EXPR: +@@ -8324,9 +8325,14 @@ + && integer_onep (TREE_OPERAND (arg0, 1))) + || (TREE_CODE (arg0) == PLUS_EXPR + && integer_all_onesp (TREE_OPERAND (arg0, 1))))) +- return fold_build1_loc (loc, NEGATE_EXPR, type, +- fold_convert_loc (loc, type, +- TREE_OPERAND (arg0, 0))); ++ { ++ /* Perform the negation in ARG0's type and only then convert ++ to TYPE as to avoid introducing undefined behavior. */ ++ tree t = fold_build1_loc (loc, NEGATE_EXPR, ++ TREE_TYPE (TREE_OPERAND (arg0, 0)), ++ TREE_OPERAND (arg0, 0)); ++ return fold_convert_loc (loc, type, t); ++ } + /* Convert ~(X ^ Y) to ~X ^ Y or X ^ ~Y if ~X or ~Y simplify. */ + else if (TREE_CODE (arg0) == BIT_XOR_EXPR + && (tem = fold_unary_loc (loc, BIT_NOT_EXPR, type, +@@ -9024,7 +9030,8 @@ + /* If the constant operation overflowed this can be + simplified as a comparison against INT_MAX/INT_MIN. */ + if (TREE_CODE (lhs) == INTEGER_CST +- && TREE_OVERFLOW (lhs)) ++ && TREE_OVERFLOW (lhs) ++ && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (arg0))) + { + int const1_sgn = tree_int_cst_sgn (const1); + enum tree_code code2 = code; +@@ -10810,8 +10817,8 @@ + + /* Don't introduce overflows through reassociation. */ + if (!any_overflows +- && ((lit0 && TREE_OVERFLOW (lit0)) +- || (minus_lit0 && TREE_OVERFLOW (minus_lit0)))) ++ && ((lit0 && TREE_OVERFLOW_P (lit0)) ++ || (minus_lit0 && TREE_OVERFLOW_P (minus_lit0)))) + return NULL_TREE; + + if (minus_lit0) +@@ -13295,7 +13302,7 @@ + tree itype = TREE_TYPE (arg00); + if (TREE_INT_CST_HIGH (arg01) == 0 + && TREE_INT_CST_LOW (arg01) +- == (unsigned HOST_WIDE_INT) (TYPE_PRECISION (itype) - 1)) ++ == (unsigned HOST_WIDE_INT) (element_precision (itype) - 1)) + { + if (TYPE_UNSIGNED (itype)) + { +Index: gcc/omp-low.c +=================================================================== +--- a/src/gcc/omp-low.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/omp-low.c (.../branches/gcc-4_9-branch) +@@ -1483,7 +1483,8 @@ + layout_type (type); + } + +- TREE_TYPE (ctx->receiver_decl) = build_pointer_type (type); ++ TREE_TYPE (ctx->receiver_decl) ++ = build_qualified_type (build_reference_type (type), TYPE_QUAL_RESTRICT); + } + + /* Instantiate decls as necessary in CTX to satisfy the data sharing +@@ -1633,7 +1634,8 @@ + #pragma omp target data, there is nothing to map for + those. */ + if (gimple_omp_target_kind (ctx->stmt) == GF_OMP_TARGET_KIND_DATA +- && !POINTER_TYPE_P (TREE_TYPE (decl))) ++ && !POINTER_TYPE_P (TREE_TYPE (decl)) ++ && !OMP_CLAUSE_MAP_ZERO_BIAS_ARRAY_SECTION (c)) + break; + } + if (DECL_P (decl)) +@@ -4784,7 +4786,10 @@ + child_cfun = DECL_STRUCT_FUNCTION (child_fn); + + entry_bb = region->entry; +- exit_bb = region->exit; ++ if (gimple_code (entry_stmt) == GIMPLE_OMP_TASK) ++ exit_bb = region->cont; ++ else ++ exit_bb = region->exit; + + if (is_combined_parallel (region)) + ws_args = region->ws_args; +@@ -4833,7 +4838,9 @@ + variable. In which case, we need to keep the assignment. */ + if (gimple_omp_taskreg_data_arg (entry_stmt)) + { +- basic_block entry_succ_bb = single_succ (entry_bb); ++ basic_block entry_succ_bb ++ = single_succ_p (entry_bb) ? single_succ (entry_bb) ++ : FALLTHRU_EDGE (entry_bb)->dest; + gimple_stmt_iterator gsi; + tree arg, narg; + gimple parcopy_stmt = NULL; +@@ -4922,14 +4929,28 @@ + gsi_remove (&gsi, true); + e = split_block (entry_bb, stmt); + entry_bb = e->dest; +- single_succ_edge (entry_bb)->flags = EDGE_FALLTHRU; ++ edge e2 = NULL; ++ if (gimple_code (entry_stmt) == GIMPLE_OMP_PARALLEL) ++ single_succ_edge (entry_bb)->flags = EDGE_FALLTHRU; ++ else ++ { ++ e2 = make_edge (e->src, BRANCH_EDGE (entry_bb)->dest, EDGE_ABNORMAL); ++ gcc_assert (e2->dest == region->exit); ++ remove_edge (BRANCH_EDGE (entry_bb)); ++ set_immediate_dominator (CDI_DOMINATORS, e2->dest, e->src); ++ gsi = gsi_last_bb (region->exit); ++ gcc_assert (!gsi_end_p (gsi) ++ && gimple_code (gsi_stmt (gsi)) == GIMPLE_OMP_RETURN); ++ gsi_remove (&gsi, true); ++ } + +- /* Convert GIMPLE_OMP_RETURN into a RETURN_EXPR. */ ++ /* Convert GIMPLE_OMP_{RETURN,CONTINUE} into a RETURN_EXPR. */ + if (exit_bb) + { + gsi = gsi_last_bb (exit_bb); + gcc_assert (!gsi_end_p (gsi) +- && gimple_code (gsi_stmt (gsi)) == GIMPLE_OMP_RETURN); ++ && (gimple_code (gsi_stmt (gsi)) ++ == (e2 ? GIMPLE_OMP_CONTINUE : GIMPLE_OMP_RETURN))); + stmt = gimple_build_return (NULL); + gsi_insert_after (&gsi, stmt, GSI_SAME_STMT); + gsi_remove (&gsi, true); +@@ -4950,6 +4971,14 @@ + new_bb = move_sese_region_to_fn (child_cfun, entry_bb, exit_bb, block); + if (exit_bb) + single_succ_edge (new_bb)->flags = EDGE_FALLTHRU; ++ if (e2) ++ { ++ basic_block dest_bb = e2->dest; ++ if (!exit_bb) ++ make_edge (new_bb, dest_bb, EDGE_FALLTHRU); ++ remove_edge (e2); ++ set_immediate_dominator (CDI_DOMINATORS, dest_bb, new_bb); ++ } + /* When the OMP expansion process cannot guarantee an up-to-date + loop tree arrange for the child function to fixup loops. */ + if (loops_state_satisfies_p (LOOPS_NEED_FIXUP)) +@@ -9699,6 +9728,10 @@ + gimple_seq_add_stmt (&new_body, gimple_build_label (ctx->cancel_label)); + gimple_seq_add_seq (&new_body, par_olist); + new_body = maybe_catch_exception (new_body); ++ if (gimple_code (stmt) == GIMPLE_OMP_TASK) ++ gimple_seq_add_stmt (&new_body, ++ gimple_build_omp_continue (integer_zero_node, ++ integer_zero_node)); + gimple_seq_add_stmt (&new_body, gimple_build_omp_return (false)); + gimple_omp_set_body (stmt, new_body); + +@@ -10699,6 +10732,10 @@ + somewhere other than the next block. This will be + created later. */ + cur_region->exit = bb; ++ if (cur_region->type == GIMPLE_OMP_TASK) ++ /* Add an edge corresponding to not scheduling the task ++ immediately. */ ++ make_edge (cur_region->entry, bb, EDGE_ABNORMAL); + fallthru = cur_region->type != GIMPLE_OMP_SECTION; + cur_region = cur_region->outer; + break; +@@ -10747,6 +10784,10 @@ + } + break; + ++ case GIMPLE_OMP_TASK: ++ fallthru = true; ++ break; ++ + default: + gcc_unreachable (); + } +@@ -11105,9 +11146,11 @@ + } + + pp_underscore (&pp); +- pp_string (&pp, +- IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (node->decl))); +- const char *str = pp_formatted_text (&pp); ++ const char *str = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (node->decl)); ++ if (*str == '*') ++ ++str; ++ pp_string (&pp, str); ++ str = pp_formatted_text (&pp); + + /* If there already is a SIMD clone with the same mangled name, don't + add another one. This can happen e.g. for +@@ -11181,24 +11224,24 @@ + if (orig_rettype == void_type_node) + return NULL_TREE; + TREE_TYPE (fndecl) = build_distinct_type_copy (TREE_TYPE (fndecl)); +- if (INTEGRAL_TYPE_P (TREE_TYPE (TREE_TYPE (fndecl))) +- || POINTER_TYPE_P (TREE_TYPE (TREE_TYPE (fndecl)))) ++ t = TREE_TYPE (TREE_TYPE (fndecl)); ++ if (INTEGRAL_TYPE_P (t) || POINTER_TYPE_P (t)) + veclen = node->simdclone->vecsize_int; + else + veclen = node->simdclone->vecsize_float; +- veclen /= GET_MODE_BITSIZE (TYPE_MODE (TREE_TYPE (TREE_TYPE (fndecl)))); ++ veclen /= GET_MODE_BITSIZE (TYPE_MODE (t)); + if (veclen > node->simdclone->simdlen) + veclen = node->simdclone->simdlen; ++ if (POINTER_TYPE_P (t)) ++ t = pointer_sized_int_node; + if (veclen == node->simdclone->simdlen) +- TREE_TYPE (TREE_TYPE (fndecl)) +- = build_vector_type (TREE_TYPE (TREE_TYPE (fndecl)), +- node->simdclone->simdlen); ++ t = build_vector_type (t, node->simdclone->simdlen); + else + { +- t = build_vector_type (TREE_TYPE (TREE_TYPE (fndecl)), veclen); ++ t = build_vector_type (t, veclen); + t = build_array_type_nelts (t, node->simdclone->simdlen / veclen); +- TREE_TYPE (TREE_TYPE (fndecl)) = t; + } ++ TREE_TYPE (TREE_TYPE (fndecl)) = t; + if (!node->definition) + return NULL_TREE; + +@@ -11287,7 +11330,10 @@ + if (veclen > node->simdclone->simdlen) + veclen = node->simdclone->simdlen; + adj.arg_prefix = "simd"; +- adj.type = build_vector_type (parm_type, veclen); ++ if (POINTER_TYPE_P (parm_type)) ++ adj.type = build_vector_type (pointer_sized_int_node, veclen); ++ else ++ adj.type = build_vector_type (parm_type, veclen); + node->simdclone->args[i].vector_type = adj.type; + for (j = veclen; j < node->simdclone->simdlen; j += veclen) + { +@@ -11328,7 +11374,10 @@ + veclen /= GET_MODE_BITSIZE (TYPE_MODE (base_type)); + if (veclen > node->simdclone->simdlen) + veclen = node->simdclone->simdlen; +- adj.type = build_vector_type (base_type, veclen); ++ if (POINTER_TYPE_P (base_type)) ++ adj.type = build_vector_type (pointer_sized_int_node, veclen); ++ else ++ adj.type = build_vector_type (base_type, veclen); + adjustments.safe_push (adj); + + for (j = veclen; j < node->simdclone->simdlen; j += veclen) +Index: gcc/ipa-inline-transform.c +=================================================================== +--- a/src/gcc/ipa-inline-transform.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/ipa-inline-transform.c (.../branches/gcc-4_9-branch) +@@ -87,7 +87,6 @@ + the callgraph so references can point to it. */ + return (!node->address_taken + && !ipa_ref_has_aliases_p (&node->ref_list) +- && !node->used_as_abstract_origin + && cgraph_can_remove_if_no_direct_calls_p (node) + /* Inlining might enable more devirtualizing, so we want to remove + those only after all devirtualizable virtual calls are processed. +@@ -185,6 +184,7 @@ + n = cgraph_clone_node (e->callee, e->callee->decl, + e->count, freq_scale, update_original, + vNULL, true, inlining_into, NULL); ++ n->used_as_abstract_origin = e->callee->used_as_abstract_origin; + cgraph_redirect_edge_callee (e, n); + } + } +Index: gcc/cgraphunit.c +=================================================================== +--- a/src/gcc/cgraphunit.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/cgraphunit.c (.../branches/gcc-4_9-branch) +@@ -1532,6 +1532,7 @@ + + gimple call; + gimple ret; ++ bool alias_is_noreturn = TREE_THIS_VOLATILE (alias); + + if (in_lto_p) + cgraph_get_body (node); +@@ -1566,15 +1567,22 @@ + bsi = gsi_start_bb (bb); + + /* Build call to the function being thunked. */ +- if (!VOID_TYPE_P (restype)) ++ if (!VOID_TYPE_P (restype) && !alias_is_noreturn) + { + if (DECL_BY_REFERENCE (resdecl)) + restmp = gimple_fold_indirect_ref (resdecl); + else if (!is_gimple_reg_type (restype)) + { +- restmp = resdecl; +- add_local_decl (cfun, restmp); +- BLOCK_VARS (DECL_INITIAL (current_function_decl)) = restmp; ++ if (aggregate_value_p (resdecl, TREE_TYPE (thunk_fndecl))) ++ { ++ restmp = resdecl; ++ ++ if (TREE_CODE (restmp) == VAR_DECL) ++ add_local_decl (cfun, restmp); ++ BLOCK_VARS (DECL_INITIAL (current_function_decl)) = restmp; ++ } ++ else ++ restmp = create_tmp_var (restype, "retval"); + } + else + restmp = create_tmp_reg (restype, "retval"); +@@ -1605,7 +1613,7 @@ + call = gimple_build_call_vec (build_fold_addr_expr_loc (0, alias), vargs); + node->callees->call_stmt = call; + gimple_call_set_from_thunk (call, true); +- if (restmp) ++ if (restmp && !alias_is_noreturn) + { + gimple_call_set_lhs (call, restmp); + gcc_assert (useless_type_conversion_p (TREE_TYPE (restmp), +@@ -1612,7 +1620,7 @@ + TREE_TYPE (TREE_TYPE (alias)))); + } + gsi_insert_after (&bsi, call, GSI_NEW_STMT); +- if (!(gimple_call_flags (call) & ECF_NORETURN)) ++ if (!alias_is_noreturn) + { + if (restmp && !this_adjusting + && (fixed_offset || virtual_offset)) +Index: gcc/ChangeLog +=================================================================== +--- a/src/gcc/ChangeLog (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/ChangeLog (.../branches/gcc-4_9-branch) +@@ -1,3 +1,2191 @@ ++2015-06-23 Matthias Klose ++ ++ PR target/66483 ++ Backport from mainline r212178. ++ 2014-06-30 Joseph Myers ++ ++ * var-tracking.c (add_stores): Return instead of asserting if old ++ and new values for conditional store are the same. ++ ++2015-06-23 Ludovic Courtès ++ ++ PR 65711 ++ * config/arm/linux-elf.h (LINUX_TARGET_LINK_SPEC): Move ++ '-dynamic-linker' within %{!shared: ...}. ++ ++2015-06-22 Vladimir Makarov ++ ++ PR bootstrap/63740 ++ * lra-lives.c (process_bb_lives): Check insn copying the same ++ reload pseudo and don't create a copy for it. ++ ++2015-06-19 Christophe Lyon ++ ++ Backport from mainline r215707. ++ 2014-09-30 David Sherwood ++ ++ * ira-int.h (ira_allocno): Add "wmode" field. ++ * ira-build.c (create_insn_allocnos): Add new "parent" function ++ parameter. ++ * ira-conflicts.c (ira_build_conflicts): Add conflicts for registers ++ that cannot be accessed in wmode. ++ ++2015-06-18 Jakub Jelinek ++ ++ PR tree-optimization/66233 ++ * fold-const.c (fold_unary_loc): Don't handle vector types. ++ Simplify. ++ * tree-ssa-forwprop.c (combine_conversions): Likewise. ++ ++2015-06-16 Ramana Radhakrishnan ++ ++ PR target/66200 ++ * config/aarch64/aarch64.c (TARGET_RELAXED_ORDERING): Define. ++ ++2015-06-16 Richard Biener ++ ++ Revert ++ 2015-06-01 Richard Biener ++ ++ Backport from mainline ++ 2015-05-26 Michael Matz ++ ++ PR middle-end/66251 ++ * tree-vect-stmts.c (vect_create_vectorized_demotion_stmts): Always set ++ STMT_VINFO_VEC_STMT, also with SLP. ++ ++ 2015-05-22 Richard Biener ++ ++ PR tree-optimization/66251 ++ * tree-vect-stmts.c (vectorizable_conversion): Properly ++ set STMT_VINFO_VEC_STMT even for the SLP case. ++ ++2015-06-16 Christophe Lyon ++ ++ Backported from mainline r217076. ++ 2014-11-04 Michael Collison ++ ++ * config/aarch64/iterators.md (lconst_atomic): New mode attribute ++ to support constraints for CONST_INT in atomic operations. ++ * config/aarch64/atomics.md ++ (atomic_): Use lconst_atomic constraint. ++ (atomic_nand): Likewise. ++ (atomic_fetch_): Likewise. ++ (atomic_fetch_nand): Likewise. ++ (atomic__fetch): Likewise. ++ (atomic_nand_fetch): Likewise. ++ ++2015-06-12 Michael Matz ++ ++ Backported from mainline ++ 2014-10-23 Jakub Jelinek ++ ++ PR debug/63623 ++ * var-tracking.c (stack_adjust_offset_pre_post_cb): New function. ++ (stack_adjust_offset_pre_post): Use it through for_each_inc_dec, ++ instead of only handling autoinc in dest if it is a MEM. ++ ++2015-06-12 Jakub Jelinek ++ ++ Backported from mainline ++ 2014-12-15 Vladimir Makarov ++ ++ PR target/62642 ++ * ira.c (rtx_moveable_p): Prevent UNSPEC_VOLATILE moves. ++ ++2015-06-12 Jakub Jelinek ++ ++ PR middle-end/63608 ++ Backported from mainline ++ 2014-05-16 Eric Botcazou ++ ++ * fold-const (fold_unary_loc) : New case. ++ : Pass arg0 instead of op0 to fold_convert_const. ++ ++2015-06-11 John David Anglin ++ ++ * config/pa/pa.c (pa_output_global_address): Handle LABEL_REF plus ++ CONST_INT for goto. ++ ++2015-06-11 Eric Botcazou ++ ++ PR bootstrap/66252 ++ * config/sparc/sparc.c (hard_regno_mode_classes): Add ??? comment. ++ * config/sparc/sparc.md (zero_extendsidi2_insn_sp32): Use single order. ++ (*addx_extend_sp32): Fix pasto. ++ (*subx_extend): Rename into... ++ (*subx_extend_sp32): ...this. ++ (*adddi3_extend_sp32): Add earlyclobber. ++ (*subdi3_insn_sp32): Likewise. ++ (*subdi3_extend_sp32): Likewise. ++ (*and_not_di_sp32): Likewise. ++ (*or_not_di_sp32): Likewise. ++ (*xor_not_di_sp32): Likewise. ++ (*negdi2_sp32): Likewise. ++ (*one_cmpldi2_sp32): Likewise. ++ ++2015-06-11 Richard Biener ++ ++ PR middle-end/66503 ++ * dwarf2out.c (resolve_addr): Guard backport of PR66549 ++ with in_lto_p. ++ ++2015-06-10 Michael Meissner ++ ++ Backport from mainline: ++ 2015-06-10 Michael Meissner ++ ++ PR target/66474 ++ * doc/md.texi (Machine Constraints): Document that on the PowerPC ++ if you use a constraint that targets a VSX register, you must use ++ %x in the template. ++ ++2015-06-10 Jakub Jelinek ++ ++ PR target/66470 ++ * config/i386/i386.c (ix86_split_long_move): For collisions ++ involving direct tls segment refs, move the UNSPEC_TP possibly ++ wrapped in ZERO_EXTEND out of the address for lea, to each of ++ the memory loads. ++ ++2015-06-08 Uros Bizjak ++ ++ Backport from mainline: ++ 2015-06-03 Uros Bizjak ++ ++ PR target/66275 ++ * config/i386/i386.c (ix86_function_arg_regno): Use ix86_cfun_abi ++ to determine current function ABI. ++ (ix86_function_value_regno_p): Ditto. ++ ++2015-06-08 Venkataramanan Kumar ++ ++ * config/i386/sse.md (sse3_mwait): Swap the operand constriants. ++ ++2015-06-03 Jakub Jelinek ++ ++ Backported from mainline ++ 2015-05-13 Jakub Jelinek ++ ++ PR middle-end/66133 ++ * omp-low.c (expand_omp_taskreg): For GIMPLE_OMP_TASK expansion, ++ make sure it is never noreturn, even when the task body does not ++ return. ++ (lower_omp_taskreg): For GIMPLE_OMP_TASK, emit GIMPLE_OMP_CONTINUE ++ right before GIMPLE_OMP_RETURN. ++ (make_gimple_omp_edges): Accept GIMPLE_OMP_CONTINUE as ->cont ++ for GIMPLE_OMP_TASK. For GIMPLE_OMP_RETURN corresponding to ++ GIMPLE_OMP_TASK add an EDGE_ABNORMAL edge from entry to exit. ++ ++ 2015-05-04 Jakub Jelinek ++ ++ PR tree-optimization/65984 ++ * ubsan.c: Include tree-cfg.h. ++ (instrument_bool_enum_load): Use stmt_ends_bb_p instead of ++ stmt_could_throw_p test, rename can_throw variable to ends_bb. ++ ++ 2015-04-07 Jakub Jelinek ++ ++ PR middle-end/65680 ++ * expr.c (get_inner_reference): Handle bit_offset that doesn't fit ++ into signed HOST_WIDE_INT the same as negative bit_offset. ++ ++ 2015-03-23 Jakub Jelinek ++ ++ PR target/65504 ++ * config/i386/i386.c (ix86_copy_addr_to_reg): Set REG_POINTER ++ on the pseudo. ++ (expand_set_or_movmem_prologue_epilogue_by_misaligned_moves): Set ++ REG_POINTER on *destptr after adjusting it for prologue size. ++ ++ 2015-03-18 Jakub Jelinek ++ ++ PR tree-optimization/65450 ++ * tree-vect-data-refs.c (vect_duplicate_ssa_name_ptr_info): New ++ function. ++ (vect_create_addr_base_for_vector_ref, vect_create_data_ref_ptr): Use ++ it instead of duplicate_ssa_name_ptr_info. ++ ++ 2015-03-16 Jakub Jelinek ++ ++ PR tree-optimization/65427 ++ * tree-vect-generic.c (do_cond, expand_vector_scalar_condition): New ++ functions. ++ (expand_vector_operations_1): Handle BLKmode vector COND_EXPR. ++ ++ 2015-03-10 Jakub Jelinek ++ ++ PR target/65368 ++ * config/i386/i386.md (bmi2_bzhi_3): Removed define_insn, ++ new define_expand. ++ (*bmi2_bzhi_3, *bmi2_bzhi_3_1): New define_insns. ++ ++ 2015-02-18 Jakub Jelinek ++ ++ PR gcov-profile/64634 ++ * tree-eh.c (frob_into_branch_around): Fix up typos ++ in function comment. ++ (lower_catch): Put eh_seq resulting from EH lowering of ++ the cleanup sequence after the cleanup rather than before ++ it. ++ ++2015-06-03 Richard Biener ++ ++ Backport from mainline ++ 2015-05-26 Michael Matz ++ ++ PR middle-end/66251 ++ * tree-vect-stmts.c (vect_create_vectorized_demotion_stmts): Always set ++ STMT_VINFO_VEC_STMT, also with SLP. ++ ++ 2015-05-22 Richard Biener ++ ++ PR tree-optimization/66251 ++ * tree-vect-stmts.c (vectorizable_conversion): Properly ++ set STMT_VINFO_VEC_STMT even for the SLP case. ++ ++ 2015-05-27 Richard Biener ++ ++ PR tree-optimization/66272 ++ Revert parts of ++ 2014-08-15 Richard Biener ++ ++ PR tree-optimization/62031 ++ * tree-data-ref.c (dr_analyze_indices): Do not set ++ DR_UNCONSTRAINED_BASE. ++ (dr_may_alias_p): All indirect accesses have to go the ++ formerly DR_UNCONSTRAINED_BASE path. ++ * tree-data-ref.h (struct indices): Remove ++ unconstrained_base member. ++ (DR_UNCONSTRAINED_BASE): Remove. ++ ++ 2015-05-13 Richard Biener ++ ++ PR tree-optimization/66123 ++ * tree-ssa-dom.c (propagate_rhs_into_lhs): Check if we found ++ a taken edge. ++ ++ 2015-06-02 Richard Biener ++ ++ PR debug/65549 ++ * dwarf2out.c (lookup_context_die): New function. ++ (resolve_addr): Avoid forcing a full DIE for the ++ target of a DW_TAG_GNU_call_site during late compilation. ++ Instead create a stub DIE without a type if we have a ++ context DIE present. ++ ++ 2015-03-23 Richard Biener ++ ++ PR tree-optimization/65518 ++ * tree-vect-stmts.c (vectorizable_load): Reject single-element ++ interleaving cases we generate absymal code for. ++ ++2015-06-01 Dominik Vogt ++ ++ Backport from mainline ++ 2015-05-29 Dominik Vogt ++ ++ PR target/66215 ++ * config/s390/s390.c (s390_reorg): Fix placement of post-label NOPs ++ with -mhotpatch=. ++ ++2015-05-28 Mike Frysinger ++ ++ * config/nios2/linux.h (CPP_SPEC): Define. ++ ++2015-05-28 Mike Frysinger ++ ++ * config/microblaze/linux.h (CPP_SPEC): Define. ++ ++2015-05-28 Mike Frysinger ++ ++ * config/pa/pa-linux.h (CPP_SPEC): Change so -D_REENTRANT is used when ++ -pthread is specified. ++ ++2015-05-27 John David Anglin ++ ++ PR target/66148 ++ * config/pa/pa.c (pa_emit_move_sequence): Correct placement of ++ REG_EQUAL note when doing insert. ++ ++2015-05-26 Rohit Arul Raj ++ ++ Backported from mainline ++ 2015-05-14 Rohit Arul Raj ++ ++ * varasm.c (output_constant_pool_1): Pass down alignment from ++ constant pool entry's descriptor to output_constant_pool_2. ++ (output_object_block): Add comment prior to call to ++ output_constant_pool_1. ++ ++2015-05-21 Sandra Loosemore ++ ++ Backport from mainline r223418: ++ * config.gcc [powerpc*-*-linux*]: Allow --enable-targets=all ++ to build a biarch toolchain again. ++ ++2015-05-19 Andreas Krebbel ++ ++ * doc/invoke.texi: Add missing cpu types for march option: z196 ++ and zEC12. ++ ++2015-05-16 Uros Bizjak ++ ++ PR target/66140 ++ * config/alpha/alpha.c (get_aligned_mem): Also look for reload ++ replacements in memory addresses. ++ (get_unaligned_address): Ditto. ++ ++2015-05-14 Kyrylo Tkachov ++ ++ Backport from mainline ++ 2015-05-12 Kyrylo Tkachov ++ ++ PR target/65955 ++ * config/arm/arm.md (movcond_addsi): Check that operands[2] is a ++ REG before taking its REGNO. ++ ++2015-05-12 Andreas Krebbel ++ ++ * config/s390/2827.md: Split zEC12_simple into zEC12_simple_int ++ and zEC12_simple_fp. ++ * config/s390/s390.c (s390_issue_rate): Set issue rate for zEC12 ++ to 1. ++ ++2015-05-12 Yvan Roux ++ ++ Backport from mainline. ++ 2015-05-05 Yvan Roux ++ ++ * config/aarch64/aarch64-elf-raw.h (CA53_ERR_843419_SPEC): Define. ++ (LINK_SPEC): Include CA53_ERR_843419_SPEC. ++ * config/aarch64/aarch64-linux.h (CA53_ERR_843419_SPEC): Define. ++ (LINK_SPEC): Include CA53_ERR_843419_SPEC. ++ * config/aarch64/aarch64.opt (mfix-cortex-a53-843419): New option. ++ * configure: Regenerate. ++ * configure.ac: Add --enable-fix-cortex-a53-843419 option. ++ * doc/install.texi (aarch64*-*-*): Document new ++ --enable-fix-cortex-a53-843419 option. ++ * doc/invoke.texi (AArch64 Options): Document -mfix-cortex-a53-843419 ++ and -mno-fix-cortex-a53-843419 options. ++ ++2015-05-06 Uros Bizjak ++ ++ PR target/65990 ++ * config/i386/i386.c (ix86_parse_stringop_strategy_string): Error out ++ if rep_8byte stringop strategy was specified for 32-bit target. ++ ++2015-05-05 Jack Howarth ++ ++ Backport from mainline ++ 2014-05-29 Mike Stump ++ PR debug/61352 ++ * collect2.c (maybe_run_lto_and_relink): Be sure to always run ++ post ld passes when lto is used. ++ ++2015-05-05 Shanyao Chen ++ ++ Backported from mainline ++ 2015-01-19 Jiong Wang ++ Andrew Pinski ++ ++ PR target/64304 ++ * config/aarch64/aarch64.md (define_insn "*ashl3_insn"): Deleted. ++ (ashl3): Don't expand if operands[2] is not constant. ++ ++2015-05-05 Peter Bergner ++ ++ Backport from mainline. ++ 2015-04-27 Peter Bergner ++ ++ PR target/64579 ++ * config/rs6000/htm.md: Remove all define_expands. ++ (UNSPECV_HTM_TABORTDC, UNSPECV_HTM_TABORTDCI, UNSPECV_HTM_TABORTWC, ++ UNSPECV_HTM_TABORTWCI): Remove. ++ (UNSPECV_HTM_TABORTXC, UNSPECV_HTM_TABORTXCI, UNSPECV_HTM_TTEST): New. ++ (tabort_internal, tbegin_internal, tcheck_internal, tend_internal, ++ trechkpt_internal, treclaim_internal, tsr_internal): Rename from this... ++ (tabort, tbegin, tcheck, tend, trechkpt, treclaim, tsr): ...to this. ++ (tabortdc_internal, tabortdci_internal, tabortwc_internal, ++ tabortwci_internal): Remove define_insns. ++ (tabortc, tabortci): New define_insns. ++ (tabort): Use gpc_reg_operand. ++ (tcheck): Remove operand. ++ (htm_mfspr_, htm_mtspr_): Use GPR mode macro. ++ * config/rs6000/htmxlintrin.h (__TM_end): Use _HTM_TRANSACTIONAL as ++ expected value. ++ * config/rs6000/rs6000-builtin.def (BU_HTM_SPR0): Remove. ++ (BU_HTM_SPR1): Rename to BU_HTM_V1. Remove use of RS6000_BTC_SPR. ++ (tabort, tabortdc, tabortdci, tabortwc, tabortwci, tbegin, ++ tcheck, tend, tendall, trechkpt, treclaim, tresume, tsuspend, ++ tsr, ttest): Pass in the RS6000_BTC_CR attribute. ++ (get_tfhar, set_tfhar, get_tfiar, set_tfiar, get_texasr, set_texasr, ++ get_texasru, set_texasru): Pass in the RS6000_BTC_SPR attribute. ++ (tcheck): Remove builtin argument. ++ * config/rs6000/rs6000.c (rs6000_htm_spr_icode): Use TARGET_POWERPC64 ++ not TARGET_64BIT. ++ (htm_expand_builtin): Fix usage of expandedp. Disallow usage of the ++ tabortdc and tabortdci builtins when not in 64-bit mode. ++ Modify code to handle the loss of the HTM define_expands. ++ Emit code to copy the CR register to TARGET. ++ (htm_init_builtins): Modify code to handle the loss of the HTM ++ define_expands. ++ * config/rs6000/rs6000.h (RS6000_BTC_32BIT): Delete. ++ (RS6000_BTC_64BIT): Likewise. ++ (RS6000_BTC_CR): New macro. ++ * doc/extend.texi: Update documentation for htm builtins. ++ ++2015-04-28 Tejas Belagod ++ ++ Backport from Mainline ++ 2014-11-20 Tejas Belagod ++ ++ * config/aarch64/aarch64-protos.h (aarch64_classify_symbol): ++ Fixup prototype. ++ * config/aarch64/aarch64.c (aarch64_expand_mov_immediate, ++ aarch64_cannot_force_const_mem, aarch64_classify_address, ++ aarch64_classify_symbolic_expression): Fixup call to ++ aarch64_classify_symbol. ++ (aarch64_classify_symbol): Add range-checking for ++ symbol + offset addressing for tiny and small models. ++ ++2015-04-24 Michael Meissner ++ ++ Backport from mainline ++ 2015-04-24 Michael Meissner ++ ++ PR target/65849 ++ * config/rs6000/rs6000.opt (-mvsx-align-128): Make options that ++ save to independent variables use the Save attribute. This will ++ allow these options to be modified with the #pragma/attribute ++ target support. ++ (-mallow-movmisalign): Likewise. ++ (-mallow-df-permute): Likewise. ++ (-msched-groups): Likewise. ++ (-malways-hint): Likewise. ++ (-malign-branch-targets): Likewise. ++ (-mvectorize-builtins): Likewise. ++ (-msave-toc-indirect): Likewise. ++ ++ * config/rs6000/rs6000.c (rs6000_opt_masks): Add more options that ++ can be set via the #pragma/attribute target support. ++ (rs6000_opt_vars): Likewise. ++ (rs6000_inner_target_options): If VSX was set, also set ++ -mno-avoid-indexed-addresses. ++ ++2015-04-24 Bill Schmidt ++ ++ Backport from mainline r222385 ++ 2015-04-23 Bill Schmidt ++ ++ * config/rs6000/altivec.md (*altivec_lvx__internal): Remove ++ asterisk from name so this can be generated directly. ++ (*altivec_stvx__internal): Likewise. ++ * config/rs6000/rs6000.c (rs6000_emit_le_vsx_store): Add assert ++ that this is never called during or after reload/lra. ++ (rs6000_frame_related): Remove split_reg ++ argument and logic that references it. ++ (emit_frame_save): Remove last parameter from call to ++ rs6000_frame_related. ++ (rs6000_emit_prologue): Remove last parameter from eight calls to ++ rs6000_frame_related. Force generation of stvx instruction for ++ Altivec register saves. Remove split_reg handling, which is no ++ longer needed. ++ (rs6000_emit_epilogue): Force generation of lvx instruction for ++ Altivec register restores. ++ ++2015-04-24 Bill Schmidt ++ ++ Backport from mainline r222362 ++ 2015-04-23 Bill Schmidt ++ ++ * config/rs6000/crypto.md (crypto_vpmsum): Change ++ TARGET_CRYPTO to TARGET_P8_VECTOR> ++ (crypto_vpermxor_): Likewise. ++ * config/rs6000/rs6000-builtin.def (BU_CRYPTO_2A): New #define. ++ (BU_CRYPTO_3A): Likewise. ++ (BU_CRYPTO_OVERLOAD_2A): Rename from BU_CRYPTO_OVERLOAD_2. ++ (BU_CRYPTO_OVERLOAD_3A): New #define. ++ (VPMSUMB): Change from BU_CRYPTO_2 to BU_CRYPTO_2A. ++ (VPMSUMH): Likewise. ++ (VPMSUMW): Likewise. ++ (VPMSUMD): Likewise. ++ (VPERMXOR_V2DI): Change from BU_CRYPTO_3 to BU_CRYPTO_3A. ++ (VPERMXOR_V4SI): Likewise. ++ (VPERMXOR_V8HI): Likewise. ++ (VPERMXOR_V16QI): Likewise. ++ (VPMSUM): Change from BU_CRYPTO_OVERLOAD_2 to ++ BU_CRYPTO_OVERLOAD_2A. ++ (VPERMXOR): Change from BU_CRYPTO_OVERLOAD3 to ++ BU_CRYPTO_OVERLOAD_3A. ++ * config/rs6000/rs6000.opt (mcrypto): Change description of ++ option. ++ ++ Backport from mainline r222362 ++ 2015-04-23 Bill Schmidt ++ ++ * config/rs6000/rs6000.opt (mcrypto): Change option description to ++ match category changes in ISA 2.07B. ++ ++2015-04-24 Bill Schmidt ++ ++ Backport from mainline r222351 ++ 2015-04-22 Bill Schmidt ++ ++ * config/rs6000/rs6000.c (rtx_is_swappable_p): Commentary ++ adjustments. ++ (insn_is_swappable_p): Return 1 for a convert from double to ++ single precision when all of its uses are splats of BE element ++ zero. ++ ++2015-04-24 Bill Schmidt ++ ++ Backport from mainline r222349 ++ 2015-04-22 Bill Schmidt ++ ++ PR target/65456 ++ * config/rs6000/rs6000.c (rs6000_option_override_internal): For ++ VSX + POWER8, enable TARGET_ALLOW_MOVMISALIGN and ++ TARGET_EFFICIENT_UNALIGNED_VSX if not selected by command line ++ option. ++ (rs6000_builtin_mask_for_load): Return 0 for targets with ++ efficient unaligned VSX accesses so that the vectorizer will use ++ direct unaligned loads. ++ (rs6000_builtin_support_vector_misalignment): Always return true ++ for targets with efficient unaligned VSX accesses. ++ (rs6000_builtin_vectorization_cost): Cost of unaligned loads and ++ stores on targets with efficient unaligned VSX accesses is almost ++ always the same as the cost of an aligned load or store, so model ++ it that way. ++ * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Return 0 for ++ unaligned vectors if we have efficient unaligned VSX accesses. ++ * config/rs6000/rs6000.opt (mefficient-unaligned-vector): New ++ undocumented option. ++ ++2015-04-18 Bill Schmidt ++ Jakub Jelinek ++ ++ Backport from mainline r222205 ++ 2015-04-17 Bill Schmidt ++ Jakub Jelinek ++ ++ PR target/65787 ++ * config/rs6000/rs6000.c (rtx_is_swappable_p): Ensure that a ++ subsequent SH_NONE operand does not overwrite an existing *special ++ value. ++ (adjust_extract): Handle case where a vec_extract operation is ++ wrapped in a PARALLEL. ++ ++2015-04-16 Kirill Yukhin ++ ++ PR target/65676 ++ * config/i386/i386.c (fixup_modeless_constant): New. ++ (ix86_expand_args_builtin): Fixup modeless constant operand. ++ (ix86_expand_round_builtin): Ditto. ++ (ix86_expand_special_args_builtin): Ditto. ++ (ix86_expand_builtin): Ditto. ++ ++2015-04-10 Vladimir Makarov ++ ++ PR target/65710 ++ * lra-assigns.c (spill_for): Update smallest_bad_spills_num. ++ Print bad_spills_num and insn_pseudos_num. ++ ++2015-04-09 Vladimir Makarov ++ ++ PR target/65710 ++ * lra-int.h (lra_bad_spill_regno_start): New. ++ * lra.c (lra_bad_spill_regno_start): New. ++ (lra): Set up lra_bad_spill_regno_start. Set up ++ lra_constraint_new_regno_start unconditionally. ++ * lra-assigns.c (spill_for): Use lra_bad_spill_regno_start for ++ spill preferences. ++ ++2015-04-07 Richard Biener ++ ++ Backport from mainline ++ 2015-04-04 Richard Biener ++ ++ PR tree-optimization/64909 ++ PR tree-optimization/65660 ++ * tree-vectorizer.h (vect_get_known_peeling_cost): Adjust ++ to take a cost vector for scalar iteration cost. ++ (vect_get_single_scalar_iteration_cost): Likewise. ++ * tree-vect-loop.c (vect_get_single_scalar_iteration_cost): ++ Compute the scalar iteration cost into a cost vector. ++ (vect_get_known_peeling_cost): Use the scalar cost vector to ++ account for the cost of the peeled iterations. ++ (vect_estimate_min_profitable_iters): Likewise. ++ * tree-vect-data-refs.c (vect_peeling_hash_get_lowest_cost): ++ Likewise. ++ ++2015-04-05 Yvan Roux ++ ++ Backport from trunk r221867 ++ 2015-04-04 Vladimir Makarov ++ ++ PR target/65647 ++ * lra.c (lra): Stop updating lra_constraint_new_regno_start after ++ switching off inheritance. ++ ++2015-04-02 John David Anglin ++ ++ * config/pa/pa.c (pa_output_move_double): Directly handle register ++ indexed memory operand. Simplify handling of scaled register indexed ++ memory operands. ++ ++2015-03-31 Dominik Vogt ++ ++ * config/s390/s390.c (s390_function_num_hotpatch_hw): Allow hotpatching ++ nested functions. ++ (s390_reorg): Adapt to new signature of s390_function_num_hotpatch_hw. ++ (s390_asm_output_function_label): Adapt to new signature of ++ s390_function_num_hotpatch_hw ++ Optimise the code generating assembler output. ++ Add comments to assembler file. ++ ++2015-03-27 Vladimir Makarov ++ ++ Backport from mainline ++ 2015-01-30 Vladimir Makarov ++ ++ PR target/64688 ++ * lra-constraints.c (original_subreg_reg_mode): New. ++ (simplify_operand_subreg): Try to simplify subreg of const. Use ++ original_subreg_reg_mode for it. ++ (swap_operands): Update original_subreg_reg_mode. ++ (curr_insn_transform): Set up original_subreg_reg_mode. ++ ++2015-03-26 Uros Bizjak ++ ++ PR target/65561 ++ * config/i386/sse.md (avx512f_vextract32x4_1_maskm): ++ Check operand 6 and operand 0 for equality. ++ (vec_extract_lo__maskm): Check operand 2 and operand 0 ++ for equality. ++ (vec_extract_hi__maskm): Ditto. ++ ++2015-03-26 Bill Schmidt ++ ++ Backport of r214242, r214254, and bug fix patches from mainline ++ * config/rs6000/rs6000.c (context.h): New #include. ++ (tree-pass.h): Likewise. ++ (make_pass_analyze_swaps): New declaration. ++ (rs6000_option_override): Register swap-optimization pass. ++ (swap_web_entry): New class. ++ (special_handling_values): New enum. ++ (union_defs): New function. ++ (union_uses): Likewise. ++ (insn_is_load_p): Likewise. ++ (insn_is_store_p): Likewise. ++ (insn_is_swap_p): Likewise. ++ (rtx_is_swappable_p): Likewise. ++ (insn_is_swappable_p): Likewise. ++ (chain_purpose): New enum. ++ (chain_contains_only_swaps): New function. ++ (mark_swaps_for_removal): Likewise. ++ (swap_const_vector_halves): Likewise. ++ (adjust_subreg_index): Likewise. ++ (permute_load): Likewise. ++ (permute_store): Likewise. ++ (adjust_extract): Likewise. ++ (adjust_splat): Likewise. ++ (handle_special_swappables): Likewise. ++ (replace_swap_with_copy): Likewise. ++ (dump_swap_insn_table): Likewise. ++ (rs6000_analyze_swaps): Likewise. ++ (pass_data_analyze_swaps): New pass_data. ++ (pass_analyze_swaps): New class. ++ (pass_analyze_swaps::gate): New method. ++ (pass_analyze_swaps::execute): New method. ++ (make_pass_analyze_swaps): New function. ++ * config/rs6000/rs6000.opt (moptimize-swaps): New option. ++ * df.h (web_entry_base): New class, replacing struct web_entry. ++ (web_entry_base::pred): New method. ++ (web_entry_base::set_pred): Likewise. ++ (web_entry_base::unionfind_root): Likewise. ++ (web_entry_base::unionfind_union): Likewise. ++ (unionfind_root): Delete external reference. ++ (unionfind_union): Likewise. ++ (union_defs): Likewise. ++ * web.c (web_entry_base::unionfind_root): Convert to method. ++ (web_entry_base::unionfind_union): Likewise. ++ (web_entry): New class. ++ (union_match_dups): Convert to use class structure. ++ (union_defs): Likewise. ++ (entry_register): Likewise. ++ (web_main): Likewise. ++ ++2015-03-26 Alan Modra ++ ++ PR target/63150 ++ Backport from trunk 211857 and 221445. ++ 2014-06-20 Maciej W. Rozycki ++ * config/rs6000/rs6000.md: Append `DONE' to preparation ++ statements of `bswap' pattern splitters. ++ ++ 2015-03-16 Alan Modra ++ * config/rs6000/rs6000.md (bswapdi2): Remove one scratch reg. ++ Modify Z->r bswapdi splitter to use dest in place of scratch. ++ In r->Z and Z->r bswapdi splitter rename word_high, word_low ++ to word1, word2 and rearrange logic to suit. ++ (bswapdi2_64bit): Remove early clobber on Z->r alternative. ++ (bswapdi2_ldbrx): Likewise. Remove '??' on r->r. ++ (bswapdi2_32bit): Remove early clobber on Z->r alternative. ++ Add one '?' on r->r. Modify Z->r splitter to avoid need for ++ early clobber. ++ ++2015-03-26 Oleg Endo ++ ++ Backport from mainline ++ 2015-03-26 Oleg Endo ++ ++ * config/sh/t-sh (MULTILIB_EXCEPTIONS): Handle default endian. ++ ++2015-03-24 Uros Bizjak ++ ++ PR rtl-optimization/60851 ++ * recog.c (constrain_operands): Accept a pseudo register before reload ++ for LRA enabled targets. ++ ++2015-03-23 Yvan Roux ++ ++ Backport from trunk r220616. ++ 2015-02-11 Martin Liska ++ ++ PR ipa/64813 ++ * cgraphunit.c (cgraph_node::expand_thunk): Do not create a return ++ value for call to a function that is noreturn. ++ ++2015-03-23 Yvan Roux ++ ++ Backport from trunk r216841. ++ 2014-10-29 Martin Liska ++ ++ PR ipa/63587 ++ * cgraphunit.c (cgraph_node::expand_thunk): Only VAR_DECLs are put ++ to local declarations. ++ * function.c (add_local_decl): Implementation moved from header file, ++ assert introduced for tree type. ++ * function.h: Likewise. ++ ++2015-03-19 Kyrylo Tkachov ++ ++ Backport from mainline ++ 2015-03-12 Kyrylo Tkachov ++ ++ PR rtl-optimization/65235 ++ * simplify-rtx.c (simplify_binary_operation_1, VEC_SELECT case): ++ When first element of vec_concat is const_int, calculate its size ++ using second element. ++ ++2015-03-16 Eric Botcazou ++ ++ PR middle-end/65409 ++ * expr.c (store_field): Do not do a direct block copy if the source is ++ a PARALLEL with BLKmode. ++ ++2015-03-12 Dominik Vogt ++ ++ Backport from mainline ++ * config/s390/s390.c (s390_reorg): Move code to output nops after label ++ to s390_reorg (). ++ (s390_asm_output_function_label): Likewise. ++ * config/s390/s390.c (s390_asm_output_function_label): ++ Fix function label alignment with -mhtopatch. ++ * config/s390/s390.md ("unspecv"): New values UNSPECV_NOP_2_BYTE, ++ UNSPECV_NOP_4_BYTE and UNSPECV_NOP_6_BYTE ++ ("nop_2_byte"): New define_insn. ++ ("nop_4_byte"): Likewise. ++ ("nop_6_byte"): Likewise. ++ * doc/extend.texi (hotpatch): hotpatch attribute doc fixes. ++ * doc/invoke.texi (-mhotpatch): -mhotpatch doc fixes. ++ ++2015-03-12 Marek Polacek ++ ++ Backported from mainline ++ 2015-03-11 Marek Polacek ++ ++ PR tree-optimization/65388 ++ * tree-ssa-tail-merge.c (same_succ_def::equal): Fix typo in comparison. ++ ++2015-03-11 Georg-Johann Lay ++ ++ PR target/65296 ++ * configure.ac [avr]: Check as for option -mrmw. ++ * configure: Regenerate. ++ * config.in: Regenerate. ++ * config/avr/driver-avr.c (avr_device_to_as): Don't add -mrmw to ++ assembler options if not HAVE_AS_AVR_MRMW_OPTION. ++ ++2015-03-11 Marek Polacek ++ ++ Backported from mainline ++ 2014-12-04 Marek Polacek ++ ++ PR middle-end/56917 ++ * fold-const.c (fold_unary_loc): Perform the negation in A's type ++ when transforming ~ (A - 1) or ~ (A + -1) to -A. ++ ++2015-03-10 Yvan Roux ++ ++ Backport from trunk r220489. ++ 2015-02-06 Jakub Jelinek ++ ++ PR ipa/64896 ++ * cgraphunit.c (cgraph_node::expand_thunk): If ++ restype is not is_gimple_reg_type nor the thunk_fndecl ++ returns aggregate_value_p, set restmp to a temporary variable ++ instead of resdecl. ++ ++2015-03-10 Jakub Jelinek ++ ++ PR target/65286 ++ * config/rs6000/t-linux: For powerpc64* target set ++ MULTILIB_OSDIRNAMES instead of MULTIARCH_DIRNAME. ++ ++2015-03-10 Oleg Endo ++ ++ PR target/53988 ++ * config/sh/sh.md (*tst_t_zero): Remove insns. ++ ++2015-03-10 Alan Modra ++ ++ PR target/65286 ++ * config.gcc (powerpc*-*-linux*): Arrange for powerpc64le-linux ++ to be single-arch by default. Set cpu_is_64bit for powerpc64 ++ given --with-cpu=native. ++ * config/rs6000/t-fprules: Do not set default MULTILIB vars. ++ * config/rs6000/t-linux (MULTIARCH_DIRNAME): Support powerpc64 ++ and powerpc64le. ++ * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Test ++ rs6000_isa_flags rather than TARGET_64BIT. ++ ++2015-03-05 Michael Meissner ++ ++ Backport from trunk ++ 2015-03-03 Michael Meissner ++ ++ PR 65138/target ++ * config/rs6000/rs6000-cpus.def (powerpc64le): Add new generic ++ processor type for 64-bit little endian PowerPC. ++ ++ * config/rs6000/rs6000.c (rs6000_option_override_internal): If ++ -mdebug=reg, print TARGET_DEFAULT. Fix logic to use ++ TARGET_DEFAULT if there is no default cpu. Fix -mdebug=reg ++ printing built-in mask so it does not pass NULL pointers. ++ ++ * config/rs6000/rs6000-tables.opt: Regenerate. ++ ++ * doc/invoke.texi (IBM RS/6000 and PowerPC options): Document ++ -mcpu=powerpc64le. ++ ++ Backport from trunk ++ 2015-01-19 David Edelsohn ++ ++ * config/rs6000/default64.h: Include rs6000-cpus.def. ++ (TARGET_DEFAULT) [LITTLE_ENDIAN]: Use ISA 2.7 (POWER8). ++ (TARGET_DEFAULT) [BIG_ENDIAN]: Use POWER4. ++ * config/rs6000/driver-rs6000.c (detect_processor_aix): Add POWER7 ++ and POWER8. ++ * config/rs6000/linux64.h (PROCESSOR_DEFAULT64): Always default to ++ POWER8. ++ * config/rs6000/rs6000.c (rs6000_file_start): Emit .machine ++ pseudo-op to specify assembler dialect. ++ ++2015-03-04 Thomas Preud'homme ++ ++ Backport from mainline ++ 2014-11-27 Thomas Preud'homme ++ ++ PR target/59593 ++ * config/arm/arm.c (dump_minipool): dispatch to consttable pattern ++ based on mode size. ++ * config/arm/arm.md (consttable_1): Make it TARGET_EITHER. ++ (consttable_2): Make it TARGET_EITHER and move HFmode handling from ++ consttable_4 to it. ++ (consttable_4): Move HFmode handling to consttable_2 pattern. ++ ++2015-03-03 Kaz Kojima ++ ++ PR target/65249 ++ * config/sh/sh.md (symGOT_load): Use R0 reg for operands[2] when ++ called for __stack_chk_guard symbol. ++ ++2015-03-03 Georg-Johann Lay ++ ++ PR target/64331 ++ * config/avr/avr.c (context.h, tree-pass.h): Include them. ++ (avr_pass_data_recompute_notes): New static variable. ++ (avr_pass_recompute_notes): New class. ++ (avr_register_passes): New static function. ++ (avr_option_override): Call it. ++ ++2015-03-03 Eric Botcazou ++ ++ * config/ia64/ia64.c (expand_vec_perm_interleave_2): Use gen_raw_REG ++ to create a register in testing mode. ++ ++2015-03-03 Thomas Preud'homme ++ ++ Backport from mainline ++ 2015-01-14 Thomas Preud'homme ++ ++ PR target/64453 ++ * config/arm/arm.c (callee_saved_reg_p): Define. ++ (arm_compute_save_reg0_reg12_mask): Use callee_saved_reg_p to check if ++ register is callee saved instead of !call_used_regs[reg]. ++ (thumb1_compute_save_reg_mask): Likewise. ++ ++2015-02-27 Richard Biener ++ ++ PR middle-end/63175 ++ * builtins.c (get_object_alignment_2): Make sure to re-apply ++ the ANDed mask after recursing to its operand gets us a new ++ misalignment bit position. ++ ++2015-02-27 Andrew Pinski ++ Naveen H.S ++ ++ * config/aarch64/aarch64.c (*aarch64_load_symref_appropriately): ++ Check whether the destination of SYMBOL_SMALL_TPREL is Pmode. ++ ++2015-02-27 Richard Biener ++ ++ PR lto/65193 ++ Backport from mainline ++ 2014-07-24 Jan Hubicka ++ ++ * lto-streamer-out.c (tree_is_indexable): Consider IMPORTED_DECL ++ as non-indexable. ++ ++2015-02-25 Peter Bergner ++ ++ Backport from mainline ++ 2015-02-25 Adhemerval Zanella ++ ++ * config/rs6000/htm.md (tcheck): Fix assembly encoding. ++ ++2015-02-26 Matthew Fortune ++ ++ PR target/64569 ++ Backported from mainline: r213872, r217446, r217939, r219867 ++ ++ * config.in [!USED_FOR_TARGET] (HAVE_AS_DOT_MODULE): Undefine. ++ * config/mips/mips.h (FP_ASM_SPEC): New macro. ++ (ASM_SPEC): Use FP_ASM_SPEC. ++ * configure.ac (HAVE_AS_DOT_MODULE): Detect support for .module ++ and FPXX extensions. ++ * configure: Regenerate. ++ ++2015-02-25 Jason Merrill ++ ++ * common.opt (-flifetime-dse): New. ++ ++2015-02-25 Kai Tietz ++ ++ PR tree-optimization/61917 ++ * tree-vect-loop.c (vectorizable_reduction): Handle obvious case ++ that reduc_def_stmt is null. ++ ++ Merged from mainline ++ PR target/64212 ++ * symtab.c (symtab::make_decl_local): Set DECL_IMPORT_P explicit to 0. ++ (symtab::noninterposable_alias): Likewise. ++ ++2015-02-25 Richard Biener ++ Kai Tietz ++ ++ Backported from mainline ++ PR tree-optimization/61917 ++ * tree-vect-loop.c (vectorizable_reduction): Allow ++ vect_internal_def without reduction to exit graceful. ++ ++2015-02-25 Georg-Johann Lay ++ ++ PR target/65196 ++ * config/avr/avr.c (avr_adjust_insn_length): Call recog_memoized ++ only with NONDEBUG_INSN_P. ++ ++2015-02-25 Kaz Kojima ++ ++ Backport from mainline ++ 2015-02-23 Kaz Kojima ++ ++ PR target/65153 ++ * config/sh/sh.md (movsicc_true+3): Remove peephole. ++ * config/sh/sh-protos.h (replace_n_hard_rtx): Don't declare. ++ * config/sh/sh.c (replace_n_hard_rtx): Remove. ++ ++2015-02-24 Richard Biener ++ ++ Backport from mainline ++ 2015-02-11 Richard Biener ++ ++ PR lto/65015 ++ * dwarf2out.c (gen_producer_string): Drop -fltrans-output-list ++ and -fresolution. ++ ++ 2015-02-13 Richard Biener ++ ++ PR lto/65015 ++ * dwarf2out.c (dwarf2out_finish): Use as DW_AT_name ++ for LTO produced CUs. ++ ++ 2015-02-16 Richard Biener ++ ++ PR lto/65015 ++ * varasm.c (default_file_start): For LTO produced units ++ emit as file directive. ++ ++ 2015-01-17 Jan Kratochvil ++ ++ * dwarf2out.c (gen_producer_string): Ignore also OPT_fpreprocessed. ++ ++2015-02-23 Oleg Endo ++ ++ Backport from mainline ++ 2015-02-23 Oleg Endo ++ ++ PR target/65163 ++ * config/sh/sh.md (swapbsi2, related peephole2): Use const_int -65536 ++ instead of const_int 4294901760. ++ ++2015-02-23 Richard Biener ++ ++ Backport from mainline ++ 2014-11-19 Richard Biener ++ ++ PR tree-optimization/63844 ++ * omp-low.c (fixup_child_record_type): Use a restrict qualified ++ referece type for the receiver parameter. ++ ++ 2014-11-27 Richard Biener ++ ++ PR tree-optimization/61634 ++ * tree-vect-slp.c: Include gimple-walk.h. ++ (vect_detect_hybrid_slp_stmts): Rewrite to propagate hybrid ++ down the SLP tree for one scalar statement. ++ (vect_detect_hybrid_slp_1): New walker function. ++ (vect_detect_hybrid_slp_2): Likewise. ++ (vect_detect_hybrid_slp): Properly handle pattern statements ++ in a pre-scan over all loop stmts. ++ ++ 2015-01-14 Richard Biener ++ ++ PR tree-optimization/59354 ++ * tree-vect-slp.c (vect_build_slp_tree_1): Treat loads from ++ groups larger than the slp group size as having gaps. ++ ++ 2015-02-10 Richard Biener ++ ++ PR tree-optimization/64909 ++ * tree-vect-loop.c (vect_estimate_min_profitable_iters): Properly ++ pass a scalar-stmt count estimate to the cost model. ++ * tree-vect-data-refs.c (vect_peeling_hash_get_lowest_cost): Likewise. ++ ++2015-02-20 Kyrylo Tkachov ++ ++ Backport from mainline ++ 2015-02-20 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64.md (*aarch64_lshr_sisd_or_int_3): ++ Mark operand 0 as earlyclobber in 2nd alternative. ++ (1st define_split below *aarch64_lshr_sisd_or_int_3): ++ Write negated shift amount into QI lowpart operand 0 and use it ++ in the shift step. ++ (2nd define_split below *aarch64_lshr_sisd_or_int_3): Likewise. ++ ++2015-02-20 Georg-Johann Lay ++ ++ Backport from 2015-02-20 trunk r220847. ++ ++ PR target/64452 ++ * config/avr/avr.md (pushhi_insn): New insn. ++ (push1): Push virtual regs in one chunk using pushhi1_insn. ++ ++2015-02-20 Richard Biener ++ ++ Backport from mainline ++ 2015-01-12 Richard Biener ++ ++ PR tree-optimization/64530 ++ * tree-loop-distribution.c (pg_add_dependence_edges): Shuffle ++ back dr1. ++ ++ 2015-02-13 Richard Biener ++ ++ PR lto/64373 ++ * lto-streamer-out.c (tree_is_indexable): Guard for NULL ++ DECL_CONTEXT. ++ ++ 2015-02-16 Richard Biener ++ ++ PR tree-optimization/63593 ++ * tree-predcom.c (execute_pred_commoning_chain): Delay removing ++ stmts and releasing SSA names until... ++ (execute_pred_commoning): ... after processing all chains. ++ ++ 2015-02-18 Richard Biener ++ ++ PR tree-optimization/65063 ++ * tree-predcom.c (determine_unroll_factor): Return 1 if we ++ have replaced looparound PHIs. ++ ++2015-02-19 John David Anglin ++ ++ * config/pa/pa.c (pa_reloc_rw_mask): New function. ++ (TARGET_ASM_RELOC_RW_MASK): Define. ++ (pa_cannot_force_const_mem): Revert previous change. ++ ++2015-02-19 Richard Biener ++ ++ Backport from mainline ++ 2014-12-09 Richard Biener ++ ++ PR middle-end/64199 ++ * fold-const.c (fold_binary_loc): Use TREE_OVERFLOW_P. ++ ++ 2015-01-14 Richard Biener ++ ++ PR tree-optimization/64493 ++ PR tree-optimization/64495 ++ * tree-vect-loop.c (vect_finalize_reduction): For double-reductions ++ assign the proper vectorized PHI to the inner loop exit PHIs. ++ ++ 2015-01-27 Richard Biener ++ ++ PR tree-optimization/56273 ++ PR tree-optimization/59124 ++ PR tree-optimization/64277 ++ * tree-vrp.c (vrp_finalize): Emit array-bound warnings only ++ from the first VRP pass. ++ ++ 2015-02-19 Richard Biener ++ ++ Backport from mainline ++ 2015-01-15 Richard Biener ++ ++ PR middle-end/64365 ++ * tree-data-ref.c (dr_analyze_indices): Make sure that accesses ++ for MEM_REF access functions with the same base can never partially ++ overlap. ++ ++2015-02-17 Ilya Tocar ++ ++ Backported from mainline ++ 2015-01-14 Ilya Tocar ++ ++ PR target/64387 ++ * config/i386/sse.md (vec_unpacks_hi_v8sf): Fix predicate. ++ (vec_unpacks_hi_v16sf): Ditto. ++ ++2015-02-15 John David Anglin ++ ++ * config/pa/pa.c (pa_secondary_reload): Request a secondary reload ++ for all floading point loads and stores except those using a register ++ index address. ++ * config/pa/pa.md: Add new patterns to load a lo_sum DLT operand ++ to a register. ++ ++2015-02-13 John David Anglin ++ ++ * config/pa/constraints.md: Change "Q" and "T" constraints to memory ++ constraints. ++ * config/pa/pa.c (pa_cannot_force_const_mem): Don't allow constant ++ symbolic references to data to be forced to constant memory on the ++ SOM target. ++ ++2015-02-11 Jakub Jelinek ++ ++ Backported from mainline ++ 2015-02-09 Jakub Jelinek ++ ++ PR target/64979 ++ * tree-stdarg.c (pass_stdarg::execute): Scan phi node args for ++ va_list escapes. ++ ++2015-02-11 Uros Bizjak ++ ++ * config/alpha/alpha.md (reload_out_aligned): Make operands 2 ++ and 3 earlyclobber operands. ++ ++2015-02-09 Dominik Vogt ++ ++ * doc/extend.texi: s/390: Update documentation of hotpatch attribute. ++ * doc/invoke.texi (-mhotpatch): s/390: Update documentation of ++ -mhotpatch= option. ++ * config/s390/s390.opt (mhotpatch): s/390: Remove -mhotpatch and ++ -mno-hotpatch options. Change syntax of -mhotpatch= option. ++ * config/s390/s390.c (s390_hotpatch_trampoline_halfwords_default): ++ Renamed. ++ (s390_hotpatch_trampoline_halfwords_max): Renamed. ++ (s390_hotpatch_hw_max): New name. ++ (s390_hotpatch_trampoline_halfwords): Renamed. ++ (s390_hotpatch_hw_before_label): New name. ++ (get_hotpatch_attribute): Removed. ++ (s390_hotpatch_hw_after_label): New name. ++ (s390_handle_hotpatch_attribute): Add second parameter to hotpatch ++ attribute. ++ (s390_attribute_table): Ditto. ++ (s390_function_num_hotpatch_trampoline_halfwords): Renamed. ++ (s390_function_num_hotpatch_hw): New name. ++ Remove special handling of inline functions and hotpatching. ++ Return number of nops before and after the function label. ++ (s390_can_inline_p): Removed. ++ (s390_asm_output_function_label): Emit a configurable number of nops ++ after the function label. ++ (s390_option_override): Update -mhotpatch= syntax and remove -mhotpatch. ++ (TARGET_CAN_INLINE_P) Removed. ++ (TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): New. ++ ++2015-02-05 Segher Boessenkool ++ ++ PR target/64580 ++ Backport from mainline ++ * config.rs6000/rs6000.c (compute_vrsave_mask): Reverse loop order. ++ (rs6000_stack_info): Add assert. ++ (rs6000_output_savres_externs): New function, split off from... ++ (rs6000_output_function_prologue): ... here. Do not call it for ++ thunks. ++ ++2015-02-04 Matthias Klose ++ ++ PR target/64938 ++ Backport from mainline ++ 2015-01-15 Jan Hubicka ++ ++ PR ipa/64068 ++ PR ipa/64559 ++ * ipa.c (symbol_table::remove_unreachable_nodes): ++ Do not put abstract origins into boundary. ++ ++2015-02-04 Uros Bizjak ++ ++ Backport from mainline ++ 2015-01-31 Uros Bizjak ++ ++ PR target/64882 ++ * config/i386/predicates.md (address_no_seg_operand): Reject ++ non-CONST_INT_P operands in invalid mode. ++ ++ Backport from mainline ++ 2015-01-31 Uros Bizjak ++ ++ * config/i386/i386.md (*prefetch_prefetchw1): Remove mode of ++ address_operand 0. Rename from *prefetch_prefetchwt1_. ++ * config/i386/predicates.md (address_no_seg_operand): Call ++ address_operand with VOIDmode. ++ (vsib_address_operand): Ditto. ++ ++2015-02-01 H.J. Lu ++ ++ Backported from mainline ++ 2015-01-24 H.J. Lu ++ ++ * config/i386/driver-i386.c (host_detect_local_cpu): Check new ++ Silvermont, Haswell, Broadwell and Knights Landing model numbers. ++ * config/i386/i386.c (processor_model): Add ++ M_INTEL_COREI7_BROADWELL. ++ (arch_names_table): Add "broadwell". ++ ++2015-02-01 Jakub Jelinek ++ ++ Backported from mainline ++ 2015-01-27 Jakub Jelinek ++ ++ PR rtl-optimization/61058 ++ * jump.c (cleanup_barriers): Update basic block boundaries ++ if BLOCK_FOR_INSN is non-NULL on PREV. ++ ++ 2015-01-26 Jakub Jelinek ++ ++ PR middle-end/64421 ++ * omp-low.c (simd_clone_mangle): If DECL_ASSEMBLER_NAME starts ++ with asterisk, skip the first character. ++ ++ * config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Add ++ OPTION_MASK_QUAD_MEMORY_ATOMIC. ++ ++ 2015-01-23 Jakub Jelinek ++ ++ PR rtl-optimization/63637 ++ PR rtl-optimization/60663 ++ * cse.c (merge_equiv_classes): Set new_elt->cost to MAX_COST ++ if elt->cost is MAX_COST for ASM_OPERANDS. ++ (find_sets_in_insn): Fix up comment typo. ++ (cse_insn): Don't set src_volatile for all non-volatile ++ ASM_OPERANDS in PARALLELs, but just those with multiple outputs ++ or with "memory" clobber. Set elt->cost to MAX_COST ++ for ASM_OPERANDS in PARALLEL. Set src_elt->cost to MAX_COST ++ if new_src is ASM_OPERANDS and elt->cost is MAX_COST. ++ ++ PR debug/64511 ++ * dwarf2out.c (struct dw_loc_descr_node): Add chain_next ++ GTY markup. ++ ++ 2015-01-20 Jakub Jelinek ++ ++ PR debug/64663 ++ * dwarf2out.c (decl_piece_node): Don't put bitsize into ++ mode if bitsize <= 0. ++ (decl_piece_bitsize, adjust_piece_list, add_var_loc_to_decl, ++ dw_sra_loc_expr): Use HOST_WIDE_INT instead of int for bit ++ sizes and positions. ++ ++2015-01-29 Ilya Tocar ++ ++ * config/i386/avx2intrin.h (_mm256_bslli_epi128, ++ _mm256_bsrli_epi128): New. ++ * config/i386/emmintrin.h (_mm_bsrli_si128, _mm_bslli_si128): Ditto. ++ ++2015-01-27 Andreas Krebbel ++ ++ * config/s390/s390.c (s390_memory_move_cost): Increase costs for ++ memory accesses. ++ ++2015-01-27 Andreas Krebbel ++ ++ * config/s390/s390.c (s390_register_move_cost): Increase costs for ++ FPR->GPR moves. ++ ++2015-01-26 Uros Bizjak ++ ++ Backport from mainline ++ 2015-01-26 Uros Bizjak ++ ++ PR target/64795 ++ * config/i386/i386.md (*movdi_internal): Also check operand 0 ++ to determine TYPE_LEA operand. ++ (*movsi_internal): Ditto. ++ ++ Backport from mainline ++ 2015-01-23 Uros Bizjak ++ ++ * config/i386/sse.md (sse2_loadld): Set attribute isa to sse2 for ++ alternative 1. ++ ++2015-01-23 Jakub Jelinek ++ ++ PR middle-end/64734 ++ * omp-low.c (scan_sharing_clauses): Don't ignore ++ OMP_CLAUSE_MAP_ZERO_BIAS_ARRAY_SECTION GOMP_MAP_POINTER clauses ++ on target data/update constructs. ++ ++2015-01-23 Wei Mi ++ ++ Backported from trunk. ++ 2015-01-22 Wei Mi ++ ++ PR rtl-optimization/64557 ++ * dse.c (record_store): Call get_addr for mem_addr. ++ (check_mem_read_rtx): Likewise. ++ ++2015-01-22 Andreas Krebbel ++ ++ * config/s390/s390.md (atomic code attribute): Fix typo "ior" -> ++ "or". ++ ++2015-01-21 Wei Mi ++ ++ Backported from trunk. ++ 2014-11-22 Jan Hubicka ++ ++ PR ipa/63970 ++ * ipa.c (symbol_table::remove_unreachable_nodes): Mark all inline clones ++ as having abstract origin used. ++ * ipa-inline-transform.c (can_remove_node_now_p_1): Drop abstract ++ origin check. ++ (clone_inlined_nodes): Copy abstract originflag. ++ * lto-cgraph.c (compute_ltrans_boundary): Use get_create to get ++ abstract origin node. ++ ++2015-01-20 Chung-Lin Tang ++ ++ Backport from mainline ++ * config/nios2/nios2.c (nios2_asm_file_end): Implement ++ TARGET_ASM_FILE_END hook for adding .note.GNU-stack section when ++ needed. ++ (TARGET_ASM_FILE_END): Define. ++ ++2015-01-15 Martin Liska ++ ++ Backport from mainline ++ 2014-11-27 Richard Biener ++ ++ PR middle-end/63704 ++ * alias.c (mems_in_disjoint_alias_sets_p): Remove assert ++ and instead return false when !fstrict-aliasing. ++ ++2015-01-15 Eric Botcazou ++ ++ * expr.c (expand_expr_real_1) : Use the expression to ++ set the memory attributes in all cases but clear MEM_EXPR if need be. ++ ++2015-01-14 Jakub Jelinek ++ ++ Backported from mainline ++ 2015-01-12 Jakub Jelinek ++ ++ PR target/64513 ++ * config/i386/i386.c (ix86_expand_prologue): Add ++ REG_FRAME_RELATED_EXPR to %rax and %r10 pushes. ++ ++ 2015-01-13 Jakub Jelinek ++ ++ PR rtl-optimization/64286 ++ * ree.c (combine_reaching_defs): Move part of comment earlier, ++ remove !SCALAR_INT_MODE_P check. ++ (add_removable_extension): Don't add vector mode ++ extensions if all uses of the source register aren't the same ++ vector extensions. ++ ++ 2015-01-12 Jakub Jelinek ++ ++ PR tree-optimization/64563 ++ * tree-vrp.c (vrp_evaluate_conditional): Check for VR_RANGE ++ instead of != VR_VARYING. ++ ++2015-01-14 Marek Polacek ++ ++ Backport from mainline ++ 2015-01-13 Marek Polacek ++ ++ PR middle-end/64391 ++ * trans-mem.c (get_attrs_for): Return NULL_TREE if X is NULL_TREE. ++ ++2015-01-13 Marc Glisse ++ ++ PR c++/54442 ++ * tree.c (build_qualified_type): Use a canonical type for ++ TYPE_CANONICAL. ++ ++2015-01-13 Pat Haugen ++ ++ Backport from mainline ++ 2014-12-20 Segher Boessenkool ++ ++ PR target/64358 ++ * config/rs6000/rs6000.c (rs6000_split_logical_inner): Swap the ++ input operands if only the second is inverted. ++ * config/rs6000/rs6000.md (*boolc3_internal1 for BOOL_128): ++ Swap BOOL_REGS_OP1 and BOOL_REGS_OP2. Correct arguments to ++ rs6000_split_logical. ++ (*boolc3_internal2 for TI2): Swap operands[1] and operands[2]. ++ ++2015-01-13 Renlin Li ++ ++ Backport from mainline: ++ 2014-11-19 Renlin Li ++ ++ PR target/63424 ++ * config/aarch64/aarch64-simd.md (v2di3): New. ++ ++2015-01-13 Oleg Endo ++ ++ Backport form mainline ++ 2015-01-13 Oleg Endo ++ ++ PR target/64479 ++ * rtlanal.c (set_reg_p): Handle SEQUENCE constructs. ++ ++2015-01-09 Jakub Jelinek ++ ++ PR rtl-optimization/64536 ++ * cfgrtl.c (rtl_tidy_fallthru_edge): Handle removal of degenerate ++ tablejumps. ++ ++2015-01-09 Michael Meissner ++ ++ Backport from mainline: ++ 2015-01-06 Michael Meissner ++ ++ PR target/64505 ++ * config/rs6000/rs6000.c (rs6000_secondary_reload): Return the ++ correct reload handler if -m32 -mpowerpc64 is used. ++ ++2015-01-09 Sebastian Huber ++ ++ Backport from mainline: ++ 2015-01-09 Sebastian Huber ++ ++ * config/rs6000/rtems.h (CPP_OS_RTEMS_SPEC): Define __PPC_CPU_E6500__ ++ for -mcpu=e6500. ++ * config/rs6000/t-rtems: Add e6500 multilibs. ++ ++2015-01-09 Sebastian Huber ++ ++ Backport from mainline: ++ 2015-01-09 Sebastian Huber ++ ++ * config/rs6000/t-rtems: Add -mno-spe to soft-float multilib for ++ MPC8540. ++ ++2015-01-09 Sebastian Huber ++ ++ Backport from mainline: ++ 2015-01-09 Sebastian Huber ++ ++ * config/rs6000/t-rtems: Use MULTILIB_REQUIRED instead of ++ MULTILIB_EXCEPTIONS. ++ ++2015-01-09 Renlin Li ++ ++ Backport from mainline: ++ 2014-08-12 Ramana Radhakrishnan ++ ++ PR target/61413 ++ * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Fix definition ++ of __ARM_SIZEOF_WCHAR_T. ++ ++2015-01-08 Christian Bruel ++ ++ PR target/64507 ++ * config/sh/sh-mem.cc (sh_expand_cmpnstr): Check 0 length. ++ ++2015-01-03 John David Anglin ++ ++ * config/pa/pa.md (decrement_and_branch_until_zero): Use `Q' constraint ++ instead of `m' constraint. Likewise for unnamed movb comparison ++ patterns using reg_before_reload_operand predicate. ++ * config/pa/predicates.md (reg_before_reload_operand): Tighten ++ predicate to reject register index and LO_SUM DLT memory forms ++ after reload. ++ ++2014-12-27 H.J. Lu ++ ++ Backport from mainline: ++ 2014-12-27 H.J. Lu ++ ++ PR target/64409 ++ * config/i386/i386.c (ix86_function_type_abi): Issue an error ++ when ms_abi attribute is used with x32. ++ ++2014-12-27 Uros Bizjak ++ ++ * config/i386/mmx.md (*vec_extractv2sf_1): Do not emit unpckhps. ++ Emit movshdup for SSE3 and shufps otherwise. ++ (*vec_extractv2si_1): Do not emit punpckhdq and unpckhps. ++ Emit pshufd for SSE2 and shufps otherwise. ++ ++2014-12-24 Nick Clifton ++ ++ Backport from mainline: ++ 2014-06-13 Nick Clifton ++ ++ * config/rx/rx.h (JUMP_ALIGN): Return the log value if user ++ requested alignment is active. ++ (LABEL_ALIGN): Likewise. ++ (LOOP_ALIGN): Likewise. ++ ++ 2014-03-25 Nick Clifton ++ ++ * config/rx/rx.c (rx_print_operand): Allow R operator to accept ++ SImode values. ++ ++2014-12-17 Ulrich Weigand ++ ++ Backport from mainline ++ 2014-12-03 Ulrich Weigand ++ ++ PR rtl-optimization/64010 ++ * reload.c (push_reload): Before reusing a register contained ++ in an operand as input reload register, ensure that it is not ++ used in CALL_INSN_FUNCTION_USAGE. ++ ++2014-12-15 Jakub Jelinek ++ ++ PR sanitizer/64265 ++ * tsan.c (instrument_func_entry): Insert __tsan_func_entry ++ call on edge from entry block to single succ instead ++ of after labels of single succ of entry block. ++ ++2014-12-14 H.J. Lu ++ ++ Backported from mainline ++ 2014-12-14 H.J. Lu ++ ++ PR rtl-optimization/64037 ++ * combine.c (setup_incoming_promotions): Pass the argument ++ before any promotions happen to promote_function_mode. ++ ++2014-12-14 H.J. Lu ++ ++ Backported from mainline ++ 2014-12-06 H.J. Lu ++ ++ PR target/64200 ++ * config/i386/i386.c (decide_alg): Don't assert "alg != libcall" ++ for TARGET_INLINE_STRINGOPS_DYNAMICALLY. ++ ++2014-12-13 Jakub Jelinek ++ ++ Backported from mainline ++ 2014-12-12 Jakub Jelinek ++ ++ PR tree-optimization/64269 ++ * tree-ssa-forwprop.c (simplify_builtin_call): Bail out if ++ len2 or diff are too large. ++ ++2014-12-11 Eric Botcazou ++ ++ * doc/md.texi (Insn Lengths): Fix description of (pc). ++ ++2014-12-11 Renlin Li ++ ++ Backport from mainline ++ 2014-12-11 Renlin Li ++ ++ * config/aarch64/aarch64.c (aarch64_parse_cpu): Don't define ++ selected_tune. ++ (aarch64_override_options): Use selected_cpu's tuning. ++ ++2014-12-10 Bill Schmidt ++ ++ Backport from mainline ++ 2014-09-02 Bill Schmidt ++ ++ * config/rs6000/rs6000-builtin.def (XVCVSXDDP_SCALE): New ++ built-in definition. ++ (XVCVUXDDP_SCALE): Likewise. ++ (XVCVDPSXDS_SCALE): Likewise. ++ (XVCVDPUXDS_SCALE): Likewise. ++ * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add ++ entries for VSX_BUILTIN_XVCVSXDDP_SCALE, ++ VSX_BUILTIN_XVCVUXDDP_SCALE, VSX_BUILTIN_XVCVDPSXDS_SCALE, and ++ VSX_BUILTIN_XVCVDPUXDS_SCALE. ++ * config/rs6000/rs6000-protos.h (rs6000_scale_v2df): New ++ prototype. ++ * config/rs6000/rs6000.c (real.h): New include. ++ (rs6000_scale_v2df): New function. ++ * config/rs6000/vsx.md (UNSPEC_VSX_XVCVSXDDP): New unspec. ++ (UNSPEC_VSX_XVCVUXDDP): Likewise. ++ (UNSPEC_VSX_XVCVDPSXDS): Likewise. ++ (UNSPEC_VSX_XVCVDPUXDS): Likewise. ++ (vsx_xvcvsxddp_scale): New define_expand. ++ (vsx_xvcvsxddp): New define_insn. ++ (vsx_xvcvuxddp_scale): New define_expand. ++ (vsx_xvcvuxddp): New define_insn. ++ (vsx_xvcvdpsxds_scale): New define_expand. ++ (vsx_xvcvdpsxds): New define_insn. ++ (vsx_xvcvdpuxds_scale): New define_expand. ++ (vsx_xvcvdpuxds): New define_insn. ++ * doc/extend.texi (vec_ctf): Add new prototypes. ++ (vec_cts): Likewise. ++ (vec_ctu): Likewise. ++ (vec_splat): Likewise. ++ (vec_div): Likewise. ++ (vec_mul): Likewise. ++ ++ Backport from mainline ++ 2014-08-28 Bill Schmidt ++ ++ * config/rs6000/altivec.h (vec_xl): New #define. ++ (vec_xst): Likewise. ++ * config/rs6000/rs6000-builtin.def (XXSPLTD_V2DF): New built-in. ++ (XXSPLTD_V2DI): Likewise. ++ (DIV_V2DI): Likewise. ++ (UDIV_V2DI): Likewise. ++ (MUL_V2DI): Likewise. ++ * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add ++ entries for VSX_BUILTIN_XVRDPI, VSX_BUILTIN_DIV_V2DI, ++ VSX_BUILTIN_UDIV_V2DI, VSX_BUILTIN_MUL_V2DI, ++ VSX_BUILTIN_XXSPLTD_V2DF, and VSX_BUILTIN_XXSPLTD_V2DI). ++ * config/rs6000/vsx.md (UNSPEC_VSX_XXSPLTD): New unspec. ++ (UNSPEC_VSX_DIVSD): Likewise. ++ (UNSPEC_VSX_DIVUD): Likewise. ++ (UNSPEC_VSX_MULSD): Likewise. ++ (vsx_mul_v2di): New insn-and-split. ++ (vsx_div_v2di): Likewise. ++ (vsx_udiv_v2di): Likewise. ++ (vsx_xxspltd_): New insn. ++ ++ Backport from mainline ++ 2014-08-20 Bill Schmidt ++ ++ * config/rs6000/altivec.h (vec_cpsgn): New #define. ++ (vec_mergee): Likewise. ++ (vec_mergeo): Likewise. ++ (vec_cntlz): Likewise. ++ * config/rs600/rs6000-c.c (altivec_overloaded_builtins): Add new ++ entries for VEC_AND, VEC_ANDC, VEC_MERGEH, VEC_MERGEL, VEC_NOR, ++ VEC_OR, VEC_PACKSU, VEC_XOR, VEC_PERM, VEC_SEL, VEC_VCMPGT_P, ++ VMRGEW, and VMRGOW. ++ * doc/extend.texi: Document various forms of vec_cpsgn, ++ vec_splats, vec_and, vec_andc, vec_mergeh, vec_mergel, vec_nor, ++ vec_or, vec_perm, vec_sel, vec_sub, vec_xor, vec_all_eq, ++ vec_all_ge, vec_all_gt, vec_all_le, vec_all_lt, vec_all_ne, ++ vec_any_eq, vec_any_ge, vec_any_gt, vec_any_le, vec_any_lt, ++ vec_any_ne, vec_mergee, vec_mergeo, vec_packsu, and vec_cntlz. ++ ++ Backport from mainline ++ 2014-07-20 Bill Schmidt ++ ++ * config/rs6000/altivec.md (unspec enum): Fix typo in UNSPEC_VSLDOI. ++ (altivec_vsldoi_): Likewise. ++ ++ ++2014-12-10 Jakub Jelinek ++ ++ PR tree-optimization/62021 ++ * omp-low.c (simd_clone_adjust_return_type): Use ++ vector of pointer_sized_int_node types instead vector of pointer ++ types. ++ (simd_clone_adjust_argument_types): Likewise. ++ ++2014-12-10 Bill Schmidt ++ ++ Backport from mainline: ++ 2014-12-09 Bill Schmidt ++ ++ PR middle-end/64225 ++ * tree-ssa-reassoc.c (acceptable_pow_call): Disable transformation ++ for BUILT_IN_POW when flag_errno_math is present. ++ ++2014-12-10 Marek Polacek ++ ++ Backport from mainline ++ 2014-12-10 Marek Polacek ++ ++ PR tree-optimization/61686 ++ * tree-ssa-reassoc.c (range_entry_cmp): Use q->high instead of ++ p->high. ++ ++2014-12-09 David Edelsohn ++ ++ Backport from mainline ++ 2014-12-05 David Edelsohn ++ ++ * config/rs6000/xcoff.h (ASM_OUTPUT_ALIGNED_LOCAL): Append ++ alignment to section name. Increase default alignment to ++ word. ++ ++2014-12-09 Uros Bizjak ++ ++ PR bootstrap/64213 ++ Revert: ++ 2014-11-28 H.J. Lu ++ ++ PR rtl-optimization/64037 ++ * combine.c (setup_incoming_promotions): Pass the argument ++ before any promotions happen to promote_function_mode. ++ ++2014-12-09 Richard Biener ++ ++ PR tree-optimization/64191 ++ * tree-vect-stmts.c (vect_stmt_relevant_p): Clobbers are ++ not relevant (nor are their uses). ++ ++2014-12-07 Oleg Endo ++ ++ Backport from mainline ++ 2014-12-07 Oleg Endo ++ ++ PR target/50751 ++ * config/sh/sh.md (extendqihi2): Allow only for TARGET_SH1. ++ ++2014-12-05 H.J. Lu ++ ++ Backport from mainline ++ 2014-12-02 H.J. Lu ++ ++ PR target/64108 ++ * config/i386/i386.c (decide_alg): Stop only if there aren't ++ any usable algorithms. ++ ++2014-12-05 H.J. Lu ++ ++ Backport from mainline ++ 2014-11-28 H.J. Lu ++ ++ PR rtl-optimization/64037 ++ * combine.c (setup_incoming_promotions): Pass the argument ++ before any promotions happen to promote_function_mode. ++ ++2014-12-04 Tobias Burnus ++ ++ * configure.ac ++ (ac_has_isl_schedule_constraints_compute_schedule): ++ New check. ++ * graphite-clast-to-gimple.c: For ISL 0.14, include deprecate headers. ++ * graphite-interchange.c: Ditto. ++ * graphite-poly.c: Ditto. ++ * graphite-sese-to-poly.c: Ditto. ++ * graphite-optimize-isl.c (getScheduleForBandList): Ditto. ++ Conditionally use ISL 0.13+ functions. ++ * config.in: Regenerate. ++ * configure: Regenerate. ++ ++2014-12-04 Jakub Jelinek ++ ++ PR c++/56493 ++ * convert.c (convert_to_real, convert_to_expr, convert_to_complex): ++ Handle COMPOUND_EXPR. ++ ++2014-12-03 Jakub Jelinek ++ ++ PR c/59708 ++ * expmed.c (expand_widening_mult): Return const0_rtx if ++ coeff is 0. ++ ++2014-12-03 Martin Jambor ++ ++ PR ipa/64153 ++ * ipa-inline-analysis.c (evaluate_conditions_for_known_args): Check ++ type sizes before view_converting. ++ ++2014-12-03 Shanyao Chen ++ ++ Backport from mainline ++ 2014-11-20 Ramana Radhakrishnan ++ ++ PR target/59593 ++ * config/arm/arm.md (*movhi_insn): Use right formatting ++ for immediate. ++ ++ 2014-11-19 Felix Yang ++ Shanyao Chen ++ ++ PR target/59593 ++ * config/arm/arm.md (define_attr "arch"): Add v6t2. ++ (define_attr "arch_enabled"): Add test for the above. ++ (*movhi_insn_arch4): Add new alternative. ++ ++2014-12-03 Renlin Li ++ ++ Backported from mainline ++ 2014-12-03 Renlin Li ++ ++ PR middle-end/63762 ++ PR target/63661 ++ * ira.c (ira): Update preferred class. ++ ++2014-12-02 Uros Bizjak ++ ++ PR target/64113 ++ * config/alpha/alpha.md (call_value_osf_tlsgd): Do not split insn ++ using post-reload splitter. Use peephole2 pass instead. ++ (call_value_osf_tlsldm): Ditto. ++ (TLS_CALL): New int iterator. ++ (tls): New int attribute. ++ (call_value_osf_): Merge insn pattern from call_value_osf_tlsgd ++ and call_value_tlsldm using TLS_CALL int iterator. ++ ++2014-12-02 Ulrich Weigand ++ ++ PR target/64115 ++ * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove ++ invalid UNSPEC_TOCREL sanity check under ENABLE_CHECKING. ++ ++2014-12-01 Richard Biener ++ ++ PR middle-end/64111 ++ * tree.c (int_cst_hash_hash): Use TYPE_UID instead of ++ htab_hash_pointer to not break PCH. ++ ++2014-12-01 Martin Jambor ++ ++ PR ipa/63551 ++ * ipa-inline-analysis.c (evaluate_conditions_for_known_args): Convert ++ value of the argument to the type of the value in the condition. ++ ++2014-11-28 Jakub Jelinek ++ ++ Backported from mainline ++ 2014-11-27 Jakub Jelinek ++ ++ PR middle-end/64067 ++ * expr.c (expand_expr_addr_expr_1) : ++ Handle it by returning address of COMPOUND_LITERAL_EXPR_DECL ++ not only if modifier is EXPAND_INITIALIZER, but whenever ++ COMPOUND_LITERAL_EXPR_DECL is non-NULL and TREE_STATIC. ++ ++ 2014-11-19 Jakub Jelinek ++ ++ PR tree-optimization/63915 ++ * tree-vect-stmts.c (vectorizable_simd_clone_call): Pass ++ true instead of false as last argument to gsi_replace. ++ ++ PR sanitizer/63913 ++ * ubsan.c: Include tree-eh.h. ++ (instrument_bool_enum_load): Handle loads that can throw. ++ ++ 2014-10-31 Jakub Jelinek ++ ++ PR rtl-optimization/63659 ++ * ree.c (update_reg_equal_equiv_notes): New function. ++ (combine_set_extension, transform_ifelse): Use it. ++ ++2014-11-28 Ramana Radhakrishnan ++ ++ Backport from mainline. ++ 2014-11-28 Ramana Radhakrishnan ++ ++ * config/arm/t-aprofile (MULTILIB_MATCHES): New entry for ++ -march=armv8-a+crc. ++ ++2014-11-26 Richard Biener ++ ++ PR middle-end/63738 ++ * tree-data-ref.c (split_constant_offset_1): Do not follow ++ SSA edges for SSA names with SSA_NAME_OCCURS_IN_ABNORMAL_PHI. ++ ++2014-11-26 Richard Biener ++ ++ Backport from mainline ++ 2014-11-26 Richard Biener ++ ++ PR tree-optimization/62238 ++ * tree-predcom.c (ref_at_iteration): Unshare the expression ++ before gimplifying it. ++ ++ 2014-11-25 Richard Biener ++ ++ PR tree-optimization/61927 ++ * tree-vect-loop.c (vect_analyze_loop_2): Revert ordering ++ of group and pattern analysis to the one in GCC 4.8. ++ ++ 2014-11-07 Richard Biener ++ ++ PR tree-optimization/63605 ++ * fold-const.c (fold_binary_loc): Properly use element_precision ++ for types that may not be scalar. ++ ++ 2014-10-28 Richard Biener ++ ++ PR middle-end/63665 ++ * fold-const.c (fold_comparison): Properly guard simplifying ++ against INT_MAX/INT_MIN with !TYPE_OVERFLOW_WRAPS. ++ ++2014-11-25 Rohit ++ ++ PR bootstrap/63703 ++ * config/rs6000/darwin.h (REGISTER_NAMES): Update based on 32 newly ++ added GCC hard register numbers for SPE high registers. ++ ++2014-11-23 Oleg Endo ++ ++ Backport from mainline ++ 2014-11-23 Oleg Endo ++ ++ PR target/53976 ++ * config/sh/sh_optimize_sett_clrt.cc ++ (sh_optimize_sett_clrt::find_last_ccreg_values): Return bool instead ++ of void. Abort at complex edges. ++ (sh_optimize_sett_clrt::execute): Do nothing if find_last_ccreg_values ++ returned false. ++ ++2014-11-22 Oleg Endo ++ ++ Backport from mainline ++ 2014-11-22 Oleg Endo ++ ++ PR target/63783 ++ PR target/51244 ++ * config/sh/sh_treg_combine.cc (sh_treg_combine::make_not_reg_insn): ++ Do not emit bitwise not insn. Emit logical not insn sequence instead. ++ Adjust related comments throughout the file. ++ ++2014-11-22 Oleg Endo ++ ++ Backport from mainline ++ 2014-11-20 Segher Boessenkool ++ ++ PR target/60111 ++ * config/sh/sh.c: Use signed char for signed field. ++ ++2014-11-21 Bill Schmidt ++ ++ PR target/63673 ++ * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Allow ++ the base pointer of vec_vsx_ld and vec_vsx_st to take a pointer to ++ double. ++ ++2014-11-21 Richard Biener ++ ++ PR tree-optimization/61750 ++ * tree-ssa-forwprop.c (simplify_vce): Verify type sizes ++ match for the resulting VIEW_CONVERT_EXPR. ++ ++2014-11-19 Uros Bizjak ++ ++ PR target/63947 ++ * config/i386/i386.c (put_condition_code) : ++ Output "b" and "nb" suffix for FP mode. ++ ++2014-11-19 Tom de Vries ++ ++ Backport from mainline ++ PR tree-optimization/62167 ++ * tree-ssa-tail-merge.c (stmt_local_def): Handle statements with vuse ++ conservatively. ++ (gimple_equal_p): Don't use vn_valueize to compare for lhs equality of ++ assigns. ++ ++2014-11-16 Eric Botcazou ++ ++ * doc/tm.texi.in (TARGET_FLAGS_REGNUM): Move around. ++ * doc/tm.texi: Regenerate. ++ ++2014-11-14 Felix Yang ++ ++ Backport from mainline ++ 2014-11-14 Felix Yang ++ Jiji Jiang ++ ++ * config/aarch64/aarch64-simd.md (*aarch64_simd_ld1r): Use ++ VALL mode iterator instead of VALLDI. ++ ++2014-11-13 Teresa Johnson ++ ++ PR tree-optimization/63841 ++ * tree-ssa-strlen.c (strlen_optimize_stmt): Ignore clobbers. ++ ++2014-11-13 Christophe Lyon ++ ++ Backport from mainline ++ 2014-11-02 Michael Collison ++ ++ * config/arm/arm.h (CLZ_DEFINED_VALUE_AT_ZERO) : Update ++ to support vector modes. ++ (CTZ_DEFINED_VALUE_AT_ZERO): Ditto. ++ ++2014-11-13 Eric Botcazou ++ ++ * doc/tm.texi.in (SELECT_CC_MODE): Update example. ++ (REVERSIBLE_CC_MODE): Fix example. ++ (REVERSE_CONDITION): Fix typo. ++ * doc/tm.texi: Regenerate. ++ ++2014-11-12 Jakub Jelinek ++ ++ PR ipa/63838 ++ * ipa-pure-const.c (propagate_nothrow): Walk w->indirect_calls ++ chain instead of node->indirect_calls. ++ ++2014-11-11 Eric Botcazou ++ ++ PR target/61535 ++ * config/sparc/sparc.c (function_arg_vector_value): Deal with vectors ++ smaller than 8 bytes. ++ (sparc_function_arg_1): Tweak. ++ (sparc_function_value_1): Tweak. ++ ++2014-11-08 Eric Botcazou ++ ++ * config/arm/arm.c (arm_set_return_address): Mark the store as frame ++ related, if any. ++ (thumb_set_return_address): Likewise. ++ ++2014-11-07 Daniel Hellstrom ++ ++ * config.gcc (sparc-*-rtems*): Clean away unused t-elf. ++ * config/sparc/t-rtems: Add leon3v7 and muser-mode multilibs. ++ ++2014-11-07 Marek Polacek ++ ++ Backported from mainline ++ 2014-10-23 Marek Polacek ++ ++ * c-ubsan.c (ubsan_instrument_shift): Perform the MINUS_EXPR ++ in unsigned type. ++ ++2014-11-06 John David Anglin ++ ++ * config/pa/pa.md (trap): New insn. Add "trap" to attribute type. ++ Don't allow trap insn in in_branch_delay, in_nullified_branch_delay ++ or in_call_delay. ++ ++2014-11-06 Daniel Hellstrom ++ ++ * config.gcc (sparc*-*-*): Accept mcpu=leon3v7 processor. ++ * doc/invoke.texi (SPARC options): Add mcpu=leon3v7 comment. ++ * config/sparc/leon.md (leon3_load, leon_store, leon_fp_*): Handle ++ leon3v7 as leon3. ++ * config/sparc/sparc-opts.h (enum processor_type): Add LEON3V7. ++ * config/sparc/sparc.c (sparc_option_override): Add leon3v7 support. ++ * config/sparc/sparc.h (TARGET_CPU_leon3v7): New define. ++ * config/sparc/sparc.md (cpu): Add leon3v7. ++ * config/sparc/sparc.opt (enum processor_type): Add leon3v7. ++ ++2014-11-05 Uros Bizjak ++ ++ PR target/63538 ++ * config/i386/i386.c (in_large_data_p): Reject automatic variables. ++ (ix86_encode_section_info): Do not check for non-automatic varibles ++ when setting SYMBOL_FLAG_FAR_ADDR flag. ++ (x86_64_elf_select_section): Do not check ix86_cmodel here. ++ (x86_64_elf_unique_section): Ditto. ++ (x86_elf_aligned_common): Emit tab before .largecomm. ++ ++2014-11-05 Uros Bizjak ++ ++ Backport from mainline: ++ 2014-10-20 Uros Bizjak ++ ++ * varasm.c (const_alias_set): Remove. ++ (init_varasm_once): Remove initialization of const_alias_set. ++ (build_constant_desc): Do not set alias set to const_alias_set. ++ ++ Backport from mainline: ++ 2014-10-14 Uros Bizjak ++ ++ PR rtl-optimization/63475 ++ * alias.c (true_dependence_1): Always use get_addr to extract ++ true address operands from x_addr and mem_addr. Use extracted ++ address operands to check for references with alignment ANDs. ++ Use extracted address operands with find_base_term and ++ base_alias_check. For noncanonicalized operands call canon_rtx with ++ extracted address operand. ++ (write_dependence_1): Ditto. ++ (may_alias_p): Ditto. Remove unused calls to canon_rtx. ++ ++ Backport from mainline: ++ 2014-10-10 Uros Bizjak ++ ++ PR rtl-optimization/63483 ++ * alias.c (true_dependence_1): Do not exit early for MEM_READONLY_P ++ references when alignment ANDs are involved. ++ (write_dependence_p): Ditto. ++ (may_alias_p): Ditto. ++ ++2014-10-31 DJ Delorie ++ ++ * expmed.c (strict_volatile_bitfield_p): Fix off-by-one error. ++ ++2014-10-31 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64-elf-raw.h (CA53_ERR_835769_SPEC): Define. ++ (LINK_SPEC): Include CA53_ERR_835769_SPEC. ++ * config/aarch64/aarch64-linux.h (CA53_ERR_835769_SPEC): Define. ++ (LINK_SPEC): Include CA53_ERR_835769_SPEC. ++ ++2014-10-31 Jakub Jelinek ++ ++ PR sanitizer/63697 ++ * tree-vrp.c (simplify_internal_call_using_ranges): For subcode == ++ MINUS_EXPR, check overflow on vr0.min - vr1.max and vr0.max - vr1.min ++ instead of vr0.min - vr1.min and vr0.max - vr1.max. ++ ++2014-10-30 Georg-Johann Lay ++ ++ PR63633 ++ * config/avr/avr-protos.h (regmask): New inline function. ++ (avr_fix_inputs, avr_emit3_fix_outputs): New protos. ++ * config/avr/avr.c (avr_fix_operands, avr_move_fixed_operands) ++ (avr_fix_inputs, avr_emit3_fix_outputs): New functions. ++ * config/avr/avr-fixed.md (mulqq3_nomul, muluqq3_nomul) ++ (mul3, mul3, 3, 3) ++ (3, round3): Fix input operands. ++ * config/avr/avr-dimode.md (add3, sub3) ++ (3, 3, cbranch4) ++ (3, mulsidi3): Fix input operands. ++ * config/avr/avr.md (mulqi3_call, mulhi3_call, mulsi3, mulpsi3) ++ (mulusi3, mulssi3, mulohisi3, mulhisi3) ++ (usmulhisi3, mulhi3_highpart, mulsqipsi3) ++ (fmul, fmuls, fmulsu): Fix operands. Turn insn into expander as ++ needed. ++ + 2014-10-30 Release Manager + + * GCC 4.9.2 released. +@@ -150,8 +2343,8 @@ + Backport from mainline + 2014-06-24 Max Ostapenko + +- * asan.c (instrument_strlen_call): Do not instrument first byte in strlen +- if already instrumented. ++ * asan.c (instrument_strlen_call): Do not instrument first byte in ++ strlen if already instrumented. + + 2014-10-16 Yury Gribov + +@@ -314,7 +2507,7 @@ + + Backport from mainline + 2014-10-10 Kyrylo Tkachov +- Ramana Radhakrishnan ++ Ramana Radhakrishnan + + * config/aarch64/aarch64.h (FINAL_PRESCAN_INSN): Define. + (ADJUST_INSN_LENGTH): Define. +@@ -649,7 +2842,7 @@ + * cgraphunit.c: (analyze_function): Remove forward declaration, + rename to cgraph_analyze_function, made external. + * cgraphclones.c (duplicate_thunk_for_node): Copy arguments of the +- new decl properly. Analyze the new thunk if it is expanded. ++ new decl properly. Analyze the new thunk if it is expanded. + + 2014-09-11 H.J. Lu + +@@ -837,8 +3030,8 @@ + Backport from mainline + 2014-08-27 Kaz Kojima + +- PR target/62261 +- * config/sh/sh.md (ashlsi3): Handle negative shift count for ++ PR target/62261 ++ * config/sh/sh.md (ashlsi3): Handle negative shift count for + TARGET_SHMEDIA. + (ashldi3, ashrsi3, ashrdi3, lshrsi3, lshrdi3): Likewise. + +@@ -1231,16 +3424,16 @@ + 2014-08-12 Ganesh Gopalasubramanian + + Backport from mainline +- 2014-08-04 Ganesh Gopalasubramanian ++ 2014-08-04 Ganesh Gopalasubramanian + + +- * config/i386/driver-i386.c (host_detect_local_cpu): Handle AMD's extended +- family information. Handle BTVER2 cpu with cpuid family value. ++ * config/i386/driver-i386.c (host_detect_local_cpu): Handle AMD's ++ extended family information. Handle BTVER2 cpu with cpuid family value. + + 2014-08-12 Ganesh Gopalasubramanian + + Backport from mainline +- 2014-06-16 Ganesh Gopalasubramanian ++ 2014-06-16 Ganesh Gopalasubramanian + + + * config/i386/i386.c (ix86_expand_sse2_mulvxdi3): Issue +@@ -1343,7 +3536,7 @@ + + 2014-07-24 Kyle McMartin + +- * config/aarch64/aarch64-linux.h (TARGET_ASM_FILE_END): Define. ++ * config/aarch64/aarch64-linux.h (TARGET_ASM_FILE_END): Define. + + 2014-07-24 Ulrich Weigand + +@@ -1504,7 +3697,7 @@ + * omp-low.c (create_omp_child_function): Don't set DECL_NAMELESS + on the FUNCTION_DECL. + +- * BASE-VER: Set to 4.9.1. ++ * BASE-VER: Set to 4.9.2. + * DEV-PHASE: Set to prerelease. + + 2014-07-16 Release Manager +@@ -1944,7 +4137,7 @@ + Backport from mainline + + 2014-06-20 Julian Brown +- Chung-Lin Tang ++ Chung-Lin Tang + + * config/arm/arm.c (arm_output_mi_thunk): Fix offset for + TARGET_THUMB1_ONLY. Add comments. +@@ -2070,7 +4263,7 @@ + + PR tree-optimization/61289 + * tree-ssa-threadedge.c (invalidate_equivalences): Remove SRC_MAP and +- DST_MAP parameters. Invalidate by walking all the SSA_NAME_VALUES ++ DST_MAP parameters. Invalidate by walking all the SSA_NAME_VALUES + looking for those which match LHS. All callers changed. + (record_temporary_equivalences_from_phis): Remove SRC_MAP and DST_MAP + parameters and code which manipulated them. All callers changed. +@@ -3074,10 +5267,10 @@ + * tree-ssa-propagate.c (valid_gimple_rhs_p): Only allow effective + boolean results for comparisons. + +-2014-04-22 Richard Biener ++2014-04-22 Richard Biener + + Backport from mainline +- 2014-04-17 Richard Biener ++ 2014-04-17 Richard Biener + + PR tree-optimization/60841 + * tree-vect-data-refs.c (vect_analyze_data_refs): Count stmts. +@@ -5078,7 +7271,7 @@ + PR ipa/60306 + + Revert: +- 2013-12-14 Jan Hubicka ++ 2013-12-14 Jan Hubicka + PR middle-end/58477 + * ipa-prop.c (stmt_may_be_vtbl_ptr_store): Skip clobbers. + +@@ -7970,7 +10163,7 @@ + * Makefile.in: Add vec.o to OBJS-libcommon + + 2014-01-23 Kirill Yukhin +- Ilya Tocar ++ Ilya Tocar + + * config/i386/avx512fintrin.h (_mm512_kmov): New. + * config/i386/i386.c (IX86_BUILTIN_KMOV16): Ditto. +Index: gcc/testsuite/gcc.target/powerpc/swaps-p8-12.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-12.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-12.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,56 @@ ++/* { dg-do compile { target { powerpc64le-*-* } } } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-mcpu=power8 -O3" } */ ++/* { dg-final { scan-assembler "lxvd2x" } } */ ++/* { dg-final { scan-assembler "stxvd2x" } } */ ++/* { dg-final { scan-assembler-not "xxpermdi" } } */ ++ ++#include "altivec.h" ++void abort (); ++ ++#define N 4096 ++int ca[N] __attribute__((aligned(16))); ++int cb[N] __attribute__((aligned(16))); ++int cc[N] __attribute__((aligned(16))); ++int cd[N] __attribute__((aligned(16))); ++int hey; ++ ++__attribute__((noinline)) void foo () ++{ ++ int i; ++ vector int va, vb, vc, vd, tmp; ++ vector unsigned int threes = vec_splat_u32(3); ++ for (i = 0; i < N; i+=4) { ++ vb = vec_vsx_ld (0, &cb[i]); ++ vc = vec_vsx_ld (0, &cc[i]); ++ vd = vec_vsx_ld (0, &cd[i]); ++ tmp = vec_add (vb, vc); ++ tmp = vec_sub (tmp, vd); ++ tmp = vec_sra (tmp, threes); ++ hey = tmp[3]; ++ vec_vsx_st (tmp, 0, &ca[i]); ++ } ++} ++ ++__attribute__((noinline)) void init () ++{ ++ int i; ++ for (i = 0; i < N; ++i) { ++ cb[i] = 3 * i - 2048; ++ cc[i] = -5 * i + 93; ++ cd[i] = i + 14; ++ } ++} ++ ++int main () ++{ ++ int i; ++ init (); ++ foo (); ++ for (i = 0; i < N; ++i) ++ if (ca[i] != (-3 * i - 1969) >> 3) ++ abort (); ++ if (hey != ca[N-1]) ++ abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/htm-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/htm-1.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/htm-1.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,52 @@ ++/* { dg-do run { target { powerpc*-*-* && htm_hw } } } */ ++/* { dg-require-effective-target powerpc_htm_ok } */ ++/* { dg-options "-mhtm" } */ ++ ++/* Program to test PowerPC HTM instructions. */ ++ ++#include ++#include ++ ++int ++main (void) ++{ ++ long i; ++ unsigned long mask = 0; ++ ++repeat: ++ if (__builtin_tbegin (0)) ++ { ++ mask++; ++ } ++ else ++ abort(); ++ ++ if (mask == 1) ++ { ++ __builtin_tsuspend (); ++ ++ if (_HTM_STATE (__builtin_tcheck ()) != _HTM_SUSPENDED) ++ abort (); ++ ++ __builtin_tresume (); ++ ++ if (_HTM_STATE (__builtin_tcheck ()) != _HTM_TRANSACTIONAL) ++ abort (); ++ } ++ else ++ mask++; ++ ++ if (_HTM_STATE (__builtin_tendall ()) != _HTM_TRANSACTIONAL) ++ abort (); ++ ++ if (mask == 1) ++ goto repeat; ++ ++ if (_HTM_STATE (__builtin_tendall ()) != _HTM_NONTRANSACTIONAL) ++ abort (); ++ ++ if (mask != 3) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/swaps-p8-5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-5.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-5.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,45 @@ ++/* { dg-do compile { target { powerpc64le-*-* } } } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-mcpu=power8 -O3" } */ ++/* { dg-final { scan-assembler "lxvd2x" } } */ ++/* { dg-final { scan-assembler "stxvd2x" } } */ ++/* { dg-final { scan-assembler-not "xxpermdi" } } */ ++ ++void abort (); ++ ++#define N 4096 ++int ca[N] __attribute__((aligned(16))); ++int cb[N] __attribute__((aligned(16))); ++int cc[N] __attribute__((aligned(16))); ++int cd[N] __attribute__((aligned(16))); ++ ++__attribute__((noinline)) void foo () ++{ ++ int i; ++ for (i = 0; i < N; i++) { ++ ca[i] = ((cb[i] + cc[i]) * cd[i]) >> 3; ++ } ++} ++ ++__attribute__((noinline)) void init () ++{ ++ int i; ++ for (i = 0; i < N; ++i) { ++ cb[i] = 3 * i - 2048; ++ cc[i] = -5 * i + 93; ++ cd[i] = i % 2 ? 1 : -1; ++ } ++} ++ ++int main () ++{ ++ int i; ++ init (); ++ foo (); ++ for (i = 0; i < N; ++i) ++ if (i % 2 == 1 && ca[i] != (-2 * i - 1955) >> 3) ++ abort (); ++ else if (i % 2 == 0 && ca[i] != (1955 + 2 * i) >> 3) ++ abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/swaps-p8-13.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-13.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-13.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,54 @@ ++/* { dg-do run { target { powerpc64le-*-* } } } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-mcpu=power8 -O3" } */ ++ ++#include ++void abort (); ++ ++#define N 4096 ++long long ca[N] __attribute__((aligned(16))); ++long long cb[N] __attribute__((aligned(16))); ++long long cc[N] __attribute__((aligned(16))); ++long long cd[N] __attribute__((aligned(16))); ++long long x; ++ ++__attribute__((noinline)) void foo () ++{ ++ int i; ++ vector long long va, vb, vc, vd, tmp; ++ volatile unsigned long long three = 3; ++ vector unsigned long long threes = vec_splats (three); ++ for (i = 0; i < N; i+=2) { ++ vb = vec_vsx_ld (0, (vector long long *)&cb[i]); ++ vc = vec_vsx_ld (0, (vector long long *)&cc[i]); ++ vd = vec_vsx_ld (0, (vector long long *)&cd[i]); ++ tmp = vec_add (vb, vc); ++ tmp = vec_sub (tmp, vd); ++ tmp = vec_sra (tmp, threes); ++ x = vec_extract (tmp, 0); ++ vec_vsx_st (tmp, 0, (vector long long *)&ca[i]); ++ } ++} ++ ++__attribute__((noinline)) void init () ++{ ++ int i; ++ for (i = 0; i < N; ++i) { ++ cb[i] = 3 * i - 2048; ++ cc[i] = -5 * i + 93; ++ cd[i] = i + 14; ++ } ++} ++ ++int main () ++{ ++ int i; ++ init (); ++ foo (); ++ for (i = 0; i < N; ++i) ++ if (ca[i] != (-3 * i - 1969) >> 3) ++ abort (); ++ if (x != ca[N-1]) ++ abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/swaps-p8-6.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-6.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-6.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,32 @@ ++/* { dg-do run { target { powerpc64le-*-* } } } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-mcpu=power8 -O3" } */ ++ ++void abort(); ++ ++#define N 16 ++ ++signed char ca[N] __attribute__((aligned(16))); ++signed char cb[] __attribute__((aligned(16))) ++ = {8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5, -6, -7}; ++signed char cc[] __attribute__((aligned(16))) ++ = {1, 1, 2, 2, 3, 3, 2, 2, 1, 1, 0, 0, -1, -1, -2, -2}; ++ ++__attribute__((noinline)) void foo () ++{ ++ int i; ++ for (i = 0; i < N; i++) { ++ ca[i] = cb[i] - cc[i]; ++ } ++} ++ ++int main () ++{ ++ signed char cd[] = {7, 6, 4, 3, 1, 0, 0, -1, -1, -2, -2, -3, -3, -4, -4, -5}; ++ int i; ++ foo (); ++ for (i = 0; i < N; ++i) ++ if (ca[i] != cd[i]) ++ abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/swaps-p8-14.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-14.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-14.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,43 @@ ++/* { dg-do compile { target { powerpc64le-*-* } } } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-mcpu=power8 -O3" } */ ++/* { dg-final { scan-assembler "lxvd2x" } } */ ++/* { dg-final { scan-assembler "stxvd2x" } } */ ++/* { dg-final { scan-assembler "stxsdx" } } */ ++/* { dg-final { scan-assembler-times "xxpermdi" 1 } } */ ++ ++/* The only xxpermdi expected is for the vec_splats. */ ++ ++#include ++void abort (); ++ ++#define N 4096 ++long long ca[N] __attribute__((aligned(16))); ++long long cb[N] __attribute__((aligned(16))); ++long long cc[N] __attribute__((aligned(16))); ++long long cd[N] __attribute__((aligned(16))); ++long long x; ++ ++__attribute__((noinline)) void foo () ++{ ++ int i; ++ vector long long va, vb, vc, vd, tmp; ++ volatile unsigned long long three = 3; ++ vector unsigned long long threes = vec_splats (three); ++ for (i = 0; i < N; i+=2) { ++ vb = vec_vsx_ld (0, (vector long long *)&cb[i]); ++ vc = vec_vsx_ld (0, (vector long long *)&cc[i]); ++ vd = vec_vsx_ld (0, (vector long long *)&cd[i]); ++ tmp = vec_add (vb, vc); ++ tmp = vec_sub (tmp, vd); ++ tmp = vec_sra (tmp, threes); ++ x = vec_extract (tmp, 0); ++ vec_vsx_st (tmp, 0, (vector long long *)&ca[i]); ++ } ++} ++ ++int main () ++{ ++ foo (); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-vectorize-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-2.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-2.c (.../branches/gcc-4_9-branch) +@@ -58,7 +58,7 @@ + } + + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" {xfail {! vect_hw_misalign } } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" {xfail { {! vect_hw_misalign } || powerpc*-*-* } } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 0 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" {xfail {! vect_hw_misalign } } } } */ ++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" {xfail { {! vect_hw_misalign } || powerpc*-*-* } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.target/powerpc/pr64505.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr64505.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr64505.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,231 @@ ++/* { dg-do compile { target { powerpc*-*-* && ilp32 } } } */ ++/* { dg-options "-O2 -mpowerpc64" } */ ++ ++/* ++ * (below is inlined and simplified from previously included headers) ++ */ ++ ++struct fltcom_st { ++ short fltbuf[950]; ++} fltcom_ __attribute__((common)) ; ++#define CM_PLIBOR (*(((double *)&fltcom_ + 1))) ++#define CM_QMRG (*(((double *)&fltcom_ + 2))) ++ ++struct fltcom2_st { ++ short fltbuf2[56]; ++} fltcom2_ __attribute__((common)) ; ++#define CM_FLPRV ((short *)&fltcom2_ + 17) ++#define CM_FLNXT ((short *)&fltcom2_ + 20) ++#define CM_FLCPN (*(((double *)&fltcom2_))) ++#define CM_FLCNT (*(((short *)&fltcom2_ + 12))) ++ ++struct aidatcm_st { ++ double cm_aid, cm_ext, cm_basis; ++ short cm_aiday, cm_exday, cm_dperd, cm_aiexf, cm_aidex, cm_aiok, ++ cm_aigdo, cm_aildo, cm_prev[3], cm_next[3], cm_aid_pad[2]; ++ double cm_rvgfact, cm_ai1st, cm_ai2nd; ++ int cm_aieurok; ++} aidatcm_ __attribute__((common)) ; ++#define CM_EXDAY aidatcm_.cm_exday ++#define CM_BASIS aidatcm_.cm_basis ++#define CM_PREV aidatcm_.cm_prev ++ ++struct cshfcm_st { ++ short bufff[10862]; ++} cshfcm_ __attribute__((common)) ; ++#define CM_FNUM (*(((short *)&cshfcm_ + 9038))) ++#define CM_FIFLX ((double *)&cshfcm_ + 1) ++#define CM_FEXTX ((double *)&cshfcm_ + 1201) ++#define CM_FSHDT ((short *)&cshfcm_ + 7230) ++ ++struct calctsdb_st { ++ short calctsdbbuff[115]; ++} calctsdb_ __attribute__((common)) ; ++#define CM_CTUP_GOOD_TO_GO (*(((short *)&calctsdb_ + 16))) ++#define CM_PAYMENT_FREQUENCY (*(((short *)&calctsdb_ + 61))) ++#define CM_DISCOUNTING_DAYTYP (*(((short *)&calctsdb_ + 59))) ++ ++struct cf600cm_st { ++ short bufcf[14404]; ++} cf600cm_ __attribute__((common)) ; ++#define CM_FLT_RFIXRATES ((double *)&cf600cm_ + 600) ++ ++typedef struct { int id; int type; const char *name; } bregdb_bitinfo_t; ++ ++int ++bregdb_eval_bbitcxt_bool_rv(const bregdb_bitinfo_t * const bbit, ++ const int bbit_default, ++ const void * const bregucxt); ++ ++static const bregdb_bitinfo_t bbit_calc_dr_d33 = ++ { 160667, 5, "bbit_calc_dr_d33" }; ++#define bbit_calc_dr_d33__value() \ ++ bregdb_eval_bbitcxt_bool_rv(&bbit_calc_dr_d33, 0, 0) ++static const bregdb_bitinfo_t bbit_calc_sx_b24 = ++ { 158854, 5, "bbit_calc_sx_b24" }; ++#define bbit_calc_sx_b24__value() \ ++ bregdb_eval_bbitcxt_bool_rv(&bbit_calc_sx_b24, 0, 0) ++static const bregdb_bitinfo_t bbit_calc_dr_d36 = ++ { 161244, 5, "bbit_calc_dr_d36" }; ++#define bbit_calc_dr_d36__value() \ ++ bregdb_eval_bbitcxt_bool_rv(&bbit_calc_dr_d36, 0, 0) ++static const bregdb_bitinfo_t bbit_calc_dr_d37 = ++ { 161315, 5, "bbit_calc_dr_d37" }; ++#define bbit_calc_dr_d37__value() \ ++ bregdb_eval_bbitcxt_bool_rv(&bbit_calc_dr_d37, 0, 0) ++static const bregdb_bitinfo_t bbit_calc_dr_d47 = ++ { 163259, 5, "bbit_calc_dr_d47" }; ++#define bbit_calc_dr_d47__value() \ ++ bregdb_eval_bbitcxt_bool_rv(&bbit_calc_dr_d47, 0, 0) ++static const bregdb_bitinfo_t bbit_calc_dr_d46 = ++ { 163239, 5, "bbit_calc_dr_d46" }; ++#define bbit_calc_dr_d46__value() \ ++ bregdb_eval_bbitcxt_bool_rv(&bbit_calc_dr_d46, 0, 0) ++static const bregdb_bitinfo_t bbit_calc_dr_d62 = ++ { 166603, 5, "bbit_calc_dr_d62" }; ++#define bbit_calc_dr_d62__value() \ ++ bregdb_eval_bbitcxt_bool_rv(&bbit_calc_dr_d62, 0, 0) ++ ++ ++ ++int dtyp_is_actact_(short *daytyp); ++double rnd_trunc_numb(double in, short num_digits, short rnd_or_trunc); ++void datetrn_(const short* dt, short* dt2); ++short difday_(short* daytyp_in, short* srtdti, short* enddti, short* ercode); ++ ++ ++double pow(double x, double y); ++ ++ ++/* ++ * (above is inlined and simplified from previously included headers) ++ */ ++ ++ ++void calc_1566( ++ short sCalcType, ++ short sDayType, ++ short sFreq, ++ short asSettleDt[3], ++ short asMtyDt[3], ++ short asIssueDt[3], ++ short asFCpnDt[3], ++ double dCpn, ++ short *psNoPer, ++ double *pdExt, ++ double *pdAI, ++ double *pdAI2, ++ double *pdFCpn, ++ short *psRcode) ++{ ++ ++ short ercode = 0; ++ int isactact; ++ short days_to_next_cpn = 0; ++ const short discDaytype = CM_DISCOUNTING_DAYTYP; ++ int j; ++ ++ if(bbit_calc_sx_b24__value()) ++ isactact = (dtyp_is_actact_(&sDayType) != 0); ++ else ++ isactact = (sDayType == 1 || sDayType == 10); ++ ++ short days_in_current_period = difday_(&sDayType,CM_FLPRV,CM_FLNXT,&ercode); ++ const short sfreq1 = (CM_CTUP_GOOD_TO_GO == 1 && CM_PAYMENT_FREQUENCY == 1); ++ ++ for (j = 0; j < CM_FNUM; j++) { ++ ++ if(j == 0) { ++ days_to_next_cpn = difday_(&sDayType,asSettleDt,CM_FLNXT,&ercode); ++ ++ if(isactact) { ++ CM_FIFLX[j] = CM_FLCPN / sFreq; ++ CM_FEXTX[j] = (double)days_to_next_cpn / (double)days_in_current_period; ++ } ++ else { ++ CM_FIFLX[j] = CM_FLCPN * days_in_current_period; ++ CM_FEXTX[j] = (double)days_to_next_cpn / (double)(1/sfreq1); ++ } ++ ++ if(CM_FNUM == 1) { ++ CM_FEXTX[j] = (double)days_to_next_cpn / ((double)1/sfreq1); ++ } ++ } ++ else { ++ ++ short days_from_settle, days_in_period; ++ ++ if(bbit_calc_dr_d46__value()){ ++ days_from_settle = difday_(&sDayType,asSettleDt, ++ &CM_FSHDT[j*3],&ercode); ++ days_in_period = difday_(&sDayType,&CM_FSHDT[(j-1)*3], ++ &CM_FSHDT[j*3],&ercode); ++ } ++ ++ double cpn_rate = CM_PLIBOR; ++ ++ if(bbit_calc_dr_d62__value()) { ++ if(j < CM_FLCNT && CM_FLT_RFIXRATES[j] != 0) cpn_rate = CM_FLT_RFIXRATES[j]; ++ } ++ else { ++ if(j < CM_FLCNT ) cpn_rate = CM_FLT_RFIXRATES[j]; ++ } ++ ++ if(bbit_calc_dr_d37__value()&& j >= CM_FLCNT && sCalcType == 1570) { ++ cpn_rate = CM_PLIBOR + CM_QMRG; ++ ++ if(bbit_calc_dr_d36__value()){ ++ double projected_rate = pow((1 + CM_PLIBOR/100.0), ++ (days_in_period)) - 1; ++ ++ projected_rate = projected_rate + CM_QMRG/100.0 * days_in_period; ++ cpn_rate = 100 * projected_rate * (1/days_in_period); ++ } ++ } ++ ++ ++ if(isactact) { ++ CM_FIFLX[j] = cpn_rate / sFreq; ++ CM_FEXTX[j] = CM_FEXTX[j-1] + 1; ++ ++ if(bbit_calc_dr_d46__value() && discDaytype != 0) { ++ CM_FEXTX[j] = (double)days_from_settle / (double)(1/sfreq1); ++ } ++ } ++ else { ++ if(!bbit_calc_dr_d46__value()){ ++ days_from_settle = difday_(&sDayType,asSettleDt, ++ &CM_FSHDT[j*3],&ercode); ++ days_in_period = difday_(&sDayType,&CM_FSHDT[(j-1)*3], ++ &CM_FSHDT[j*3],&ercode); ++ ++ } ++ ++ CM_FIFLX[j] = cpn_rate * days_in_period; ++ CM_FEXTX[j] = (double)days_from_settle / (double)(1/sfreq1); ++ } ++ ++ } ++ ++ if(bbit_calc_dr_d33__value() && CM_CTUP_GOOD_TO_GO != 0) { ++ CM_FIFLX[j] = rnd_trunc_numb (CM_FIFLX[j], 0, 0); ++ } ++ ++ } ++ ++ ++ short accrued_days = difday_(&sDayType,CM_FLPRV,asSettleDt,&ercode); ++ ++ if(!bbit_calc_dr_d47__value()) { ++ if(isactact) { ++ *pdAI = (CM_FLCPN / sFreq)* accrued_days / ((double)days_in_current_period); ++ } ++ else{ ++ *pdAI = (CM_FLCPN / sFreq)* accrued_days / ((double)1/sFreq); ++ } ++ } ++ ++ CM_EXDAY = days_to_next_cpn; ++ CM_BASIS = days_in_current_period; ++ datetrn_(CM_FLPRV,CM_PREV); ++} +Index: gcc/testsuite/gcc.target/powerpc/swaps-p8-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-7.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-7.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,38 @@ ++/* { dg-do run { target { powerpc64le-*-* } } } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-mcpu=power8 -O3" } */ ++ ++void abort (); ++ ++#define N 256 ++signed char ca[N] __attribute__((aligned(16))); ++signed char cb[N] __attribute__((aligned(16))); ++signed char cc[N] __attribute__((aligned(16))); ++ ++__attribute__((noinline)) void foo () ++{ ++ int i; ++ for (i = 0; i < N; i++) { ++ ca[i] = cb[i] - cc[i]; ++ } ++} ++ ++__attribute__((noinline)) void init () ++{ ++ int i; ++ for (i = 0; i < N; ++i) { ++ cb[i] = i - 128; ++ cc[i] = i/2 - 64; ++ } ++} ++ ++int main () ++{ ++ int i; ++ init (); ++ foo (); ++ for (i = 0; i < N; ++i) ++ if (ca[i] != i - i/2 - 64) ++ abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/swaps-p8-15.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-15.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-15.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,51 @@ ++/* { dg-do compile { target { powerpc64le-*-* } } } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-mcpu=power8 -O3" } */ ++/* { dg-final { scan-assembler "lxvd2x" } } */ ++/* { dg-final { scan-assembler "stxvd2x" } } */ ++/* { dg-final { scan-assembler "xxspltw" } } */ ++ ++/* Currently the analyze_swaps phase cannot optimize this loop because ++ of the presence of an UNSPEC_VSX_CVDPSPN. At such time as this is ++ handled, we need to add a 'scan-assembler-not "xxpermdi"' directive to ++ this test. */ ++#include ++void abort(); ++ ++#define N 4096 ++#define M 10000000 ++vector float ca[N][4] = {0}; ++vector float cb[N][4] = {0}; ++vector float cc[N][4] = {0}; ++ ++__attribute__((noinline)) void foo () ++{ ++ int i; ++ for (i = 0; i < N; i++) { ++ cc[i][0] = vec_mul(vec_splats(cb[i][0][0]), ca[i][0]); ++ cc[i][0] = vec_madd(cc[i][0],vec_splats(cb[i][0][1]), ca[i][1]); ++ cc[i][0] = vec_madd(cc[i][0],vec_splats(cb[i][0][2]), ca[i][2]); ++ cc[i][0] = vec_madd(cc[i][0],vec_splats(cb[i][0][3]), ca[i][3]); ++ ++ cc[i][1] = vec_mul(vec_splats(cb[i][1][0]), ca[i][0]); ++ cc[i][1] = vec_madd(cc[i][0],vec_splats(cb[i][1][1]), ca[i][1]); ++ cc[i][1] = vec_madd(cc[i][0],vec_splats(cb[i][1][2]), ca[i][2]); ++ cc[i][1] = vec_madd(cc[i][0],vec_splats(cb[i][1][3]), ca[i][3]); ++ ++ cc[i][2] = vec_mul(vec_splats(cb[i][2][0]), ca[i][0]); ++ cc[i][2] = vec_madd(cc[i][0],vec_splats(cb[i][2][1]), ca[i][1]); ++ cc[i][2] = vec_madd(cc[i][0],vec_splats(cb[i][2][2]), ca[i][2]); ++ cc[i][2] = vec_madd(cc[i][0],vec_splats(cb[i][2][3]), ca[i][3]); ++ ++ cc[i][3] = vec_mul(vec_splats(cb[i][3][0]), ca[i][0]); ++ cc[i][3] = vec_madd(cc[i][0],vec_splats(cb[i][3][1]), ca[i][1]); ++ cc[i][3] = vec_madd(cc[i][0],vec_splats(cb[i][3][2]), ca[i][2]); ++ cc[i][3] = vec_madd(cc[i][0],vec_splats(cb[i][3][3]), ca[i][3]); ++ } ++} ++ ++int main () ++{ ++ foo (); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/pr60158.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr60158.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr60158.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,89 @@ ++/* { dg-do compile } */ ++/* { dg-skip-if "not an SPE target" { ! powerpc_spe_nocache } { "*" } { "" } } */ ++/* { dg-options "-mcpu=8548 -mno-spe -mfloat-gprs=double -Os -fdata-sections -fpic -mrelocatable" } */ ++ ++#define NULL 0 ++int func (int val); ++void *func2 (void *ptr); ++ ++static const char *ifs; ++static char map[256]; ++ ++typedef struct { ++/* None of these fields are used, but removing any ++ of them makes the problem go away. */ ++ char *data; ++ int length; ++ int maxlen; ++ int quote; ++} o_string; ++ ++#define NULL_O_STRING {NULL,0,0,0} ++ ++static int parse_stream (void *dest, void *ctx) ++{ ++ int ch = func (0), m; ++ ++ while (ch != -1) { ++ m = map[ch]; ++ if (ch != '\n') ++ func2(dest); ++ ++ ctx = func2 (ctx); ++ if (!func (0)) ++ return 0; ++ if (m != ch) { ++ func2 ("htns"); ++ break; ++ } ++ } ++ return -1; ++} ++ ++static void mapset (const char *set, int code) ++{ ++ const char *s; ++ for (s=set; *s; s++) map[(int)*s] = code; ++} ++ ++static void update_ifs_map(void) ++{ ++ /* char *ifs and char map[256] are both globals. */ ++ ifs = func2 ("abc"); ++ if (ifs == NULL) ifs="def"; ++ ++ func2 (map); ++ { ++ char subst[2] = {4, 0}; ++ mapset (subst, 3); ++ } ++ mapset (";&|#", 1); ++} ++ ++int parse_stream_outer (int flag) ++{ ++ int blah; ++ o_string temp=NULL_O_STRING; ++ int rcode; ++ ++ do { ++ update_ifs_map (); ++ func2 (&blah); /* a memory clobber works as well. */ ++ rcode = parse_stream (&temp, NULL); ++ func2 ("aoeu"); ++ if (func (0) != 0) { ++ func2 (NULL); ++ } ++ } while (rcode != -1); ++ return 0; ++} ++ ++/* { dg-final { if ![file exists pr60158.s] { fail "pr60158.c (compile)"; return; } } } */ ++ ++/* { dg-final { set c_rel [llength [grep pr60158.s \\.data\\.rel\\.ro\\.local]] } } */ ++/* { dg-final { set c_fix [llength [grep pr60158.s \\.fixup]] } } */ ++/* { dg-final { if [string match $c_rel $c_fix] \{ } } */ ++/* { dg-final { pass "pr60158.c (passed)" } } */ ++/* { dg-final { \} else \{ } } */ ++/* { dg-final { fail "pr60158.c (.fixup table entries not generated for .data.rel.ro.local section)" } } */ ++/* { dg-final { \} } } */ +Index: gcc/testsuite/gcc.target/powerpc/builtins-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/builtins-1.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/builtins-1.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,166 @@ ++/* { dg-do compile { target { powerpc64le-*-* } } } */ ++/* { dg-options "-mcpu=power8 -O0" } */ ++ ++/* Test that a number of newly added builtin overloads are accepted ++ by the compiler. */ ++ ++#include ++ ++vector double y = { 2.0, 4.0 }; ++vector double z; ++ ++int main () ++{ ++ vector float fa = {1.0, 2.0, 3.0, -4.0}; ++ vector float fb = {-2.0, -3.0, -4.0, -5.0}; ++ vector float fc = vec_cpsgn (fa, fb); ++ ++ vector long long la = {5L, 14L}; ++ vector long long lb = {3L, 86L}; ++ vector long long lc = vec_and (la, lb); ++ vector bool long long ld = {0, -1}; ++ vector long long le = vec_and (la, ld); ++ vector long long lf = vec_and (ld, lb); ++ ++ vector unsigned long long ua = {5L, 14L}; ++ vector unsigned long long ub = {3L, 86L}; ++ vector unsigned long long uc = vec_and (ua, ub); ++ vector bool long long ud = {0, -1}; ++ vector unsigned long long ue = vec_and (ua, ud); ++ vector unsigned long long uf = vec_and (ud, ub); ++ ++ vector long long lg = vec_andc (la, lb); ++ vector long long lh = vec_andc (la, ld); ++ vector long long li = vec_andc (ld, lb); ++ ++ vector unsigned long long ug = vec_andc (ua, ub); ++ vector unsigned long long uh = vec_andc (ua, ud); ++ vector unsigned long long ui = vec_andc (ud, ub); ++ ++ vector double da = {1.0, -4.0}; ++ vector double db = {-2.0, 5.0}; ++ vector double dc = vec_cpsgn (da, db); ++ ++ vector long long lj = vec_mergeh (la, lb); ++ vector long long lk = vec_mergeh (la, ld); ++ vector long long ll = vec_mergeh (ld, la); ++ ++ vector unsigned long long uj = vec_mergeh (ua, ub); ++ vector unsigned long long uk = vec_mergeh (ua, ud); ++ vector unsigned long long ul = vec_mergeh (ud, ua); ++ ++ vector long long lm = vec_mergel (la, lb); ++ vector long long ln = vec_mergel (la, ld); ++ vector long long lo = vec_mergel (ld, la); ++ ++ vector unsigned long long um = vec_mergel (ua, ub); ++ vector unsigned long long un = vec_mergel (ua, ud); ++ vector unsigned long long uo = vec_mergel (ud, ua); ++ ++ vector long long lp = vec_nor (la, lb); ++ vector long long lq = vec_nor (la, ld); ++ vector long long lr = vec_nor (ld, la); ++ ++ vector unsigned long long up = vec_nor (ua, ub); ++ vector unsigned long long uq = vec_nor (ua, ud); ++ vector unsigned long long ur = vec_nor (ud, ua); ++ ++ vector long long ls = vec_or (la, lb); ++ vector long long lt = vec_or (la, ld); ++ vector long long lu = vec_or (ld, la); ++ ++ vector unsigned long long us = vec_or (ua, ub); ++ vector unsigned long long ut = vec_or (ua, ud); ++ vector unsigned long long uu = vec_or (ud, ua); ++ ++ vector unsigned char ca = {0,4,8,1,5,9,2,6,10,3,7,11,15,12,14,13}; ++ vector long long lv = vec_perm (la, lb, ca); ++ vector unsigned long long uv = vec_perm (ua, ub, ca); ++ ++ vector long long lw = vec_sel (la, lb, lc); ++ vector long long lx = vec_sel (la, lb, uc); ++ vector long long ly = vec_sel (la, lb, ld); ++ ++ vector unsigned long long uw = vec_sel (ua, ub, lc); ++ vector unsigned long long ux = vec_sel (ua, ub, uc); ++ vector unsigned long long uy = vec_sel (ua, ub, ld); ++ ++ vector long long lz = vec_xor (la, lb); ++ vector long long l0 = vec_xor (la, ld); ++ vector long long l1 = vec_xor (ld, la); ++ ++ vector unsigned long long uz = vec_xor (ua, ub); ++ vector unsigned long long u0 = vec_xor (ua, ud); ++ vector unsigned long long u1 = vec_xor (ud, ua); ++ ++ int ia = vec_all_eq (ua, ub); ++ int ib = vec_all_ge (ua, ub); ++ int ic = vec_all_gt (ua, ub); ++ int id = vec_all_le (ua, ub); ++ int ie = vec_all_lt (ua, ub); ++ int ig = vec_all_ne (ua, ub); ++ ++ int ih = vec_any_eq (ua, ub); ++ int ii = vec_any_ge (ua, ub); ++ int ij = vec_any_gt (ua, ub); ++ int ik = vec_any_le (ua, ub); ++ int il = vec_any_lt (ua, ub); ++ int im = vec_any_ne (ua, ub); ++ ++ vector int sia = {9, 16, 25, 36}; ++ vector int sib = {-8, -27, -64, -125}; ++ vector int sic = vec_mergee (sia, sib); ++ vector int sid = vec_mergeo (sia, sib); ++ ++ vector unsigned int uia = {9, 16, 25, 36}; ++ vector unsigned int uib = {8, 27, 64, 125}; ++ vector unsigned int uic = vec_mergee (uia, uib); ++ vector unsigned int uid = vec_mergeo (uia, uib); ++ ++ vector bool int bia = {0, -1, -1, 0}; ++ vector bool int bib = {-1, -1, 0, -1}; ++ vector bool int bic = vec_mergee (bia, bib); ++ vector bool int bid = vec_mergeo (bia, bib); ++ ++ vector unsigned int uie = vec_packsu (ua, ub); ++ ++ vector long long l2 = vec_cntlz (la); ++ vector unsigned long long u2 = vec_cntlz (ua); ++ vector int sie = vec_cntlz (sia); ++ vector unsigned int uif = vec_cntlz (uia); ++ vector short ssa = {20, -40, -60, 80, 100, -120, -140, 160}; ++ vector short ssb = vec_cntlz (ssa); ++ vector unsigned short usa = {81, 72, 63, 54, 45, 36, 27, 18}; ++ vector unsigned short usb = vec_cntlz (usa); ++ vector signed char sca = {-4, 3, -9, 15, -31, 31, 0, 0, ++ 1, 117, -36, 99, 98, 97, 96, 95}; ++ vector signed char scb = vec_cntlz (sca); ++ vector unsigned char cb = vec_cntlz (ca); ++ ++ vector double dd = vec_xl (0, &y); ++ vec_xst (dd, 0, &z); ++ ++ vector double de = vec_round (dd); ++ ++ vector double df = vec_splat (de, 0); ++ vector double dg = vec_splat (de, 1); ++ vector long long l3 = vec_splat (l2, 0); ++ vector long long l4 = vec_splat (l2, 1); ++ vector unsigned long long u3 = vec_splat (u2, 0); ++ vector unsigned long long u4 = vec_splat (u2, 1); ++ vector bool long long l5 = vec_splat (ld, 0); ++ vector bool long long l6 = vec_splat (ld, 1); ++ ++ vector long long l7 = vec_div (l3, l4); ++ vector unsigned long long u5 = vec_div (u3, u4); ++ ++ vector long long l8 = vec_mul (l3, l4); ++ vector unsigned long long u6 = vec_mul (u3, u4); ++ ++ vector double dh = vec_ctf (la, -2); ++ vector double di = vec_ctf (ua, 2); ++ vector long long l9 = vec_cts (dh, -2); ++ vector unsigned long long u7 = vec_ctu (di, 2); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/swaps-p8-8.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-8.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-8.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,40 @@ ++/* { dg-do run { target { powerpc64le-*-* } } } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-mcpu=power8 -O3" } */ ++ ++void abort (); ++ ++#define N 4096 ++signed char ca[N] __attribute__((aligned(16))); ++signed char cb[N] __attribute__((aligned(16))); ++signed char cc[N] __attribute__((aligned(16))); ++ ++__attribute__((noinline)) void foo () ++{ ++ int i; ++ for (i = 0; i < N; i++) { ++ ca[i] = cb[i] - cc[i]; ++ } ++} ++ ++__attribute__((noinline)) void init () ++{ ++ int i, ii; ++ for (i = 0, ii = 0; i < N; ++i, ii = (ii + 1) % 128) { ++ cb[i] = ii - 128; ++ cc[i] = ii/2 - 64; ++ } ++} ++ ++int main () ++{ ++ int i, ii; ++ init (); ++ foo (); ++ for (i = 0; i < N; ++i) { ++ ii = i % 128; ++ if (ca[i] != ii - ii/2 - 64) ++ abort (); ++ } ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/pr65456.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr65456.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr65456.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,65 @@ ++/* { dg-do compile { target { powerpc64le-*-* } } } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc64le-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-mcpu=power8 -O3" } */ ++ ++/* Verify that swap optimization properly removes swaps for unaligned ++ vector stores. See PR65456. */ ++ ++typedef unsigned char UChar; ++typedef unsigned short UShort; ++typedef unsigned int UWord; ++ ++typedef unsigned long SizeT; ++typedef unsigned long Addr; ++ ++void *memmove(void *dst, const void *src, SizeT len) ++{ ++ const Addr WS = sizeof(UWord);/* 8 or 4 */ ++ const Addr WM = WS - 1;/* 7 or 3 */ ++ ++ /* Copying backwards. */ ++ SizeT n = len; ++ Addr d = (Addr) dst; ++ Addr s = (Addr) src; ++ ++ if (((s ^ d) & WM) == 0) { ++ /* s and d have same UWord alignment. */ ++ /* Pull up to a UWord boundary. */ ++ while ((s & WM) != 0 && n >= 1) { ++ *(UChar *) d = *(UChar *) s; ++ s += 1; ++ d += 1; ++ n -= 1; ++ } ++ /* Copy UWords. */ ++ while (n >= WS) { ++ *(UWord *) d = *(UWord *) s; ++ s += WS; ++ d += WS; ++ n -= WS; ++ } ++ if (n == 0) ++ return dst; ++ } ++ if (((s | d) & 1) == 0) { ++ /* Both are 16-aligned; copy what we can thusly. */ ++ while (n >= 2) { ++ *(UShort *) d = *(UShort *) s; ++ s += 2; ++ d += 2; ++ n -= 2; ++ } ++ } ++ /* Copy leftovers, or everything if misaligned. */ ++ while (n >= 1) { ++ *(UChar *) d = *(UChar *) s; ++ s += 1; ++ d += 1; ++ n -= 1; ++ } ++ ++ return dst; ++} ++ ++/* { dg-final { scan-assembler-not "xxpermdi" } } */ ++/* { dg-final { scan-assembler-not "xxswapd" } } */ +Index: gcc/testsuite/gcc.target/powerpc/swaps-p8-16.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-16.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-16.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,57 @@ ++/* { dg-do compile { target { powerpc64le-*-* } } } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-mcpu=power8 -O3" } */ ++/* { dg-final { scan-assembler "lxvd2x" } } */ ++/* { dg-final { scan-assembler "stxvd2x" } } */ ++/* { dg-final { scan-assembler "vspltw" } } */ ++/* { dg-final { scan-assembler-not "xxpermdi" } } */ ++ ++#include ++void abort(); ++ ++typedef struct xx {vector double l; vector double h;} xx; ++ ++#define N 4096 ++#define M 10000000 ++vector float ca[N][4] = {0}; ++vector float cb[N][4] = {0}; ++vector float cc[N][4] = {0}; ++ ++__attribute__((noinline)) void foo () ++{ ++ int i; ++ vector float brow; ++ ++ for (i = 0; i < N; i++) { ++ ++ brow = cb[i][0]; ++ cc[i][0] = vec_mul(vec_splats(brow[0]), ca[i][0]); ++ cc[i][0] = vec_madd(cc[i][0],vec_splats(brow[1]), ca[i][1]); ++ cc[i][0] = vec_madd(cc[i][0],vec_splats(brow[2]), ca[i][2]); ++ cc[i][0] = vec_madd(cc[i][0],vec_splats(brow[3]), ca[i][3]); ++ ++ brow = cb[i][1]; ++ cc[i][1] = vec_mul(vec_splats(brow[0]), ca[i][0]); ++ cc[i][1] = vec_madd(cc[i][0],vec_splats(brow[1]), ca[i][1]); ++ cc[i][1] = vec_madd(cc[i][0],vec_splats(brow[2]), ca[i][2]); ++ cc[i][1] = vec_madd(cc[i][0],vec_splats(brow[3]), ca[i][3]); ++ ++ brow = cb[i][2]; ++ cc[i][2] = vec_mul(vec_splats(brow[0]), ca[i][0]); ++ cc[i][2] = vec_madd(cc[i][0],vec_splats(brow[1]), ca[i][1]); ++ cc[i][2] = vec_madd(cc[i][0],vec_splats(brow[2]), ca[i][2]); ++ cc[i][2] = vec_madd(cc[i][0],vec_splats(brow[3]), ca[i][3]); ++ ++ brow = cb[i][3]; ++ cc[i][3] = vec_mul(vec_splats(brow[0]), ca[i][0]); ++ cc[i][3] = vec_madd(cc[i][0],vec_splats(brow[1]), ca[i][1]); ++ cc[i][3] = vec_madd(cc[i][0],vec_splats(brow[2]), ca[i][2]); ++ cc[i][3] = vec_madd(cc[i][0],vec_splats(brow[3]), ca[i][3]); ++ } ++} ++ ++int main () ++{ ++ foo (); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/builtins-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/builtins-2.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/builtins-2.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,47 @@ ++/* { dg-do run { target { powerpc64le-*-* } } } */ ++/* { dg-options "-mcpu=power8 " } */ ++ ++#include ++ ++void abort (void); ++ ++int main () ++{ ++ vector long long sa = {27L, -14L}; ++ vector long long sb = {-9L, -2L}; ++ ++ vector unsigned long long ua = {27L, 14L}; ++ vector unsigned long long ub = {9L, 2L}; ++ ++ vector long long sc = vec_div (sa, sb); ++ vector unsigned long long uc = vec_div (ua, ub); ++ ++ if (sc[0] != -3L || sc[1] != 7L || uc[0] != 3L || uc[1] != 7L) ++ abort (); ++ ++ vector long long sd = vec_mul (sa, sb); ++ vector unsigned long long ud = vec_mul (ua, ub); ++ ++ if (sd[0] != -243L || sd[1] != 28L || ud[0] != 243L || ud[1] != 28L) ++ abort (); ++ ++ vector long long se = vec_splat (sa, 0); ++ vector long long sf = vec_splat (sa, 1); ++ vector unsigned long long ue = vec_splat (ua, 0); ++ vector unsigned long long uf = vec_splat (ua, 1); ++ ++ if (se[0] != 27L || se[1] != 27L || sf[0] != -14L || sf[1] != -14L ++ || ue[0] != 27L || ue[1] != 27L || uf[0] != 14L || uf[1] != 14L) ++ abort (); ++ ++ vector double da = vec_ctf (sa, -2); ++ vector double db = vec_ctf (ua, 2); ++ vector long long sg = vec_cts (da, -2); ++ vector unsigned long long ug = vec_ctu (db, 2); ++ ++ if (da[0] != 108.0 || da[1] != -56.0 || db[0] != 6.75 || db[1] != 3.5 ++ || sg[0] != 27L || sg[1] != -14L || ug[0] != 27L || ug[1] != 14L) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-vectorize-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-4.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-4.c (.../branches/gcc-4_9-branch) +@@ -54,7 +54,7 @@ + } + + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" {xfail {! vect_hw_misalign } } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" {xfail { {! vect_hw_misalign } || powerpc*-*-* } } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 0 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 3 "vect" {xfail {! vect_hw_misalign } } } } */ ++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 3 "vect" {xfail { {! vect_hw_misalign } || powerpc*-*-* } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.target/powerpc/swaps-p8-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-1.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-1.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,35 @@ ++/* { dg-do compile { target { powerpc64le-*-* } } } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-mcpu=power8 -O3" } */ ++/* { dg-final { scan-assembler "lxvd2x" } } */ ++/* { dg-final { scan-assembler "stxvd2x" } } */ ++/* { dg-final { scan-assembler-not "xxpermdi" } } */ ++ ++void abort(); ++ ++#define N 16 ++ ++signed char ca[N] __attribute__((aligned(16))); ++signed char cb[] __attribute__((aligned(16))) ++ = {8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5, -6, -7}; ++signed char cc[] __attribute__((aligned(16))) ++ = {1, 1, 2, 2, 3, 3, 2, 2, 1, 1, 0, 0, -1, -1, -2, -2}; ++ ++__attribute__((noinline)) void foo () ++{ ++ int i; ++ for (i = 0; i < N; i++) { ++ ca[i] = cb[i] - cc[i]; ++ } ++} ++ ++int main () ++{ ++ signed char cd[] = {7, 6, 4, 3, 1, 0, 0, -1, -1, -2, -2, -3, -3, -4, -4, -5}; ++ int i; ++ foo (); ++ for (i = 0; i < N; ++i) ++ if (ca[i] != cd[i]) ++ abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/crypto-builtin-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/crypto-builtin-2.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/crypto-builtin-2.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,36 @@ ++/* { dg-do compile { target { powerpc*-*-* } } } */ ++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ ++/* { dg-require-effective-target powerpc_p8vector_ok } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-O2 -mcpu=power8 -mno-crypto" } */ ++ ++void use_builtins_d (__vector unsigned long long *p, __vector unsigned long long *q, __vector unsigned long long *r, __vector unsigned long long *s) ++{ ++ p[0] = __builtin_crypto_vcipher (q[0], r[0]); /* { dg-error "Builtin function __builtin_crypto_vcipher is not supported with the current options" } */ ++ p[1] = __builtin_crypto_vcipherlast (q[1], r[1]); /* { dg-error "Builtin function __builtin_crypto_vcipherlast is not supported with the current options" } */ ++ p[2] = __builtin_crypto_vncipher (q[2], r[2]); /* { dg-error "Builtin function __builtin_crypto_vncipher is not supported with the current options" } */ ++ p[3] = __builtin_crypto_vncipherlast (q[3], r[3]); /* { dg-error "Builtin function __builtin_crypto_vncipherlast is not supported with the current options" } */ ++ p[4] = __builtin_crypto_vpermxor (q[4], r[4], s[4]); ++ p[5] = __builtin_crypto_vpmsumd (q[5], r[5]); ++ p[6] = __builtin_crypto_vshasigmad (q[6], 1, 15); /* { dg-error "Builtin function __builtin_crypto_vshasigmad is not supported with the current options" } */ ++ p[7] = __builtin_crypto_vsbox (q[7]); /* { dg-error "Builtin function __builtin_crypto_vsbox is not supported with the current options" } */ ++} ++ ++void use_builtins_w (__vector unsigned int *p, __vector unsigned int *q, __vector unsigned int *r, __vector unsigned int *s) ++{ ++ p[0] = __builtin_crypto_vpermxor (q[0], r[0], s[0]); ++ p[1] = __builtin_crypto_vpmsumw (q[1], r[1]); ++ p[2] = __builtin_crypto_vshasigmaw (q[2], 1, 15); /* { dg-error "Builtin function __builtin_crypto_vshasigmaw is not supported with the current options" } */ ++} ++ ++void use_builtins_h (__vector unsigned short *p, __vector unsigned short *q, __vector unsigned short *r, __vector unsigned short *s) ++{ ++ p[0] = __builtin_crypto_vpermxor (q[0], r[0], s[0]); ++ p[1] = __builtin_crypto_vpmsumh (q[1], r[1]); ++} ++ ++void use_builtins_b (__vector unsigned char *p, __vector unsigned char *q, __vector unsigned char *r, __vector unsigned char *s) ++{ ++ p[0] = __builtin_crypto_vpermxor (q[0], r[0], s[0]); ++ p[1] = __builtin_crypto_vpmsumb (q[1], r[1]); ++} +Index: gcc/testsuite/gcc.target/powerpc/swaps-p8-9.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-9.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-9.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,42 @@ ++/* { dg-do run { target { powerpc64le-*-* } } } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-mcpu=power8 -O3" } */ ++ ++void abort (); ++ ++#define N 4096 ++int ca[N] __attribute__((aligned(16))); ++int cb[N] __attribute__((aligned(16))); ++int cc[N] __attribute__((aligned(16))); ++int cd[N] __attribute__((aligned(16))); ++ ++__attribute__((noinline)) void foo () ++{ ++ int i; ++ for (i = 0; i < N; i++) { ++ ca[i] = (cb[i] + cc[i]) * cd[i]; ++ } ++} ++ ++__attribute__((noinline)) void init () ++{ ++ int i; ++ for (i = 0; i < N; ++i) { ++ cb[i] = 3 * i - 2048; ++ cc[i] = -5 * i + 93; ++ cd[i] = i % 2 ? 1 : -1; ++ } ++} ++ ++int main () ++{ ++ int i; ++ init (); ++ foo (); ++ for (i = 0; i < N; ++i) ++ if (i % 2 == 1 && ca[i] != -2 * i - 1955) ++ abort (); ++ else if (i % 2 == 0 && ca[i] != 1955 + 2 * i) ++ abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/swaps-p8-17.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-17.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-17.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,15 @@ ++/* { dg-do compile { target { powerpc64le-*-* } } } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-mcpu=power8 -O1" } */ ++/* { dg-final { scan-assembler "lxvd2x" } } */ ++/* { dg-final { scan-assembler "xxpermdi" } } */ ++ ++/* Verify that we don't try to do permute removal in the presence of ++ vec_ste. This used to ICE. */ ++#include ++ ++void f (void *p) ++{ ++ vector unsigned int u32 = vec_vsx_ld (1, (const unsigned int *)p); ++ vec_ste (u32, 1, (unsigned int *)p); ++} +Index: gcc/testsuite/gcc.target/powerpc/htm-builtin-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/htm-builtin-1.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/htm-builtin-1.c (.../branches/gcc-4_9-branch) +@@ -1,16 +1,16 @@ +-/* { dg-do compile { target { powerpc*-*-* } } } */ ++/* { dg-do assemble { target { powerpc*-*-* } } } */ + /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ + /* { dg-require-effective-target powerpc_htm_ok } */ +-/* { dg-options "-O2 -mhtm" } */ ++/* { dg-options "-O2 -mhtm -save-temps" } */ + + /* { dg-final { scan-assembler-times "tbegin\\." 1 } } */ + /* { dg-final { scan-assembler-times "tend\\." 2 } } */ + /* { dg-final { scan-assembler-times "tabort\\." 2 } } */ +-/* { dg-final { scan-assembler-times "tabortdc\\." 1 } } */ +-/* { dg-final { scan-assembler-times "tabortdci\\." 1 } } */ ++/* { dg-final { scan-assembler-times "tabortdc\\." 1 { target lp64 } } } */ ++/* { dg-final { scan-assembler-times "tabortdci\\." 1 { target lp64 } } } */ + /* { dg-final { scan-assembler-times "tabortwc\\." 1 } } */ + /* { dg-final { scan-assembler-times "tabortwci\\." 2 } } */ +-/* { dg-final { scan-assembler-times "tcheck\\." 1 } } */ ++/* { dg-final { scan-assembler-times "tcheck" 1 } } */ + /* { dg-final { scan-assembler-times "trechkpt\\." 1 } } */ + /* { dg-final { scan-assembler-times "treclaim\\." 1 } } */ + /* { dg-final { scan-assembler-times "tsr\\." 3 } } */ +@@ -25,12 +25,14 @@ + p[3] = __builtin_tabort (0); + p[4] = __builtin_tabort (code); + ++#ifdef __powerpc64__ + p[5] = __builtin_tabortdc (0xf, a[5], b[5]); + p[6] = __builtin_tabortdci (0xf, a[6], 13); ++#endif + p[7] = __builtin_tabortwc (0xf, a[7], b[7]); + p[8] = __builtin_tabortwci (0xf, a[8], 13); + +- p[9] = __builtin_tcheck (5); ++ p[9] = __builtin_tcheck (); + p[10] = __builtin_trechkpt (); + p[11] = __builtin_treclaim (0); + p[12] = __builtin_tresume (); +@@ -49,3 +51,4 @@ + __builtin_set_tfhar (a[22]); + __builtin_set_tfiar (a[23]); + } ++/* { dg-final { cleanup-saved-temps } } */ +Index: gcc/testsuite/gcc.target/powerpc/swaps-p8-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-2.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-2.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,41 @@ ++/* { dg-do compile { target { powerpc64le-*-* } } } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-mcpu=power8 -O3" } */ ++/* { dg-final { scan-assembler "lxvd2x" } } */ ++/* { dg-final { scan-assembler "stxvd2x" } } */ ++/* { dg-final { scan-assembler-not "xxpermdi" } } */ ++ ++void abort (); ++ ++#define N 256 ++signed char ca[N] __attribute__((aligned(16))); ++signed char cb[N] __attribute__((aligned(16))); ++signed char cc[N] __attribute__((aligned(16))); ++ ++__attribute__((noinline)) void foo () ++{ ++ int i; ++ for (i = 0; i < N; i++) { ++ ca[i] = cb[i] - cc[i]; ++ } ++} ++ ++__attribute__((noinline)) void init () ++{ ++ int i; ++ for (i = 0; i < N; ++i) { ++ cb[i] = i - 128; ++ cc[i] = i/2 - 64; ++ } ++} ++ ++int main () ++{ ++ int i; ++ init (); ++ foo (); ++ for (i = 0; i < N; ++i) ++ if (ca[i] != i - i/2 - 64) ++ abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/swaps-p8-10.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-10.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-10.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,42 @@ ++/* { dg-do run { target { powerpc64le-*-* } } } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-mcpu=power8 -O3" } */ ++ ++void abort (); ++ ++#define N 4096 ++int ca[N] __attribute__((aligned(16))); ++int cb[N] __attribute__((aligned(16))); ++int cc[N] __attribute__((aligned(16))); ++int cd[N] __attribute__((aligned(16))); ++ ++__attribute__((noinline)) void foo () ++{ ++ int i; ++ for (i = 0; i < N; i++) { ++ ca[i] = ((cb[i] + cc[i]) * cd[i]) >> 3; ++ } ++} ++ ++__attribute__((noinline)) void init () ++{ ++ int i; ++ for (i = 0; i < N; ++i) { ++ cb[i] = 3 * i - 2048; ++ cc[i] = -5 * i + 93; ++ cd[i] = i % 2 ? 1 : -1; ++ } ++} ++ ++int main () ++{ ++ int i; ++ init (); ++ foo (); ++ for (i = 0; i < N; ++i) ++ if (i % 2 == 1 && ca[i] != (-2 * i - 1955) >> 3) ++ abort (); ++ else if (i % 2 == 0 && ca[i] != (1955 + 2 * i) >> 3) ++ abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/swaps-p8-18.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-18.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-18.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,35 @@ ++/* { dg-do compile { target { powerpc64le-*-* } } } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-mcpu=power8 -O3" } */ ++/* { dg-final { scan-assembler-not "xxpermdi" } } */ ++ ++/* This is a test for a specific convert-splat permute removal. */ ++ ++void compute (float*, float*, float*, int, int); ++double test (void); ++double gorp; ++ ++int main (void) ++{ ++ float X[10000], Y[256], Z[2000]; ++ int i; ++ for (i = 0; i < 2500; i++) ++ compute (X, Y, Z, 256, 2000); ++ gorp = test (); ++} ++ ++void compute(float *X, float *Y, float *Z, int m, int n) ++{ ++ int i, j; ++ float w, *x, *y; ++ ++ for (i = 0; i < n; i++) ++ { ++ w = 0.0; ++ x = X++; ++ y = Y; ++ for (j = 0; j < m; j++) ++ w += (*x++) * (*y++); ++ Z[i] = w; ++ } ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-vectorize-6.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-6.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-6.c (.../branches/gcc-4_9-branch) +@@ -58,7 +58,7 @@ + } + + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" {xfail {! vect_hw_misalign } } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" {xfail { {! vect_hw_misalign } || powerpc*-*-* } } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 0 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" {xfail {! vect_hw_misalign } } } } */ ++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" {xfail { {! vect_hw_misalign } || powerpc*-*-* } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.target/powerpc/swaps-p8-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-3.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-3.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,43 @@ ++/* { dg-do compile { target { powerpc64le-*-* } } } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-mcpu=power8 -O3" } */ ++/* { dg-final { scan-assembler "lxvd2x" } } */ ++/* { dg-final { scan-assembler "stxvd2x" } } */ ++/* { dg-final { scan-assembler-not "xxpermdi" } } */ ++ ++void abort (); ++ ++#define N 4096 ++signed char ca[N] __attribute__((aligned(16))); ++signed char cb[N] __attribute__((aligned(16))); ++signed char cc[N] __attribute__((aligned(16))); ++ ++__attribute__((noinline)) void foo () ++{ ++ int i; ++ for (i = 0; i < N; i++) { ++ ca[i] = cb[i] - cc[i]; ++ } ++} ++ ++__attribute__((noinline)) void init () ++{ ++ int i, ii; ++ for (i = 0, ii = 0; i < N; ++i, ii = (ii + 1) % 128) { ++ cb[i] = ii - 128; ++ cc[i] = ii/2 - 64; ++ } ++} ++ ++int main () ++{ ++ int i, ii; ++ init (); ++ foo (); ++ for (i = 0; i < N; ++i) { ++ ii = i % 128; ++ if (ca[i] != ii - ii/2 - 64) ++ abort (); ++ } ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/pr53199.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr53199.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr53199.c (.../branches/gcc-4_9-branch) +@@ -1,7 +1,7 @@ + /* { dg-do compile { target { powerpc*-*-* } } } */ + /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ + /* { dg-options "-O2 -mcpu=power6 -mavoid-indexed-addresses" } */ +-/* { dg-final { scan-assembler-times "lwbrx" 6 } } */ ++/* { dg-final { scan-assembler-times "lwbrx" 12 } } */ + /* { dg-final { scan-assembler-times "stwbrx" 6 } } */ + + /* PR 51399: bswap gets an error if -mavoid-indexed-addresses was used in +@@ -25,6 +25,24 @@ + return __builtin_bswap64 (p[i]); + } + ++long long ++load64_reverse_4 (long long dummy __attribute__ ((unused)), long long *p) ++{ ++ return __builtin_bswap64 (*p); ++} ++ ++long long ++load64_reverse_5 (long long dummy __attribute__ ((unused)), long long *p) ++{ ++ return __builtin_bswap64 (p[1]); ++} ++ ++long long ++load64_reverse_6 (long long dummy __attribute__ ((unused)), long long *p, int i) ++{ ++ return __builtin_bswap64 (p[i]); ++} ++ + void + store64_reverse_1 (long long *p, long long x) + { +@@ -44,7 +62,13 @@ + } + + long long +-reg_reverse (long long x) ++reg_reverse_1 (long long x) + { + return __builtin_bswap64 (x); + } ++ ++long long ++reg_reverse_2 (long long dummy __attribute__ ((unused)), long long x) ++{ ++ return __builtin_bswap64 (x); ++} +Index: gcc/testsuite/gcc.target/powerpc/swaps-p8-11.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-11.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-11.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,53 @@ ++/* { dg-do run { target { powerpc64le-*-* } } } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-mcpu=power8 -O3" } */ ++ ++#include ++void abort (); ++ ++#define N 4096 ++int ca[N] __attribute__((aligned(16))); ++int cb[N] __attribute__((aligned(16))); ++int cc[N] __attribute__((aligned(16))); ++int cd[N] __attribute__((aligned(16))); ++int hey; ++ ++__attribute__((noinline)) void foo () ++{ ++ int i; ++ vector int va, vb, vc, vd, tmp; ++ vector unsigned int threes = vec_splat_u32(3); ++ for (i = 0; i < N; i+=4) { ++ vb = vec_vsx_ld (0, &cb[i]); ++ vc = vec_vsx_ld (0, &cc[i]); ++ vd = vec_vsx_ld (0, &cd[i]); ++ tmp = vec_add (vb, vc); ++ tmp = vec_sub (tmp, vd); ++ tmp = vec_sra (tmp, threes); ++ hey = tmp[3]; ++ vec_vsx_st (tmp, 0, &ca[i]); ++ } ++} ++ ++__attribute__((noinline)) void init () ++{ ++ int i; ++ for (i = 0; i < N; ++i) { ++ cb[i] = 3 * i - 2048; ++ cc[i] = -5 * i + 93; ++ cd[i] = i + 14; ++ } ++} ++ ++int main () ++{ ++ int i; ++ init (); ++ foo (); ++ for (i = 0; i < N; ++i) ++ if (ca[i] != (-3 * i - 1969) >> 3) ++ abort (); ++ if (hey != ca[N-1]) ++ abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-vectorize-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-7.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-7.c (.../branches/gcc-4_9-branch) +@@ -58,7 +58,7 @@ + } + + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" {xfail {! vect_hw_misalign } } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" {xfail { {! vect_hw_misalign } || powerpc*-*-* } } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 0 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" {xfail {! vect_hw_misalign } } } } */ ++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" {xfail { {! vect_hw_misalign } || powerpc*-*-* } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.target/powerpc/pr65787.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr65787.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr65787.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,21 @@ ++/* { dg-do compile { target { powerpc64le-*-* } } } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-mcpu=power8 -O3" } */ ++/* { dg-final { scan-assembler "xxsldwi \[0-9\]*,\[0-9\]*,\[0-9\]*,3" } } */ ++/* { dg-final { scan-assembler-not "xxpermdi" } } */ ++ ++/* This test verifies that a vector extract operand properly has its ++ lane changed by the swap optimization. Element 2 of LE corresponds ++ to element 1 of BE. When doublewords are swapped, this becomes ++ element 3 of BE, so we need to shift the vector left by 3 words ++ to be able to extract the correct value from BE element zero. */ ++ ++typedef float v4f32 __attribute__ ((__vector_size__ (16))); ++ ++void foo (float); ++extern v4f32 x, y; ++ ++int main() { ++ v4f32 z = x + y; ++ foo (z[2]); ++} +Index: gcc/testsuite/gcc.target/powerpc/swaps-p8-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-4.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-4.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,45 @@ ++/* { dg-do compile { target { powerpc64le-*-* } } } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-mcpu=power8 -O3" } */ ++/* { dg-final { scan-assembler "lxvd2x" } } */ ++/* { dg-final { scan-assembler "stxvd2x" } } */ ++/* { dg-final { scan-assembler-not "xxpermdi" } } */ ++ ++void abort (); ++ ++#define N 4096 ++int ca[N] __attribute__((aligned(16))); ++int cb[N] __attribute__((aligned(16))); ++int cc[N] __attribute__((aligned(16))); ++int cd[N] __attribute__((aligned(16))); ++ ++__attribute__((noinline)) void foo () ++{ ++ int i; ++ for (i = 0; i < N; i++) { ++ ca[i] = (cb[i] + cc[i]) * cd[i]; ++ } ++} ++ ++__attribute__((noinline)) void init () ++{ ++ int i; ++ for (i = 0; i < N; ++i) { ++ cb[i] = 3 * i - 2048; ++ cc[i] = -5 * i + 93; ++ cd[i] = i % 2 ? 1 : -1; ++ } ++} ++ ++int main () ++{ ++ int i; ++ init (); ++ foo (); ++ for (i = 0; i < N; ++i) ++ if (i % 2 == 1 && ca[i] != -2 * i - 1955) ++ abort (); ++ else if (i % 2 == 0 && ca[i] != 1955 + 2 * i) ++ abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/arm/divzero.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/arm/divzero.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/arm/divzero.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,85 @@ ++/* { dg-require-effective-target arm_eabi } */ ++/* { dg-options "" } */ ++/* { dg-do run } */ ++ ++/* Check that long long divmod functions pass the right argument to ++ __aeabi_ldiv0 on divide by zero. */ ++ ++#ifdef DEBUGME ++#include ++#else ++extern void abort (void); ++#endif ++ ++/* Override div zero handler and simply return the provided value. */ ++long long __aeabi_ldiv0 (long long r) ++{ ++ return r; ++} ++ ++long long lldiv (long long a, long long b) ++{ ++ return a / b; ++} ++ ++unsigned long long ulldiv (unsigned long long a, unsigned long long b) ++{ ++ return a / b; ++} ++ ++void check (long long num, long long expected) ++{ ++ long long res = lldiv (num, 0LL); ++ if (res != expected) ++#ifdef DEBUGME ++ { ++ printf ("num=%08X:%08X\n", (unsigned)(num >> 32), (unsigned)num); ++ printf ("res=%08X:%08X\n", (unsigned)(res >> 32), (unsigned)res); ++ } ++#else ++ abort (); ++#endif ++} ++ ++void ucheck (unsigned long long num, unsigned long long expected) ++{ ++ unsigned long long res = ulldiv (num, 0ULL); ++ if (res != expected) ++#ifdef DEBUGME ++ { ++ printf ("num=%08X:%08X\n", (unsigned)(num >> 32), (unsigned)num); ++ printf ("res=%08X:%08X\n", (unsigned)(res >> 32), (unsigned)res); ++ } ++#else ++ abort (); ++#endif ++} ++ ++#define POS_BIG 0x7fffffffffffffffLL ++#define NEG_BIG 0x8000000000000000LL ++#define UNS_BIG 0xffffffffffffffffULL ++ ++int main () ++{ ++ check (0LL, 0LL); ++ check (1LL, POS_BIG); ++ check (0x000000007fffffffLL, POS_BIG); ++ check (0x00000000ffffffffLL, POS_BIG); ++ check (0x0000000100000000LL, POS_BIG); ++ check (POS_BIG, POS_BIG); ++ check (-1LL, NEG_BIG); ++ check (-0x000000007fffffffLL, NEG_BIG); ++ check (-0x00000000ffffffffLL, NEG_BIG); ++ check (-0x0000000100000000LL, NEG_BIG); ++ check (NEG_BIG, NEG_BIG); ++ ++ ucheck (0ULL, 0ULL); ++ ucheck (1ULL, UNS_BIG); ++ ucheck (0x000000007fffffffULL, UNS_BIG); ++ ucheck (0x00000000ffffffffULL, UNS_BIG); ++ ucheck (0x0000000100000000ULL, UNS_BIG); ++ ucheck ((unsigned long long)POS_BIG, UNS_BIG); ++ ucheck (UNS_BIG, UNS_BIG); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/arm/pr65647-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/arm/pr65647-2.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/arm/pr65647-2.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,32 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -marm -march=armv6 -std=c99" } */ ++ ++typedef struct { ++ int i; ++} x264_union32_t; ++typedef struct { ++ int level_idx; ++} trellis_node_t; ++int a, c, d, f, h, i = (int)&c; ++trellis_node_t b[1][1]; ++short *e = 0; ++short g; ++void fn1() { ++ int k[64 * 8 * 2]; ++ trellis_node_t *l = b[0]; ++ for (; i >= d; i--) { ++ if (e[i]) { ++ for (int j = 1; j < 8; j++) { ++ ((x264_union32_t *)&k[a])->i = l[j].level_idx; ++ l[j].level_idx = a; ++ a++; ++ } ++ continue; ++ } ++ for (int j;; j++) ++ ; ++ } ++ int m[6] __attribute__((aligned(16))); ++ for (; h; h++, f++) ++ g = m[h]; ++} +Index: gcc/testsuite/gcc.target/arm/pr64453.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/arm/pr64453.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/arm/pr64453.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,9 @@ ++/* { dg-do compile } */ ++/* { dg-options "-mthumb -Os " } */ ++/* { dg-require-effective-target arm_thumb1_ok } */ ++ ++void save_regs () { ++ __asm volatile ("" ::: "r8"); ++} ++ ++/* { dg-final { scan-assembler "\tmov\tr., r8" } } */ +Index: gcc/testsuite/gcc.target/arm/pr65647.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/arm/pr65647.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/arm/pr65647.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,58 @@ ++/* { dg-do compile } */ ++/* { dg-options "-march=armv6-m -mthumb -O3 -w -mfloat-abi=soft" } */ ++ ++a, b, c, e, g = &e, h, i = 7, l = 1, m, n, o, q = &m, r, s = &r, u, w = 9, x, ++ y = 6, z, t6 = 7, t8, t9 = 1, t11 = 5, t12 = &t8, t13 = 3, t15, ++ t16 = &t15; ++struct { ++ long long f3; ++ char f4 ++} p = {3} ++ ++ , ++ t = {4}; ++ ++struct S1 { ++ long long f0; ++ short f1; ++ long long f2 ++} d; ++long long f = 4073709551613, t7 = 8, t14 = 4073709551610; ++j[]; ++k = j; ++v = &d; ++*t10 = j; ++struct S1 fn1(); ++struct S1 fn2() { ++ signed char t1; ++ struct S1 t2; ++ long t3 = x; ++ short t4 = h; ++ short *t5 = &l; ++ fn1(t2, w, 1, o); ++ if (u) { ++ l = q; ++ t1 = a < b ?: b; ++ z = c >= 2 || t1 << c; ++ } ++ *t5 = t4 &= t3; ++ fn3(y); ++} ++ ++fn4() { ++ t6 = t.f3; ++ fn5(k, t7); ++} ++ ++struct S1 fn1() { ++ f = 0; ++ for (; i;) ++ ; ++ t11 = 0; ++ t13 = *t10 = t14 || n; ++ t9 = t12; ++ for (; p.f4;) ++ s = t16 <= fn6(); ++ if (g) ++ v = 0; ++} +Index: gcc/testsuite/gcc.target/arm/constant-pool.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/arm/constant-pool.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/arm/constant-pool.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,27 @@ ++/* { dg-do run } */ ++/* { dg-options "-O1" } */ ++ ++unsigned short v = 0x5678; ++int i; ++int j = 0; ++int *ptr = &j; ++ ++int ++func (void) ++{ ++ for (i = 0; i < 1; ++i) ++ { ++ *ptr = -1; ++ v = 0x1234; ++ } ++ return v; ++} ++ ++int ++main (void) ++{ ++ func (); ++ if (v != 0x1234) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/alpha/pr66140.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/alpha/pr66140.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/alpha/pr66140.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,53 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mcpu=ev4" } */ ++ ++struct scsi_cmnd { ++ int sc_data_direction; ++}; ++struct lpfc_hba { ++ unsigned cfg_total_seg_cnt; ++}; ++struct lpfc_scsi_buf { ++ struct scsi_cmnd *pCmd; ++ unsigned seg_cnt; ++ unsigned *fcp_bpl; ++}; ++ ++extern void *sg_next(void *sg); ++extern void *scsi_sglist(struct scsi_cmnd *cmd); ++extern unsigned scsi_sg_count(struct scsi_cmnd *cmd); ++ ++static inline void dma_map_sg_attrs(void *sg, int nents, int dir) ++{ ++ int i; ++ ++ for (i = 0; i < nents; i++, sg = sg_next(sg)) ++ ; ++ ++ if (!dir) ++ asm volatile( "call_pal %0" : : "i"(129)); ++} ++ ++static inline void lpfc_bg_setup_bpl(struct lpfc_hba *phba, struct scsi_cmnd *sc, ++ unsigned *pde5) ++{ ++ void *sgde; ++ int i; ++ ++ *pde5 = (((0x85 & 0x000000ff) << 24) | (*pde5 & ~(0x000000ff << 24))); ++ for (i = 0, sgde = scsi_sglist(sc); i < 2; i++, sgde = sg_next(sgde)) ++ ; ++} ++ ++void lpfc_bg_scsi_prep_dma_buf_s3(struct lpfc_hba *phba, ++ struct lpfc_scsi_buf *lpfc_cmd) ++{ ++ struct scsi_cmnd *scsi_cmnd = lpfc_cmd->pCmd; ++ unsigned *bpl = lpfc_cmd->fcp_bpl; ++ ++ dma_map_sg_attrs(scsi_sglist(scsi_cmnd), ++ scsi_sg_count(scsi_cmnd), ++ scsi_cmnd->sc_data_direction); ++ if (lpfc_cmd->seg_cnt > phba->cfg_total_seg_cnt) ++ lpfc_bg_setup_bpl(phba, scsi_cmnd, bpl); ++} +Index: gcc/testsuite/gcc.target/aarch64/pr63424.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/aarch64/pr63424.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/pr63424.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,39 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3" } */ ++ ++#include ++ ++uint32_t ++truncate_int (const unsigned long long value) ++{ ++ if ( value < 0 ) ++ { ++ return 0; ++ } ++ else if ( value > UINT32_MAX ) ++ { ++ return UINT32_MAX; ++ } ++ else ++ return (uint32_t)value; ++} ++ ++uint32_t ++mul (const unsigned long long x, const unsigned long long y) ++{ ++ uint32_t value = truncate_int (x * y); ++ return value; ++} ++ ++uint32_t * ++test(unsigned size, uint32_t *a, uint32_t s) ++{ ++ unsigned i; ++ ++ for (i = 0; i < size; i++) ++ { ++ a[i] = mul (a[i], s); ++ } ++ ++ return a; ++} +Index: gcc/testsuite/gcc.target/aarch64/symbol-range.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/aarch64/symbol-range.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/symbol-range.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,13 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -save-temps -mcmodel=small" } */ ++ ++int fixed_regs[0x200000000ULL]; ++ ++int ++foo() ++{ ++ return fixed_regs[0x100000000ULL]; ++} ++ ++/* { dg-final { scan-assembler-not "adrp\tx\[0-9\]+, fixed_regs\\\+" } } */ ++/* { dg-final {cleanup-saved-temps } } */ +Index: gcc/testsuite/gcc.target/aarch64/pr65235_1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/aarch64/pr65235_1.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/pr65235_1.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,30 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2" } */ ++ ++#include "arm_neon.h" ++ ++int ++main (int argc, char** argv) ++{ ++ int64x1_t val1; ++ int64x1_t val2; ++ int64x1_t val3; ++ uint64x1_t val13; ++ uint64x2_t val14; ++ uint64_t got; ++ uint64_t exp; ++ val1 = vcreate_s64(UINT64_C(0xffffffff80008000)); ++ val2 = vcreate_s64(UINT64_C(0x0000f38d00000000)); ++ val3 = vcreate_s64(UINT64_C(0xffff7fff0000809b)); ++ /* Expect: "val13" = 8000000000001553. */ ++ val13 = vcreate_u64 (UINT64_C(0x8000000000001553)); ++ /* Expect: "val14" = 0010 0000 0000 0002 0000 0000 0000 0000. */ ++ val14 = vcombine_u64(vcgt_s64(vqrshl_s64(val1, val2), ++ vshr_n_s64(val3, 18)), ++ vshr_n_u64(val13, 11)); ++ /* Should be 0000000000000000. */ ++ got = vgetq_lane_u64(val14, 0); ++ exp = 0; ++ if(exp != got) ++ __builtin_abort (); ++} +Index: gcc/testsuite/gcc.target/aarch64/pr62308.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/aarch64/pr62308.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/pr62308.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,6 @@ ++/* { dg-do compile } */ ++/* { dg-options "-mbig-endian" } */ ++ ++typedef int __attribute__((vector_size(16))) v4si; ++struct S2823 {v4si a;int b[0];}; ++void checkx2823 (struct S2823 args){}; +Index: gcc/testsuite/gcc.target/aarch64/sisd-shft-neg_1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/aarch64/sisd-shft-neg_1.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/sisd-shft-neg_1.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,38 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fno-inline" } */ ++ ++extern void abort (void); ++ ++#define force_simd_si(v) asm volatile ("mov %s0, %1.s[0]" :"=w" (v) :"w" (v) :) ++ ++unsigned int ++shft_add (unsigned int a, unsigned int b) ++{ ++ unsigned int c; ++ ++ force_simd_si (a); ++ force_simd_si (b); ++ c = a >> b; ++ force_simd_si (c); ++ ++ return c + b; ++} ++ ++int ++main (void) ++{ ++ unsigned int i = 0; ++ unsigned int a = 0xdeadbeef; ++ ++ for (i = 0; i < 32; i++) ++ { ++ unsigned int exp = (a / (1 << i) + i); ++ unsigned int got = shft_add (a, i); ++ ++ if (exp != got) ++ abort (); ++ } ++ ++ return 0; ++} ++ +Index: gcc/testsuite/gcc.target/aarch64/symbol-range-tiny.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/aarch64/symbol-range-tiny.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/symbol-range-tiny.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,13 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -save-temps -mcmodel=tiny" } */ ++ ++int fixed_regs[0x00200000]; ++ ++int ++foo() ++{ ++ return fixed_regs[0x00080000]; ++} ++ ++/* { dg-final { scan-assembler-not "adr\tx\[0-9\]+, fixed_regs\\\+" } } */ ++/* { dg-final {cleanup-saved-temps } } */ +Index: gcc/testsuite/gcc.target/aarch64/pr64304.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/aarch64/pr64304.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/pr64304.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,18 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 --save-temps" } */ ++ ++unsigned char byte = 0; ++ ++void ++set_bit (unsigned int bit, unsigned char value) ++{ ++ unsigned char mask = (unsigned char) (1 << (bit & 7)); ++ ++ if (! value) ++ byte &= (unsigned char)~mask; ++ else ++ byte |= mask; ++ /* { dg-final { scan-assembler "and\tw\[0-9\]+, w\[0-9\]+, 7" } } */ ++} ++ ++/* { dg-final { cleanup-saved-temps } } */ +Index: gcc/testsuite/gcc.target/avr/torture/pr63633-ice-mult.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/avr/torture/pr63633-ice-mult.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/avr/torture/pr63633-ice-mult.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,37 @@ ++/* { dg-do compile } */ ++ ++void ice_mult32 (int x) ++{ ++ register long reg __asm ("22"); ++ __asm volatile (" " :: "r" (reg = 0x12345 * x)); ++} ++ ++void ice_mult24 (int x) ++{ ++ register __int24 reg __asm ("20"); ++ __asm volatile (" " :: "r" (reg = 0x12345 * x)); ++} ++ ++void ice_sh24 (__int24 x) ++{ ++ register __int24 reg __asm ("20"); ++ __asm volatile (" " :: "r" (reg = x << 3)); ++} ++ ++void ice_sh24b (__int24 x) ++{ ++ register __int24 reg __asm ("20"); ++ __asm volatile (" " :: "r" (reg = x << 22)); ++} ++ ++void ice_s16s16 (int x) ++{ ++ register long reg __asm ("20"); ++ __asm volatile (" " :: "r" (reg = (long) x*x)); ++} ++ ++void ice_u16s16 (int x) ++{ ++ register long reg __asm ("20"); ++ __asm volatile (" " :: "r" (reg = (long) x*0x1234u)); ++} +Index: gcc/testsuite/gcc.target/avr/torture/pr64331.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/avr/torture/pr64331.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/avr/torture/pr64331.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,37 @@ ++/* { dg-do run } */ ++ ++typedef struct ++{ ++ unsigned a, b; ++} T2; ++ ++ ++__attribute__((__noinline__, __noclone__)) ++void foo2 (T2 *t, int x) ++{ ++ if (x != t->a) ++ { ++ t->a = x; ++ ++ if (x && x == t->b) ++ t->a = 20; ++ } ++} ++ ++ ++T2 t; ++ ++int main (void) ++{ ++ t.a = 1; ++ t.b = 1234; ++ ++ foo2 (&t, 1234); ++ ++ if (t.a != 20) ++ __builtin_abort(); ++ ++ __builtin_exit (0); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/avr/torture/pr64452.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/avr/torture/pr64452.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/avr/torture/pr64452.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,34 @@ ++/* { dg-do compile } */ ++/* { dg-options "-std=c99" } */ ++ ++struct A ++{ ++ char str[8]; ++ void* v; ++}; ++ ++int varf (char* fmt, ...); ++ ++void foo (struct A a, struct A b) ++{ ++ varf ("%s%s", b.str, b.str); ++} ++ ++long long x64; ++ ++void foo2 (long long j0, ++ struct A a, struct A b, struct A c, struct A d, ++ struct A e, struct A f, struct A g, struct A h, struct A i, ++ long long j1) ++{ ++ varf ("%s%s", i.str, i.str, x64, j1+j0); ++} ++ ++ ++void foo3 (long long j0, ++ struct A a, struct A b, struct A c, struct A d, ++ struct A e, struct A f, struct A g, struct A h, struct A i, ++ long long j1) ++{ ++ varf ("%s%s", &i.str, &b.str, x64, j1+j0); ++} +Index: gcc/testsuite/gcc.target/i386/pr63637-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr63637-2.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr63637-2.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,15 @@ ++/* PR rtl-optimization/63637 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++int ++foo (void) ++{ ++ int a, b, c; ++ asm ("# Magic instruction" : "=r" (a) : "r" (0) : "eax"); ++ asm ("# Magic instruction" : "=r" (b) : "r" (0) : "edx"); ++ asm ("# Magic instruction" : "=r" (c) : "r" (0) : "ecx"); ++ return a + b + c; ++} ++ ++/* { dg-final { scan-assembler-times "# Magic instruction" 1 } } */ +Index: gcc/testsuite/gcc.target/i386/memcpy-strategy-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/memcpy-strategy-4.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/memcpy-strategy-4.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,21 @@ ++/* PR target/64200 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -march=atom -mmemcpy-strategy=libcall:-1:align -minline-stringops-dynamically" } */ ++ ++#include ++ ++extern void bar(char *x); ++ ++void foo (int size, ...) ++{ ++ struct ++ { ++ char x[size]; ++ } d; ++ ++ va_list ap; ++ va_start(ap, size); ++ d = va_arg(ap, typeof (d)); ++ va_end(ap); ++ bar(d.x); ++} +Index: gcc/testsuite/gcc.target/i386/pr63637-6.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr63637-6.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr63637-6.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,15 @@ ++/* PR rtl-optimization/63637 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++int ++foo (void) ++{ ++ int a, b, c, d, e, f; ++ asm ("# Magic instruction" : "=r" (a), "=r" (d) : "r" (0) : "eax"); ++ asm ("# Magic instruction" : "=r" (b), "=r" (e) : "r" (0) : "edx"); ++ asm ("# Magic instruction" : "=r" (c), "=r" (f) : "r" (0) : "ecx"); ++ return a + b + c; ++} ++ ++/* { dg-final { scan-assembler-times "# Magic instruction" 3 } } */ +Index: gcc/testsuite/gcc.target/i386/pr64409.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr64409.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr64409.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,6 @@ ++/* { dg-do compile { target { ! { ia32 } } } } */ ++/* { dg-require-effective-target maybe_x32 } */ ++/* { dg-options "-O0 -mx32" } */ ++ ++int a; ++int* __attribute__ ((ms_abi)) fn1 () { return &a; } /* { dg-error "X32 does not support ms_abi attribute" } */ +Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-7.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-7.c (.../branches/gcc-4_9-branch) +@@ -29,13 +29,13 @@ + ap = ep; + bp = fp; + +- for (i = N; i >= 0; i--) ++ for (i = N; i > 0; i--) + { + *ap++ = str; + *bp++ = str; + } + +- for (i = N; i >= 0; i--) ++ for (i = N; i > 0; i--) + { + if (strcmp (*--ap, "STR") != 0) + abort (); +Index: gcc/testsuite/gcc.target/i386/pr63661.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr63661.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr63661.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,80 @@ ++/* PR target/63661 */ ++/* { dg-do run } */ ++/* { dg-require-effective-target fpic } */ ++/* { dg-options "-mtune=nehalem -fPIC -O2" } */ ++ ++static void __attribute__((noinline,noclone,hot)) ++foo (double a, double q, double *ff, double *gx, int e, int ni) ++{ ++ union ++ { ++ double n; ++ unsigned long long o; ++ } punner; ++ double d; ++ ++ punner.n = q; ++ __builtin_printf("B: 0x%016llx ---- %g\n", punner.o, q); ++ ++ d = q - 5; ++ if(d < 0) ++ d = -d; ++ if (d > 0.1) ++ __builtin_abort(); ++} ++ ++static int __attribute__((noinline,noclone,hot)) ++bar (int order, double q, double c[]) ++{ ++ int ni, nn, i, e; ++ double g2, x2, de, s, ratio, ff; ++ ++ nn = 0; ++ e = order & 1; ++ s = 0; ++ ratio = 0; ++ x2 = 0; ++ g2 = 0; ++ ++ if(q == 0.0) ++ return 0; ++ ++ if (order < 5) ++ { ++ ratio = 1.0 / q; ++ nn = order; ++ } ++ ++ ni = -nn; ++ ++ while(1) ++ { ++ de = ratio - g2 - x2; ++ ++ foo (0, q, &ff, &g2, e, ni); ++ ++ if((int)de == 0) ++ break; ++ } ++ ++ s += 2 * nn * c[nn]; ++ ++ for (i = 0; i < 1; i++) ++ { ++ c[0] = nn; ++ for (; i < 10; i++) ++ c[i] = 0.0; ++ c[0] /= s; ++ } ++ ++ return 0; ++} ++ ++int ++main () ++{ ++ double c[1000]; ++ ++ bar (1, 5.0, c); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/i386/pr63538.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr63538.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr63538.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,13 @@ ++/* PR target/63538 */ ++/* { dg-do compile } */ ++/* { dg-require-effective-target lp64 } */ ++/* { dg-options "-O2 -mcmodel=medium -mlarge-data-threshold=0" } */ ++ ++static char *str = "Hello World"; ++ ++char *foo () ++{ ++ return str; ++} ++ ++/* { dg-final { scan-assembler "movabs" } } */ +Index: gcc/testsuite/gcc.target/i386/sse-14.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/sse-14.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/sse-14.c (.../branches/gcc-4_9-branch) +@@ -600,6 +600,8 @@ + + /* emmintrin.h */ + test_2 (_mm_shuffle_pd, __m128d, __m128d, __m128d, 1) ++test_1 (_mm_bsrli_si128, __m128i, __m128i, 1) ++test_1 (_mm_bslli_si128, __m128i, __m128i, 1) + test_1 (_mm_srli_si128, __m128i, __m128i, 1) + test_1 (_mm_slli_si128, __m128i, __m128i, 1) + test_1 (_mm_extract_epi16, int, __m128i, 1) +Index: gcc/testsuite/gcc.target/i386/sse-25.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/sse-25.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/sse-25.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,6 @@ ++/* PR target/65676 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -funsigned-char" } */ ++/* { dg-add-options bind_pic_locally } */ ++ ++#include "sse-23.c" +Index: gcc/testsuite/gcc.target/i386/pr57003.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr57003.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr57003.c (.../branches/gcc-4_9-branch) +@@ -1,5 +1,5 @@ + /* PR rtl-optimization/57003 */ +-/* { dg-do run } */ ++/* { dg-do run { target { ! x32 } } } */ + /* { dg-options "-O2" } */ + + #define N 2001 +Index: gcc/testsuite/gcc.target/i386/pr66470.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr66470.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr66470.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,13 @@ ++/* PR target/66470 */ ++/* { dg-do compile { target { ! { ia32 } } } } */ ++/* { dg-options "-O2 -mx32 -maddress-mode=long" } */ ++/* { dg-require-effective-target tls } */ ++ ++extern __thread unsigned __int128 c[10]; ++int d; ++ ++unsigned __int128 ++foo (void) ++{ ++ return c[d]; ++} +Index: gcc/testsuite/gcc.target/i386/pr63637-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr63637-3.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr63637-3.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,15 @@ ++/* PR rtl-optimization/63637 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++int ++foo (void) ++{ ++ int a, b, c; ++ asm ("# Magic instruction" : "=r" (a) : : "eax", "memory"); ++ asm ("# Magic instruction" : "=r" (b) : : "edx", "memory"); ++ asm ("# Magic instruction" : "=r" (c) : : "ecx", "memory"); ++ return a + b + c; ++} ++ ++/* { dg-final { scan-assembler-times "# Magic instruction" 3 } } */ +Index: gcc/testsuite/gcc.target/i386/pr64387.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr64387.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr64387.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,15 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -ftree-vectorize -ffloat-store -mavx512er" } */ ++ ++float x[256]; ++ ++double * ++foo (void) ++{ ++ double *z = __builtin_malloc (sizeof (double) * 256); ++ int i; ++ for (i = 0; i < 256; ++i) ++ z[i] = x[i] + 1.0f; ++ foo (); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/i386/builtin_target.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/builtin_target.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/builtin_target.c (.../branches/gcc-4_9-branch) +@@ -30,6 +30,14 @@ + /* Atom. */ + assert (__builtin_cpu_is ("atom")); + break; ++ case 0x37: ++ case 0x4a: ++ case 0x4d: ++ case 0x5a: ++ case 0x5d: ++ /* Silvermont. */ ++ assert (__builtin_cpu_is ("silvermont")); ++ break; + case 0x1a: + case 0x1e: + case 0x1f: +@@ -46,10 +54,32 @@ + assert (__builtin_cpu_is ("westmere")); + break; + case 0x2a: ++ case 0x2d: + /* Sandy Bridge. */ + assert (__builtin_cpu_is ("corei7")); + assert (__builtin_cpu_is ("sandybridge")); + break; ++ case 0x3a: ++ case 0x3e: ++ /* Ivy Bridge. */ ++ assert (__builtin_cpu_is ("corei7")); ++ assert (__builtin_cpu_is ("ivybridge")); ++ break; ++ case 0x3c: ++ case 0x3f: ++ case 0x45: ++ case 0x46: ++ /* Haswell. */ ++ assert (__builtin_cpu_is ("corei7")); ++ assert (__builtin_cpu_is ("haswell")); ++ break; ++ case 0x3d: ++ case 0x4f: ++ case 0x56: ++ /* Broadwell. */ ++ assert (__builtin_cpu_is ("corei7")); ++ assert (__builtin_cpu_is ("broadwell")); ++ break; + case 0x17: + case 0x1d: + /* Penryn. */ +Index: gcc/testsuite/gcc.target/i386/sse-22.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/sse-22.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/sse-22.c (.../branches/gcc-4_9-branch) +@@ -137,6 +137,8 @@ + #endif + #include + test_2 (_mm_shuffle_pd, __m128d, __m128d, __m128d, 1) ++test_1 (_mm_bsrli_si128, __m128i, __m128i, 1) ++test_1 (_mm_bslli_si128, __m128i, __m128i, 1) + test_1 (_mm_srli_si128, __m128i, __m128i, 1) + test_1 (_mm_slli_si128, __m128i, __m128i, 1) + test_1 (_mm_extract_epi16, int, __m128i, 1) +@@ -268,6 +270,8 @@ + test_1 ( _mm256_shuffle_epi32, __m256i, __m256i, 1) + test_1 ( _mm256_shufflehi_epi16, __m256i, __m256i, 1) + test_1 ( _mm256_shufflelo_epi16, __m256i, __m256i, 1) ++test_1 ( _mm256_bslli_epi128, __m256i, __m256i, 8) ++test_1 ( _mm256_bsrli_epi128, __m256i, __m256i, 8) + test_1 ( _mm256_slli_si256, __m256i, __m256i, 8) + test_1 ( _mm256_srli_si256, __m256i, __m256i, 8) + test_2 ( _mm_blend_epi32, __m128i, __m128i, __m128i, 1) +Index: gcc/testsuite/gcc.target/i386/pr60516.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr60516.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr60516.c (.../branches/gcc-4_9-branch) +@@ -1,5 +1,5 @@ + /* PR target/60516 */ +-/* { dg-do compile } */ ++/* { dg-do compile { target { ! x32 } } } */ + /* { dg-options "-O2" } */ + + struct S { char c[65536]; }; +Index: gcc/testsuite/gcc.target/i386/pr66275.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr66275.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr66275.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,8 @@ ++/* { dg-do compile { target { *-*-linux* && { ! ia32 } } } } */ ++/* { dg-options "-mabi=ms -fdump-rtl-dfinit" } */ ++ ++void ++__attribute__((sysv_abi)) ++foo () {}; ++ ++/* { dg-final { scan-rtl-dump "entry block defs\[^\\n]*\\\[si\\]\[^\\n]*\\\[di\\]" "dfinit" } } */ +Index: gcc/testsuite/gcc.target/i386/pr63637-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr63637-4.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr63637-4.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,15 @@ ++/* PR rtl-optimization/63637 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++int ++foo (void) ++{ ++ int a, b, c; ++ asm ("# Magic instruction" : "=r" (a) : "r" (0) : "eax", "memory"); ++ asm ("# Magic instruction" : "=r" (b) : "r" (0) : "edx", "memory"); ++ asm ("# Magic instruction" : "=r" (c) : "r" (0) : "ecx", "memory"); ++ return a + b + c; ++} ++ ++/* { dg-final { scan-assembler-times "# Magic instruction" 3 } } */ +Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-7.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-7.c (.../branches/gcc-4_9-branch) +@@ -33,7 +33,7 @@ + cp = mp; + dp = lp; + +- for (i = N; i >= 0; i--) ++ for (i = N; i > 0; i--) + { + *cp++ = str; + *dp++ = str; +@@ -44,13 +44,13 @@ + cp = mp; + dp = lp; + +- for (i = N; i >= 0; i--) ++ for (i = N; i > 0; i--) + { + *ap++ = *cp++; + *bp++ = *dp++; + } + +- for (i = N; i >= 0; i--) ++ for (i = N; i > 0; i--) + { + if (strcmp (*--ap, "STR") != 0) + abort (); +Index: gcc/testsuite/gcc.target/i386/bmi2-bzhi-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/bmi2-bzhi-2.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/bmi2-bzhi-2.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,67 @@ ++/* PR target/65368 */ ++/* { dg-do assemble { target bmi2 } } */ ++/* { dg-options "-O2 -mbmi2" } */ ++ ++#include ++#include "bmi2-check.h" ++ ++unsigned int a; ++unsigned long long b; ++ ++#define A __attribute__((noinline, noclone)) ++ ++A unsigned int f1 (void) { return _bzhi_u32 (a, 0); } ++A unsigned int f2 (unsigned int x) { return _bzhi_u32 (x, 0); } ++A unsigned int f3 (void) { return _bzhi_u32 (a, 5); } ++A unsigned int f4 (unsigned int x) { return _bzhi_u32 (x, 5); } ++A unsigned int f5 (void) { return _bzhi_u32 (a, 31); } ++A unsigned int f6 (unsigned int x) { return _bzhi_u32 (x, 31); } ++A unsigned int f7 (void) { return _bzhi_u32 (a, 32); } ++A unsigned int f8 (unsigned int x) { return _bzhi_u32 (x, 32); } ++A unsigned int f9 (void) { return _bzhi_u32 (a, 37); } ++A unsigned int f10 (unsigned int x) { return _bzhi_u32 (x, 37); } ++A unsigned int f11 (void) { return _bzhi_u32 (a, 257); } ++A unsigned int f12 (unsigned int x) { return _bzhi_u32 (x, 257); } ++A unsigned int f13 (void) { return _bzhi_u32 (a, 289); } ++A unsigned int f14 (unsigned int x) { return _bzhi_u32 (x, 289); } ++#ifdef __x86_64__ ++A unsigned long long f21 (void) { return _bzhi_u64 (b, 0); } ++A unsigned long long f22 (unsigned long long x) { return _bzhi_u64 (x, 0); } ++A unsigned long long f23 (void) { return _bzhi_u64 (b, 5); } ++A unsigned long long f24 (unsigned long long x) { return _bzhi_u64 (x, 5); } ++A unsigned long long f25 (void) { return _bzhi_u64 (b, 63); } ++A unsigned long long f26 (unsigned long long x) { return _bzhi_u64 (x, 63); } ++A unsigned long long f27 (void) { return _bzhi_u64 (b, 64); } ++A unsigned long long f28 (unsigned long long x) { return _bzhi_u64 (x, 64); } ++A unsigned long long f29 (void) { return _bzhi_u64 (b, 69); } ++A unsigned long long f30 (unsigned long long x) { return _bzhi_u64 (x, 69); } ++A unsigned long long f31 (void) { return _bzhi_u64 (b, 257); } ++A unsigned long long f32 (unsigned long long x) { return _bzhi_u64 (x, 257); } ++A unsigned long long f33 (void) { return _bzhi_u64 (b, 321); } ++A unsigned long long f34 (unsigned long long x) { return _bzhi_u64 (x, 321); } ++#endif ++ ++static void ++bmi2_test () ++{ ++ a = -1U; ++ b = -1ULL; ++ if (f1 () != 0 || f2 (-1U) != 0 ++ || f3 () != 0x1f || f4 (-1U) != 0x1f ++ || f5 () != 0x7fffffffU || f6 (-1U) != 0x7fffffffU ++ || f7 () != -1U || f8 (-1U) != -1U ++ || f9 () != -1U || f10 (-1U) != -1U ++ || f11 () != 1 || f12 (-1U) != 1 ++ || f13 () != -1U || f14 (-1U) != -1U) ++ abort (); ++#ifdef __x86_64__ ++ if (f21 () != 0 || f22 (-1ULL) != 0 ++ || f23 () != 0x1f || f24 (-1ULL) != 0x1f ++ || f25 () != 0x7fffffffffffffffULL || f26 (-1ULL) != 0x7fffffffffffffffULL ++ || f27 () != -1ULL || f28 (-1ULL) != -1ULL ++ || f29 () != -1ULL || f30 (-1ULL) != -1ULL ++ || f31 () != 1 || f32 (-1ULL) != 1 ++ || f33 () != -1ULL || f34 (-1ULL) != -1ULL) ++ abort (); ++#endif ++} +Index: gcc/testsuite/gcc.target/i386/pr59927.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr59927.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr59927.c (.../branches/gcc-4_9-branch) +@@ -1,5 +1,5 @@ + /* PR target/59927 */ +-/* { dg-do compile } */ ++/* { dg-do compile { target { ! x32 } } } */ + /* { dg-options "-O2 -g" } */ + + extern void baz (int) __attribute__ ((__ms_abi__)); +Index: gcc/testsuite/gcc.target/i386/pr63637-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr63637-1.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr63637-1.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,15 @@ ++/* PR rtl-optimization/63637 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++int ++foo (void) ++{ ++ int a, b, c; ++ asm ("# Magic instruction" : "=r" (a) : : "eax"); ++ asm ("# Magic instruction" : "=r" (b) : : "edx"); ++ asm ("# Magic instruction" : "=r" (c) : : "ecx"); ++ return a + b + c; ++} ++ ++/* { dg-final { scan-assembler-times "# Magic instruction" 1 } } */ +Index: gcc/testsuite/gcc.target/i386/pr63637-5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr63637-5.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr63637-5.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,15 @@ ++/* PR rtl-optimization/63637 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++int ++foo (void) ++{ ++ int a, b, c, d, e, f; ++ asm ("# Magic instruction" : "=r" (a), "=r" (d) : : "eax"); ++ asm ("# Magic instruction" : "=r" (b), "=r" (e) : : "edx"); ++ asm ("# Magic instruction" : "=r" (c), "=r" (f) : : "ecx"); ++ return a + b + c; ++} ++ ++/* { dg-final { scan-assembler-times "# Magic instruction" 3 } } */ +Index: gcc/testsuite/gcc.target/i386/pr63947.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr63947.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr63947.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,9 @@ ++/* PR target/63947 */ ++/* { dg-do assemble } */ ++/* { dg-options "-Os" } */ ++/* { dg-additional-options "-march=i686" { target ia32 } } */ ++ ++long double foo (unsigned a, unsigned b) ++{ ++ return a + b < a; ++} +Index: gcc/testsuite/gcc.target/i386/pr64513.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr64513.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr64513.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,17 @@ ++/* PR target/64513 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mstack-arg-probe" } */ ++ ++struct A {}; ++struct B { struct A y; }; ++int foo (struct A); ++ ++int ++bar (int x) ++{ ++ struct B b; ++ int c; ++ while (x--) ++ c = foo (b.y); ++ return c; ++} +Index: gcc/testsuite/gcc.target/i386/pr60851.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr60851.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr60851.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,7 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -flive-range-shrinkage -mtune=bdver4 -mdispatch-scheduler" } */ ++ ++long double ld (char c) ++{ ++ return c; ++} +Index: gcc/testsuite/gcc.target/i386/avx2-pr64286.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/avx2-pr64286.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/avx2-pr64286.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,37 @@ ++/* PR rtl-optimization/64286 */ ++/* { dg-do run } */ ++/* { dg-options "-O2 -mavx2" } */ ++/* { dg-require-effective-target avx2 } */ ++ ++#include ++#include ++#include ++#include "avx2-check.h" ++ ++__m128i v; ++__m256i w; ++ ++__attribute__((noinline, noclone)) void ++foo (__m128i *p, __m128i *q) ++{ ++ __m128i a = _mm_loadu_si128 (p); ++ __m128i b = _mm_xor_si128 (a, v); ++ w = _mm256_cvtepu8_epi16 (a); ++ *q = b; ++} ++ ++static void ++avx2_test (void) ++{ ++ v = _mm_set1_epi8 (0x40); ++ __m128i c = _mm_set_epi8 (16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1); ++ __m128i d; ++ foo (&c, &d); ++ __m128i e = _mm_set_epi8 (0x50, 0x4f, 0x4e, 0x4d, 0x4c, 0x4b, 0x4a, 0x49, ++ 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41); ++ __m256i f = _mm256_set_epi16 (16, 15, 14, 13, 12, 11, 10, 9, ++ 8, 7, 6, 5, 4, 3, 2, 1); ++ if (memcmp (&w, &f, sizeof (w)) != 0 ++ || memcmp (&d, &e, sizeof (d)) != 0) ++ abort (); ++} +Index: gcc/testsuite/gcc.target/i386/memset-strategy-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/memset-strategy-2.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/memset-strategy-2.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,10 @@ ++/* PR target/64108 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -march=atom -mmemset-strategy=libcall:-1:align -minline-all-stringops" } */ ++ ++char a[2048]; ++void t (void) ++{ ++ __builtin_memset (a, 1, 2048); ++} ++ +Index: gcc/testsuite/gcc.target/i386/pr65990.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr65990.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr65990.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,29 @@ ++/* { dg-do compile } */ ++/* { dg-options "-mtune=btver2 -mmemcpy-strategy=rep_8byte:-1:noalign" } ++ ++/* { dg-error "stringop strategy name rep_8byte specified for option -mmemcpy_strategy= not supported for 32-bit code" "" { target ia32 } 0 } */ ++ ++struct U9 ++{ ++ unsigned a[9]; ++}; ++ ++struct U9 u9; ++ ++void ++foo () ++{ ++ u9 = (struct U9) { ++ .a = { ++ 0xFF, ++ 0xFF, ++ 0xFF, ++ 0xFF, ++ 0xFF, ++ 0xFF, ++ 0xFF, ++ 0xFF, ++ 0xFF ++ } ++ }; ++} +Index: gcc/testsuite/gcc.target/s390/hotpatch-16.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-16.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-16.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,19 @@ ++/* Functional tests for the function hotpatching feature. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-mzarch -mhotpatch=0,0" } */ ++ ++#include ++ ++__attribute__ ((hotpatch(1,2))) ++void hp1(void) ++{ ++ printf("hello, world!\n"); ++} ++ ++/* Check number of occurences of certain instructions. */ ++/* { dg-final { scan-assembler "pre-label.*(1 halfwords)" } } */ ++/* { dg-final { scan-assembler "^\[^.\].*:\n.*post-label.*(2 halfwords).*\n\(\(.L.*:\n\)\|\(\[\[:space:\]\]*.cfi_.*\n\)\)*\[\[:space:\]\]*nop\t0" } } */ ++/* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */ ++/* { dg-final { scan-assembler-times "nop\t0" 1 } } */ ++/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-compile-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-1.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-1.c (.../branches/gcc-4_9-branch) +@@ -1,27 +1,5 @@ + /* Functional tests for the function hotpatching feature. */ + +-/* { dg-do run } */ +-/* { dg-options "-O3 -mzarch -mhotpatch" } */ +- +-#include +- +-void hp1(void) +-{ +- printf("hello, world!\n"); +-} +- +-inline void hp2(void) +-{ +- printf("hello, world!\n"); +-} +- +-__attribute__ ((always_inline)) +-void hp3(void) /* { dg-warning "always_inline function might not be inlinable" } */ +-{ +- printf("hello, world!\n"); +-} /* { dg-warning "function 'hp3' with the 'always_inline' attribute is not hotpatchable" } */ +- +-int main (void) +-{ +- return 0; +-} ++/* { dg-do compile } */ ++/* { dg-options "-O3 -mzarch -mhotpatch=-1,0" } */ ++/* { dg-error "arguments to .-mhotpatch=n,m. should be non-negative integers" "" { target *-*-* } 1 } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-18.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-18.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-18.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,19 @@ ++/* Functional tests for the function hotpatching feature. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-mzarch -mhotpatch=1,2 -mhotpatch=0,0" } */ ++ ++#include ++ ++void hp1(void) ++{ ++ printf("hello, world!\n"); ++} ++ ++/* Check number of occurences of certain instructions. */ ++/* { dg-final { scan-assembler-not "pre-label NOPs" } } */ ++/* { dg-final { scan-assembler-not "post-label NOPs" } } */ ++/* { dg-final { scan-assembler-not "nopr\t%r7" } } */ ++/* { dg-final { scan-assembler-not "nop\t0" } } */ ++/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ ++/* { dg-final { scan-assembler-not "alignment for hotpatch" } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-compile-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-3.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-3.c (.../branches/gcc-4_9-branch) +@@ -1,27 +1,5 @@ + /* Functional tests for the function hotpatching feature. */ + +-/* { dg-do run } */ +-/* { dg-options "-O3 -mzarch -mhotpatch=1" } */ +- +-#include +- +-void hp1(void) +-{ +- printf("hello, world!\n"); +-} +- +-inline void hp2(void) +-{ +- printf("hello, world!\n"); +-} +- +-__attribute__ ((always_inline)) +-void hp3(void) /* { dg-warning "always_inline function might not be inlinable" } */ +-{ +- printf("hello, world!\n"); +-} /* { dg-warning "function 'hp3' with the 'always_inline' attribute is not hotpatchable" } */ +- +-int main (void) +-{ +- return 0; +-} ++/* { dg-do compile } */ ++/* { dg-options "-O3 -mzarch -mhotpatch=0" } */ ++/* { dg-error "arguments to .-mhotpatch=n,m. should be non-negative integers" "" { target *-*-* } 1 } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-compile-5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-5.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-5.c (.../branches/gcc-4_9-branch) +@@ -1,28 +1,5 @@ + /* Functional tests for the function hotpatching feature. */ + + /* { dg-do compile } */ +-/* { dg-options "-O3 -mzarch -mhotpatch=1000000" } */ +- +-#include +- +-void hp1(void) +-{ +- printf("hello, world!\n"); +-} +- +-__attribute__ ((hotpatch(1000000))) +-void hp2(void) +-{ +- printf("hello, world!\n"); +-} +- +-__attribute__ ((hotpatch(1000001))) +-void hp3(void) +-{ /* { dg-error "requested 'hotpatch' attribute is not a non-negative integer constant or too large .max. 1000000." } */ +- printf("hello, world!\n"); +-} +- +-int main (void) +-{ +- return 0; +-} ++/* { dg-options "-O3 -mzarch -mhotpatch=a,0" } */ ++/* { dg-error "arguments to .-mhotpatch=n,m. should be non-negative integers" "" { target *-*-* } 1 } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-compile-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-7.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-7.c (.../branches/gcc-4_9-branch) +@@ -1,68 +1,10 @@ + /* Functional tests for the function hotpatching feature. */ + +-/* { dg-do run } */ +-/* { dg-options "-O3 -mzarch -mno-hotpatch" } */ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -mzarch" } */ + +-#include +- +-__attribute__ ((hotpatch)) +-void hp1(void) +-{ +- printf("hello, world!\n"); +-} +- +-__attribute__ ((hotpatch)) +-inline void hp2(void) +-{ +- printf("hello, world!\n"); +-} +- +-__attribute__ ((hotpatch)) +-__attribute__ ((always_inline)) +-void hp3(void) /* { dg-warning "always_inline function might not be inlinable" } */ +-{ +- printf("hello, world!\n"); +-} /* { dg-warning "function 'hp3' with the 'always_inline' attribute is not hotpatchable" } */ +- +-__attribute__ ((hotpatch(0))) +-void hp4(void) +-{ +- printf("hello, world!\n"); +-} +- +-__attribute__ ((hotpatch(0))) +-inline void hp5(void) +-{ +- printf("hello, world!\n"); +-} +- +-__attribute__ ((hotpatch(0))) +-__attribute__ ((always_inline)) +-void hp6(void) /* { dg-warning "always_inline function might not be inlinable" } */ +-{ +- printf("hello, world!\n"); +-} /* { dg-warning "function 'hp6' with the 'always_inline' attribute is not hotpatchable" } */ +- +-__attribute__ ((hotpatch(1))) +-void hp7(void) +-{ +- printf("hello, world!\n"); +-} +- +-__attribute__ ((hotpatch(1))) +-inline void hp8(void) +-{ +- printf("hello, world!\n"); +-} +- +-__attribute__ ((hotpatch(1))) +-__attribute__ ((always_inline)) +-void hp9(void) /* { dg-warning "always_inline function might not be inlinable" } */ +-{ +- printf("hello, world!\n"); +-} /* { dg-warning "function 'hp9' with the 'always_inline' attribute is not hotpatchable" } */ +- ++__attribute__((hotpatch(-1,0))) + int main (void) +-{ ++{/* { dg-error "attribute is not a comma separated pair of non-negative integer constants or too large" } */ + return 0; + } +Index: gcc/testsuite/gcc.target/s390/hotpatch-compile-9.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-9.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-9.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,10 @@ ++/* Functional tests for the function hotpatching feature. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -mzarch" } */ ++ ++__attribute__((hotpatch(0))) ++int main (void) ++{/* { dg-error "wrong number of arguments specified" } */ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/s390/s390.exp +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/s390.exp (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/s390.exp (.../branches/gcc-4_9-branch) +@@ -46,9 +46,18 @@ + # Initialize `dg'. + dg-init + ++set hotpatch_tests $srcdir/$subdir/hotpatch-\[0-9\]*.c ++ + # Main loop. +-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] \ +- "" $DEFAULT_CFLAGS ++dg-runtest [lsort [prune [glob -nocomplain $srcdir/$subdir/*.\[cS\]] \ ++ $hotpatch_tests]] "" $DEFAULT_CFLAGS + ++# Additional hotpatch torture tests. ++torture-init ++set HOTPATCH_TEST_OPTS [list -Os -O0 -O1 -O2 -O3] ++set-torture-options $HOTPATCH_TEST_OPTS ++gcc-dg-runtest [lsort [glob -nocomplain $hotpatch_tests]] $DEFAULT_CFLAGS ++torture-finish ++ + # All done. + dg-finish +Index: gcc/testsuite/gcc.target/s390/hotpatch-compile-10.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-10.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-10.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,10 @@ ++/* Functional tests for the function hotpatching feature. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -mzarch" } */ ++ ++__attribute__((hotpatch(0,0,0))) ++int main (void) ++{/* { dg-error "wrong number of arguments specified" } */ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/s390/hotpatch-compile-12.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-12.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-12.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,12 @@ ++/* Functional tests for the function hotpatching feature. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -mzarch" } */ ++ ++int a; ++ ++__attribute__((hotpatch(0,a))) ++int main (void) ++{ /* { dg-error "attribute is not a comma separated pair of non-negative integer constants or too large" } */ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/s390/hotpatch-compile-14.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-14.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-14.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,11 @@ ++/* Functional tests for the function hotpatching feature. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -mzarch -mhotpatch=1000001,1000000" } */ ++ ++viod main(void) ++{ ++ return 0; ++} ++ ++/* { dg-error "argument to .-mhotpatch=n,m. is too large" "" { target *-*-* } 1 } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-compile-16.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-16.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-16.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,24 @@ ++/* Functional tests for the function hotpatching feature. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -mzarch" } */ ++ ++typedef int (*fn_t)(void); ++ ++fn_t hp1(void) ++{ ++ __attribute__((hotpatch(0,0))) ++ int nested1(void) ++ { return 1; } ++ ++ return nested1; ++} ++ ++fn_t hp2(void) ++{ ++ __attribute__ ((hotpatch(1,2))) ++ int nested2(void) ++ { return 2; } ++ ++ return nested2; ++} +Index: gcc/testsuite/gcc.target/s390/hotpatch-21.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-21.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-21.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,14 @@ ++/* Functional tests for the function hotpatching feature. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-mzarch -mhotpatch=0,1" } */ ++ ++#include ++ ++void __attribute__ ((aligned(512))) hp1(void) ++{ ++ printf("hello, world!\n"); ++} ++ ++/* Check number of occurences of certain instructions. */ ++/* { dg-final { scan-assembler-not "alignment for hotpatch" } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-23.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-23.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-23.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,14 @@ ++/* Functional tests for the function hotpatching feature. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-mzarch -mhotpatch=0,1 -falign-functions=4096" } */ ++ ++#include ++ ++void __attribute__ ((aligned(2048))) hp1(void) ++{ ++ printf("hello, world!\n"); ++} ++ ++/* Check number of occurences of certain instructions. */ ++/* { dg-final { scan-assembler-not "alignment for hotpatch" } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-25.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-25.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-25.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,32 @@ ++/* Functional tests for the function hotpatching feature. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-mzarch" } */ ++ ++typedef long (*fn_t)(void); ++ ++__attribute__ ((hotpatch(1,2))) ++fn_t outer(void) ++{ ++ __attribute__ ((hotpatch(4,8))) ++ long nested1(void) ++ { ++ __attribute__ ((hotpatch(16,32))) ++ long nested2(void) ++ { ++ return 2; ++ } ++ return (long)(void *)nested2; ++ } ++ ++ return nested1; ++} ++ ++/* { dg-final { scan-assembler "pre-label.*(1 halfwords)" } } */ ++/* { dg-final { scan-assembler "pre-label.*(4 halfwords)" } } */ ++/* { dg-final { scan-assembler "pre-label.*(16 halfwords)" } } */ ++/* { dg-final { scan-assembler "^\[^.\].*:\n.*post-label.*(2 halfwords).*\n\(\(.L.*:\n\)\|\(\[\[:space:\]\]*.cfi_.*\n\)\)*\[\[:space:\]\]*nopr\t" } } */ ++/* { dg-final { scan-assembler "^\[^.\].*:\n.*post-label.*(8 halfwords).*\n\(\(.L.*:\n\)\|\(\[\[:space:\]\]*.cfi_.*\n\)\)*\[\[:space:\]\]*brcl\t0, 0" } } */ ++/* { dg-final { scan-assembler "^\[^.\].*:\n.*post-label.*(32 halfwords).*\n\(\(.L.*:\n\)\|\(\[\[:space:\]\]*.cfi_.*\n\)\)*\[\[:space:\]\]*brcl\t0, 0" } } */ ++/* { dg-final { scan-assembler-times "alignment for hotpatch" 3 } } */ ++/* { dg-final { scan-assembler "nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr" } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-27.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-27.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-27.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,17 @@ ++/* Functional tests for the function hotpatching feature. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -mzarch -mhotpatch=1,2" } */ ++ ++__attribute__ ((noreturn)) void hp3(void) ++{ ++ __builtin_unreachable (); ++} ++ ++/* Check number of occurences of certain instructions. */ ++/* { dg-final { scan-assembler "pre-label NOPs" } } */ ++/* { dg-final { scan-assembler "^\[^.\].*:\n.*post-label.*(2 halfwords).*\n\(\(.L.*:\n\)\|\(\[\[:space:\]\]*.cfi_.*\n\)\)*\[\[:space:\]\]*nop\t0" } } */ ++/* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */ ++/* { dg-final { scan-assembler-times "nop\t0" 1 } } */ ++/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ ++/* { dg-final { scan-assembler "alignment for hotpatch" } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-1.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-1.c (.../branches/gcc-4_9-branch) +@@ -1,7 +1,7 @@ + /* Functional tests for the function hotpatching feature. */ + +-/* { dg-do run } */ +-/* { dg-options "-O3 -mzarch -mhotpatch --save-temps" } */ ++/* { dg-do compile } */ ++/* { dg-options "-mzarch" } */ + + #include + +@@ -10,11 +10,10 @@ + printf("hello, world!\n"); + } + +-int main (void) +-{ +- return 0; +-} +- + /* Check number of occurences of certain instructions. */ +-/* { dg-final { scan-assembler-times "nopr\t%r7" 12 } } */ +-/* { dg-final { scan-assembler-times "nop\t0" 1 } } */ ++/* { dg-final { scan-assembler-not "pre-label NOPs" } } */ ++/* { dg-final { scan-assembler-not "post-label NOPs" } } */ ++/* { dg-final { scan-assembler-not "nopr\t%r7" } } */ ++/* { dg-final { scan-assembler-not "nop\t0" } } */ ++/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ ++/* { dg-final { scan-assembler-not "alignment for hotpatch" } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-3.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-3.c (.../branches/gcc-4_9-branch) +@@ -1,7 +1,7 @@ + /* Functional tests for the function hotpatching feature. */ + +-/* { dg-do run } */ +-/* { dg-options "-O3 -mzarch -mhotpatch=0 --save-temps" } */ ++/* { dg-do compile } */ ++/* { dg-options "-mzarch -mhotpatch=0,2" } */ + + #include + +@@ -10,11 +10,9 @@ + printf("hello, world!\n"); + } + +-int main (void) +-{ +- return 0; +-} +- + /* Check number of occurences of certain instructions. */ ++/* { dg-final { scan-assembler-not "pre-label NOPs" } } */ ++/* { dg-final { scan-assembler "^\[^.\].*:\n.*post-label.*(2 halfwords).*\n\(\(.L.*:\n\)\|\(\[\[:space:\]\]*.cfi_.*\n\)\)*\[\[:space:\]\]*nop\t0" } } */ + /* { dg-final { scan-assembler-not "nopr\t%r7" } } */ + /* { dg-final { scan-assembler-times "nop\t0" 1 } } */ ++/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-5.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-5.c (.../branches/gcc-4_9-branch) +@@ -1,21 +1,18 @@ + /* Functional tests for the function hotpatching feature. */ + +-/* { dg-do run } */ +-/* { dg-options "-O3 -mzarch -mhotpatch --save-temps" } */ ++/* { dg-do compile } */ ++/* { dg-options "-mzarch -mhotpatch=0,4" } */ + + #include + +-__attribute__ ((hotpatch)) + void hp1(void) + { + printf("hello, world!\n"); + } + +-int main (void) +-{ +- return 0; +-} +- + /* Check number of occurences of certain instructions. */ +-/* { dg-final { scan-assembler-times "nopr\t%r7" 12 } } */ +-/* { dg-final { scan-assembler-times "nop\t0" 1 } } */ ++/* { dg-final { scan-assembler-not "pre-label NOPs" } } */ ++/* { dg-final { scan-assembler "^\[^.\].*:\n.*post-label.*(4 halfwords).*\n\(\(.L.*:\n\)\|\(\[\[:space:\]\]*.cfi_.*\n\)\)*\[\[:space:\]\]*brcl\t0, 0" } } */ ++/* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */ ++/* { dg-final { scan-assembler-not "nop\t0" } } */ ++/* { dg-final { scan-assembler-times "brcl\t0, 0" 1 } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-7.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-7.c (.../branches/gcc-4_9-branch) +@@ -1,21 +1,18 @@ + /* Functional tests for the function hotpatching feature. */ + +-/* { dg-do run } */ +-/* { dg-options "-O3 -mzarch -mhotpatch --save-temps" } */ ++/* { dg-do compile } */ ++/* { dg-options "-mzarch -mhotpatch=0,6" } */ + + #include + +-__attribute__ ((hotpatch(0))) + void hp1(void) + { + printf("hello, world!\n"); + } + +-int main (void) +-{ +- return 0; +-} +- + /* Check number of occurences of certain instructions. */ ++/* { dg-final { scan-assembler-not "pre-label NOPs" } } */ ++/* { dg-final { scan-assembler "^\[^.\].*:\n.*post-label.*(6 halfwords).*\n\(\(.L.*:\n\)\|\(\[\[:space:\]\]*.cfi_.*\n\)\)*\[\[:space:\]\]*brcl\t0, 0" } } */ + /* { dg-final { scan-assembler-not "nopr\t%r7" } } */ +-/* { dg-final { scan-assembler-times "nop\t0" 1 } } */ ++/* { dg-final { scan-assembler-not "nop\t0" } } */ ++/* { dg-final { scan-assembler-times "brcl\t0, 0" 2 } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-9.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-9.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-9.c (.../branches/gcc-4_9-branch) +@@ -1,21 +1,18 @@ + /* Functional tests for the function hotpatching feature. */ + +-/* { dg-do run } */ +-/* { dg-options "-O3 -mzarch -mhotpatch=1 --save-temps" } */ ++/* { dg-do compile { target { ! lp64 } } } */ ++/* { dg-options "-mesa -march=g5 -mhotpatch=0,4" } */ + + #include + +-__attribute__ ((hotpatch(2))) + void hp1(void) + { + printf("hello, world!\n"); + } + +-int main (void) +-{ +- return 0; +-} +- + /* Check number of occurences of certain instructions. */ +-/* { dg-final { scan-assembler-times "nopr\t%r7" 2 } } */ +-/* { dg-final { scan-assembler-times "nop\t0" 1 } } */ ++/* { dg-final { scan-assembler-not "pre-label NOPs" } } */ ++/* { dg-final { scan-assembler "^\[^.\].*:\n.*post-label.*(4 halfwords).*\n\(\(.L.*:\n\)\|\(\[\[:space:\]\]*.cfi_.*\n\)\)*\[\[:space:\]\]*nop\t0" } } */ ++/* { dg-final { scan-assembler-not "nopr\t%r7" } } */ ++/* { dg-final { scan-assembler-times "nop\t0" 2 } } */ ++/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-11.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-11.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-11.c (.../branches/gcc-4_9-branch) +@@ -1,7 +1,7 @@ + /* Functional tests for the function hotpatching feature. */ + +-/* { dg-do run } */ +-/* { dg-options "-O3 -mzarch -mhotpatch -mno-hotpatch --save-temps" } */ ++/* { dg-do compile } */ ++/* { dg-options "-mzarch -mhotpatch=1,0" } */ + + #include + +@@ -10,11 +10,9 @@ + printf("hello, world!\n"); + } + +-int main (void) +-{ +- return 0; +-} +- + /* Check number of occurences of certain instructions. */ +-/* { dg-final { scan-assembler-not "nopr\t%r7" } } */ ++/* { dg-final { scan-assembler "pre-label.*(1 halfwords)" } } */ ++/* { dg-final { scan-assembler-not "post-label NOPs" } } */ ++/* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */ + /* { dg-final { scan-assembler-not "nop\t0" } } */ ++/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-13.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-13.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-13.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,20 @@ ++/* Functional tests for the function hotpatching feature. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-mzarch" } */ ++ ++#include ++ ++__attribute__ ((hotpatch(1,0))) ++void hp1(void) ++{ ++ printf("hello, world!\n"); ++} ++ ++/* Check number of occurences of certain instructions. */ ++/* { dg-final { scan-assembler "pre-label.*(1 halfwords)" } } */ ++/* { dg-final { scan-assembler-not "post-label NOPs" } } */ ++/* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */ ++/* { dg-final { scan-assembler-not "nop\t0" } } */ ++/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ ++/* { dg-final { scan-assembler "alignment for hotpatch" } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-15.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-15.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-15.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,19 @@ ++/* Functional tests for the function hotpatching feature. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-mzarch" } */ ++ ++#include ++ ++__attribute__ ((hotpatch(1,2))) ++void hp1(void) ++{ ++ printf("hello, world!\n"); ++} ++ ++/* Check number of occurences of certain instructions. */ ++/* { dg-final { scan-assembler "pre-label.*(1 halfwords)" } } */ ++/* { dg-final { scan-assembler "^\[^.\].*:\n.*post-label.*(2 halfwords).*\n\(\(.L.*:\n\)\|\(\[\[:space:\]\]*.cfi_.*\n\)\)*\[\[:space:\]\]*nop\t0" } } */ ++/* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */ ++/* { dg-final { scan-assembler-times "nop\t0" 1 } } */ ++/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-17.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-17.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-17.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,20 @@ ++/* Functional tests for the function hotpatching feature. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-mzarch -mhotpatch=1,2" } */ ++ ++#include ++ ++__attribute__ ((hotpatch(0,0))) ++void hp1(void) ++{ ++ printf("hello, world!\n"); ++} ++ ++/* Check number of occurences of certain instructions. */ ++/* { dg-final { scan-assembler-not "pre-label NOPs" } } */ ++/* { dg-final { scan-assembler-not "post-label NOPs" } } */ ++/* { dg-final { scan-assembler-not "nopr\t%r7" } } */ ++/* { dg-final { scan-assembler-not "nop\t0" } } */ ++/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ ++/* { dg-final { scan-assembler-not "alignment for hotpatch" } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-compile-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-2.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-2.c (.../branches/gcc-4_9-branch) +@@ -1,27 +1,5 @@ + /* Functional tests for the function hotpatching feature. */ + +-/* { dg-do run } */ +-/* { dg-options "-O3 -mzarch -mhotpatch=0" } */ +- +-#include +- +-void hp1(void) +-{ +- printf("hello, world!\n"); +-} +- +-inline void hp2(void) +-{ +- printf("hello, world!\n"); +-} +- +-__attribute__ ((always_inline)) +-void hp3(void) /* { dg-warning "always_inline function might not be inlinable" } */ +-{ +- printf("hello, world!\n"); +-} /* { dg-warning "function 'hp3' with the 'always_inline' attribute is not hotpatchable" } */ +- +-int main (void) +-{ +- return 0; +-} ++/* { dg-do compile } */ ++/* { dg-options "-O3 -mzarch -mhotpatch=0,-1" } */ ++/* { dg-error "arguments to .-mhotpatch=n,m. should be non-negative integers" "" { target *-*-* } 1 } */ +Index: gcc/testsuite/gcc.target/s390/pr57559.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/pr57559.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/pr57559.c (.../branches/gcc-4_9-branch) +@@ -1,7 +1,7 @@ + /* PR rtl-optimization/57559 */ + + /* { dg-do compile } */ +-/* { dg-options "-march=z10 -m64 -mzarch -O1" } */ ++/* { dg-options "-march=z10 -mzarch -O1" } */ + + typedef int int32_t; + typedef unsigned char uint8_t; +Index: gcc/testsuite/gcc.target/s390/20140327-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/20140327-1.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/20140327-1.c (.../branches/gcc-4_9-branch) +@@ -1,5 +1,5 @@ +-/* { dg-do compile } */ +-/* { dg-options "-O3 -m31 -mzarch" } */ ++/* { dg-do compile { target { ! lp64 } } } */ ++/* { dg-options "-O3 -mzarch" } */ + + void + foo () +Index: gcc/testsuite/gcc.target/s390/hotpatch-19.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-19.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-19.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,24 @@ ++/* Functional tests for the function hotpatching feature. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-mzarch -mhotpatch=1,2" } */ ++ ++#include ++ ++__attribute__ ((always_inline)) ++static inline void hp2(void) ++{ ++ printf("hello, world!\n"); ++} ++ ++void hp1(void) ++{ ++ hp2(); ++} ++ ++/* Check number of occurences of certain instructions. */ ++/* { dg-final { scan-assembler "pre-label.*(1 halfwords)" } } */ ++/* { dg-final { scan-assembler "^\[^.\].*:\n.*post-label.*(2 halfwords).*\n\(\(.L.*:\n\)\|\(\[\[:space:\]\]*.cfi_.*\n\)\)*\[\[:space:\]\]*nop\t0" } } */ ++/* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */ ++/* { dg-final { scan-assembler-times "nop\t0" 1 } } */ ++/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-compile-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-4.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-4.c (.../branches/gcc-4_9-branch) +@@ -1,11 +1,5 @@ + /* Functional tests for the function hotpatching feature. */ + + /* { dg-do compile } */ +-/* { dg-options "-O3 -mzarch -mhotpatch=-1" } */ +- +-int main (void) +-{ +- return 0; +-} +- +-/* { dg-excess-errors "argument to '-mhotpatch=' should be a non-negative integer" } */ ++/* { dg-options "-O3 -mzarch -mhotpatch=0,0,0" } */ ++/* { dg-error "arguments to .-mhotpatch=n,m. should be non-negative integers" "" { target *-*-* } 1 } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-compile-6.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-6.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-6.c (.../branches/gcc-4_9-branch) +@@ -1,11 +1,5 @@ + /* Functional tests for the function hotpatching feature. */ + + /* { dg-do compile } */ +-/* { dg-options "-O3 -mzarch -mhotpatch=1000001" } */ +- +-int main (void) +-{ +- return 0; +-} +- +-/* { dg-excess-errors "argument to '-mhotpatch=' is too large .max. 1000000." } */ ++/* { dg-options "-O3 -mzarch -mhotpatch=0,a" } */ ++/* { dg-error "arguments to .-mhotpatch=n,m. should be non-negative integers" "" { target *-*-* } 1 } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-compile-8.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-8.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-8.c (.../branches/gcc-4_9-branch) +@@ -1,23 +1,10 @@ + /* Functional tests for the function hotpatching feature. */ + +-/* { dg-do run } */ +-/* { dg-options "-O3 -mzarch -mhotpatch" } */ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -mzarch" } */ + +-#include +- +-int hp1(void) +-{ +- int nested1(void) /* { dg-warning "hotpatching is not compatible with nested functions" } */ +- { return 1; } +- +- __attribute__ ((hotpatch)) +- int nested2(void) /* { dg-warning "hotpatching is not compatible with nested functions" } */ +- { return 1; } +- +- return nested1() - nested2(); +-} +- ++__attribute__((hotpatch(0,-1))) + int main (void) +-{ +- return hp1(); ++{/* { dg-error "attribute is not a comma separated pair of non-negative integer constants or too large" } */ ++ return 0; + } +Index: gcc/testsuite/gcc.target/s390/hotpatch-compile-11.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-11.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-11.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,12 @@ ++/* Functional tests for the function hotpatching feature. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -mzarch" } */ ++ ++int a; ++ ++__attribute__((hotpatch(a,0))) ++int main (void) ++{ /* { dg-error "attribute is not a comma separated pair of non-negative integer constants or too large" } */ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/s390/hotpatch-compile-13.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-13.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-13.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,29 @@ ++/* Functional tests for the function hotpatching feature. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -mzarch -mhotpatch=1000000,1000000" } */ ++ ++#include ++ ++void hp1(void) ++{ ++ printf("hello, world!\n"); ++} ++ ++__attribute__ ((hotpatch(1000000,1000000))) ++void hp2(void) ++{ ++ printf("hello, world!\n"); ++} ++ ++__attribute__ ((hotpatch(1000001,1000000))) ++void hp3(void) ++{ /* { dg-error " requested .hotpatch. attribute is not a comma separated pair" } */ ++ printf("hello, world!\n"); ++} ++ ++__attribute__ ((hotpatch(1000000,1000001))) ++void hp4(void) ++{ /* { dg-error " requested .hotpatch. attribute is not a comma separated pair" } */ ++ printf("hello, world!\n"); ++} +Index: gcc/testsuite/gcc.target/s390/hotpatch-compile-15.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-15.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-15.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,40 @@ ++/* Functional tests for the function hotpatching feature. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -mzarch" } */ ++ ++#include ++ ++__attribute__ ((hotpatch(1,2))) ++static void hp1(void) ++{ ++ printf("hello, world!\n"); ++} ++ ++__attribute__ ((hotpatch(1,2))) ++static inline void hp2(void) ++{ ++ printf("hello, world!\n"); ++} ++ ++__attribute__ ((hotpatch(0,0))) ++__attribute__ ((always_inline)) ++static inline void hp3(void) ++{ ++ printf("hello, world!\n"); ++} ++ ++__attribute__ ((hotpatch(1,2))) ++__attribute__ ((always_inline)) ++static inline void hp4(void) ++{ ++ printf("hello, world!\n"); ++} ++ ++void main(void) ++{ ++ hp1(); ++ hp2(); ++ hp3(); ++ hp4(); ++} +Index: gcc/testsuite/gcc.target/s390/htm-nofloat-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/htm-nofloat-1.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/htm-nofloat-1.c (.../branches/gcc-4_9-branch) +@@ -48,3 +48,4 @@ + /* Make sure no FPR saves/restores are emitted. */ + /* { dg-final { scan-assembler-not "\tstd\t" } } */ + /* { dg-final { scan-assembler-not "\tld\t" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-20.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-20.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-20.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,18 @@ ++/* Functional tests for the function hotpatching feature. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-mzarch" } */ ++ ++#include ++ ++__attribute__ ((hotpatch(1,2))) ++__attribute__ ((always_inline)) ++static inline void hp2(void) ++{ ++ printf("hello, world!\n"); ++} ++ ++void hp1(void) ++{ ++ hp2(); ++} +Index: gcc/testsuite/gcc.target/s390/hotpatch-22.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-22.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-22.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,14 @@ ++/* Functional tests for the function hotpatching feature. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-mzarch -mhotpatch=0,1 -falign-functions=1024" } */ ++ ++#include ++ ++void hp1(void) ++{ ++ printf("hello, world!\n"); ++} ++ ++/* Check number of occurences of certain instructions. */ ++/* { dg-final { scan-assembler-not "alignment for hotpatch" } } */ +Index: gcc/testsuite/gcc.target/s390/pr57960.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/pr57960.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/pr57960.c (.../branches/gcc-4_9-branch) +@@ -1,7 +1,7 @@ + /* PR rtl-optimization/57960 */ + + /* { dg-do compile } */ +-/* { dg-options "-march=z10 -m64 -mzarch -O1" } */ ++/* { dg-options "-march=z10 -mzarch -O1" } */ + + typedef union + { +Index: gcc/testsuite/gcc.target/s390/hotpatch-24.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-24.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-24.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,14 @@ ++/* Functional tests for the function hotpatching feature. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-mzarch -mhotpatch=0,1 -falign-functions=2048" } */ ++ ++#include ++ ++void __attribute__ ((aligned(4096))) hp1(void) ++{ ++ printf("hello, world!\n"); ++} ++ ++/* Check number of occurences of certain instructions. */ ++/* { dg-final { scan-assembler-not "alignment for hotpatch" } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-26.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-26.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-26.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,17 @@ ++/* Functional tests for the function hotpatching feature. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -mzarch -mhotpatch=1,2" } */ ++ ++__attribute__ ((noreturn)) void hp1(void) ++{ ++ __builtin_unreachable (); ++} ++ ++/* Check number of occurences of certain instructions. */ ++/* { dg-final { scan-assembler "pre-label NOPs" } } */ ++/* { dg-final { scan-assembler "^\[^.\].*:\n.*post-label.*(2 halfwords).*\n\(\(.L.*:\n\)\|\(\[\[:space:\]\]*.cfi_.*\n\)\)*\[\[:space:\]\]*nop\t0" } } */ ++/* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */ ++/* { dg-final { scan-assembler-times "nop\t0" 1 } } */ ++/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ ++/* { dg-final { scan-assembler "alignment for hotpatch" } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-28.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-28.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-28.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,18 @@ ++/* Functional tests for the function hotpatching feature. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -mzarch -mhotpatch=1,2" } */ ++ ++void hp1 (volatile unsigned int *i) ++{ ++ for (;;) ++ (*i)++; ++} ++ ++/* Check number of occurences of certain instructions. */ ++/* { dg-final { scan-assembler "pre-label NOPs" } } */ ++/* { dg-final { scan-assembler "^\[^.\].*:\n.*post-label.*(2 halfwords).*\n\(\(.L.*:\n\)\|\(\[\[:space:\]\]*.cfi_.*\n\)\)*\[\[:space:\]\]*nop\t0" } } */ ++/* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */ ++/* { dg-final { scan-assembler-times "nop\t0" 1 } } */ ++/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ ++/* { dg-final { scan-assembler "alignment for hotpatch" } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-2.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-2.c (.../branches/gcc-4_9-branch) +@@ -1,7 +1,7 @@ + /* Functional tests for the function hotpatching feature. */ + +-/* { dg-do run } */ +-/* { dg-options "-O3 -mzarch -mhotpatch=1 --save-temps" } */ ++/* { dg-do compile } */ ++/* { dg-options "-mzarch -mhotpatch=0,1" } */ + + #include + +@@ -10,11 +10,10 @@ + printf("hello, world!\n"); + } + +-int main (void) +-{ +- return 0; +-} +- + /* Check number of occurences of certain instructions. */ ++/* { dg-final { scan-assembler-not "pre-label NOPs" } } */ ++/* { dg-final { scan-assembler "^\[^.\].*:\n.*post-label.*(1 halfwords).*\n\(\(.L.*:\n\)\|\(\[\[:space:\]\]*.cfi_.*\n\)\)*\[\[:space:\]\]*nopr\t" } } */ + /* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */ +-/* { dg-final { scan-assembler-times "nop\t0" 1 } } */ ++/* { dg-final { scan-assembler-not "nop\t0" } } */ ++/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ ++/* { dg-final { scan-assembler-not "alignment for hotpatch" } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-4.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-4.c (.../branches/gcc-4_9-branch) +@@ -1,26 +1,18 @@ + /* Functional tests for the function hotpatching feature. */ + +-/* { dg-do run } */ +-/* { dg-options "-O3 -mzarch -mhotpatch --save-temps" } */ ++/* { dg-do compile } */ ++/* { dg-options "-mzarch -mhotpatch=0,3" } */ + + #include + +-inline void hp1(void) ++void hp1(void) + { + printf("hello, world!\n"); + } + +-__attribute__ ((always_inline)) +-void hp2(void) /* { dg-warning "always_inline function might not be inlinable" } */ +-{ +- printf("hello, world!\n"); +-} /* { dg-warning "function 'hp2' with the 'always_inline' attribute is not hotpatchable" } */ +- +-int main (void) +-{ +- return 0; +-} +- + /* Check number of occurences of certain instructions. */ ++/* { dg-final { scan-assembler-not "pre-label NOPs" } } */ ++/* { dg-final { scan-assembler "^\[^.\].*:\n.*post-label.*(3 halfwords).*\n\(\(.L.*:\n\)\|\(\[\[:space:\]\]*.cfi_.*\n\)\)*\[\[:space:\]\]*brcl\t0, 0" } } */ + /* { dg-final { scan-assembler-not "nopr\t%r7" } } */ + /* { dg-final { scan-assembler-not "nop\t0" } } */ ++/* { dg-final { scan-assembler-times "brcl\t0, 0" 1 } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-6.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-6.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-6.c (.../branches/gcc-4_9-branch) +@@ -1,21 +1,18 @@ + /* Functional tests for the function hotpatching feature. */ + +-/* { dg-do run } */ +-/* { dg-options "-O3 -mzarch -mhotpatch --save-temps" } */ ++/* { dg-do compile } */ ++/* { dg-options "-mzarch -mhotpatch=0,5" } */ + + #include + +-__attribute__ ((hotpatch(1))) + void hp1(void) + { + printf("hello, world!\n"); + } + +-int main (void) +-{ +- return 0; +-} +- + /* Check number of occurences of certain instructions. */ +-/* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */ ++/* { dg-final { scan-assembler-not "pre-label NOPs" } } */ ++/* { dg-final { scan-assembler "^\[^.\].*:\n.*post-label.*(5 halfwords).*\n\(\(.L.*:\n\)\|\(\[\[:space:\]\]*.cfi_.*\n\)\)*\[\[:space:\]\]*brcl\t0, 0" } } */ ++/* { dg-final { scan-assembler-not "nopr\t%r7" } } */ + /* { dg-final { scan-assembler-times "nop\t0" 1 } } */ ++/* { dg-final { scan-assembler-times "brcl\t0, 0" 1 } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-8.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-8.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-8.c (.../branches/gcc-4_9-branch) +@@ -1,28 +1,19 @@ + /* Functional tests for the function hotpatching feature. */ + +-/* { dg-do run } */ +-/* { dg-options "-O3 -mzarch -mhotpatch --save-temps" } */ ++/* { dg-do compile { target { ! lp64 } } } */ ++/* { dg-options "-mesa -march=g5 -mhotpatch=0,3" } */ + + #include + +-__attribute__ ((hotpatch)) +-inline void hp1(void) ++void hp1(void) + { + printf("hello, world!\n"); + } + +-__attribute__ ((hotpatch)) +-__attribute__ ((always_inline)) +-void hp2(void) /* { dg-warning "always_inline function might not be inlinable" } */ +-{ +- printf("hello, world!\n"); +-} /* { dg-warning "function 'hp2' with the 'always_inline' attribute is not hotpatchable" } */ +- +-int main (void) +-{ +- return 0; +-} +- + /* Check number of occurences of certain instructions. */ +-/* { dg-final { scan-assembler-not "nopr\t%r7" } } */ +-/* { dg-final { scan-assembler-not "nop\t0" } } */ ++/* { dg-final { scan-assembler-not "pre-label NOPs" } } */ ++/* { dg-final { scan-assembler "^\[^.\].*:\n.*post-label.*(3 halfwords).*\n\(\(.L.*:\n\)\|\(\[\[:space:\]\]*.cfi_.*\n\)\)*\[\[:space:\]\]*nop\t0" } } */ ++/* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */ ++/* { dg-final { scan-assembler-times "nop\t0" 1 } } */ ++/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ ++/* { dg-final { scan-assembler-not "alignment for hotpatch" } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-10.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-10.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-10.c (.../branches/gcc-4_9-branch) +@@ -1,21 +1,19 @@ + /* Functional tests for the function hotpatching feature. */ + +-/* { dg-do run } */ +-/* { dg-options "-O3 -mzarch -mno-hotpatch --save-temps" } */ ++/* { dg-do compile } */ ++/* { dg-options "-mzarch -mhotpatch=0,0" } */ + + #include + +-__attribute__ ((hotpatch(2))) + void hp1(void) + { + printf("hello, world!\n"); + } + +-int main (void) +-{ +- return 0; +-} +- + /* Check number of occurences of certain instructions. */ +-/* { dg-final { scan-assembler-times "nopr\t%r7" 2 } } */ +-/* { dg-final { scan-assembler-times "nop\t0" 1 } } */ ++/* { dg-final { scan-assembler-not "pre-label NOPs" } } */ ++/* { dg-final { scan-assembler-not "post-label NOPs" } } */ ++/* { dg-final { scan-assembler-not "nopr\t%r7" } } */ ++/* { dg-final { scan-assembler-not "nop\t0" } } */ ++/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ ++/* { dg-final { scan-assembler-not "alignment for hotpatch" } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-12.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-12.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-12.c (.../branches/gcc-4_9-branch) +@@ -1,7 +1,7 @@ + /* Functional tests for the function hotpatching feature. */ + +-/* { dg-do run } */ +-/* { dg-options "-O3 -mzarch -mno-hotpatch -mhotpatch=1 --save-temps" } */ ++/* { dg-do compile } */ ++/* { dg-options "-mzarch -mhotpatch=999,0" } */ + + #include + +@@ -10,11 +10,9 @@ + printf("hello, world!\n"); + } + +-int main (void) +-{ +- return 0; +-} +- + /* Check number of occurences of certain instructions. */ +-/* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */ +-/* { dg-final { scan-assembler-times "nop\t0" 1 } } */ ++/* { dg-final { scan-assembler "pre-label.*(999 halfwords)" } } */ ++/* { dg-final { scan-assembler-not "post-label NOPs" } } */ ++/* { dg-final { scan-assembler-times "nopr\t%r7" 999 } } */ ++/* { dg-final { scan-assembler-not "nop\t0" } } */ ++/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ +Index: gcc/testsuite/gcc.target/s390/hotpatch-14.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-14.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-14.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,20 @@ ++/* Functional tests for the function hotpatching feature. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-mzarch" } */ ++ ++#include ++ ++__attribute__ ((hotpatch(0,2))) ++void hp1(void) ++{ ++ printf("hello, world!\n"); ++} ++ ++/* Check number of occurences of certain instructions. */ ++/* { dg-final { scan-assembler-not "pre-label NOPs" } } */ ++/* { dg-final { scan-assembler "^\[^.\].*:\n.*post-label.*(2 halfwords).*\n\(\(.L.*:\n\)\|\(\[\[:space:\]\]*.cfi_.*\n\)\)*\[\[:space:\]\]*nop\t0" } } */ ++/* { dg-final { scan-assembler-not "nopr\t%r7" } } */ ++/* { dg-final { scan-assembler-times "nop\t0" 1 } } */ ++/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ ++/* { dg-final { scan-assembler-not "alignment for hotpatch" } } */ +Index: gcc/testsuite/gcc.target/h8300/pragma-isr.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/h8300/pragma-isr.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/h8300/pragma-isr.c (.../branches/gcc-4_9-branch) +@@ -18,23 +18,3 @@ + { + foo (); + } +-/* Check whether rte is generated for two ISRs. */ +-/* { dg-do compile { target h8300-*-* } } */ +-/* { dg-options "-O3" } */ +-/* { dg-final { scan-assembler-times "rte" 2} } */ +- +-extern void foo (void); +- +-#pragma interrupt +-void +-isr1 (void) +-{ +- foo (); +-} +- +-#pragma interrupt +-void +-isr2 (void) +-{ +- foo (); +-} +Index: gcc/testsuite/gcc.target/h8300/pragma-isr2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/h8300/pragma-isr2.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/h8300/pragma-isr2.c (.../branches/gcc-4_9-branch) +@@ -19,24 +19,3 @@ + { + return 0; + } +-/* Check whether rte is generated only for an ISR. */ +-/* { dg-do compile { target h8300-*-* } } */ +-/* { dg-options "-O" } */ +-/* { dg-final { scan-assembler-times "rte" 1 } } */ +- +-#pragma interrupt +-void +-isr (void) +-{ +-} +- +-void +-delay (int a) +-{ +-} +- +-int +-main (void) +-{ +- return 0; +-} +Index: gcc/testsuite/gcc.target/h8300/h8300.exp +=================================================================== +--- a/src/gcc/testsuite/gcc.target/h8300/h8300.exp (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/h8300/h8300.exp (.../branches/gcc-4_9-branch) +@@ -39,44 +39,3 @@ + + # All done. + dg-finish +-# Copyright (C) 2013-2014 Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 3 of the License, or +-# (at your option) any later version. +-# +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +-# +-# You should have received a copy of the GNU General Public License +-# along with GCC; see the file COPYING3. If not see +-# . +- +-# GCC testsuite that uses the `dg.exp' driver. +- +-# Exit immediately if this isn't a h8300 target. +-if ![istarget h8300*-*-*] then { +- return +-} +- +-# Load support procs. +-load_lib gcc-dg.exp +- +-# If a testcase doesn't have special options, use these. +-global DEFAULT_CFLAGS +-if ![info exists DEFAULT_CFLAGS] then { +- set DEFAULT_CFLAGS " -ansi -pedantic-errors" +-} +- +-# Initialize `dg'. +-dg-init +- +-# Main loop. +-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] \ +- "" $DEFAULT_CFLAGS +- +-# All done. +-dg-finish +Index: gcc/testsuite/gcc.target/sh/pr53988.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/sh/pr53988.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/sh/pr53988.c (.../branches/gcc-4_9-branch) +@@ -5,9 +5,9 @@ + /* { dg-do compile } */ + /* { dg-options "-O1" } */ + /* { dg-skip-if "" { "sh*-*-*" } { "-m5*"} { "" } } */ +-/* { dg-final { scan-assembler-times "tst\tr" 8 } } */ +-/* { dg-final { scan-assembler-not "tst\t#255" } } */ +-/* { dg-final { scan-assembler-not "exts|extu|and|movu" } } */ ++/* { dg-final { scan-assembler-times "tst\tr" 8 { xfail *-*-*} } } */ ++/* { dg-final { scan-assembler-not "tst\t#255" { xfail *-*-*} } } */ ++/* { dg-final { scan-assembler-not "exts|extu|and|movu" { xfail *-*-*} } } */ + + int + test00 (char* a, char* b, int c, int d) +Index: gcc/testsuite/gcc.target/sh/pr64507.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/sh/pr64507.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/sh/pr64507.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,25 @@ ++/* Check that the __builtin_strnlen returns 0 with with ++ non-constant 0 length. */ ++/* { dg-do run } */ ++/* { dg-options "-O2" } */ ++ ++extern int snprintf(char *, int, const char *, ...); ++extern void abort (void); ++ ++int main() ++ { ++ int i; ++ int cmp = 0; ++ char buffer[1024]; ++ const char* s = "the string"; ++ ++ snprintf(buffer, 4, "%s", s); ++ ++ for (i = 1; i < 4; i++) ++ cmp += __builtin_strncmp(buffer, s, i - 1); ++ ++ if (cmp) ++ abort(); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/sh/pr51244-20-sh2a.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/sh/pr51244-20-sh2a.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/sh/pr51244-20-sh2a.c (.../branches/gcc-4_9-branch) +@@ -3,12 +3,12 @@ + /* { dg-do compile } */ + /* { dg-options "-O2" } */ + /* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m2a*" } } */ +-/* { dg-final { scan-assembler-times "tst" 5 } } */ +-/* { dg-final { scan-assembler-times "movt" 0 } } */ ++/* { dg-final { scan-assembler-times "tst" 6 } } */ ++/* { dg-final { scan-assembler-times "movt" 1 } } */ + /* { dg-final { scan-assembler-times "nott" 1 } } */ + /* { dg-final { scan-assembler-times "cmp/eq" 2 } } */ + /* { dg-final { scan-assembler-times "cmp/hi" 4 } } */ + /* { dg-final { scan-assembler-times "cmp/gt" 3 } } */ +-/* { dg-final { scan-assembler-times "not\t" 1 } } */ ++/* { dg-final { scan-assembler-not "not\t" } } */ + + #include "pr51244-20.c" +Index: gcc/testsuite/gcc.target/sh/pr51244-20.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/sh/pr51244-20.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/sh/pr51244-20.c (.../branches/gcc-4_9-branch) +@@ -1,15 +1,15 @@ + /* Check that the SH specific sh_treg_combine RTL optimization pass works as + expected. On SH2A the expected insns are slightly different, see +- pr51244-21.c. */ ++ pr51244-20-sh2a.c. */ + /* { dg-do compile } */ + /* { dg-options "-O2" } */ + /* { dg-skip-if "" { "sh*-*-*" } { "-m5*" "-m2a*" } { "" } } */ +-/* { dg-final { scan-assembler-times "tst" 6 } } */ +-/* { dg-final { scan-assembler-times "movt" 1 } } */ ++/* { dg-final { scan-assembler-times "tst" 7 } } */ ++/* { dg-final { scan-assembler-times "movt" 2 } } */ + /* { dg-final { scan-assembler-times "cmp/eq" 2 } } */ + /* { dg-final { scan-assembler-times "cmp/hi" 4 } } */ + /* { dg-final { scan-assembler-times "cmp/gt" 2 } } */ +-/* { dg-final { scan-assembler-times "not\t" 1 } } */ ++/* { dg-final { scan-assembler-not "not\t" } } */ + + + /* non-SH2A: 2x tst, 1x movt, 2x cmp/eq, 1x cmp/hi +@@ -81,7 +81,7 @@ + } + + +-/* 2x tst, 1x cmp/hi, 1x not */ ++/* 3x tst, 1x movt, 1x cmp/hi, 1x not */ + static inline int + blk_oversized_queue_5 (int* q) + { +Index: gcc/testsuite/gcc.target/sh/torture/pr63783-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/sh/torture/pr63783-1.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/sh/torture/pr63783-1.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,29 @@ ++/* { dg-do run } */ ++/* { dg-additional-options "-std=c99" } */ ++ ++#include ++ ++int decision_result; ++int val; ++int truecount = 0; ++ ++static void __attribute__((noinline)) ++buggy (int flag) ++{ ++ int condition; ++ if(flag == 0) ++ condition = val != 0; ++ else ++ condition = !decision_result; ++ if (condition) ++ truecount++; ++} ++ ++int ++main (void) ++{ ++ decision_result = 1; ++ buggy(1); ++ assert (truecount == 0); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/sh/torture/pr63783-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/sh/torture/pr63783-2.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.target/sh/torture/pr63783-2.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,29 @@ ++/* { dg-do run } */ ++/* { dg-additional-options "-std=c99" } */ ++ ++#include ++ ++long long decision_result; ++long long val; ++int truecount = 0; ++ ++static void __attribute__((noinline)) ++buggy (int flag) ++{ ++ int condition; ++ if(flag == 0) ++ condition = val != 0; ++ else ++ condition = !decision_result; ++ if (condition) ++ truecount++; ++} ++ ++int ++main (void) ++{ ++ decision_result = 1; ++ buggy(1); ++ assert (truecount == 0); ++ return 0; ++} +Index: gcc/testsuite/go.test/go-test.exp +=================================================================== +--- a/src/gcc/testsuite/go.test/go-test.exp (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/go.test/go-test.exp (.../branches/gcc-4_9-branch) +@@ -241,7 +241,11 @@ + if [check_effective_target_ilp32] { + set goarch "ppc" + } else { +- set goarch "ppc64" ++ if [istarget "powerpc64le-*-*"] { ++ set goarch "ppc64le" ++ } else { ++ set goarch "ppc64" ++ } + } + } + "sparc*-*-*" { +Index: gcc/testsuite/lib/target-supports.exp +=================================================================== +--- a/src/gcc/testsuite/lib/target-supports.exp (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/lib/target-supports.exp (.../branches/gcc-4_9-branch) +@@ -41,6 +41,14 @@ + global tool + verbose "check_compile tool: $tool for $basename" + ++ # Save additional_sources to avoid compiling testsuite's sources ++ # against check_compile's source. ++ global additional_sources ++ if [info exists additional_sources] { ++ set tmp_additional_sources "$additional_sources" ++ set additional_sources "" ++ } ++ + if { [llength $args] > 0 } { + set options [list "additional_flags=[lindex $args 0]"] + } else { +@@ -86,6 +94,11 @@ + file delete $output + } + ++ # Restore additional_sources. ++ if [info exists additional_sources] { ++ set additional_sources "$tmp_additional_sources" ++ } ++ + return [list $lines $scan_output] + } + +@@ -3115,6 +3128,25 @@ + } + } + ++# Return 1 if the target supports executing HTM hardware instructions, ++# 0 otherwise. Cache the result. ++ ++proc check_htm_hw_available { } { ++ return [check_cached_effective_target htm_hw_available { ++ # For now, disable on Darwin ++ if { [istarget powerpc-*-eabi] || [istarget powerpc*-*-eabispe] || [istarget *-*-darwin*]} { ++ expr 0 ++ } else { ++ check_runtime_nocache htm_hw_available { ++ int main() ++ { ++ __builtin_ttest (); ++ return 0; ++ } ++ } "-mhtm" ++ } ++ }] ++} + # Return 1 if this is a PowerPC target supporting -mcpu=cell. + + proc check_effective_target_powerpc_ppu_ok { } { +@@ -4006,6 +4038,7 @@ + || [istarget sparc*-*-*] + || [istarget ia64-*-*] + || [check_effective_target_arm_vect_no_misalign] ++ || ([istarget powerpc*-*-*] && [check_p8vector_hw_available]) + || ([istarget mips*-*-*] + && [check_effective_target_mips_loongson]) } { + set et_vect_no_align_saved 1 +@@ -4027,8 +4060,9 @@ + } else { + set et_vect_hw_misalign_saved 0 + if { ([istarget x86_64-*-*] +- || [istarget aarch64*-*-*] +- || [istarget i?86-*-*]) } { ++ || ([istarget powerpc*-*-*] && [check_p8vector_hw_available]) ++ || [istarget aarch64*-*-*] ++ || [istarget i?86-*-*]) } { + set et_vect_hw_misalign_saved 1 + } + } +@@ -4973,6 +5007,7 @@ + "p8vector_hw" { set selected [check_p8vector_hw_available] } + "ppc_recip_hw" { set selected [check_ppc_recip_hw_available] } + "dfp_hw" { set selected [check_dfp_hw_available] } ++ "htm_hw" { set selected [check_htm_hw_available] } + "named_sections" { set selected [check_named_sections_available] } + "gc_sections" { set selected [check_gc_sections_available] } + "cxa_atexit" { set selected [check_cxa_atexit_available] } +@@ -4996,6 +5031,7 @@ + "p8vector_hw" { return 1 } + "ppc_recip_hw" { return 1 } + "dfp_hw" { return 1 } ++ "htm_hw" { return 1 } + "named_sections" { return 1 } + "gc_sections" { return 1 } + "cxa_atexit" { return 1 } +@@ -5620,7 +5656,7 @@ + + lappend DEFAULT_VECTCFLAGS "-maltivec" + if [check_p8vector_hw_available] { +- lappend DEFAULT_VECTCFLAGS "-mpower8-vector" "-mno-allow-movmisalign" ++ lappend DEFAULT_VECTCFLAGS "-mpower8-vector" + } elseif [check_vsx_hw_available] { + lappend DEFAULT_VECTCFLAGS "-mvsx" "-mno-allow-movmisalign" + } +Index: gcc/testsuite/gfortran.dg/pointer_remapping_9.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pointer_remapping_9.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/pointer_remapping_9.f90 (.../branches/gcc-4_9-branch) +@@ -0,0 +1,31 @@ ++! { dg-do run } ++! ++! PR fortran/61138 ++! Wrong code with pointer-bounds remapping ++! ++! Contributed by Tobias Burnus ++ ++implicit none ++integer, target :: tgt(10) ++integer, target, allocatable :: tgt2(:) ++integer, pointer :: ptr(:) ++ ++tgt = [1,2,3,4,5,6,7,8,9,10] ++tgt2 = [1,2,3,4,5,6,7,8,9,10] ++ ++ ++ptr(-5:) => tgt(5:) ! Okay ++ ++if (size(ptr) /= 6 .or. lbound(ptr,1) /= -5) call abort() ++if (any (ptr /= [5,6,7,8,9,10])) call abort() ++ ++ ++ptr(-5:) => tgt2(5:) ! wrongly associates the whole array ++ ++print '(*(i4))', size(ptr), lbound(ptr) ++print '(*(i4))', ptr ++ ++if (size(ptr) /= 6 .or. lbound(ptr,1) /= -5) call abort() ++if (any (ptr /= [5,6,7,8,9,10])) call abort() ++end ++ +Index: gcc/testsuite/gfortran.dg/allocate_with_mold_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/allocate_with_mold_1.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/allocate_with_mold_1.f90 (.../branches/gcc-4_9-branch) +@@ -0,0 +1,47 @@ ++! { dg-do run } ++! ++! Fixes a bug that emerged from the fix of PR62044 - see the PR. When ++! there was no default initializer, code-expr3 was set null and so the ++! vpointer was set to the vtable of the declared type, rather than that ++! of the MOLD expression. ++! ++! Contributed by but based on the original PR62044 testcase by ++! Paul Thomas ++! ++module GridImageSilo_Template ++ implicit none ++ type, public, abstract :: GridImageSiloTemplate ++ end type GridImageSiloTemplate ++end module GridImageSilo_Template ++ ++module UnstructuredGridImageSilo_Form ++ use GridImageSilo_Template ++ implicit none ++ type, public, extends ( GridImageSiloTemplate ) :: & ++ UnstructuredGridImageSiloForm ++ end type UnstructuredGridImageSiloForm ++end module UnstructuredGridImageSilo_Form ++ ++module UnstructuredGridImages ++ use UnstructuredGridImageSilo_Form ++! 5.0 branch contains UnstructuredGridImageForm => UnstructuredGridImageSiloForm ++contains ++ subroutine foo ++ class (GridImageSiloTemplate), allocatable :: a ++ type (UnstructuredGridImageSiloForm) :: b ++ integer :: i = 0 ++ allocate (a, mold = b) ++ select type (a) ++ type is (UnstructuredGridImageSiloForm) ++ i = 1 ++ class default ++ i = 2 ++ end select ++ if (i .ne. 1) call abort ++ end subroutine ++end module UnstructuredGridImages ++ ++ use UnstructuredGridImages ++ call foo ++end ++ +Index: gcc/testsuite/gfortran.dg/pr65450.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr65450.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr65450.f90 (.../branches/gcc-4_9-branch) +@@ -0,0 +1,35 @@ ++! PR tree-optimization/65450 ++! { dg-do run } ++! { dg-additional-options "-mtune=amdfam10" { target x86_64-*-* i?86-*-* } } ++ ++program pr65450 ++ integer :: n, m, o, i, k ++ double precision :: u(500,60,3), h(500,60,3) ++ double precision :: v(500,60) ++ u = 0 ++ h = 0 ++ o = 1 ++ m = 2 ++ n = 3 ++ do k = 1, 50 ++ v = foo (u(:,:,m)) ++ u(2:499,1:60,n) = u(2:499,1:60,o)+16.d0 ++ h(1:500,2:59,n) = h(1:500,2:59,o)-4.d0*v(1:500,2:59)-32.0d0 ++ i = o ++ o = m ++ m = n ++ n = i ++ end do ++ if (abs (v(17, 23) + h(17, 23, 2) + 768.0d0) > 0.5d0) call abort ++contains ++ function foo(a) ++ double precision :: a(:,:) ++ double precision :: foo(size(a,dim=1),size(a,dim=2)) ++ integer :: i, j ++ i = size(a,dim=1) ++ j = size(a,dim=2) ++ foo(2:i-1,1:j) = a(3:i,1:j)-a(1:i-2,1:j) ++ foo(1,1:j) = 2*(a(2,1:j)-a(1,1:j)) ++ foo(i,1:j) = 2*(a(i,1:j)-a(i-1,1:j)) ++ end function foo ++end program pr65450 +Index: gcc/testsuite/gfortran.dg/entry_20.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/entry_20.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/entry_20.f90 (.../branches/gcc-4_9-branch) +@@ -0,0 +1,148 @@ ++! { dg-do compile } ++! ++! PR fortran/50898 ++! A symbol was freed prematurely during resolution, ++! despite remaining reachable ++! ++! Original testcase from ++ ++MODULE MODULE_pmat2 ++ ++IMPLICIT NONE ++ ++INTERFACE cad1b; MODULE PROCEDURE cad1b; END INTERFACE ++INTERFACE csb1b; MODULE PROCEDURE csb1b; END INTERFACE ++INTERFACE copbt; MODULE PROCEDURE copbt; END INTERFACE ++INTERFACE conbt; MODULE PROCEDURE conbt; END INTERFACE ++INTERFACE copmb; MODULE PROCEDURE copmb; END INTERFACE ++INTERFACE conmb; MODULE PROCEDURE conmb; END INTERFACE ++INTERFACE copbm; MODULE PROCEDURE copbm; END INTERFACE ++INTERFACE conbm; MODULE PROCEDURE conbm; END INTERFACE ++INTERFACE mulvb; MODULE PROCEDURE mulvb; END INTERFACE ++INTERFACE madvb; MODULE PROCEDURE madvb; END INTERFACE ++INTERFACE msbvb; MODULE PROCEDURE msbvb; END INTERFACE ++INTERFACE mulxb; MODULE PROCEDURE mulxb; END INTERFACE ++INTERFACE madxb; MODULE PROCEDURE madxb; END INTERFACE ++INTERFACE msbxb; MODULE PROCEDURE msbxb; END INTERFACE ++ ++integer, parameter :: i_kind=4 ++integer, parameter :: r_kind=4 ++real(r_kind), parameter :: zero=0.0 ++real(r_kind), parameter :: one=1.0 ++real(r_kind), parameter :: two=2.0 ++ ++CONTAINS ++ ++SUBROUTINE cad1b(a,m1,mah1,mah2,mirror2) ++implicit none ++INTEGER(i_kind), INTENT(IN ) :: m1,mah1,mah2,mirror2 ++REAL(r_kind), INTENT(INOUT) :: a(0:m1-1,-mah1:mah2) ++RETURN ++ENTRY csb1b(a,m1,mah1,mah2,mirror2) ++END SUBROUTINE cad1b ++ ++SUBROUTINE copbt(a,b,m1,m2,mah1,mah2) ++implicit none ++INTEGER(i_kind), INTENT(IN ) :: m1, m2, mah1, mah2 ++REAL(r_kind), INTENT(IN ) :: a(m1,-mah1:mah2) ++REAL(r_kind), INTENT( OUT) :: b(m2,-mah2:mah1) ++RETURN ++ENTRY conbt(a,b,m1,m2,mah1,mah2) ++END SUBROUTINE copbt ++ ++SUBROUTINE copmb(afull,aband,m1,m2,mah1,mah2) ++implicit none ++INTEGER(i_kind), INTENT(IN ) :: m1, m2, mah1, mah2 ++REAL(r_kind), DIMENSION(m1,m2), INTENT(IN ) :: afull ++REAL(r_kind), DIMENSION(m1,-mah1:mah2),INTENT( OUT) :: aband ++RETURN ++ENTRY conmb(afull,aband,m1,m2,mah1,mah2) ++END SUBROUTINE copmb ++ ++SUBROUTINE copbm(aband,afull,m1,m2,mah1,mah2) ++implicit none ++INTEGER(i_kind), INTENT(IN ) :: m1, m2, mah1, mah2 ++REAL(r_kind), DIMENSION(m1,-mah1:mah2),INTENT(IN ) :: aband ++REAL(r_kind), DIMENSION(m1,m2), INTENT( OUT) :: afull ++RETURN ++ENTRY conbm(aband,afull,m1,m2,mah1,mah2) ++END SUBROUTINE copbm ++ ++SUBROUTINE mulbb(a,b,c,m1,m2,mah1,mah2,mbh1,mbh2,mch1,mch2) ++implicit none ++INTEGER(i_kind), INTENT(IN ) :: m1, m2, mah1, mah2, mbh1, mbh2, mch1, mch2 ++REAL(r_kind), INTENT(IN ) :: a(m1,-mah1:mah2), b(m2,-mbh1:mbh2) ++REAL(r_kind), INTENT(INOUT) :: c(m1,-mch1:mch2) ++INTEGER(i_kind) :: nch1, nch2, j, k, jpk, i1,i2 ++c=zero ++ENTRY madbb(a,b,c,m1,m2,mah1,mah2,mbh1,mbh2,mch1,mch2) ++nch1=mah1+mbh1; nch2=mah2+mbh2 ++IF(nch1 /= mch1 .OR. nch2 /= mch2)STOP 'In MULBB, dimensions inconsistent' ++DO j=-mah1,mah2 ++ DO k=-mbh1,mbh2; jpk=j+k; i1=MAX(1,1-j); i2=MIN(m1,m2-j) ++ c(i1:i2,jpk)=c(i1:i2,jpk)+a(i1:i2,j)*b(j+i1:j+i2,k) ++ ENDDO ++ENDDO ++END SUBROUTINE mulbb ++ ++SUBROUTINE MULVB(v1,a,v2, m1,m2,mah1,mah2) ++implicit none ++INTEGER(i_kind), INTENT(IN ) :: m1, m2, mah1, mah2 ++REAL(r_kind), INTENT(IN ) :: v1(m1), a(m1,-mah1:mah2) ++REAL(r_kind), INTENT( OUT) :: v2(m2) ++INTEGER(i_kind) :: j, i1,i2 ++v2=zero ++ENTRY madvb(v1,a,v2, m1,m2,mah1,mah2) ++DO j=-mah1,mah2; i1=MAX(1,1-j); i2=MIN(m1,m2-j) ++ v2(j+i1:j+i2)=v2(j+i1:j+i2)+v1(i1:i2)*a(i1:i2,j) ++ENDDO ++RETURN ++ENTRY msbvb(v1,a,v2, m1,m2,mah1,mah2) ++DO j=-mah1,mah2; i1=MAX(1,1-j); i2=MIN(m1,m2-j) ++ v2(j+i1:j+i2)=v2(j+i1:j+i2)-v1(i1:i2)*a(i1:i2,j) ++ENDDO ++END SUBROUTINE mulvb ++ ++SUBROUTINE mulxb(v1,a,v2, m1,m2,mah1,mah2,my) ++implicit none ++INTEGER(i_kind), INTENT(IN ) :: m1, m2, mah1, mah2, my ++REAL(r_kind), INTENT(IN ) :: v1(m1,my), a(m1,-mah1:mah2) ++REAL(r_kind), INTENT( OUT) :: v2(m2,my) ++INTEGER(i_kind) :: i,j ++v2=zero ++ENTRY madxb(v1,a,v2, m1,m2,mah1,mah2,my) ++DO j=-mah1,mah2 ++ DO i=MAX(1,1-j),MIN(m1,m2-j); v2(j+i,:)=v2(j+i,:)+v1(i,:)*a(i,j); ENDDO ++ENDDO ++RETURN ++ENTRY msbxb(v1,a,v2, m1,m2,mah1,mah2,my) ++DO j=-mah1,mah2 ++ DO i=MAX(1,1-j),MIN(m1,m2-j); v2(j+i,:)=v2(j+i,:)-v1(i,:)*a(i,j); ENDDO ++ENDDO ++END SUBROUTINE mulxb ++ ++SUBROUTINE mulyb(v1,a,v2, m1,m2,mah1,mah2,mx) ++implicit none ++INTEGER(i_kind), INTENT(IN ) :: m1, m2, mah1, mah2, mx ++REAL(r_kind), INTENT(IN ) :: v1(mx,m1), a(m1,-mah1:mah2) ++REAL(r_kind), INTENT( OUT) :: v2(mx,m2) ++INTEGER(i_kind) :: i,j ++v2=zero ++ENTRY madyb(v1,a,v2, m1,m2,mah1,mah2,mx) ++DO j=-mah1,mah2 ++ DO i=MAX(1,1-j),MIN(m1,m2-j) ++ v2(:,j+i)=v2(:,j+i)+v1(:,i)*a(i,j) ++ ENDDO ++ENDDO ++RETURN ++ENTRY msbyb(v1,a,v2, m1,m2,mah1,mah2,mx) ++ DO j=-mah1,mah2 ++ DO i=MAX(1,1-j),MIN(m1,m2-j) ++ v2(:,j+i)=v2(:,j+i)-v1(:,i)*a(i,j) ++ ENDDO ++ ENDDO ++RETURN ++END SUBROUTINE mulyb ++ ++END MODULE MODULE_pmat2 ++ +Index: gcc/testsuite/gfortran.dg/pr64528.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr64528.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr64528.f90 (.../branches/gcc-4_9-branch) +@@ -0,0 +1,20 @@ ++! PR fortran/64528 ++! { dg-do compile } ++! { dg-options "-O -fno-tree-dce -fno-tree-ccp" } ++ ++program pr64528 ++ interface ++ subroutine foo(x) ++ integer, value :: x ++ end subroutine foo ++ end interface ++ integer :: x ++ x = 10 ++ call foo(x) ++ if(x .ne. 10) then ++ endif ++end program pr64528 ++subroutine foo(x) ++ integer, value :: x ++ x = 11 ++end subroutine foo +Index: gcc/testsuite/gfortran.dg/coarray_36.f +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/coarray_36.f (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/coarray_36.f (.../branches/gcc-4_9-branch) +@@ -0,0 +1,347 @@ ++! { dg-do compile } ++! { dg-options "-fcoarray=lib" } ++! ++! PR fortran/64771 ++! ++! Contributed by Alessandro Fanfarill ++! ++! Reduced version of the full NAS CG benchmark ++! ++ ++!-------------------------------------------------------------------------! ++! ! ++! N A S P A R A L L E L B E N C H M A R K S 3.3 ! ++! ! ++! C G ! ++! ! ++!-------------------------------------------------------------------------! ++! ! ++! This benchmark is part of the NAS Parallel Benchmark 3.3 suite. ! ++! It is described in NAS Technical Reports 95-020 and 02-007 ! ++! ! ++! Permission to use, copy, distribute and modify this software ! ++! for any purpose with or without fee is hereby granted. We ! ++! request, however, that all derived work reference the NAS ! ++! Parallel Benchmarks 3.3. This software is provided "as is" ! ++! without express or implied warranty. ! ++! ! ++! Information on NPB 3.3, including the technical report, the ! ++! original specifications, source code, results and information ! ++! on how to submit new results, is available at: ! ++! ! ++! http://www.nas.nasa.gov/Software/NPB/ ! ++! ! ++! Send comments or suggestions to npb@nas.nasa.gov ! ++! ! ++! NAS Parallel Benchmarks Group ! ++! NASA Ames Research Center ! ++! Mail Stop: T27A-1 ! ++! Moffett Field, CA 94035-1000 ! ++! ! ++! E-mail: npb@nas.nasa.gov ! ++! Fax: (650) 604-3957 ! ++! ! ++!-------------------------------------------------------------------------! ++ ++ ++c--------------------------------------------------------------------- ++c ++c Authors: M. Yarrow ++c C. Kuszmaul ++c R. F. Van der Wijngaart ++c H. Jin ++c ++c--------------------------------------------------------------------- ++ ++ ++c--------------------------------------------------------------------- ++c--------------------------------------------------------------------- ++ program cg ++c--------------------------------------------------------------------- ++c--------------------------------------------------------------------- ++ implicit none ++ ++ integer na, nonzer, niter ++ double precision shift, rcond ++ parameter( na=75000, ++ > nonzer=13, ++ > niter=75, ++ > shift=60., ++ > rcond=1.0d-1 ) ++ ++ ++ ++ integer num_proc_rows, num_proc_cols ++ parameter( num_proc_rows = 2, num_proc_cols = 2) ++ integer num_procs ++ parameter( num_procs = num_proc_cols * num_proc_rows ) ++ ++ integer nz ++ parameter( nz = na*(nonzer+1)/num_procs*(nonzer+1)+nonzer ++ > + na*(nonzer+2+num_procs/256)/num_proc_cols ) ++ ++ common / partit_size / naa, nzz, ++ > npcols, nprows, ++ > proc_col, proc_row, ++ > firstrow, ++ > lastrow, ++ > firstcol, ++ > lastcol, ++ > exch_proc, ++ > exch_recv_length, ++ > send_start, ++ > send_len ++ integer naa, nzz, ++ > npcols, nprows, ++ > proc_col, proc_row, ++ > firstrow, ++ > lastrow, ++ > firstcol, ++ > lastcol, ++ > exch_proc, ++ > exch_recv_length, ++ > send_start, ++ > send_len ++ ++ ++ common / main_int_mem / colidx, rowstr, ++ > iv, arow, acol ++ integer colidx(nz), rowstr(na+1), ++ > iv(2*na+1), arow(nz), acol(nz) ++ ++ ++c--------------------------------- ++c Coarray Decalarations ++c--------------------------------- ++ double precision v(na+1)[0:*], aelt(nz)[0:*], a(nz)[0:*], ++ > x(na/num_proc_rows+2)[0:*], ++ > z(na/num_proc_rows+2)[0:*], ++ > p(na/num_proc_rows+2)[0:*], ++ > q(na/num_proc_rows+2)[0:*], ++ > r(na/num_proc_rows+2)[0:*], ++ > w(na/num_proc_rows+2)[0:*] ++ ++ ++ common /urando/ amult, tran ++ double precision amult, tran ++ ++ ++ ++ integer l2npcols ++ integer reduce_exch_proc(num_proc_cols) ++ integer reduce_send_starts(num_proc_cols) ++ integer reduce_send_lengths(num_proc_cols) ++ integer reduce_recv_lengths(num_proc_cols) ++ integer reduce_rrecv_starts(num_proc_cols) ++c--------------------------------- ++c Coarray Decalarations ++c--------------------------------- ++ integer reduce_recv_starts(num_proc_cols)[0:*] ++ ++ integer i, j, k, it, me, nprocs, root ++ ++ double precision zeta, randlc ++ external randlc ++ double precision rnorm ++c--------------------------------- ++c Coarray Decalarations ++c--------------------------------- ++ double precision norm_temp1(2)[0:*], norm_temp2(2)[0:*] ++ ++ double precision t, tmax, mflops ++ double precision u(1), umax(1) ++ external timer_read ++ double precision timer_read ++ character class ++ logical verified ++ double precision zeta_verify_value, epsilon, err ++ ++c--------------------------------------------------------------------- ++c Explicit interface for conj_grad, due to coarray args ++c--------------------------------------------------------------------- ++ interface ++ ++ subroutine conj_grad ( colidx, ++ > rowstr, ++ > x, ++ > z, ++ > a, ++ > p, ++ > q, ++ > r, ++ > w, ++ > rnorm, ++ > l2npcols, ++ > reduce_exch_proc, ++ > reduce_send_starts, ++ > reduce_send_lengths, ++ > reduce_recv_starts, ++ > reduce_recv_lengths, ++ > reduce_rrecv_starts ) ++ ++ common / partit_size / naa, nzz, ++ > npcols, nprows, ++ > proc_col, proc_row, ++ > firstrow, ++ > lastrow, ++ > firstcol, ++ > lastcol, ++ > exch_proc, ++ > exch_recv_length, ++ > send_start, ++ > send_len ++ ++ integer naa, nzz, ++ > npcols, nprows, ++ > proc_col, proc_row, ++ > firstrow, ++ > lastrow, ++ > firstcol, ++ > lastcol, ++ > exch_proc, ++ > exch_recv_length, ++ > send_start, ++ > send_len ++ ++ double precision x(*), ++ > z(*), ++ > a(nzz) ++ integer colidx(nzz), rowstr(naa+1) ++ ++ double precision p(*), ++ > q(*)[0:*], ++ > r(*)[0:*], ++ > w(*)[0:*] ! used as work temporary ++ ++ integer l2npcols ++ integer reduce_exch_proc(l2npcols) ++ integer reduce_send_starts(l2npcols) ++ integer reduce_send_lengths(l2npcols) ++ integer reduce_recv_starts(l2npcols)[0:*] ++ integer reduce_recv_lengths(l2npcols) ++ integer reduce_rrecv_starts(l2npcols) ++ ++ double precision rnorm ++ ++ end subroutine ++ ++ end interface ++ ++c--------------------------------------------------------------------- ++c The call to the conjugate gradient routine: ++c--------------------------------------------------------------------- ++ call conj_grad ( colidx, ++ > rowstr, ++ > x, ++ > z, ++ > a, ++ > p, ++ > q, ++ > r, ++ > w, ++ > rnorm, ++ > l2npcols, ++ > reduce_exch_proc, ++ > reduce_send_starts, ++ > reduce_send_lengths, ++ > reduce_recv_starts, ++ > reduce_recv_lengths, ++ > reduce_rrecv_starts ) ++ ++ ++ sync all ++ ++ end ! end main ++ ++c--------------------------------------------------------------------- ++c--------------------------------------------------------------------- ++ subroutine conj_grad ( colidx, ++ > rowstr, ++ > x, ++ > z, ++ > a, ++ > p, ++ > q, ++ > r, ++ > w, ++ > rnorm, ++ > l2npcols, ++ > reduce_exch_proc, ++ > reduce_send_starts, ++ > reduce_send_lengths, ++ > reduce_recv_starts, ++ > reduce_recv_lengths, ++ > reduce_rrecv_starts ) ++c--------------------------------------------------------------------- ++c--------------------------------------------------------------------- ++ ++c--------------------------------------------------------------------- ++c Floaging point arrays here are named as in NPB1 spec discussion of ++c CG algorithm ++c--------------------------------------------------------------------- ++ ++ implicit none ++ ++c include 'cafnpb.h' ++ ++ common / partit_size / naa, nzz, ++ > npcols, nprows, ++ > proc_col, proc_row, ++ > firstrow, ++ > lastrow, ++ > firstcol, ++ > lastcol, ++ > exch_proc, ++ > exch_recv_length, ++ > send_start, ++ > send_len ++ integer naa, nzz, ++ > npcols, nprows, ++ > proc_col, proc_row, ++ > firstrow, ++ > lastrow, ++ > firstcol, ++ > lastcol, ++ > exch_proc, ++ > exch_recv_length, ++ > send_start, ++ > send_len ++ ++ ++ ++ double precision x(*), ++ > z(*), ++ > a(nzz) ++ integer colidx(nzz), rowstr(naa+1) ++ ++ double precision p(*), ++ > q(*)[0:*], ++ > r(*)[0:*], ++ > w(*)[0:*] ! used as work temporary ++ ++ integer l2npcols ++ integer reduce_exch_proc(l2npcols) ++ integer reduce_send_starts(l2npcols) ++ integer reduce_send_lengths(l2npcols) ++ integer reduce_recv_starts(l2npcols)[0:*] ++ integer reduce_recv_lengths(l2npcols) ++ integer reduce_rrecv_starts(l2npcols) ++ ++ integer recv_start_idx, recv_end_idx, send_start_idx, ++ > send_end_idx, recv_length ++ ++ integer i, j, k, ierr ++ integer cgit, cgitmax ++ ++ double precision, save :: d[0:*], rho[0:*] ++ double precision sum, rho0, alpha, beta, rnorm ++ ++ external timer_read ++ double precision timer_read ++ ++ data cgitmax / 25 / ++ ++ ++ return ++ end ! end of routine conj_grad ++ +Index: gcc/testsuite/gfortran.dg/finalize_28.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/finalize_28.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/finalize_28.f90 (.../branches/gcc-4_9-branch) +@@ -0,0 +1,24 @@ ++! { dg-do compile } ++! { dg-options "-fdump-tree-original" } ++! ++! Test the fix for PR64932. ++! ++! Reported by Daniel Shapiro ++! ++module coo_graphs ++ implicit none ++ type :: dynamic_array ++ integer :: length, capacity, min_capacity ++ integer, allocatable :: array(:) ++ end type ++ type :: coo_graph ++ type(dynamic_array) :: edges(2) ++ integer, private :: ne ++ end type coo_graph ++contains ++ subroutine coo_dump_edges(g, edges) ++ class(coo_graph), intent(in) :: g ++ integer, intent(out) :: edges(:,:) ++ end subroutine coo_dump_edges ++end module coo_graphs ++! { dg-final { scan-tree-dump-times "__builtin_free" 3 "original" } } +Index: gcc/testsuite/gfortran.dg/use_rename_8.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/use_rename_8.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/use_rename_8.f90 (.../branches/gcc-4_9-branch) +@@ -0,0 +1,50 @@ ++! { dg-do compile } ++! ++! PR fortran/63744 ++! duplicate use rename used to be rejected when the target name ++! was that of the current program unit ++! ++! Original testcase from Roger Ferrer Ibanez ++ ++MODULE MOO ++ INTEGER :: A, B, C, D, E, F, G, H, I ++END MODULE MOO ++ ++SUBROUTINE S ++ USE MOO, ONLY: X => A, X => A ++END SUBROUTINE S ++ ++SUBROUTINE T ++ USE MOO, ONLY: X => B ++ USE MOO, ONLY: X => B ++END SUBROUTINE T ++ ++SUBROUTINE C ++ USE MOO, ONLY: C ! { dg-error "is also the name of the current program unit" } ++END SUBROUTINE C ++ ++SUBROUTINE D ++ USE MOO, ONLY: X => D ++END SUBROUTINE D ++ ++SUBROUTINE E ++ USE MOO, ONLY: X => E, X => E ++END SUBROUTINE E ++ ++SUBROUTINE F ++ USE MOO, ONLY: X => F ++ USE MOO, ONLY: X => F ++END SUBROUTINE F ++ ++SUBROUTINE X ++ USE MOO, ONLY: X => G ! { dg-error "is also the name of the current program unit" } ++END SUBROUTINE X ++ ++SUBROUTINE Y ++ USE MOO, ONLY: Y => H ! { dg-error "is also the name of the current program unit" } ++END SUBROUTINE Y ++ ++SUBROUTINE Z ++ USE MOO, ONLY: Z => I, Z => I ! { dg-error "is also the name of the current program unit" } ++END SUBROUTINE Z ++ +Index: gcc/testsuite/gfortran.dg/pr65504.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr65504.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr65504.f90 (.../branches/gcc-4_9-branch) +@@ -0,0 +1,28 @@ ++! PR target/65504 ++! { dg-do run } ++ ++program pr65504 ++ implicit none ++ type :: T ++ character (len=256) :: a ++ character (len=256) :: b ++ end type T ++ type (T) :: c ++ type (T) :: d ++ c = foo ("test") ++ d = foo ("test") ++ if (trim(c%b) .ne. "foo") call abort ++ contains ++ type (T) function foo (x) result (v) ++ character(len=*), intent(in) :: x ++ select case (x) ++ case ("test") ++ v%b = 'foo' ++ case ("bazx") ++ v%b = 'barx' ++ case default ++ print *, "unknown" ++ stop ++ end select ++ end function foo ++end program pr65504 +Index: gcc/testsuite/gfortran.dg/typebound_operator_20.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/typebound_operator_20.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/typebound_operator_20.f90 (.../branches/gcc-4_9-branch) +@@ -0,0 +1,53 @@ ++! { dg-do run } ++! ++! PR 63733: [4.8/4.9/5 Regression] [OOP] wrong resolution for OPERATOR generics ++! ++! Original test case from Alberto F. Martín Huertas ++! Slightly modified by Salvatore Filippone ++! Further modified by Janus Weil ++ ++module overwrite ++ type parent ++ contains ++ procedure :: sum => sum_parent ++ generic :: operator(+) => sum ++ end type ++ ++ type, extends(parent) :: child ++ contains ++ procedure :: sum => sum_child ++ end type ++ ++contains ++ ++ integer function sum_parent(op1,op2) ++ implicit none ++ class(parent), intent(in) :: op1, op2 ++ sum_parent = 0 ++ end function ++ ++ integer function sum_child(op1,op2) ++ implicit none ++ class(child) , intent(in) :: op1 ++ class(parent), intent(in) :: op2 ++ sum_child = 1 ++ end function ++ ++end module ++ ++program drive ++ use overwrite ++ implicit none ++ ++ type(parent) :: m1, m2 ++ class(parent), pointer :: mres ++ type(child) :: h1, h2 ++ class(parent), pointer :: hres ++ ++ if (m1 + m2 /= 0) call abort() ++ if (h1 + m2 /= 1) call abort() ++ if (h1%sum(h2) /= 1) call abort() ++ ++end ++ ++! { dg-final { cleanup-modules "overwrite" } } +Index: gcc/testsuite/gfortran.dg/namelist_86.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/namelist_86.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/namelist_86.f90 (.../branches/gcc-4_9-branch) +@@ -0,0 +1,49 @@ ++! { dg-do run } ++! { dg-options "-std=f2003 -fall-intrinsics" } ++! PR65596 Namelist reads too far. ++integer ,parameter :: CL=80 ++integer ,parameter :: AL=4 ++ ++character(CL) :: mode ++character(CL) :: cats(AL) ++character(CL) :: dogs(AL) ++character(CL) :: rslt(AL) ++integer :: ierr, k ++ ++namelist / theList / cats, dogs, mode ++ ++open(27,status="scratch") ++ ++write(27,'(A)') "&theList" ++write(27,'(A)') " mode = 'on'" ++write(27,'(A)') " dogs = 'Rover'," ++write(27,'(A)') " 'Spot'" ++write(27,'(A)') " cats = 'Fluffy'," ++write(27,'(A)') " 'Hairball'" ++write(27,'(A)') "/" ++rewind(27) ++ ++mode = 'off' ++cats(:) = '________' ++dogs(:) = '________' ++ ++read (27, nml=theList, iostat=ierr) ++ ++if (ierr .ne. 0) call abort ++ ++rslt = ['Rover ','Spot ','________','________'] ++if (any(dogs.ne.rslt)) call abort ++ ++rslt = ['Fluffy ','Hairball','________','________'] ++if (any(cats.ne.rslt)) call abort ++ ++close(27) ++ ++contains ++ ++subroutine abort() ++ close(27) ++ stop 500 ++end subroutine abort ++ ++end +Index: gcc/testsuite/gfortran.dg/typebound_call_26.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/typebound_call_26.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/typebound_call_26.f90 (.../branches/gcc-4_9-branch) +@@ -0,0 +1,30 @@ ++! { dg-do compile } ++! ++! PR 64244: [4.8/4.9/5 Regression] ICE at class.c:236 when using non_overridable ++! ++! Contributed by Ondřej Čertík ++ ++module m ++ implicit none ++ ++ type :: A ++ contains ++ generic :: f => g ++ procedure, non_overridable :: g ++ end type ++ ++contains ++ ++ subroutine g(this) ++ class(A), intent(in) :: this ++ end subroutine ++ ++end module ++ ++ ++program test_non_overridable ++ use m, only: A ++ implicit none ++ class(A), allocatable :: h ++ call h%f() ++end +Index: gcc/testsuite/gfortran.dg/unlimited_polymorphic_23.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/unlimited_polymorphic_23.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/unlimited_polymorphic_23.f90 (.../branches/gcc-4_9-branch) +@@ -0,0 +1,35 @@ ++! {dg-do run } ++! ++! Test the fix for PR65024, in which the structure for the 'info' ++! component of type 'T' was not being converted into TREE_SSA and ++! so caused an ICE in trans-expr.c:gfc_conv_component_ref. ++! ++! Reported by ++! ++MODULE X ++ TYPE T ++ CLASS(*), pointer :: info ++ END TYPE ++END MODULE ++ ++PROGRAM P ++ call bug ++CONTAINS ++ SUBROUTINE BUG ++ USE X ++ CLASS(T), pointer :: e ++ integer, target :: i = 42 ++ allocate(e) ++ e%info => NULL () ! used to ICE ++ if (.not.associated(e%info)) e%info => i ! used to ICE ++ select type (z => e%info) ++ type is (integer) ++ if (z .ne.i) call abort ++ end select ++ END SUBROUTINE ++ ++ SUBROUTINE NEXT ++ USE X ++ CLASS (T), pointer :: e ++ END SUBROUTINE ++END +Index: gcc/testsuite/gfortran.dg/proc_ptr_comp_44.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/proc_ptr_comp_44.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/proc_ptr_comp_44.f90 (.../branches/gcc-4_9-branch) +@@ -0,0 +1,71 @@ ++! { dg-do compile } ++! Test the fix for PR59198, where the field for the component 'term' in ++! the derived type 'decay_gen_t' was not being built. ++! ++! Contributed by Juergen Reuter ++! ++module decays ++ abstract interface ++ function obs_unary_int () ++ end function obs_unary_int ++ end interface ++ ++ type, abstract :: any_config_t ++ contains ++ procedure (any_config_final), deferred :: final ++ end type any_config_t ++ ++ type :: decay_term_t ++ type(unstable_t), dimension(:), pointer :: unstable_product => null () ++ end type decay_term_t ++ ++ type, abstract :: decay_gen_t ++ type(decay_term_t), dimension(:), allocatable :: term ++ procedure(obs_unary_int), nopass, pointer :: obs1_int => null () ++ end type decay_gen_t ++ ++ type, extends (decay_gen_t) :: decay_root_t ++ contains ++ procedure :: final => decay_root_final ++ end type decay_root_t ++ ++ type, abstract :: rng_t ++ end type rng_t ++ ++ type, extends (decay_gen_t) :: decay_t ++ class(rng_t), allocatable :: rng ++ contains ++ procedure :: final => decay_final ++ end type decay_t ++ ++ type, extends (any_config_t) :: unstable_config_t ++ contains ++ procedure :: final => unstable_config_final ++ end type unstable_config_t ++ ++ type :: unstable_t ++ type(unstable_config_t), pointer :: config => null () ++ type(decay_t), dimension(:), allocatable :: decay ++ end type unstable_t ++ ++ interface ++ subroutine any_config_final (object) ++ import ++ class(any_config_t), intent(inout) :: object ++ end subroutine any_config_final ++ end interface ++ ++contains ++ subroutine decay_root_final (object) ++ class(decay_root_t), intent(inout) :: object ++ end subroutine decay_root_final ++ ++ recursive subroutine decay_final (object) ++ class(decay_t), intent(inout) :: object ++ end subroutine decay_final ++ ++ recursive subroutine unstable_config_final (object) ++ class(unstable_config_t), intent(inout) :: object ++ end subroutine unstable_config_final ++ ++end module decays +Index: gcc/testsuite/gfortran.dg/class_allocate_18.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/class_allocate_18.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/class_allocate_18.f90 (.../branches/gcc-4_9-branch) +@@ -0,0 +1,21 @@ ++! { dg-do run } ++! ++! PR 64230: [4.9/5 Regression] Invalid memory reference in a compiler-generated finalizer for allocatable component ++! ++! Contributed by Mat Cross ++ ++Program main ++ Implicit None ++ Type :: t1 ++ End Type ++ Type, Extends (t1) :: t2 ++ Integer, Allocatable :: i ++ End Type ++ Type, Extends (t2) :: t3 ++ Integer, Allocatable :: j ++ End Type ++ Class (t1), Allocatable :: t ++ Allocate (t3 :: t) ++ print *,"allocated!" ++ Deallocate (t) ++End +Index: gcc/testsuite/gfortran.dg/used_types_27.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/used_types_27.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/used_types_27.f90 (.../branches/gcc-4_9-branch) +@@ -0,0 +1,18 @@ ++! { dg-do compile } ++! ++! PR fortran/56674 ++! PR fortran/58813 ++! PR fortran/59016 ++! PR fortran/59024 ++! The generic name 'atomic_kind_types' was keeping pointers to freed ++! symbols, leading to random error-recovery ICEs. ++! ++! Original test case from Joost VandeVondele . ++ ++MODULE atomic_kind_types ++ PUBLIC :: atomic_kind_type ++CONTAINS ++ INTEGER FUNCTION is_hydrogen(atomic_kind) ++ TYPE(atomic_kind_type), pointer :: atomic_kind ! { dg-error "used before it is defined" } ++ END FUNCTION ++END MODULE +Index: gcc/testsuite/gfortran.dg/pr64530.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr64530.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr64530.f90 (.../branches/gcc-4_9-branch) +@@ -0,0 +1,38 @@ ++! { dg-do run } ++ ++program bug ++ ! Bug triggered with at least three elements ++ integer, parameter :: asize = 3 ++ ++ double precision,save :: ave(asize) ++ double precision,save :: old(asize) ++ double precision,save :: tmp(asize) ++ ++ ave(:) = 10.d0 ++ old(:) = 3.d0 ++ tmp(:) = 0.d0 ++ ++ call buggy(2.d0,asize,ave,old,tmp) ++ if (any (tmp(:) .ne. 3.5)) call abort ++end ++ ++subroutine buggy(scale_factor, asize, ave, old, tmp) ++ ++ implicit none ++ ! Args ++ double precision scale_factor ++ integer asize ++ double precision ave(asize) ++ double precision old(asize) ++ double precision tmp(asize) ++ ++ ! Local ++ integer i ++ ++ do i = 1, asize ++ tmp(i) = ave(i) - old(i) ++ old(i) = ave(i) ++ tmp(i) = tmp(i) / scale_factor ++ end do ++ ++end subroutine buggy +Index: gcc/testsuite/gfortran.dg/unlimited_polymorphic_2.f03 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/unlimited_polymorphic_2.f03 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/unlimited_polymorphic_2.f03 (.../branches/gcc-4_9-branch) +@@ -1,80 +1,80 @@ +-! { dg-do compile } +-! +-! Test the most important constraints unlimited polymorphic entities +-! +-! Contributed by Paul Thomas +-! and Tobias Burnus +-! +- CHARACTER(:), allocatable, target :: chr ! { dg-error "TODO: Deferred character length variable" } +-! F2008: C5100 +- integer :: i(2) +- logical :: flag +- class(*), pointer :: u1, u2(:) ! { dg-error "cannot appear in COMMON" } +- common u1 +- u1 => chr +-! F2003: C625 +- allocate (u1) ! { dg-error "requires either a type-spec or SOURCE tag" } +- allocate (real :: u1) +- Allocate (u1, source = 1.0) +- +-! F2008: C4106 +- u2 = [u1] ! { dg-error "shall not be unlimited polymorphic" } +- +- i = u2 ! { dg-error "Can\\'t convert CLASS\\(\\*\\)" } +- +-! Repeats same_type_as_1.f03 for unlimited polymorphic u2 +- flag = same_type_as (i, u2) ! { dg-error "cannot be of type INTEGER" } +- flag = extends_type_of (i, u2) ! { dg-error "cannot be of type INTEGER" } +- +-contains +- +-! C717 (R735) If data-target is unlimited polymorphic, +-! data-pointer-object shall be unlimited polymorphic, of a sequence +-! derived type, or of a type with the BIND attribute. +-! +- subroutine bar +- +- type sq +- sequence +- integer :: i +- end type sq +- +- type(sq), target :: x +- class(*), pointer :: y +- integer, pointer :: tgt +- +- x%i = 42 +- y => x +- call foo (y) +- +- y => tgt ! This is OK, of course. +- tgt => y ! { dg-error "must be unlimited polymorphic" } +- +- select type (y) ! This is the correct way to accomplish the previous +- type is (integer) +- tgt => y +- end select +- +- end subroutine bar +- +- +- subroutine foo(tgt) +- class(*), pointer, intent(in) :: tgt +- type t +- sequence +- integer :: k +- end type t +- +- type(t), pointer :: ptr +- +- ptr => tgt ! C717 allows this. +- +- select type (tgt) +-! F03:C815 or F08:C839 +- type is (t) ! { dg-error "shall not specify a sequence derived type" } +- ptr => tgt ! { dg-error "Expected TYPE IS" } +- end select +- +- print *, ptr%k +- end subroutine foo +-END ++! { dg-do compile } ++! ++! Test the most important constraints unlimited polymorphic entities ++! ++! Contributed by Paul Thomas ++! and Tobias Burnus ++! ++ CHARACTER(:), allocatable, target :: chr ++! F2008: C5100 ++ integer :: i(2) ++ logical :: flag ++ class(*), pointer :: u1, u2(:) ! { dg-error "cannot appear in COMMON" } ++ common u1 ++ u1 => chr ++! F2003: C625 ++ allocate (u1) ! { dg-error "requires either a type-spec or SOURCE tag" } ++ allocate (real :: u1) ++ Allocate (u1, source = 1.0) ++ ++! F2008: C4106 ++ u2 = [u1] ! { dg-error "shall not be unlimited polymorphic" } ++ ++ i = u2 ! { dg-error "Can\\'t convert CLASS\\(\\*\\)" } ++ ++! Repeats same_type_as_1.f03 for unlimited polymorphic u2 ++ flag = same_type_as (i, u2) ! { dg-error "cannot be of type INTEGER" } ++ flag = extends_type_of (i, u2) ! { dg-error "cannot be of type INTEGER" } ++ ++contains ++ ++! C717 (R735) If data-target is unlimited polymorphic, ++! data-pointer-object shall be unlimited polymorphic, of a sequence ++! derived type, or of a type with the BIND attribute. ++! ++ subroutine bar ++ ++ type sq ++ sequence ++ integer :: i ++ end type sq ++ ++ type(sq), target :: x ++ class(*), pointer :: y ++ integer, pointer :: tgt ++ ++ x%i = 42 ++ y => x ++ call foo (y) ++ ++ y => tgt ! This is OK, of course. ++ tgt => y ! { dg-error "must be unlimited polymorphic" } ++ ++ select type (y) ! This is the correct way to accomplish the previous ++ type is (integer) ++ tgt => y ++ end select ++ ++ end subroutine bar ++ ++ ++ subroutine foo(tgt) ++ class(*), pointer, intent(in) :: tgt ++ type t ++ sequence ++ integer :: k ++ end type t ++ ++ type(t), pointer :: ptr ++ ++ ptr => tgt ! C717 allows this. ++ ++ select type (tgt) ++! F03:C815 or F08:C839 ++ type is (t) ! { dg-error "shall not specify a sequence derived type" } ++ ptr => tgt ! { dg-error "Expected TYPE IS" } ++ end select ++ ++ print *, ptr%k ++ end subroutine foo ++END +Index: gcc/testsuite/gfortran.dg/coarray_37.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/coarray_37.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/coarray_37.f90 (.../branches/gcc-4_9-branch) +@@ -0,0 +1,18 @@ ++! { dg-do compile } ++! { dg-options "-fcoarray=single" } ++! ++ program cg ++ implicit none ++ integer reduce_recv_starts(2)[1,0:*] ++ interface ++ subroutine conj_grad (reduce_recv_starts) ! { dg-warning "Interface mismatch in global procedure 'conj_grad' at \\(1\\): Corank mismatch in argument 'reduce_recv_starts' \\(2/1\\)" } ++ integer reduce_recv_starts(2)[2, 2:*] ++ end subroutine ++ end interface ++ call conj_grad (reduce_recv_starts) ! Corank mismatch is okay ++ end ++ ++ subroutine conj_grad (reduce_recv_starts) ++ implicit none ++ integer reduce_recv_starts(2)[2:*] ++ end +Index: gcc/testsuite/gfortran.dg/unlimited_polymorphic_20.f03 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/unlimited_polymorphic_20.f03 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/unlimited_polymorphic_20.f03 (.../branches/gcc-4_9-branch) +@@ -0,0 +1,104 @@ ++! { dg-do run } ++! ++! Testing fix for PR fortran/60255 ++! ++! Author: Andre Vehreschild ++! ++MODULE m ++ ++contains ++ subroutine bar (arg, res) ++ class(*) :: arg ++ character(100) :: res ++ select type (w => arg) ++ type is (character(*)) ++ write (res, '(I2)') len(w) ++ end select ++ end subroutine ++ ++END MODULE ++ ++program test ++ use m; ++ implicit none ++ character(LEN=:), allocatable, target :: S ++ character(LEN=100) :: res ++ class(*), pointer :: ucp ++ call sub1 ("long test string", 16) ++ call sub2 () ++ S = "test" ++ ucp => S ++ call sub3 (ucp) ++ call sub4 (S, 4) ++ call sub4 ("This is a longer string.", 24) ++ call bar (S, res) ++ if (trim (res) .NE. " 4") call abort () ++ call bar(ucp, res) ++ if (trim (res) .NE. " 4") call abort () ++ ++contains ++ ++ subroutine sub1(dcl, ilen) ++ character(len=*), target :: dcl ++ integer(4) :: ilen ++ character(len=:), allocatable :: hlp ++ class(*), pointer :: ucp ++ ++ ucp => dcl ++ ++ select type (ucp) ++ type is (character(len=*)) ++ if (len(dcl) .NE. ilen) call abort () ++ if (len(ucp) .NE. ilen) call abort () ++ hlp = ucp ++ if (len(hlp) .NE. ilen) call abort () ++ class default ++ call abort() ++ end select ++ end subroutine ++ ++ subroutine sub2 ++ character(len=:), allocatable, target :: dcl ++ class(*), pointer :: ucp ++ ++ dcl = "ttt" ++ ucp => dcl ++ ++ select type (ucp) ++ type is (character(len=*)) ++ if (len(ucp) .ne. 3) call abort () ++ class default ++ call abort() ++ end select ++ end subroutine ++ ++ subroutine sub3(ucp) ++ character(len=:), allocatable :: hlp ++ class(*), pointer :: ucp ++ ++ select type (ucp) ++ type is (character(len=*)) ++ if (len(ucp) .ne. 4) call abort () ++ hlp = ucp ++ if (len(hlp) .ne. 4) call abort () ++ class default ++ call abort() ++ end select ++ end subroutine ++ ++ subroutine sub4(ucp, ilen) ++ character(len=:), allocatable :: hlp ++ integer(4) :: ilen ++ class(*) :: ucp ++ ++ select type (ucp) ++ type is (character(len=*)) ++ if (len(ucp) .ne. ilen) call abort () ++ hlp = ucp ++ if (len(hlp) .ne. ilen) call abort () ++ class default ++ call abort() ++ end select ++ end subroutine ++end program ++ +Index: gcc/testsuite/gfortran.dg/dependency_45.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/dependency_45.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/dependency_45.f90 (.../branches/gcc-4_9-branch) +@@ -0,0 +1,12 @@ ++! { dg-do run } ++! { dg-options "-Warray-temporaries" } ++! PR 56867 - substrings were not checked for dependency. ++program main ++ character(len=4) :: a ++ character(len=4) :: c(3) ++ c(1) = 'abcd' ++ c(2) = '1234' ++ c(3) = 'wxyz' ++ c(:)(1:2) = c(2)(2:3) ! { dg-warning "array temporary" } ++ if (c(3) .ne. '23yz') call abort ++end program main +Index: gcc/testsuite/gfortran.dg/internal_pack_15.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/internal_pack_15.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/internal_pack_15.f90 (.../branches/gcc-4_9-branch) +@@ -0,0 +1,77 @@ ++! { dg-do run } ++! { dg-options "-Warray-temporaries" } ++! PR 57023 ++! This used to cause wrong packing because a(1:n,1:n) was ++! assumed to be a full array. ++module mymod ++ implicit none ++contains ++ subroutine foo1(a,n) ++ integer, dimension(n,n), intent(inout) :: a ++ integer :: n ++ n = n - 1 ++ call baz(a(1:n,1:n),n) ! { dg-warning "array temporary" } ++ end subroutine foo1 ++ ++ subroutine foo2(a,n) ++ integer, dimension(n,n), intent(inout) :: a ++ integer :: n ++ call decrement(n) ++ call baz(a(1:n,1:n),n) ! { dg-warning "array temporary" } ++ end subroutine foo2 ++ ++ subroutine foo3(a,n) ++ integer, dimension(n,n), intent(inout) :: a ++ integer :: n, m ++ m = n - 1 ++ call baz(a(1:m,1:m),m) ! { dg-warning "array temporary" } ++ end subroutine foo3 ++ ++ subroutine foo4(a,n) ++ integer, dimension(n,n), intent(inout) :: a ++ integer, intent(in) :: n ++ a(1:n,1:n) = 1 ++ end subroutine foo4 ++ ++ subroutine baz(a,n) ++ integer, dimension(n,n), intent(inout) :: a ++ integer, intent(in) :: n ++ a = 1 ++ end subroutine baz ++ ++ subroutine decrement(n) ++ integer, intent(inout) :: n ++ n = n - 1 ++ end subroutine decrement ++ ++end module mymod ++ ++program main ++ use mymod ++ implicit none ++ integer, dimension(5,5) :: a, b ++ integer :: n ++ ++ b = 0 ++ b(1:4,1:4) = 1 ++ ++ n = 5 ++ a = 0 ++ call foo1(a,n) ++ if (any(a /= b)) call abort ++ ++ n = 5 ++ a = 0 ++ call foo2(a,n) ++ if (any(a /= b)) call abort ++ ++ n = 5 ++ a = 0 ++ call foo3(a,n) ++ if (any(a /= b)) call abort ++ ++ n = 5 ++ a = 0 ++ call foo4(a,n) ++ if (any(a /= 1)) call abort ++end program main +Index: gcc/testsuite/gfortran.dg/class_allocate_17.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/class_allocate_17.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/class_allocate_17.f90 (.../branches/gcc-4_9-branch) +@@ -0,0 +1,32 @@ ++! { dg-do compile } ++! { dg-options "-fdump-tree-original" } ++! ++! PR 60922: [4.9/5 regression] Memory leak with allocatable CLASS components ++! ++! Contributed by Salvatore Filippone ++ ++program test_leak ++ implicit none ++ ++ type d_base_vect_type ++ end type ++ ++ type d_vect_type ++ class(d_base_vect_type), allocatable :: v ++ end type ++ ++ call test() ++ ++contains ++ ++ subroutine test() ++ class(d_vect_type), allocatable :: x ++ allocate(x) ++ allocate(x%v) ++ print *,"allocated!" ++ end subroutine ++ ++end ++ ++! { dg-final { scan-tree-dump-times "fini_coarray" 1 "original" } } ++! { dg-final { cleanup-tree-dump "original" } } +Index: gcc/testsuite/gfortran.dg/vect/vect-2.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/vect/vect-2.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/vect/vect-2.f90 (.../branches/gcc-4_9-branch) +@@ -15,8 +15,8 @@ + ! support unaligned loads). + + ! { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } +-! { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 3 "vect" { xfail { vect_no_align || { ! vector_alignment_reachable } } } } } +-! { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { target { vect_no_align && { ! vector_alignment_reachable } } } } } +-! { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align } } } } +-! { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 3 "vect" {target { vect_no_align || { { ! vector_alignment_reachable } && { ! vect_hw_misalign } } } } } } ++! { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 3 "vect" { xfail { { vect_no_align && { ! vect_hw_misalign } } || { ! vector_alignment_reachable } } } } } ++! { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { target { { vect_no_align && { ! vect_hw_misalign } } && { ! vector_alignment_reachable } } } } } ++! { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } ++! { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 3 "vect" {target { { vect_no_align && { ! vect_hw_misalign } } || { { ! vector_alignment_reachable } && { ! vect_hw_misalign } } } } } } + ! { dg-final { cleanup-tree-dump "vect" } } +Index: gcc/testsuite/gfortran.dg/vect/vect-3.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/vect/vect-3.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/vect/vect-3.f90 (.../branches/gcc-4_9-branch) +@@ -6,10 +6,10 @@ + Y = Y + A * X + END + +-! { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 3 "vect" { target vect_no_align } } } ++! { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 3 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } + ! { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { {! vect_no_align} && { {! vector_alignment_reachable} && {! vect_hw_misalign} } } } } } + ! { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { target { {! vect_no_align} && { {! vector_alignment_reachable} && {! vect_hw_misalign} } } } } } +-! { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || {! vector_alignment_reachable}} } } } +-! { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { { vect_no_align } || { ! vector_alignment_reachable} } } } } ++! { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align && { ! vect_hw_misalign } } || {! vector_alignment_reachable}} } } } ++! { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { { vect_no_align && { ! vect_hw_misalign } } || { ! vector_alignment_reachable} } } } } + + ! { dg-final { cleanup-tree-dump "vect" } } +Index: gcc/testsuite/gfortran.dg/vect/vect-4.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/vect/vect-4.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/vect/vect-4.f90 (.../branches/gcc-4_9-branch) +@@ -10,8 +10,8 @@ + END + + ! { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } +-! { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align } || {! vector_alignment_reachable} } } } } +-! { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { { vect_no_align } || {! vector_alignment_reachable} } } } } ++! { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align && { ! vect_hw_misalign } } || {! vector_alignment_reachable} } } } } ++! { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { { vect_no_align && { ! vect_hw_misalign } } || {! vector_alignment_reachable} } } } } + ! { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { target { {! vector_alignment_reachable} && {! vect_hw_misalign} } } } } + ! { dg-final { scan-tree-dump-times "accesses have the same alignment." 1 "vect" } } + ! { dg-final { cleanup-tree-dump "vect" } } +Index: gcc/testsuite/gfortran.dg/vect/vect-5.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/vect/vect-5.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/vect/vect-5.f90 (.../branches/gcc-4_9-branch) +@@ -36,8 +36,8 @@ + end + + ! { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } +-! { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || {! vector_alignment_reachable} } } } } +-! { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align } } } } +-! { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 2 "vect" { target { vect_no_align } } } } ++! { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align && { ! vect_hw_misalign } } || {! vector_alignment_reachable} } } } } ++! { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } ++! { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 2 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } + ! { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { {! vector_alignment_reachable} && {! vect_hw_misalign} } } } } + ! { dg-final { cleanup-tree-dump "vect" } } +Index: gcc/testsuite/gfortran.dg/proc_ptr_comp_45.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/proc_ptr_comp_45.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.dg/proc_ptr_comp_45.f90 (.../branches/gcc-4_9-branch) +@@ -0,0 +1,49 @@ ++! { dg-do run } ++! Test the fix for PR59198, where the field for the component 'term' in ++! the derived type 'decay_gen_t' was not being built. ++! ++! Contributed by Paul Thomas and based on the original testcase by ++! Juergen Reuter ++! ++module decays ++ ++ implicit none ++ ++ interface ++ real elemental function iface (arg) ++ real, intent(in) :: arg ++ end function ++ end interface ++ ++ type :: decay_term_t ++ type(decay_t), pointer :: unstable_product ++ integer :: i ++ end type ++ ++ type :: decay_gen_t ++ procedure(iface), nopass, pointer :: obs1_int ++ type(decay_term_t), allocatable :: term ++ end type ++ ++ type :: rng_t ++ integer :: i ++ end type ++ ++ type, extends (decay_gen_t) :: decay_t ++ class(rng_t), allocatable :: rng ++ end type ++ ++ class(decay_t), allocatable :: object ++ ++end ++ ++ use decays ++ type(decay_t), pointer :: template ++ real, parameter :: arg = 1.570796327 ++ allocate (template) ++ allocate (template%rng) ++ template%obs1_int => cos ++ if (abs (template%obs1_int (arg) - cos (arg)) .gt. 1e-4) call abort ++ allocate (object, source = template) ++ if (abs (object%obs1_int (arg) - cos (arg)) .gt. 1e-4) call abort ++end +Index: gcc/testsuite/gcc.c-torture/execute/pr63659.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/pr63659.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr63659.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,29 @@ ++/* PR rtl-optimization/63659 */ ++ ++int a, b, c, *d = &b, g, h, i; ++unsigned char e; ++char f; ++ ++int ++main () ++{ ++ while (a) ++ { ++ for (a = 0; a; a++) ++ for (; c; c++) ++ ; ++ if (i) ++ break; ++ } ++ ++ char j = c, k = -1, l; ++ l = g = j >> h; ++ f = l == 0 ? k : k % l; ++ e = 0 ? 0 : f; ++ *d = e; ++ ++ if (b != 255) ++ __builtin_abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/execute/pr65427.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/pr65427.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr65427.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,34 @@ ++/* PR tree-optimization/65427 */ ++ ++typedef int V __attribute__ ((vector_size (8 * sizeof (int)))); ++V a, b, c, d, e, f; ++ ++__attribute__((noinline, noclone)) void ++foo (int x, int y) ++{ ++ do ++ { ++ if (x) ++ d = a ^ c; ++ else ++ d = a ^ b; ++ } ++ while (y); ++} ++ ++int ++main () ++{ ++ a = (V) { 1, 2, 3, 4, 5, 6, 7, 8 }; ++ b = (V) { 0x40, 0x80, 0x40, 0x80, 0x40, 0x80, 0x40, 0x80 }; ++ e = (V) { 0x41, 0x82, 0x43, 0x84, 0x45, 0x86, 0x47, 0x88 }; ++ foo (0, 0); ++ if (__builtin_memcmp (&d, &e, sizeof (V)) != 0) ++ __builtin_abort (); ++ c = (V) { 0x80, 0x40, 0x80, 0x40, 0x80, 0x40, 0x80, 0x40 }; ++ f = (V) { 0x81, 0x42, 0x83, 0x44, 0x85, 0x46, 0x87, 0x48 }; ++ foo (1, 0); ++ if (__builtin_memcmp (&d, &f, sizeof (V)) != 0) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/execute/pr64979.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/pr64979.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr64979.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,36 @@ ++/* PR target/64979 */ ++ ++#include ++ ++void __attribute__((noinline, noclone)) ++bar (int x, va_list *ap) ++{ ++ if (ap) ++ { ++ int i; ++ for (i = 0; i < 10; i++) ++ if (i != va_arg (*ap, int)) ++ __builtin_abort (); ++ if (va_arg (*ap, double) != 0.5) ++ __builtin_abort (); ++ } ++} ++ ++void __attribute__((noinline, noclone)) ++foo (int x, ...) ++{ ++ va_list ap; ++ int n; ++ ++ va_start (ap, x); ++ n = va_arg (ap, int); ++ bar (x, (va_list *) ((n == 0) ? ((void *) 0) : &ap)); ++ va_end (ap); ++} ++ ++int ++main () ++{ ++ foo (100, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0.5); ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/execute/pr66233.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/pr66233.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr66233.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,22 @@ ++/* PR tree-optimization/66233 */ ++ ++unsigned int v[8]; ++ ++__attribute__((noinline, noclone)) void ++foo (void) ++{ ++ int i; ++ for (i = 0; i < 8; i++) ++ v[i] = (float) i; ++} ++ ++int ++main () ++{ ++ unsigned int i; ++ foo (); ++ for (i = 0; i < 8; i++) ++ if (v[i] != i) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/compile/pr65680.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr65680.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr65680.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,20 @@ ++/* PR middle-end/65680 */ ++/* { dg-do compile { target lp64 } } */ ++ ++struct S ++{ ++ int f : 1; ++} a[100000000000000001][3]; ++ ++void ++foo (void) ++{ ++ struct S b = { 0 }; ++ a[100000000000000000][0] = b; ++} ++ ++void ++bar (void) ++{ ++ a[100000000000000000][0].f = 1; ++} +Index: gcc/testsuite/gcc.c-torture/compile/pr64067.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr64067.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr64067.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,10 @@ ++/* PR middle-end/64067 */ ++ ++struct S { int s; }; ++int *const v[1] = { &((struct S) { .s = 42 }).s }; ++ ++int * ++foo (void) ++{ ++ return v[0]; ++} +Index: gcc/testsuite/gcc.c-torture/compile/pr65163.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr65163.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr65163.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,22 @@ ++/* PR target/65163 */ ++ ++typedef unsigned int uint32_t; ++typedef unsigned short uint16_t; ++union unaligned_32 { uint32_t l; } __attribute__((packed)); ++union unaligned_16 { uint16_t l; } __attribute__((packed)); ++ ++int ++test_00 (unsigned char* buf, int bits_per_component) ++{ ++ (((union unaligned_32*)(buf))->l) = ++ __builtin_bswap32 (bits_per_component == 10 ? 1 : 0); ++ return 0; ++} ++ ++int ++test_01 (unsigned char* buf, int bits_per_component) ++{ ++ (((union unaligned_16*)(buf))->l) = ++ __builtin_bswap16 (bits_per_component == 10 ? 1 : 0); ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/compile/pr64269.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr64269.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr64269.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,9 @@ ++/* PR tree-optimization/64269 */ ++ ++void ++foo (char *p) ++{ ++ __SIZE_TYPE__ s = ~(__SIZE_TYPE__)0; ++ *p = 0; ++ __builtin_memset (p + 1, 0, s); ++} +Index: gcc/testsuite/gcc.c-torture/compile/pr63608.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr63608.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr63608.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,14 @@ ++/* PR middle-end/63608 */ ++ ++typedef long T; ++typedef unsigned long U; ++unsigned long a; ++ ++unsigned long ++foo (int b) ++{ ++ T c = 0; ++ const U d = 2248593032UL; ++ a = (c = +d) | (~4L & ~b); ++ return c; ++} +Index: gcc/testsuite/gnat.dg/opt45.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/opt45.adb (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gnat.dg/opt45.adb (.../branches/gcc-4_9-branch) +@@ -0,0 +1,38 @@ ++-- { dg-do compile } ++-- { dg-options "-O3" } ++ ++procedure Opt45 is ++ ++ type Index_T is mod 2 ** 32; ++ for Index_T'Size use 32; ++ for Index_T'Alignment use 1; ++ ++ type Array_T is array (Index_T range <>) of Natural; ++ type Array_Ptr_T is access all Array_T; ++ ++ My_Array_1 : aliased Array_T := (1, 2); ++ My_Array_2 : aliased Array_T := (3, 4); ++ ++ Array_Ptr : Array_Ptr_T := null; ++ Index : Index_T := Index_T'First; ++ ++ My_Value : Natural := Natural'First; ++ ++ procedure Proc (Selection : Positive) is ++ begin ++ if Selection = 1 then ++ Array_Ptr := My_Array_1'Access; ++ Index := My_Array_1'First; ++ else ++ Array_Ptr := My_Array_2'Access; ++ Index := My_Array_2'First; ++ end if; ++ ++ if My_Value = Natural'First then ++ My_Value := Array_Ptr.all (Index); ++ end if; ++ end; ++ ++begin ++ Proc (2); ++end; +Index: gcc/testsuite/gnat.dg/unchecked_convert1.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/unchecked_convert1.adb (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gnat.dg/unchecked_convert1.adb (.../branches/gcc-4_9-branch) +@@ -4,6 +4,7 @@ + with Ada.Unchecked_Conversion; + + procedure Unchecked_Convert1 is ++ + type Byte is mod 2**8; + + type Stream is array (Natural range <>) of Byte; +@@ -24,9 +25,10 @@ + return Do_Sum (To_Chunk (S(S'First .. S'First + Rec'Size / 8 - 1))); + end; + +- A : Stream (1..9); ++ A : Stream (1..9) := (others => 0); + I : Integer; + + begin ++ A (9) := 1; + I := Sum (A(1..8)); + end; +Index: gcc/testsuite/gnat.dg/opt47.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/opt47.adb (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gnat.dg/opt47.adb (.../branches/gcc-4_9-branch) +@@ -0,0 +1,31 @@ ++-- { dg-do run { target i?86-*-* x86_64-*-* alpha*-*-* ia64-*-* } } ++-- { dg-options "-O2" } ++ ++with Ada.Characters.Handling; use Ada.Characters.Handling; ++with Interfaces; use Interfaces; ++with Ada.Unchecked_Conversion; ++ ++procedure Opt47 is ++ ++ subtype String4 is String (1 .. 4); ++ function To_String4 is new Ada.Unchecked_Conversion (Unsigned_32, String4); ++ type Arr is array (Integer range <>) of Unsigned_32; ++ Leaf : Arr (1 .. 4) := (1349478766, 1948272498, 1702436946, 1702061409); ++ Value : Unsigned_32; ++ Result : String (1 .. 32); ++ Last : Integer := 0; ++ ++begin ++ for I in 1 .. 4 loop ++ Value := Leaf (I); ++ for J in reverse String4'Range loop ++ if Is_Graphic (To_String4 (Value)(J)) then ++ Last := Last + 1; ++ Result (Last) := To_String4 (Value)(J); ++ end if; ++ end loop; ++ end loop; ++ if Result (1) /= 'P' then ++ raise Program_Error; ++ end if; ++end; +Index: gcc/testsuite/gnat.dg/loop_optimization18_pkg.ads +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/loop_optimization18_pkg.ads (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gnat.dg/loop_optimization18_pkg.ads (.../branches/gcc-4_9-branch) +@@ -0,0 +1,15 @@ ++with Unchecked_Conversion; ++ ++package Loop_Optimization18_Pkg is ++ ++ type Arr is array (Integer range <>) of Natural; ++ ++ type Rec (UB : Integer) is record ++ L : Arr (1 .. UB); ++ end record; ++ ++ type Byte_Array_Type is new String (1..4); ++ ++ function Conv is new Unchecked_Conversion (Byte_Array_Type, Integer); ++ ++end Loop_Optimization18_Pkg; +Index: gcc/testsuite/gnat.dg/loop_optimization18.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/loop_optimization18.adb (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gnat.dg/loop_optimization18.adb (.../branches/gcc-4_9-branch) +@@ -0,0 +1,16 @@ ++-- { dg-do compile } ++-- { dg-options "-O3" } ++ ++package body Loop_Optimization18 is ++ ++ procedure Proc (Message : Byte_Array_Type) is ++ ++ R : Rec (Conv (Message)); ++ ++ begin ++ for Division in 1 .. R.UB loop ++ R.L (Division) := 0; ++ end loop; ++ end; ++ ++end Loop_Optimization18; +Index: gcc/testsuite/gnat.dg/loop_optimization18.ads +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/loop_optimization18.ads (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gnat.dg/loop_optimization18.ads (.../branches/gcc-4_9-branch) +@@ -0,0 +1,7 @@ ++with Loop_Optimization18_Pkg; use Loop_Optimization18_Pkg; ++ ++package Loop_Optimization18 is ++ ++ procedure Proc (Message : Byte_Array_Type); ++ ++end Loop_Optimization18; +Index: gcc/testsuite/gcc.dg/pr63762.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr63762.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/pr63762.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,77 @@ ++/* PR middle-end/63762 */ ++/* { dg-do assemble } */ ++/* { dg-options "-O2" } */ ++ ++#include ++ ++void *astFree (); ++void *astMalloc (); ++void astNegate (void *); ++int astGetNegated (void *); ++void astGetRegionBounds (void *, double *, double *); ++int astResampleF (void *, ...); ++ ++extern int astOK; ++ ++int ++MaskF (int inside, int ndim, const int lbnd[], const int ubnd[], ++ float in[], float val) ++{ ++ ++ void *used_region; ++ float *c, *d, *out, *tmp_out; ++ double *lbndgd, *ubndgd; ++ int *lbndg, *ubndg, idim, ipix, nax, nin, nout, npix, npixg, result = 0; ++ if (!astOK) return result; ++ lbndg = astMalloc (sizeof (int)*(size_t) ndim); ++ ubndg = astMalloc (sizeof (int)*(size_t) ndim); ++ lbndgd = astMalloc (sizeof (double)*(size_t) ndim); ++ ubndgd = astMalloc (sizeof (double)*(size_t) ndim); ++ if (astOK) ++ { ++ astGetRegionBounds (used_region, lbndgd, ubndgd); ++ npix = 1; ++ npixg = 1; ++ for (idim = 0; idim < ndim; idim++) ++ { ++ lbndg[ idim ] = lbnd[ idim ]; ++ ubndg[ idim ] = ubnd[ idim ]; ++ npix *= (ubnd[ idim ] - lbnd[ idim ] + 1); ++ if (npixg >= 0) npixg *= (ubndg[ idim ] - lbndg[ idim ] + 1); ++ } ++ if (npixg <= 0 && astOK) ++ { ++ if ((inside != 0) == (astGetNegated( used_region ) != 0)) ++ { ++ c = in; ++ for (ipix = 0; ipix < npix; ipix++) *(c++) = val; ++ result = npix; ++ } ++ } ++ else if (npixg > 0 && astOK) ++ { ++ if ((inside != 0) == (astGetNegated (used_region) != 0)) ++ { ++ tmp_out = astMalloc (sizeof (float)*(size_t) npix); ++ if (tmp_out) ++ { ++ c = tmp_out; ++ for (ipix = 0; ipix < npix; ipix++) *(c++) = val; ++ result = npix - npixg; ++ } ++ out = tmp_out; ++ } ++ else ++ { ++ tmp_out = NULL; ++ out = in; ++ } ++ if (inside) astNegate (used_region); ++ result += astResampleF (used_region, ndim, lbnd, ubnd, in, NULL, ++ NULL, NULL, 0, 0.0, 100, val, ndim, ++ lbnd, ubnd, lbndg, ubndg, out, NULL); ++ if (inside) astNegate (used_region); ++ } ++ } ++ return result; ++} +Index: gcc/testsuite/gcc.dg/pr63637-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr63637-2.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/pr63637-2.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,15 @@ ++/* PR rtl-optimization/63637 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++int ++foo (void) ++{ ++ int a, b, c; ++ asm ("# Magic instruction" : "=r" (a) : "r" (0)); ++ asm ("# Magic instruction" : "=r" (b) : "r" (0)); ++ asm ("# Magic instruction" : "=r" (c) : "r" (0)); ++ return a + b + c; ++} ++ ++/* { dg-final { scan-assembler-times "# Magic instruction" 1 } } */ +Index: gcc/testsuite/gcc.dg/pr61058.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr61058.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/pr61058.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,10 @@ ++/* PR rtl-optimization/61058 */ ++/* { dg-do compile } */ ++/* { dg-options "" } */ ++/* { dg-additional-options "-fno-asynchronous-unwind-tables -mtune=atom" { target i?86-*-* x86_64-*-* } } */ ++ ++void ++foo (void) ++{ ++ __builtin_unreachable (); ++} +Index: gcc/testsuite/gcc.dg/pr51879-12.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr51879-12.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/pr51879-12.c (.../branches/gcc-4_9-branch) +@@ -24,6 +24,6 @@ + baz (a); + } + +-/* { dg-final { scan-tree-dump-times "bar \\(" 1 "pre"} } */ +-/* { dg-final { scan-tree-dump-times "bar2 \\(" 1 "pre"} } */ ++/* { dg-final { scan-tree-dump-times "bar \\(" 1 "pre" { xfail *-*-* } } } */ ++/* { dg-final { scan-tree-dump-times "bar2 \\(" 1 "pre" { xfail *-*-* } } } */ + /* { dg-final { cleanup-tree-dump "pre" } } */ +Index: gcc/testsuite/gcc.dg/pr63637-6.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr63637-6.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/pr63637-6.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,15 @@ ++/* PR rtl-optimization/63637 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++int ++foo (void) ++{ ++ int a, b, c, d, e, f; ++ asm ("# Magic instruction" : "=r" (a), "=r" (d) : "r" (0)); ++ asm ("# Magic instruction" : "=r" (b), "=r" (e) : "r" (0)); ++ asm ("# Magic instruction" : "=r" (c), "=r" (f) : "r" (0)); ++ return a + b + c; ++} ++ ++/* { dg-final { scan-assembler-times "# Magic instruction" 3 } } */ +Index: gcc/testsuite/gcc.dg/pr64536.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr64536.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/pr64536.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,67 @@ ++/* PR rtl-optimization/64536 */ ++/* { dg-do link } */ ++/* { dg-options "-O2" } */ ++/* { dg-additional-options "-fPIC" { target fpic } } */ ++ ++struct S { long q; } *h; ++long a, b, g, j, k, *c, *d, *e, *f, *i; ++long *baz (void) ++{ ++ asm volatile ("" : : : "memory"); ++ return e; ++} ++ ++void ++bar (int x) ++{ ++ int y; ++ for (y = 0; y < x; y++) ++ { ++ switch (b) ++ { ++ case 0: ++ case 2: ++ a++; ++ break; ++ case 3: ++ a++; ++ break; ++ case 1: ++ a++; ++ } ++ if (d) ++ { ++ f = baz (); ++ g = k++; ++ if (&h->q) ++ { ++ j = *f; ++ h->q = *f; ++ } ++ else ++ i = (long *) (h->q = *f); ++ *c++ = (long) f; ++ e += 6; ++ } ++ else ++ { ++ f = baz (); ++ g = k++; ++ if (&h->q) ++ { ++ j = *f; ++ h->q = *f; ++ } ++ else ++ i = (long *) (h->q = *f); ++ *c++ = (long) f; ++ e += 6; ++ } ++ } ++} ++ ++int ++main () ++{ ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/pr63665.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr63665.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/pr63665.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,18 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target int32plus } */ ++/* { dg-options "-O -fno-tree-ccp -fno-tree-fre -fno-tree-copy-prop -fwrapv" } */ ++ ++static inline int ++test5 (int x) ++{ ++ int y = 0x80000000; ++ return x + y; ++} ++ ++int ++main () ++{ ++ if (test5 (0x80000000) != 0) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/pr63637-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr63637-3.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/pr63637-3.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,15 @@ ++/* PR rtl-optimization/63637 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++int ++foo (void) ++{ ++ int a, b, c; ++ asm ("# Magic instruction" : "=r" (a) : : "memory"); ++ asm ("# Magic instruction" : "=r" (b) : : "memory"); ++ asm ("# Magic instruction" : "=r" (c) : : "memory"); ++ return a + b + c; ++} ++ ++/* { dg-final { scan-assembler-times "# Magic instruction" 3 } } */ +Index: gcc/testsuite/gcc.dg/pr64663.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr64663.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/pr64663.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,17 @@ ++/* PR debug/64663 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -g -w" } */ ++ ++void ++foo (void) ++{ ++ int a[9]; ++ a[-8] = 0; ++} ++ ++void ++bar (void) ++{ ++ int a[9]; ++ a[-9] = 0; ++} +Index: gcc/testsuite/gcc.dg/pr62167-run.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr62167-run.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/pr62167-run.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,47 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2 -ftree-tail-merge" } */ ++ ++struct node ++{ ++ struct node *next; ++ struct node *prev; ++}; ++ ++struct node node; ++ ++struct head ++{ ++ struct node *first; ++}; ++ ++struct head heads[5]; ++ ++int k = 2; ++ ++struct head *head = &heads[2]; ++ ++int ++main () ++{ ++ struct node *p; ++ ++ node.next = (void*)0; ++ ++ node.prev = (void *)head; ++ ++ head->first = &node; ++ ++ struct node *n = head->first; ++ ++ struct head *h = &heads[k]; ++ ++ heads[2].first = n->next; ++ ++ if ((void*)n->prev == (void *)h) ++ p = h->first; ++ else ++ /* Dead tbaa-unsafe load from ((struct node *)&heads[2])->next. */ ++ p = n->prev->next; ++ ++ return !(p == (void*)0); ++} +Index: gcc/testsuite/gcc.dg/pr63593.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr63593.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/pr63593.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,20 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -fno-tree-vectorize" } */ ++ ++int in[2 * 4][4]; ++int out[4]; ++ ++void ++foo (void) ++{ ++ int sum; ++ int i, j, k; ++ for (k = 0; k < 4; k++) ++ { ++ sum = 1; ++ for (j = 0; j < 4; j++) ++ for (i = 0; i < 4; i++) ++ sum *= in[i + k][j]; ++ out[k] = sum; ++ } ++} +Index: gcc/testsuite/gcc.dg/pr52769.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr52769.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/pr52769.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,24 @@ ++/* PR c/52769 */ ++/* { dg-do run } */ ++/* { dg-options "-O3" } */ ++ ++typedef struct ++{ ++ int should_be_zero; ++ char s[6]; ++ int x; ++} foo_t; ++ ++int ++main (void) ++{ ++ volatile foo_t foo = { ++ .s = "123456", ++ .x = 2 ++ }; ++ ++ if (foo.should_be_zero != 0) ++ __builtin_abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/pr63637-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr63637-4.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/pr63637-4.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,15 @@ ++/* PR rtl-optimization/63637 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++int ++foo (void) ++{ ++ int a, b, c; ++ asm ("# Magic instruction" : "=r" (a) : "r" (0) : "memory"); ++ asm ("# Magic instruction" : "=r" (b) : "r" (0) : "memory"); ++ asm ("# Magic instruction" : "=r" (c) : "r" (0) : "memory"); ++ return a + b + c; ++} ++ ++/* { dg-final { scan-assembler-times "# Magic instruction" 3 } } */ +Index: gcc/testsuite/gcc.dg/Warray-bounds-12.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/Warray-bounds-12.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/Warray-bounds-12.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,26 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -Warray-bounds" } */ ++/* { dg-additional-options "-mssse3" { target x86_64-*-* i?86-*-* } } */ ++ ++void foo(short a[], short m) ++{ ++ int i, j; ++ int f1[10]; ++ short nc; ++ ++ nc = m + 1; ++ if (nc > 3) ++ { ++ for (i = 0; i <= nc; i++) ++ { ++ f1[i] = f1[i] + 1; ++ } ++ } ++ ++ for (i = 0, j = m; i < nc; i++, j--) ++ { ++ a[i] = f1[i]; /* { dg-bogus "above array bounds" } */ ++ a[j] = i; ++ } ++ return; ++} +Index: gcc/testsuite/gcc.dg/pr62167.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr62167.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/pr62167.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,50 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -ftree-tail-merge -fdump-tree-pre" } */ ++ ++struct node ++{ ++ struct node *next; ++ struct node *prev; ++}; ++ ++struct node node; ++ ++struct head ++{ ++ struct node *first; ++}; ++ ++struct head heads[5]; ++ ++int k = 2; ++ ++struct head *head = &heads[2]; ++ ++int ++main () ++{ ++ struct node *p; ++ ++ node.next = (void*)0; ++ ++ node.prev = (void *)head; ++ ++ head->first = &node; ++ ++ struct node *n = head->first; ++ ++ struct head *h = &heads[k]; ++ ++ heads[2].first = n->next; ++ ++ if ((void*)n->prev == (void *)h) ++ p = h->first; ++ else ++ /* Dead tbaa-unsafe load from ((struct node *)&heads[2])->next. */ ++ p = n->prev->next; ++ ++ return !(p == (void*)0); ++} ++ ++/* { dg-final { scan-tree-dump-not "Removing basic block" "pre"} } */ ++/* { dg-final { cleanup-tree-dump "pre" } } */ +Index: gcc/testsuite/gcc.dg/pr64766.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr64766.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/pr64766.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,9 @@ ++/* PR c/64766 */ ++/* { dg-do compile } */ ++ ++void ++foo () ++{ ++} ++ ++void foo () = 0; /* { dg-error "is initialized like a variable|invalid initializer" } */ +Index: gcc/testsuite/gcc.dg/pr65063.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr65063.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/pr65063.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,33 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -fno-tree-loop-ivcanon -fno-tree-vectorize" } */ ++ ++static int in[8][4]; ++static int out[4]; ++static const int check_result[] = {0, 16, 256, 4096}; ++ ++static inline void foo () ++{ ++ int sum; ++ int i, j, k; ++ for (k = 0; k < 4; k++) ++ { ++ sum = 1; ++ for (j = 0; j < 4; j++) ++ for (i = 0; i < 4; i++) ++ sum *= in[i + k][j]; ++ out[k] = sum; ++ } ++} ++ ++int main () ++{ ++ int i, j, k; ++ for (i = 0; i < 8; i++) ++ for (j = 0; j < 4; j++) ++ in[i][j] = (i + 2) / 3; ++ foo (); ++ for (k = 0; k < 4; k++) ++ if (out[k] != check_result[k]) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/lto/pr64373_0.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/lto/pr64373_0.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/lto/pr64373_0.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,10 @@ ++/* { dg-lto-do assemble } */ ++ ++extern void b(int L, float (*data)[L]); ++ ++void a(void) ++{ ++ float* p = 0; ++ int i = 0; ++ b(10, (float (*)[10])(p + i)); ++} +Index: gcc/testsuite/gcc.dg/torture/pr66272.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr66272.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr66272.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,23 @@ ++/* { dg-do run } */ ++ ++struct S ++{ ++ int f0; ++ int f1; ++}; ++ ++int b; ++ ++int main () ++{ ++ struct S a[2] = { 0 }; ++ struct S d = { 0, 1 }; ++ for (b = 0; b < 2; b++) ++ { ++ a[b] = d; ++ d = a[0]; ++ } ++ if (d.f1 != 1) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/torture/pr63738.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr63738.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr63738.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,27 @@ ++/* { dg-do compile } */ ++ ++#include ++ ++struct longjmp_buffer { ++ jmp_buf buf; ++}; ++ ++void plouf(); ++ ++extern long interprete() ++{ ++ long * sp; ++ int i; ++ long *args; ++ int n; ++ ++ struct longjmp_buffer raise_buf; ++ setjmp (raise_buf.buf); ++ ++ plouf(); ++ sp -= 4; ++ for (i = 0; i < n; i++) ++ args[i] = sp[10-i]; ++ plouf(); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/torture/pr64199.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr64199.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr64199.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,8 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-ffast-math -frounding-math" } */ ++ ++float ++foo (void) ++{ ++ return 1.1f + 2.2f + 2.2f; ++} +Index: gcc/testsuite/gcc.dg/torture/pr62238.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr62238.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr62238.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,30 @@ ++/* { dg-do run } */ ++ ++int a[4], b, c, d; ++ ++int ++fn1 (int p) ++{ ++ for (; d; d++) ++ { ++ unsigned int h; ++ for (h = 0; h < 3; h++) ++ { ++ if (a[c+c+h]) ++ { ++ if (p) ++ break; ++ return 0; ++ } ++ b = 0; ++ } ++ } ++ return 0; ++} ++ ++int ++main () ++{ ++ fn1 (0); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/torture/pr66123.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr66123.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr66123.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++ ++int ++test (int foo) ++{ ++ static void *dummy[] = { &&a, &&b }; ++ goto *((char *) &&b - 2 * (foo < 0)); ++a: ++b: ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/torture/pr64365.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr64365.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr64365.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,37 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target int32plus } */ ++ ++extern void abort (void); ++extern int memcmp (const void * , const void *, __SIZE_TYPE__); ++ ++void __attribute__((noinline,noclone)) ++foo(int *in) ++{ ++ int i; ++ for (i = 62; i >= 10; i--) ++ { ++ in[i - 8] -= in[i]; ++ in[i - 5] += in[i] * 2; ++ in[i - 4] += in[i]; ++ } ++} ++ ++int main() ++{ ++ int x[64]; ++ int y[64] = { 0, 1, -2380134, -1065336, -1026376, 3264240, 3113534, 2328130, 3632054, 3839634, 2380136, 1065339, 1026380, 1496037, 1397286, 789976, 386408, 450984, 597112, 497464, 262008, 149184, 194768, 231519, 173984, 87753, 60712, 82042, 87502, 60014, 30050, 25550, 33570, 32386, 20464, 10675, 10868, 13329, 11794, 6892, 3988, 4564, 5148, 4228, 2284, 1568, 1848, 1943, 1472, 741, 628, 702, 714, 474, 230, 234, 238, 242, 120, 59, 60, 61, 62, 63 }; ++ int i; ++ ++ for (i = 0; i < 64; ++i) ++ { ++ x[i] = i; ++ __asm__ volatile (""); ++ } ++ ++ foo (x); ++ ++ if (memcmp (x, y, sizeof (x)) != 0) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/tree-ssa/stdarg-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/stdarg-7.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/stdarg-7.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,22 @@ ++/* PR target/64979 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fdump-tree-stdarg" } */ ++ ++#include ++ ++void bar (int x, va_list *ap); ++ ++void ++foo (int x, ...) ++{ ++ va_list ap; ++ int n; ++ ++ va_start (ap, x); ++ n = va_arg (ap, int); ++ bar (x, (va_list *) ((n == 0) ? ((void *) 0) : &ap)); ++ va_end (ap); ++} ++ ++/* { dg-final { scan-tree-dump "foo: va_list escapes 1, needs to save all GPR units and all FPR units" "stdarg" } } */ ++/* { dg-final { cleanup-tree-dump "stdarg" } } */ +Index: gcc/testsuite/gcc.dg/tls/pr66470.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tls/pr66470.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/tls/pr66470.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,29 @@ ++/* PR target/66470 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++/* { dg-require-effective-target tls } */ ++ ++extern __thread unsigned long long a[10]; ++extern __thread struct S { int a, b; } b[10]; ++ ++unsigned long long ++foo (long x) ++{ ++ return a[x]; ++} ++ ++struct S ++bar (long x) ++{ ++ return b[x]; ++} ++ ++#ifdef __SIZEOF_INT128__ ++extern __thread unsigned __int128 c[10]; ++ ++unsigned __int128 ++baz (long x) ++{ ++ return c[x]; ++} ++#endif +Index: gcc/testsuite/gcc.dg/pr63637-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr63637-1.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/pr63637-1.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,15 @@ ++/* PR rtl-optimization/63637 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++int ++foo (void) ++{ ++ int a, b, c; ++ asm ("# Magic instruction" : "=r" (a)); ++ asm ("# Magic instruction" : "=r" (b)); ++ asm ("# Magic instruction" : "=r" (c)); ++ return a + b + c; ++} ++ ++/* { dg-final { scan-assembler-times "# Magic instruction" 1 } } */ +Index: gcc/testsuite/gcc.dg/pr64563.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr64563.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/pr64563.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,14 @@ ++/* PR tree-optimization/64563 */ ++/* { dg-do compile } */ ++/* { dg-options "-Os -Wtype-limits" } */ ++ ++int a, b, c, d, f; ++unsigned int e; ++ ++void ++foo (void) ++{ ++ d = b = (a != (e | 4294967288UL)); ++ if (!d) ++ c = f || b; ++} +Index: gcc/testsuite/gcc.dg/ipa/pr64041.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/ipa/pr64041.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/ipa/pr64041.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,64 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2" } */ ++ ++int printf (const char *, ...); ++ ++int a, b = 1, d; ++ ++union U1 ++{ ++ unsigned int f0; ++ int f1; ++}; ++ ++union U2 ++{ ++ int f2; ++ int f3; ++} c; ++ ++int ++fn1 (int p) ++{ ++ int t = p && a || p && a && p; ++ return t ? t : a; ++} ++ ++unsigned ++fn2 (union U1 p1, union U2 p2) ++{ ++ if (p1.f1 <= 0) ++ { ++ for (; p2.f2;) ++ c.f2 = 0; ++ p2.f2 = fn1 (d); ++ } ++ return p2.f3; ++} ++ ++int g = 0; ++ ++int ++foo () ++{ ++ if (b) ++ { ++ union U1 f = { 0xFFFFFFFFU }; ++ ++ fn2 (f, c); ++ } ++ g = 1; ++ return 0; ++} ++ ++ ++int ++main () ++{ ++ foo (); ++ ++ if (g == 0) ++ __builtin_abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/ipa/PR64559.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/ipa/PR64559.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/ipa/PR64559.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,39 @@ ++/* { dg-do compile } */ ++/* { dg-options "-Os" } */ ++ ++int a, b, c, d; ++ ++struct S ++{ ++ int f0; ++}; ++ ++static int ++fn1 (int p) ++{ ++ return p == 0 || a; ++} ++ ++static int ++fn2 () ++{ ++ d = fn1 (c); ++ return 0; ++} ++ ++static int ++fn3 (struct S p) ++{ ++ p.f0 || fn2 (); ++ if (fn1 (1)) ++ b = 0; ++ return 0; ++} ++ ++int ++main () ++{ ++ struct S e = { 1 }; ++ fn3 (e); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/ipa/pr63551.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/ipa/pr63551.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/ipa/pr63551.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,33 @@ ++/* { dg-do run } */ ++/* { dg-options "-Os" } */ ++ ++union U ++{ ++ unsigned int f0; ++ int f1; ++}; ++ ++int a, d; ++ ++void ++fn1 (union U p) ++{ ++ if (p.f1 <= 0) ++ if (a) ++ d = 0; ++} ++ ++void ++fn2 () ++{ ++ d = 0; ++ union U b = { 4294967286U }; ++ fn1 (b); ++} ++ ++int ++main () ++{ ++ fn2 (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/pr63637-5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr63637-5.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/pr63637-5.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,15 @@ ++/* PR rtl-optimization/63637 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++int ++foo (void) ++{ ++ int a, b, c, d, e, f; ++ asm ("# Magic instruction" : "=r" (a), "=r" (d)); ++ asm ("# Magic instruction" : "=r" (b), "=r" (e)); ++ asm ("# Magic instruction" : "=r" (c), "=r" (f)); ++ return a + b + c; ++} ++ ++/* { dg-final { scan-assembler-times "# Magic instruction" 3 } } */ +Index: gcc/testsuite/gcc.dg/Warray-bounds-13.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/Warray-bounds-13.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/Warray-bounds-13.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,18 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -Warray-bounds" } */ ++ ++extern char *bar[17]; ++ ++int foo(int argc, char **argv) ++{ ++ int i; ++ int n = 0; ++ ++ for (i = 0; i < argc; i++) ++ n++; ++ ++ for (i = 0; i < argc; i++) ++ argv[i] = bar[i + n]; /* { dg-bogus "above array bounds" } */ ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/pr64778.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr64778.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/pr64778.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,10 @@ ++/* PR c/64778 */ ++/* { dg-do compile } */ ++ ++int ++foo (int p) ++{ ++ int a; ++ a ^= foo (,); /* { dg-error "expected expression before|too many arguments" } */ ++ return a; ++} +Index: gcc/testsuite/gcc.dg/pr65228.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr65228.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/pr65228.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,11 @@ ++/* PR c/65228 */ ++/* { dg-do compile } */ ++/* { dg-options "" } */ ++ ++__auto_type a = b; /* { dg-error "undeclared" } */ ++ ++void ++f (void) ++{ ++ __auto_type c = d; /* { dg-error "undeclared" } */ ++} +Index: gcc/testsuite/gcc.dg/tm/pr64391.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tm/pr64391.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/tm/pr64391.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,10 @@ ++/* PR middle-end/64391 */ ++/* { dg-do compile } */ ++/* { dg-options "-fgnu-tm" } */ ++ ++void ++foo (void) ++{ ++#pragma GCC ivdep ++ while (1); ++} +Index: gcc/testsuite/gcc.dg/vect/vect-105.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-105.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-105.c (.../branches/gcc-4_9-branch) +@@ -66,7 +66,7 @@ + } + + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" { target vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 0 "vect" } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ + +Index: gcc/testsuite/gcc.dg/vect/vect-75-big-array.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-75-big-array.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-75-big-array.c (.../branches/gcc-4_9-branch) +@@ -52,6 +52,6 @@ + + + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target vect_no_align } } } */ +-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */ ++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-50.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-50.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-50.c (.../branches/gcc-4_9-branch) +@@ -61,9 +61,9 @@ + align the store will not force the two loads to be aligned). */ + + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align } } } } */ ++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { target vect_hw_misalign } } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || {! vector_alignment_reachable} } } } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 3 "vect" { target vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align && { ! vect_hw_misalign } } || {! vector_alignment_reachable} } } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 3 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { {! vector_alignment_reachable} && { {! vect_no_align } && {! vect_hw_misalign } } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-33.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-33.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-33.c (.../branches/gcc-4_9-branch) +@@ -38,7 +38,7 @@ + + + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */ ++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" { target { ! vect_hw_misalign } } } } */ + /* { dg-final { scan-tree-dump "Alignment of access forced using peeling" "vect" { target vector_alignment_reachable } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { {! vector_alignment_reachable} && {! vect_hw_misalign} } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-42.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-42.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-42.c (.../branches/gcc-4_9-branch) +@@ -64,7 +64,7 @@ + } + + /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 3 "vect" { target vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 3 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { { ! vector_alignment_reachable } && { ! vect_element_align } } } } } */ + /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" { xfail { vect_no_align || { { ! vector_alignment_reachable } || vect_element_align } } } } } */ + /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 3 "vect" { target vect_element_align } } } */ +Index: gcc/testsuite/gcc.dg/vect/no-scevccp-outer-6-global.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-6-global.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-6-global.c (.../branches/gcc-4_9-branch) +@@ -52,5 +52,5 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-outer-5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-5.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-5.c (.../branches/gcc-4_9-branch) +@@ -78,5 +78,5 @@ + is known. */ + /* { dg-final { scan-tree-dump-times "not vectorized: possible dependence between data-refs" 1 "vect" { xfail *-*-* } } } */ + /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" } } */ +-/* { dg-final { scan-tree-dump "zero step in outer loop." "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump "zero step in outer loop." "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-outer-fir.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-outer-fir.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-outer-fir.c (.../branches/gcc-4_9-branch) +@@ -67,5 +67,5 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 2 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 2 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,30 @@ ++/* { dg-require-effective-target vect_int } */ ++/* { dg-do compile } */ ++ ++#define N 16 ++ ++const unsigned int in[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; ++unsigned int out[N]; ++ ++__attribute__ ((noinline)) int ++main1 (void) ++{ ++ const unsigned int *pin = &in[1]; ++ unsigned int *pout = &out[0]; ++ ++ /* Misaligned load. */ ++ *pout++ = *pin++; ++ *pout++ = *pin++; ++ *pout++ = *pin++; ++ *pout++ = *pin++; ++ ++ return 0; ++} ++ ++/* Verify that the assembly contains vector instructions alone ++ with no word loads (lw, lwu, lwz, lwzu, or their indexed forms) ++ or word stores (stw, stwu, stwx, stwux, or their indexed forms). */ ++ ++/* { dg-final { scan-assembler "\t\(lvx|lxv|lvsr|stxv\)" } } */ ++/* { dg-final { scan-assembler-not "\tlwz?u?x? " } } */ ++/* { dg-final { scan-assembler-not "\tstwu?x? " } } */ +Index: gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-33.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-33.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-33.c (.../branches/gcc-4_9-branch) +@@ -41,5 +41,5 @@ + } + + /* { dg-final { scan-tree-dump-times "vectorization not profitable" 1 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" } } */ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { ! vect_hw_misalign } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-31a.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-31a.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-31a.c (.../branches/gcc-4_9-branch) +@@ -47,5 +47,5 @@ + } + + /* { dg-final { scan-tree-dump-times "vectorization not profitable" 1 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" } } */ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { ! vect_hw_misalign } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c (.../branches/gcc-4_9-branch) +@@ -1,6 +1,5 @@ + /* { dg-require-effective-target vect_int } */ + +-#include + #include "../../tree-vect.h" + + #define N 16 +@@ -9,12 +8,10 @@ + unsigned int in[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; + + __attribute__ ((noinline)) int +-main1 (unsigned int x, unsigned int y) ++main1 (void) + { +- int i; + unsigned int *pin = &in[1]; + unsigned int *pout = &out[0]; +- unsigned int a0, a1, a2, a3; + + /* Misaligned load. */ + *pout++ = *pin++; +@@ -22,13 +19,6 @@ + *pout++ = *pin++; + *pout++ = *pin++; + +- /* Check results. */ +- if (out[0] != in[1] +- || out[1] != in[2] +- || out[2] != in[3] +- || out[3] != in[4]) +- abort(); +- + return 0; + } + +@@ -36,11 +26,18 @@ + { + check_vect (); + +- main1 (2, 3); ++ main1 (); + ++ /* Check results. */ ++ if (out[0] != in[1] ++ || out[1] != in[2] ++ || out[2] != in[3] ++ || out[3] != in[4]) ++ abort(); ++ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "basic block vectorized using SLP" 1 "slp" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "slp" } } */ + +Index: gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-76b.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-76b.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-76b.c (.../branches/gcc-4_9-branch) +@@ -43,8 +43,8 @@ + } + + /* Peeling to align the store is used. Overhead of peeling is too high. */ +-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target vector_alignment_reachable } } } */ +-/* { dg-final { scan-tree-dump-times "vectorization not profitable" 1 "vect" { target { vector_alignment_reachable && {! vect_no_align} } } } } */ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { vector_alignment_reachable && {! vect_no_align} } } } } */ ++/* { dg-final { scan-tree-dump-times "vectorization not profitable" 1 "vect" { target { vector_alignment_reachable && {! vect_hw_misalign} } } } } */ + + /* Versioning to align the store is used. Overhead of versioning is not too high. */ + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_no_align || {! vector_alignment_reachable} } } } } */ +Index: gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr64909.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr64909.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr64909.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,15 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target vect_int } */ ++/* { dg-additional-options "-mtune=bdver1" } */ ++ ++unsigned short a[32]; ++unsigned int b[32]; ++void t() ++{ ++ int i; ++ for (i=0;i<12;i++) ++ b[i]=a[i]; ++} ++ ++/* { dg-final { scan-tree-dump "vectorized 1 loops in function" "vect" } } */ ++/* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c (.../branches/gcc-4_9-branch) +@@ -61,7 +61,7 @@ + } + + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { sparc*-*-* && ilp32 } }} } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 6 "vect" { target vect_no_align } } } */ +-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 6 "vect" {xfail { vect_no_align } } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 6 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */ ++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 6 "vect" {xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ + +Index: gcc/testsuite/gcc.dg/vect/vect-60.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-60.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-60.c (.../branches/gcc-4_9-branch) +@@ -68,7 +68,7 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */ + /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target { vect_element_align } } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { xfail { vect_element_align } } } } */ +Index: gcc/testsuite/gcc.dg/vect/pr65518.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/pr65518.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/pr65518.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,43 @@ ++/* { dg-do run } */ ++ ++extern void abort (void); ++ ++typedef struct giga ++{ ++ unsigned int g[16]; ++} giga; ++ ++unsigned long __attribute__((noinline,noclone)) ++addfst(giga const *gptr, int num) ++{ ++ unsigned int retval = 0; ++ int i; ++ for (i = 0; i < num; i++) ++ retval += gptr[i].g[0]; ++ return retval; ++} ++ ++int main () ++{ ++ struct giga g[8]; ++ unsigned int n = 1; ++ int i, j; ++ for (i = 0; i < 8; ++i) ++ for (j = 0; j < 16; ++j) ++ { ++ g[i].g[j] = n++; ++ __asm__ volatile (""); ++ } ++ if (addfst (g, 8) != 456) ++ abort (); ++ return 0; ++} ++ ++/* We don't want to vectorize the single-element interleaving in the way ++ we currently do that (without ignoring not needed vectors in the ++ gap between gptr[0].g[0] and gptr[1].g[0]), because that's very ++ sub-optimal and causes memory explosion (even though the cost model ++ should reject that in the end). */ ++ ++/* { dg-final { scan-tree-dump-times "vectorized 0 loops in function" 2 "vect" } } */ ++/* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-52.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-52.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-52.c (.../branches/gcc-4_9-branch) +@@ -56,7 +56,7 @@ + (The store is aligned). */ + + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 2 "vect" { target vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 2 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-pr61917.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-pr61917.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-pr61917.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,13 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-O3" } */ ++ ++int a, b, c, d; ++ ++int ++fn1 () ++{ ++ for (; c; c++) ++ for (b = 0; b < 2; b++) ++ d = a - d; ++ return d; ++} +Index: gcc/testsuite/gcc.dg/vect/bb-slp-32.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-32.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-32.c (.../branches/gcc-4_9-branch) +@@ -19,5 +19,5 @@ + return tem0 + tem1 + tem2 + tem3; + } + +-/* { dg-final { scan-tree-dump "vectorization is not profitable" "slp" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump "vectorization is not profitable" "slp" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "slp" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-44.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-44.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-44.c (.../branches/gcc-4_9-branch) +@@ -65,8 +65,8 @@ + two loads to be aligned). */ + + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align } } } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || {! vector_alignment_reachable} } } } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 3 "vect" { target vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align && { ! vect_hw_misalign } } || {! vector_alignment_reachable} } } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 3 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { {! vector_alignment_reachable} && {{! vect_no_align} && {! vect_hw_misalign} } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-27.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-27.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-27.c (.../branches/gcc-4_9-branch) +@@ -43,8 +43,8 @@ + } + + /* The initialization induction loop (with aligned access) is also vectorized. */ +-/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { xfail vect_no_align } } } */ +-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_no_align } } } */ +-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */ ++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/bb-slp-24.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-24.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-24.c (.../branches/gcc-4_9-branch) +@@ -54,6 +54,8 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_element_align } } } */ ++/* Exclude POWER8 (only POWER cpu for which vect_element_align is true) ++ because loops have vectorized before SLP gets a shot. */ ++/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target { vect_element_align && { ! powerpc*-*-* } } } } } */ + /* { dg-final { cleanup-tree-dump "slp" } } */ + +Index: gcc/testsuite/gcc.dg/vect/vect-outer-fir-lb.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-fir-lb.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-fir-lb.c (.../branches/gcc-4_9-branch) +@@ -74,5 +74,5 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 2 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 2 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-outer-fir-big-array.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-fir-big-array.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-fir-big-array.c (.../branches/gcc-4_9-branch) +@@ -70,5 +70,5 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 2 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 2 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/bb-slp-25.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-25.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-25.c (.../branches/gcc-4_9-branch) +@@ -54,6 +54,8 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_element_align } } } */ ++/* Exclude POWER8 (only POWER cpu for which vect_element_align is true) ++ because loops have vectorized before SLP gets a shot. */ ++/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target { vect_element_align && { ! powerpc*-*-* } } } } } */ + /* { dg-final { cleanup-tree-dump "slp" } } */ + +Index: gcc/testsuite/gcc.dg/vect/pr33804.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/pr33804.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/pr33804.c (.../branches/gcc-4_9-branch) +@@ -11,6 +11,6 @@ + } + } + +-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */ +-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ ++/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/pr64493.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/pr64493.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/pr64493.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,31 @@ ++/* { dg-do run } */ ++ ++#include "tree-vect.h" ++ ++int a, b, c, d, e, f, g, h; ++ ++int ++main () ++{ ++ check_vect (); ++ ++ for (; a; a--) ++ for (d = 1; d <= 0; d++) ++ for (; d;) ++ if (h) ++ { ++ if (!g) __builtin_abort (); ++ if (!0) __builtin_abort (); ++ } ++ ++ for (f = 4; f; f--) ++ { ++ for (b = 0; b < 2; b++) ++ c |= 1; ++ e |= c; ++ } ++ ++ return 0; ++} ++ ++/* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-nest-cycle-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-nest-cycle-1.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-nest-cycle-1.c (.../branches/gcc-4_9-branch) +@@ -43,6 +43,6 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ + +Index: gcc/testsuite/gcc.dg/vect/vect-77-alignchecks.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-77-alignchecks.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-77-alignchecks.c (.../branches/gcc-4_9-branch) +@@ -49,8 +49,8 @@ + both for the load and the store. */ + + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align } } } } */ ++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { {! vect_no_align} && { unaligned_stack && vector_alignment_reachable } } } } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { { {! unaligned_stack} && vect_no_align } || {unaligned_stack && { {! vector_alignment_reachable} && {! vect_no_align} } } } } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { { {! unaligned_stack} && { vect_no_align && { ! vect_hw_misalign } } } || {unaligned_stack && { {! vector_alignment_reachable} && {! vect_no_align } } } } } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 2 "vect" { target { { unaligned_stack && { vector_alignment_reachable && vect_no_align } } || {unaligned_stack && { {! vector_alignment_reachable} && vect_no_align } } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-outer-3a-big-array.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-3a-big-array.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-3a-big-array.c (.../branches/gcc-4_9-branch) +@@ -48,6 +48,6 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { scan-tree-dump-times "step doesn't divide the vector-size" 1 "vect" } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-1.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-1.c (.../branches/gcc-4_9-branch) +@@ -50,7 +50,7 @@ + return main1 (); + } + +-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" {xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" {xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { scan-tree-dump-times "dependence distance negative" 1 "vect" } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ + +Index: gcc/testsuite/gcc.dg/vect/vect-29.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-29.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-29.c (.../branches/gcc-4_9-branch) +@@ -50,7 +50,7 @@ + + /* The initialization induction loop (with aligned access) is also vectorized. */ + /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" {target vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" {target { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/pr58508.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/pr58508.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/pr58508.c (.../branches/gcc-4_9-branch) +@@ -67,5 +67,5 @@ + } + + /* { dg-final { scan-tree-dump-times "hoist" 8 "vect" { xfail *-*-* } } } */ +-/* { dg-final { scan-tree-dump-times "hoist" 3 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "hoist" 3 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c (.../branches/gcc-4_9-branch) +@@ -65,5 +65,5 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align || { ! vect_strided2 } } } } } */ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { { vect_no_align && { ! vect_hw_misalign } } || { ! vect_strided2 } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-72.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-72.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-72.c (.../branches/gcc-4_9-branch) +@@ -45,7 +45,7 @@ + return main1 (); + } + +-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */ +-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ ++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-nest-cycle-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-nest-cycle-2.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-nest-cycle-2.c (.../branches/gcc-4_9-branch) +@@ -42,6 +42,6 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ + +Index: gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-2.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-2.c (.../branches/gcc-4_9-branch) +@@ -50,6 +50,6 @@ + return main1 (); + } + +-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" {xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" {xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { scan-tree-dump-times "dependence distance negative" 1 "vect" } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/bb-slp-9.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-9.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-9.c (.../branches/gcc-4_9-branch) +@@ -46,6 +46,6 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "slp" } } */ + +Index: gcc/testsuite/gcc.dg/vect/vect-56.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-56.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-56.c (.../branches/gcc-4_9-branch) +@@ -67,7 +67,7 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */ + /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target { vect_element_align } } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { xfail { vect_element_align } } } } */ +Index: gcc/testsuite/gcc.dg/vect/pr64495.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/pr64495.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/pr64495.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,35 @@ ++/* { dg-do run } */ ++ ++#include ++#include "tree-vect.h" ++ ++int a, b, c, d, e, f, g, i, j; ++static int *h = &e; ++ ++int ++main () ++{ ++ check_vect (); ++ ++ for (; a;) ++ for (; g; g++) ++ for (; f; f++) ++ if (j) ++ { ++ assert(b); ++ assert(0); ++ } ++ for (i = 24; i; i--) ++ { ++ for (c = 0; c < 6; c++) ++ d |= 1; ++ *h |= d; ++ } ++ ++ if (e != 1) ++ __builtin_abort (); ++ ++ return 0; ++} ++ ++/* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/no-vfa-vect-43.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-43.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-43.c (.../branches/gcc-4_9-branch) +@@ -90,5 +90,5 @@ + } + + /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 2 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 6 "vect" { target vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 6 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-outer-fir-lb-big-array.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-fir-lb-big-array.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-fir-lb-big-array.c (.../branches/gcc-4_9-branch) +@@ -74,5 +74,5 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 2 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 2 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-3.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-3.c (.../branches/gcc-4_9-branch) +@@ -182,6 +182,6 @@ + return main1 (); + } + +-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 4 "vect" {xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 4 "vect" {xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { scan-tree-dump-times "dependence distance negative" 4 "vect" } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-48.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-48.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-48.c (.../branches/gcc-4_9-branch) +@@ -55,7 +55,7 @@ + (The store is aligned). */ + + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 2 "vect" { target vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 2 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/pr59354.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/pr59354.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/pr59354.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,41 @@ ++/* { dg-do run } */ ++/* { dg-additional-options "-O3" } */ ++ ++#include "tree-vect.h" ++ ++void abort (void); ++ ++unsigned int a[256]; ++unsigned char b[256]; ++ ++__attribute__ ((noinline)) void ++main1() ++{ ++ int i, z, x, y; ++ ++ for(i = 0; i < 256; i++) ++ { ++ a[i] = i % 5; ++ __asm__ volatile (""); ++ } ++ ++ for (z = 0; z < 16; z++) ++ for (y = 0; y < 4; y++) ++ for (x = 0; x < 4; x++) ++ b[y*64 + z*4 + x] = a[z*16 + y*4 + x]; ++ ++ if (b[4] != 1) ++ abort (); ++} ++ ++int main (void) ++{ ++ check_vect (); ++ ++ main1 (); ++ ++ return 0; ++} ++ ++/* { dg-final { scan-tree-dump "vectorized 1 loop" "vect" { target { vect_pack_trunc } } } } */ ++/* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-outer-fir.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-fir.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-fir.c (.../branches/gcc-4_9-branch) +@@ -70,5 +70,5 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 2 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 2 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-peel-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-peel-3.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-peel-3.c (.../branches/gcc-4_9-branch) +@@ -47,7 +47,7 @@ + return main1 (); + } + +-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */ +-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { { vect_no_align } || {vect_sizes_32B_16B } } } } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align } || {vect_sizes_32B_16B } } } } } */ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ ++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { { vect_no_align && { ! vect_hw_misalign } } || {vect_sizes_32B_16B } } } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align && { ! vect_hw_misalign } } || {vect_sizes_32B_16B } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/no-scevccp-outer-6.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-6.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-6.c (.../branches/gcc-4_9-branch) +@@ -51,6 +51,6 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { xfail { unaligned_stack || vect_no_align } } } } */ ++/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { xfail { unaligned_stack || { vect_no_align && { ! vect_hw_misalign } } } } } } */ + /* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 1 "vect" { xfail *-*-* } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/no-vfa-vect-61.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-61.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-61.c (.../branches/gcc-4_9-branch) +@@ -73,5 +73,5 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/pr64421.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/pr64421.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/pr64421.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,36 @@ ++/* PR middle-end/64421 */ ++/* { dg-require-effective-target vect_simd_clones } */ ++/* { dg-additional-options "-fopenmp-simd" } */ ++/* { dg-additional-options "-mavx" { target avx_runtime } } */ ++ ++#include "tree-vect.h" ++ ++#pragma omp declare simd linear (y) notinbranch ++int foo (int x, int y) __asm ("bar"); ++ ++#pragma omp declare simd linear (y) notinbranch ++int ++foo (int x, int y) ++{ ++ return x + y; ++} ++ ++int a[1024] = { 1, 2 }; ++ ++int ++main () ++{ ++ int i; ++ check_vect (); ++ #pragma omp simd ++ for (i = 0; i < 1024; i++) ++ a[i] = foo (a[i], i); ++ if (a[0] != 1 || a[1] != 3) ++ abort (); ++ for (i = 2; i < 1024; i++) ++ if (a[i] != i) ++ abort (); ++ return 0; ++} ++ ++/* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/bb-slp-29.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-29.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-29.c (.../branches/gcc-4_9-branch) +@@ -54,6 +54,8 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target { vect_int_mult && vect_element_align } } } } */ ++/* Exclude POWER8 (only POWER cpu for which vect_element_align is true) ++ because loops have vectorized before SLP gets a shot. */ ++/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target { { vect_int_mult && vect_element_align } && { ! powerpc*-*-* } } } } } */ + /* { dg-final { cleanup-tree-dump "slp" } } */ + +Index: gcc/testsuite/gcc.dg/vect/vect-peel-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-peel-4.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-peel-4.c (.../branches/gcc-4_9-branch) +@@ -44,7 +44,7 @@ + return main1 (); + } + +-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */ +-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ ++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-75.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-75.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-75.c (.../branches/gcc-4_9-branch) +@@ -44,6 +44,6 @@ + + + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target vect_no_align } } } */ +-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */ ++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/pr16105.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/pr16105.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/pr16105.c (.../branches/gcc-4_9-branch) +@@ -18,5 +18,5 @@ + } + + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" { target vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/pr61634.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/pr61634.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/pr61634.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,24 @@ ++/* { dg-do compile } */ ++ ++int a, b, c, d; ++short *e; ++void fn1 (int p1[], int p2, int p3[], int p4[], int p5[], int *p6) ++{ ++ int f; ++ c = *p1; ++ d = *p5; ++ (void)p6; ++ for (; a; a--) ++ { ++ f = *e >> 2; ++ *e++ = f; ++ b += f * f; ++ f = *e >> 2; ++ *e++ = f; ++ } ++ p4[0] = p3[0]; ++ for (;; p2--) ++ ; ++} ++ ++/* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-outer-3a.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-3a.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-3a.c (.../branches/gcc-4_9-branch) +@@ -48,6 +48,6 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { scan-tree-dump-times "step doesn't divide the vector-size" 1 "vect" } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/slp-25.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/slp-25.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/slp-25.c (.../branches/gcc-4_9-branch) +@@ -56,5 +56,5 @@ + + /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */ + /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail { vect_no_align || { ! vect_natural_alignment } } } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail { { vect_no_align && { ! vect_hw_misalign } } || { ! vect_natural_alignment } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-93.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-93.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-93.c (.../branches/gcc-4_9-branch) +@@ -76,10 +76,10 @@ + + /* in main1: */ + /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target !powerpc*-*-* !i?86-*-* !x86_64-*-* } } } */ +-/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */ + + /* in main: */ +-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target vect_no_align } } } */ +-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align } } } } */ ++/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */ ++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-105-big-array.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-105-big-array.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-105-big-array.c (.../branches/gcc-4_9-branch) +@@ -100,7 +100,7 @@ + } + + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" { target vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 0 "vect" } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ + +Index: gcc/testsuite/gcc.dg/vect/vect-77-global.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-77-global.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-77-global.c (.../branches/gcc-4_9-branch) +@@ -47,7 +47,7 @@ + /* Requires versioning for aliasing. */ + + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align } } } } */ ++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/pr63605.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/pr63605.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/pr63605.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,22 @@ ++/* { dg-do run } */ ++ ++#include "tree-vect.h" ++ ++extern void abort (void); ++ ++int a, b[8] = { 2, 0, 0, 0, 0, 0, 0, 0 }, c[8]; ++ ++int ++main () ++{ ++ int d; ++ check_vect (); ++ for (; a < 8; a++) ++ { ++ d = b[a] >> 1; ++ c[a] = d != 0; ++ } ++ if (c[0] != 1) ++ abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/vect/pr62021.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/pr62021.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/pr62021.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,30 @@ ++/* { dg-require-effective-target vect_simd_clones } */ ++/* { dg-additional-options "-fopenmp-simd" } */ ++/* { dg-additional-options "-mavx" { target avx_runtime } } */ ++ ++#pragma omp declare simd linear(y) ++__attribute__((noinline)) int * ++foo (int *x, int y) ++{ ++ return x + y; ++} ++ ++int a[1024]; ++int *b[1024] = { &a[0] }; ++ ++int ++main () ++{ ++ int i; ++ for (i = 0; i < 1024; i++) ++ b[i] = &a[1023 - i]; ++ #pragma omp simd ++ for (i = 0; i < 1024; i++) ++ b[i] = foo (b[i], i); ++ for (i = 0; i < 1024; i++) ++ if (b[i] != &a[1023]) ++ __builtin_abort (); ++ return 0; ++} ++ ++/* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-pre-interact.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-pre-interact.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-pre-interact.c (.../branches/gcc-4_9-branch) +@@ -12,5 +12,5 @@ + res[i] = data[i] + data[i + 1]; + } + +-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-95.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-95.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-95.c (.../branches/gcc-4_9-branch) +@@ -64,6 +64,6 @@ + + /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align} } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */ +-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" { target vect_no_align } } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 4 "vect" { target vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 4 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-78-alignchecks.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-78-alignchecks.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-78-alignchecks.c (.../branches/gcc-4_9-branch) +@@ -50,8 +50,8 @@ + both for the load and the store. */ + + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align } } } } */ ++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { {! vect_no_align} && { unaligned_stack && vector_alignment_reachable } } } } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { { {! unaligned_stack} && vect_no_align } || {unaligned_stack && { {! vector_alignment_reachable} && {! vect_no_align} } } } } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { { {! unaligned_stack} && { vect_no_align && { ! vect_hw_misalign } } } || {unaligned_stack && { {! vector_alignment_reachable} && { ! vect_no_align } } } } } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 2 "vect" { target { { unaligned_stack && { vector_alignment_reachable && vect_no_align } } || {unaligned_stack && { {! vector_alignment_reachable} && vect_no_align } } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-cselim-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-cselim-1.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-cselim-1.c (.../branches/gcc-4_9-branch) +@@ -82,5 +82,5 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align || { ! vect_strided2 } } } } } */ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { { vect_no_align && { ! vect_hw_misalign } } || { ! vect_strided2 } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/no-vfa-vect-57.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-57.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-57.c (.../branches/gcc-4_9-branch) +@@ -71,5 +71,5 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-cond-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-cond-1.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-cond-1.c (.../branches/gcc-4_9-branch) +@@ -51,7 +51,7 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ + + +Index: gcc/testsuite/gcc.dg/vect/vect-96.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-96.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-96.c (.../branches/gcc-4_9-branch) +@@ -46,5 +46,5 @@ + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ + /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target { {! vect_no_align} && vector_alignment_reachable } } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align } || { { ! vector_alignment_reachable} || vect_element_align } } } } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { vect_no_align || { {! vector_alignment_reachable} && {! vect_element_align} } } } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { { vect_no_align && { ! vect_hw_misalign } } || { {! vector_alignment_reachable} && {! vect_element_align} } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/pr20122.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/pr20122.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/pr20122.c (.../branches/gcc-4_9-branch) +@@ -52,5 +52,5 @@ + /* The loops in VecBug and VecBug2 require versioning for alignment. + The loop in main is aligned. */ + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" { target vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-multitypes-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-1.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-1.c (.../branches/gcc-4_9-branch) +@@ -80,8 +80,8 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail { vect_no_align } } } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail {{ vect_no_align } || {vect_sizes_32B_16B }}} } } */ +-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" { xfail {{ vect_no_align } || {vect_sizes_32B_16B }}} } } */ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail {{ vect_no_align && { ! vect_hw_misalign } } || {vect_sizes_32B_16B }}} } } */ ++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" { xfail {{ vect_no_align && { ! vect_hw_misalign } } || {vect_sizes_32B_16B }}} } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ + +Index: gcc/testsuite/gcc.dg/vect/pr33953.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/pr33953.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/pr33953.c (.../branches/gcc-4_9-branch) +@@ -28,8 +28,8 @@ + } + } + +-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" {xfail vect_no_align } } } */ +-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" {xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ ++/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ + + +Index: gcc/testsuite/gcc.dg/vect/pr66251.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/pr66251.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/pr66251.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,78 @@ ++/* { dg-require-effective-target vect_int } */ ++/* { dg-require-effective-target vect_double } */ ++/* { dg-require-effective-target vect_floatint_cvt } */ ++/* { dg-require-effective-target vect_intfloat_cvt } */ ++/* { dg-require-effective-target vect_pack_trunc } */ ++/* { dg-require-effective-target vect_unpack } */ ++/* { dg-require-effective-target vect_hw_misalign } */ ++ ++#include "tree-vect.h" ++ ++void __attribute__((noinline,noclone)) ++test1(_Complex double *a, _Complex int *b, int stride, int n) ++{ ++ int i; ++ for (i = 0; i < n; i++) ++ { ++ a[i*stride] = b[i*stride]; ++ } ++} ++ ++void __attribute__((noinline,noclone)) ++test2(_Complex int *a, _Complex double *b, int stride, int n) ++{ ++ int i; ++ for (i = 0; i < n; i++) ++ { ++ a[i*stride] = b[i*stride]; ++ } ++} ++ ++_Complex int ia[256]; ++_Complex double da[256]; ++ ++extern void abort (void); ++ ++int main () ++{ ++ int i; ++ int stride; ++ ++ check_vect (); ++ ++ for (stride = 1; stride < 15; stride++) ++ { ++ for (i = 0; i < 256; i++) ++ { ++ __real__ ia[i] = (i + stride) % 19; ++ __imag__ ia[i] = (i + stride) % 23; ++ __asm__ volatile (""); ++ } ++ ++ test1(da, ia, stride, 256/stride); ++ ++ for (i = 0; i < 256/stride; i++) ++ { ++ if (da[i*stride] != ia[i*stride]) ++ abort (); ++ } ++ ++ for (i = 0; i < 256; i++) ++ { ++ __real__ da[i] = (i + stride + 1) % 29; ++ __imag__ da[i] = (i + stride + 1) % 31; ++ __asm__ volatile (""); ++ } ++ ++ test2(ia, da, stride, 256/stride); ++ ++ for (i = 0; i < 256/stride; i++) ++ { ++ if (da[i*stride] != ia[i*stride]) ++ abort (); ++ } ++ } ++ return 0; ++} ++ ++/* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-cond-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-cond-3.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-cond-3.c (.../branches/gcc-4_9-branch) +@@ -59,7 +59,7 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ + + +Index: gcc/testsuite/gcc.dg/vect/vect-78-global.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-78-global.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-78-global.c (.../branches/gcc-4_9-branch) +@@ -47,7 +47,7 @@ + (The store is aligned). */ + + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align } } } } */ ++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c (.../branches/gcc-4_9-branch) +@@ -54,7 +54,7 @@ + } + + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ +-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 3 "vect" { target vect_no_align } } } */ +-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 3 "vect" {xfail { vect_no_align } } } } */ ++/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 3 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */ ++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 3 "vect" {xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ + +Index: gcc/testsuite/gcc.dg/vect/pr56787.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/pr56787.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/pr56787.c (.../branches/gcc-4_9-branch) +@@ -31,5 +31,5 @@ + } + } + +-/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/vect-cond-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-cond-4.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-cond-4.c (.../branches/gcc-4_9-branch) +@@ -56,7 +56,7 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail vect_no_align } } } */ ++/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ + + +Index: gcc/testsuite/gcc.dg/vect/vect-multitypes-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-4.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-4.c (.../branches/gcc-4_9-branch) +@@ -91,7 +91,7 @@ + return 0; + } + +-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail { vect_no_align } } } } */ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { target { vect_element_align} } } } */ + /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */ + /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 8 "vect" { xfail { vect_no_align || vect_element_align } } } } */ +Index: gcc/testsuite/gcc.dg/20141029-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/20141029-1.c (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gcc.dg/20141029-1.c (.../branches/gcc-4_9-branch) +@@ -0,0 +1,28 @@ ++/* { dg-do compile } */ ++/* { dg-options "-fstrict-volatile-bitfields -fdump-rtl-final" } */ ++ ++#define PERIPH (*(volatile struct system_periph *)0x81234) ++ ++struct system_periph { ++ union { ++ unsigned short WORD; ++ struct { ++ unsigned short a:1; ++ unsigned short b:1; ++ unsigned short :5; ++ unsigned short c:1; ++ unsigned short :8; ++ } BIT; ++ } ALL; ++}; ++ ++void ++foo() ++{ ++ while (1) ++ { ++ PERIPH.ALL.BIT.a = 1; ++ } ++} ++/* { dg-final { scan-rtl-dump-times "mem/v(/.)*:HI" 4 "final" } } */ ++/* { dg-final { cleanup-rtl-dump "final" } } */ +Index: gcc/testsuite/ChangeLog +=================================================================== +--- a/src/gcc/testsuite/ChangeLog (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/ChangeLog (.../branches/gcc-4_9-branch) +@@ -1,3 +1,1421 @@ ++2015-06-19 Christophe Lyon ++ ++ Backport from mainline r224649. ++ 2015-06-19 Christophe Lyon ++ ++ * gcc.target/aarch64/pr62308.c: New test. ++ ++2015-06-18 Richard Biener ++ ++ * g++.dg/other/const4.C: New testcase. ++ ++2015-06-18 Jakub Jelinek ++ ++ PR tree-optimization/66233 ++ * gcc.c-torture/execute/pr66233.c: New test. ++ ++2015-06-16 Ramana Radhakrishnan ++ ++ PR target/66200 ++ * g++.dg/abi/aarch64_guard1.C: Adjust. ++ ++2015-06-12 Jakub Jelinek ++ ++ PR middle-end/63608 ++ * gcc.c-torture/compile/pr63608.c: New test. ++ ++2015-06-10 Jakub Jelinek ++ ++ PR target/66470 ++ * gcc.dg/tls/pr66470.c: New test. ++ * gcc.target/i386/pr66470.c: New test. ++ ++2015-06-08 Uros Bizjak ++ ++ Backport from mainline: ++ 2015-06-03 Uros Bizjak ++ ++ PR target/66275 ++ * gcc.target/i386/pr66275.c: New test. ++ ++2015-06-04 Richard Biener ++ ++ PR middle-end/66251 ++ * gcc.dg/vect/pr66251.c: Fix expected vectorization. ++ ++2015-06-03 Jakub Jelinek ++ ++ Backported from mainline ++ 2015-05-04 Jakub Jelinek ++ ++ PR tree-optimization/65984 ++ * c-c++-common/ubsan/pr65984.c: New test. ++ ++ 2015-04-07 Jakub Jelinek ++ ++ PR middle-end/65680 ++ * gcc.c-torture/compile/pr65680.c: New test. ++ ++ 2015-03-23 Jakub Jelinek ++ ++ PR target/65504 ++ * gfortran.dg/pr65504.f90: New test. ++ ++ 2015-03-18 Jakub Jelinek ++ ++ PR tree-optimization/65450 ++ * gfortran.dg/pr65450.f90: New test. ++ ++ 2015-03-16 Jakub Jelinek ++ ++ PR tree-optimization/65427 ++ * gcc.c-torture/execute/pr65427.c: New test. ++ ++ 2015-03-10 Jakub Jelinek ++ ++ PR target/65368 ++ * gcc.target/i386/bmi2-bzhi-2.c: New test. ++ ++ 2015-02-18 Jakub Jelinek ++ ++ PR gcov-profile/64634 ++ * g++.dg/gcov/gcov-15.C: New test. ++ ++2015-06-03 Richard Biener ++ ++ Backport from mainline ++ 2015-05-26 Michael Matz ++ ++ PR middle-end/66251 ++ * gcc.dg/vect/pr66251.c: New test. ++ ++ 2015-05-22 Richard Biener ++ ++ PR tree-optimization/66251 ++ * gfortran.fortran-torture/compile/pr66251.f90: New testcase. ++ ++ 2015-05-27 Richard Biener ++ ++ PR tree-optimization/66272 ++ * gcc.dg/torture/pr66272.c: New testcase. ++ ++ 2015-05-13 Richard Biener ++ ++ PR tree-optimization/66123 ++ * gcc.dg/torture/pr66123.c: New testcase. ++ ++ 2015-06-02 Richard Biener ++ ++ PR debug/65549 ++ * g++.dg/lto/pr65549_0.C: New testcase. ++ ++ 2015-03-23 Richard Biener ++ ++ PR tree-optimization/65518 ++ * gcc.dg/vect/pr65518.c: New testcase. ++ ++2015-06-01 Jakub Jelinek ++ ++ * gcc.target/s390/hotpatch-compile-15.c: Remove dg-prune-output ++ directives. ++ (hp3, hp4): Add inline keyword. ++ * gcc.target/s390/hotpatch-19.c: Remove dg-prune-output directive. ++ (hp2): Add inline keyword. ++ * gcc.target/s390/hotpatch-19.c: Remove dg-prune-output directives. ++ (hp2): Add inline keyword. ++ ++2015-06-01 Dominik Vogt ++ ++ Backport from mainline ++ 2015-05-29 Dominik Vogt ++ ++ PR target/66215 ++ * gcc.target/s390/hotpatch-1.c: Remove optimization options from ++ dg-options. ++ * gcc.target/s390/hotpatch-10.c: Likewise. ++ * gcc.target/s390/hotpatch-11.c: Likewise. ++ * gcc.target/s390/hotpatch-12.c: Likewise. ++ * gcc.target/s390/hotpatch-17.c: Likewise. ++ * gcc.target/s390/hotpatch-18.c: Likewise. ++ * gcc.target/s390/hotpatch-20.c: Likewise. ++ * gcc.target/s390/hotpatch-21.c: Likewise. ++ * gcc.target/s390/hotpatch-22.c: Likewise. ++ * gcc.target/s390/hotpatch-23.c: Likewise. ++ * gcc.target/s390/hotpatch-24.c: Likewise. ++ * gcc.target/s390/hotpatch-2.c: Likewise. Adjust scan-assembler ++ to check for the exact nops too. ++ * gcc.target/s390/hotpatch-3.c: Likewise. ++ * gcc.target/s390/hotpatch-4.c: Likewise. ++ * gcc.target/s390/hotpatch-5.c: Likewise. ++ * gcc.target/s390/hotpatch-6.c: Likewise. ++ * gcc.target/s390/hotpatch-7.c: Likewise. ++ * gcc.target/s390/hotpatch-8.c: Likewise. ++ * gcc.target/s390/hotpatch-9.c: Likewise. ++ * gcc.target/s390/hotpatch-14.c: Likewise. ++ * gcc.target/s390/hotpatch-15.c: Likewise. ++ * gcc.target/s390/hotpatch-16.c: Likewise. ++ * gcc.target/s390/hotpatch-19.c: Likewise. ++ * gcc.target/s390/hotpatch-25.c: Likewise. Remove ++ scan-assembler-times counting number of .align directives. ++ * gcc.target/s390/hotpatch-13.c: Remove optimization options from ++ dg-options. Remove scan-assembler-times counting number of .align ++ directives. ++ * gcc.target/s390/hotpatch-26.c: New file. ++ * gcc.target/s390/hotpatch-27.c: New file. ++ * gcc.target/s390/hotpatch-28.c: New file. ++ * gcc.target/s390/s390.exp: Run hotpatch-*.c tests as torture tests ++ using -Os -O0 -O1 -O2 -O3 options. ++ ++2015-05-29 Bill Schmidt ++ ++ Backported from mainline ++ 2015-03-23 Martin Sebor ++ ++ PR testsuite/63175 ++ * gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c: Scan ++ assembly for lvx in addition to lxv. ++ ++2015-05-26 Rohit Arul Raj ++ ++ Backported from mainline ++ 2015-05-14 Rohit Arul Raj ++ ++ * gcc.target/powerpc/pr60158.c: New test. ++ ++2015-05-16 Uros Bizjak ++ ++ PR target/66140 ++ * gcc.target/alpha/pr66140.c: New test. ++ ++2015-05-06 Uros Bizjak ++ ++ PR target/65990 ++ * gcc.target/i386/pr65990.c: New test. ++ ++2015-05-06 Uros Bizjak ++ ++ * g++.dg/cpp1y/auto-fn26.C (dg-do): Use c++1y target. ++ ++2015-05-05 Shanyao chen ++ ++ Backported from mainline ++ 2015-01-19 Jiong Wang ++ ++ * gcc.target/aarch64/pr64304.c: New testcase. ++ ++2015-05-05 Peter Bergner ++ ++ Backport from mainline. ++ 2015-04-27 Peter Bergner ++ ++ PR target/64579 ++ * gcc.target/powerpc/htm-1.c: New test. ++ * gcc.target/powerpc/htm-builtin-1.c (__builtin_tabortdc): Only test ++ on 64-bit compiles. ++ (__builtin_tabortdci): Likewise. ++ (__builtin_tcheck): Remove operand. ++ * lib/target-supports.exp (check_htm_hw_available): New function. ++ ++2015-04-30 Bill Schmidt ++ ++ Backport from mainline r222664 ++ 2015-04-30 Bill Schmidt ++ ++ * gcc.target/powerpc/crypto-builtin-2.c: Replace powerpc_vsx_ok ++ with powerpc_p8vector_ok. ++ ++2015-04-30 Marek Polacek ++ ++ PR tree-optimization/63551 ++ * g++.dg/ipa/pr63551.C: New test. ++ ++2015-04-29 Thomas Schwinge ++ ++ Backport from trunk r222564: ++ ++ 2015-04-29 Thomas Schwinge ++ ++ * g++.dg/gomp/tpl-target-update.C: New file. ++ ++2015-04-28 Tejas Belagod ++ ++ Backport from mainline ++ 2014-11-20 Tejas Belagod ++ ++ * gcc.target/aarch64/symbol-range.c: New. ++ * gcc.target/aarch64/symbol-range-tiny.c: New. ++ ++2015-04-24 Bill Schmidt ++ ++ Backport from mainline r222362 ++ 2015-04-23 Bill Schmidt ++ ++ * gcc.target/powerpc/crypto-builtin-2.c: New. ++ ++2015-04-24 Bill Schmidt ++ ++ Backport from mainline r222351 ++ 2015-04-22 Bill Schmidt ++ ++ * gcc.target/powerpc/swaps-p8-18.c: New test. ++ ++2015-04-24 Bill Schmidt ++ ++ Backport from mainline r222349 ++ 2015-04-22 Bill Schmidt ++ ++ PR target/65456 ++ * gcc.dg/vect/bb-slp-24.c: Exclude test for POWER8. ++ * gcc.dg/vect/bb-slp-25.c: Likewise. ++ * gcc.dg/vect/bb-slp-29.c: Likewise. ++ * gcc.dg/vect/bb-slp-32.c: Replace vect_no_align with ++ vect_no_align && { ! vect_hw_misalign }. ++ * gcc.dg/vect/bb-slp-9.c: Likewise. ++ * gcc.dg/vect/costmodel/ppc/costmodel-slp-33.c: Exclude test for ++ vect_hw_misalign. ++ * gcc.dg/vect/costmodel/ppc/costmodel-vect-31a.c: Likewise. ++ * gcc.dg/vect/costmodel/ppc/costmodel-vect-76b.c: Adjust tests to ++ account for POWER8, where peeling for alignment is not needed. ++ * gcc.dg/vect/costmodel/ppc/costmodel-vect-outer-fir.c: Replace ++ vect_no_align with vect_no_align && { ! vect_hw_misalign }. ++ * gcc.dg.vect.if-cvt-stores-vect-ifcvt-18.c: Likewise. ++ * gcc.dg/vect/no-scevccp-outer-6-global.c: Likewise. ++ * gcc.dg/vect/no-scevccp-outer-6.c: Likewise. ++ * gcc.dg/vect/no-vfa-vect-43.c: Likewise. ++ * gcc.dg/vect/no-vfa-vect-57.c: Likewise. ++ * gcc.dg/vect/no-vfa-vect-61.c: Likewise. ++ * gcc.dg/vect/no-vfa-vect-depend-1.c: Likewise. ++ * gcc.dg/vect/no-vfa-vect-depend-2.c: Likewise. ++ * gcc.dg/vect/no-vfa-vect-depend-3.c: Likewise. ++ * gcc.dg/vect/pr16105.c: Likewise. ++ * gcc.dg/vect/pr20122.c: Likewise. ++ * gcc.dg/vect/pr33804.c: Likewise. ++ * gcc.dg/vect/pr33953.c: Likewise. ++ * gcc.dg/vect/pr56787.c: Likewise. ++ * gcc.dg/vect/pr58508.c: Likewise. ++ * gcc.dg/vect/slp-25.c: Likewise. ++ * gcc.dg/vect/vect-105-bit-array.c: Likewise. ++ * gcc.dg/vect/vect-105.c: Likewise. ++ * gcc.dg/vect/vect-27.c: Likewise. ++ * gcc.dg/vect/vect-29.c: Likewise. ++ * gcc.dg/vect/vect-33.c: Exclude unaligned access test for ++ POWER8. ++ * gcc.dg/vect/vect-42.c: Replace vect_no_align with vect_no_align ++ && { ! vect_hw_misalign }. ++ * gcc.dg/vect/vect-44.c: Likewise. ++ * gcc.dg/vect/vect-48.c: Likewise. ++ * gcc.dg/vect/vect-50.c: Likewise. ++ * gcc.dg/vect/vect-52.c: Likewise. ++ * gcc.dg/vect/vect-56.c: Likewise. ++ * gcc.dg/vect/vect-60.c: Likewise. ++ * gcc.dg/vect/vect-72.c: Likewise. ++ * gcc.dg/vect/vect-75-big-array.c: Likewise. ++ * gcc.dg/vect/vect-75.c: Likewise. ++ * gcc.dg/vect/vect-77-alignchecks.c: Likewise. ++ * gcc.dg/vect/vect-77-global.c: Likewise. ++ * gcc.dg/vect/vect-78-alignchecks.c: Likewise. ++ * gcc.dg/vect/vect-78-global.c: Likewise. ++ * gcc.dg/vect/vect-93.c: Likewise. ++ * gcc.dg/vect/vect-95.c: Likewise. ++ * gcc.dg/vect/vect-96.c: Likewise. ++ * gcc.dg/vect/vect-cond-1.c: Likewise. ++ * gcc.dg/vect/vect-cond-3.c: Likewise. ++ * gcc.dg/vect/vect-cond-4.c: Likewise. ++ * gcc.dg/vect/vect-cselim-1.c: Likewise. ++ * gcc.dg/vect/vect-multitypes-1.c: Likewise. ++ * gcc.dg/vect/vect-multitypes-3.c: Likewise. ++ * gcc.dg/vect/vect-multitypes-4.c: Likewise. ++ * gcc.dg/vect/vect-multitypes-6.c: Likewise. ++ * gcc.dg/vect/vect-nest-cycle-1.c: Likewise. ++ * gcc.dg/vect/vect-nest-cycle-2.c: Likewise. ++ * gcc.dg/vect/vect-outer-3a-big-array.c: Likewise. ++ * gcc.dg/vect/vect-outer-3a.c: Likewise. ++ * gcc.dg/vect/vect-outer-5.c: Likewise. ++ * gcc.dg/vect/vect-outer-fir-big-array.c: Likewise. ++ * gcc.dg/vect/vect-outer-fir-lb-big-array.c: Likewise. ++ * gcc.dg/vect/vect-outer-fir-lb.c: Likewise. ++ * gcc.dg/vect/vect-outer-fir.c: Likewise. ++ * gcc.dg/vect/vect-peel-3.c: Likewise. ++ * gcc.dg/vect/vect-peel-4.c: Likewise. ++ * gcc.dg/vect/vect-pre-interact.c: Likewise. ++ * gcc.target/powerpc/pr65456.c: New test. ++ * gcc.target/powerpc/vsx-vectorize-2.c: Exclude test for POWER8. ++ * gcc.target/powerpc/vsx-vectorize-4.c: Likewise. ++ * gcc.target/powerpc/vsx-vectorize-6.c: Likewise. ++ * gcc.target/powerpc/vsx-vectorize-7.c: Likewise. ++ * gfortran.dg/vect/vect-2.f90: Replace vect_no_align with ++ vect_no_align && { ! vect_hw_misalign }. ++ * gfortran.dg/vect/vect-3.f90: Likewise. ++ * gfortran.dg/vect/vect-4.f90: Likewise. ++ * gfortran.dg/vect/vect-5.f90: Likewise. ++ * lib/target-supports.exp (check_effective_target_vect_no_align): ++ Return 1 for POWER8. ++ (check_effective_target_vect_hw_misalign): Return 1 for POWER8. ++ ++ Backport from mainline r222372 ++ 2015-04-23 Bill Schmidt ++ ++ * gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c: Replace ++ vect_no_align with vect_no_align && { ! vect_hw_misalign }. ++ ++2015-04-18 Bill Schmidt ++ ++ Backport from mainline r222205 ++ 2015-04-17 Bill Schmidt ++ ++ PR target/65787 ++ * gcc.target/powerpc/pr65787.c: New. ++ ++2015-04-16 Kirill Yukhin ++ ++ PR target/65676 ++ * gcc.target/i386/sse-25.c: New. ++ ++2015-04-14 Mikael Morin ++ ++ PR fortran/56674 ++ PR fortran/58813 ++ PR fortran/59016 ++ PR fortran/59024 ++ * gfortran.dg/used_types_27.f90: New. ++ ++2015-04-07 Bin Cheng ++ ++ Backport from trunk r221889 ++ 2015-04-07 Bin Cheng ++ * gcc.target/arm/pr65647.c: Add option "-mfloat-abi=soft". ++ ++2015-04-05 Yvan Roux ++ ++ Backport from trunk r221867 ++ 2015-04-04 Vladimir Makarov ++ ++ PR target/65647 ++ * gcc.target/arm/pr65647.c: New. ++ * gcc.target/arm/pr65647-2.c: New. ++ ++2015-03-31 Dominik Vogt ++ ++ * gcc.target/s390/hotpatch-25.c: New test. ++ * gcc.target/s390/hotpatch-1.c: Update test. ++ * gcc.target/s390/hotpatch-10.c: Update test. ++ * gcc.target/s390/hotpatch-11.c: Update test. ++ * gcc.target/s390/hotpatch-12.c: Update test. ++ * gcc.target/s390/hotpatch-13.c: Update test. ++ * gcc.target/s390/hotpatch-14.c: Update test. ++ * gcc.target/s390/hotpatch-15.c: Update test. ++ * gcc.target/s390/hotpatch-16.c: Update test. ++ * gcc.target/s390/hotpatch-17.c: Update test. ++ * gcc.target/s390/hotpatch-18.c: Update test. ++ * gcc.target/s390/hotpatch-19.c: Update test. ++ * gcc.target/s390/hotpatch-2.c: Update test. ++ * gcc.target/s390/hotpatch-21.c: Update test. ++ * gcc.target/s390/hotpatch-22.c: Update test. ++ * gcc.target/s390/hotpatch-23.c: Update test. ++ * gcc.target/s390/hotpatch-24.c: Update test. ++ * gcc.target/s390/hotpatch-3.c: Update test. ++ * gcc.target/s390/hotpatch-4.c: Update test. ++ * gcc.target/s390/hotpatch-5.c: Update test. ++ * gcc.target/s390/hotpatch-6.c: Update test. ++ * gcc.target/s390/hotpatch-7.c: Update test. ++ * gcc.target/s390/hotpatch-8.c: Update test. ++ * gcc.target/s390/hotpatch-9.c: Update test. ++ * gcc.target/s390/hotpatch-compile-16.c: Update test. ++ ++2015-03-28 Jerry DeLisle ++ ++ PR libgfortran/65596 ++ * gfortran.dg/namelist_86.f90: New test. ++ ++2015-03-27 Vladimir Makarov ++ ++ Backport from mainline ++ 2015-01-30 Vladimir Makarov ++ ++ PR target/64688 ++ * g++.dg/pr64688-2.C: New. ++ ++2015-03-26 Bill Schmidt ++ ++ Backport r214254 and related tests from mainline ++ * gcc.target/powerpc/swaps-p8-1.c: New test. ++ * gcc.target/powerpc/swaps-p8-2.c: New test. ++ * gcc.target/powerpc/swaps-p8-3.c: New test. ++ * gcc.target/powerpc/swaps-p8-4.c: New test. ++ * gcc.target/powerpc/swaps-p8-5.c: New test. ++ * gcc.target/powerpc/swaps-p8-6.c: New test. ++ * gcc.target/powerpc/swaps-p8-7.c: New test. ++ * gcc.target/powerpc/swaps-p8-8.c: New test. ++ * gcc.target/powerpc/swaps-p8-9.c: New test. ++ * gcc.target/powerpc/swaps-p8-10.c: New test. ++ * gcc.target/powerpc/swaps-p8-11.c: New test. ++ * gcc.target/powerpc/swaps-p8-12.c: New test. ++ * gcc.target/powerpc/swaps-p8-13.c: New test. ++ * gcc.target/powerpc/swaps-p8-14.c: New test. ++ * gcc.target/powerpc/swaps-p8-15.c: New test. ++ * gcc.target/powerpc/swaps-p8-16.c: New test. ++ * gcc.target/powerpc/swaps-p8-17.c: New test. ++ ++2015-03-26 Alan Modra ++ ++ * gcc.target/powerpc/pr53199.c: Add extra functions. Revert ++ 2014-12-05 change. ++ ++2015-03-24 Maxim Kuvyrkov ++ ++ Backport from mainline: ++ ++ 2015-02-19 Maxim Kuvyrkov ++ PR testsuite/65116 ++ * lib/target-supports.exp (check_compile): Check whether ++ additional_sources is defined before using it. ++ ++ 2015-02-19 Maxim Kuvyrkov ++ * lib/target-supports.exp (check_compile): Save/restore ++ additional_sources that may belong to an actual test. ++ ++2015-03-24 Uros Bizjak ++ ++ PR rtl-optimization/60851 ++ * gcc.target/i386/pr60851.c: New test. ++ ++2015-03-23 Andre Vehreschild ++ ++ Backport from mainline ++ PR fortran/60255 ++ * gfortran.dg/unlimited_polymorphic_2.f03: Removed error. ++ Converted from dos to unix line endings. ++ * gfortran.dg/unlimited_polymorphic_20.f03: New test. ++ ++2015-03-23 Yvan Roux ++ ++ Backport from trunk r216841. ++ 2014-10-29 Martin Liska ++ ++ PR ipa/63587 ++ * g++.dg/ipa/pr63587-1.C: New test. ++ * g++.dg/ipa/pr63587-2.C: New test. ++ ++2015-03-21 Mikael Morin ++ ++ PR fortran/61138 ++ * gfortran.dg/pointer_remapping_9.f90: New. ++ ++2015-03-19 Paul Thomas ++ ++ Backport from mainline ++ PR fortran/59198 ++ * gfortran.dg/proc_ptr_comp_44.f90 : New test ++ * gfortran.dg/proc_ptr_comp_45.f90 : New test ++ ++2015-03-19 Kyrylo Tkachov ++ ++ Backport from mainline ++ 2015-03-12 Kyrylo Tkachov ++ ++ PR rtl-optimization/65235 ++ * gcc.target/aarch64/pr65235_1.c: New test. ++ ++2015-03-16 Eric Botcazou ++ ++ * testsuite/g++.dg/pr65049.C: New test. ++ ++2015-03-16 Eric Botcazou ++ ++ * gnat.dg/loop_optimization18.ad[sb]: New test. ++ * gnat.dg/loop_optimization18_pkg.ads: New helper. ++ ++2015-03-12 Mikael Morin ++ ++ PR fortran/60898 ++ * gfortran.dg/entry_20.f90: New. ++ ++2015-03-12 Dominik Vogt ++ ++ Backport from mainline ++ * gcc.target/s390/hotpatch-21.c: New test for hotpatch alignment. ++ * gcc.target/s390/hotpatch-22.c: Likewise. ++ * gcc.target/s390/hotpatch-23.c: Likewise. ++ * gcc.target/s390/hotpatch-24.c: Likewise. ++ * gcc.target/s390/hotpatch-2.c: Also check hotpatch alignment. ++ * gcc.target/s390/hotpatch-1.c: Update expected output. ++ * gcc.target/s390/hotpatch-2.c: Likewise. ++ * gcc.target/s390/hotpatch-3.c: Likewise. ++ * gcc.target/s390/hotpatch-4.c: Likewise. ++ * gcc.target/s390/hotpatch-5.c: Likewise. ++ * gcc.target/s390/hotpatch-6.c: Likewise. ++ * gcc.target/s390/hotpatch-7.c: Likewise. ++ * gcc.target/s390/hotpatch-8.c: Likewise. ++ * gcc.target/s390/hotpatch-9.c: Likewise. ++ * gcc.target/s390/hotpatch-10.c: Likewise. ++ * gcc.target/s390/hotpatch-11.c: Likewise. ++ * gcc.target/s390/hotpatch-12.c: Likewise. ++ * gcc.target/s390/hotpatch-13.c: Likewise. ++ * gcc.target/s390/hotpatch-14.c: Likewise. ++ * gcc.target/s390/hotpatch-15.c: Likewise. ++ * gcc.target/s390/hotpatch-16.c: Likewise. ++ * gcc.target/s390/hotpatch-17.c: Likewise. ++ * gcc.target/s390/hotpatch-18.c: Likewise. ++ * gcc.target/s390/hotpatch-19.c: Likewise. ++ ++2015-03-12 Andreas Krebbel ++ ++ Backport from mainline ++ 2015-02-27 Andreas Krebbel ++ ++ * gcc.target/s390/20140327-1.c: Remove -m31 and guard with ! lp64. ++ * gcc.target/s390/hotpatch-8.c: Likewise. ++ * gcc.target/s390/hotpatch-9.c: Likewise. ++ * gcc.target/s390/pr57960.c: Remove -m64. ++ * gcc.target/s390/pr57559.c: Likewise. ++ ++2015-03-11 Marek Polacek ++ ++ Backported from mainline ++ 2014-12-04 Marek Polacek ++ ++ PR middle-end/56917 ++ * c-c++-common/ubsan/pr56917.c: New test. ++ ++2015-03-10 Paul Thomas ++ ++ Backported from mainline ++ PR fortran/65024 ++ * gfortran.dg/unlimited_polymorphic_23.f90: New test ++ ++2015-03-10 Martin Sebor ++ ++ PR testsuite/63175 ++ * gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c (main1): Move ++ checking of results into main to prevent it from getting optimized ++ away. ++ * gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c: New test. ++ ++2015-03-10 Yvan Roux ++ ++ Backport from trunk r220489. ++ 2015-02-06 Jakub Jelinek ++ ++ PR ipa/64896 ++ * g++.dg/ipa/pr64896.C: New test ++ ++2015-03-10 Oleg Endo ++ ++ PR target/53988 ++ * gcc.target/sh/pr53988.c: Mark tests as xfail. ++ ++2015-03-06 Eric Botcazou ++ ++ * g++.dg/other/dump-ada-spec-3.C: Remove include and adjust. ++ ++2015-03-05 Eric Botcazou ++ ++ * g++.dg/other/dump-ada-spec-3.C: New test. ++ ++2015-03-04 Thomas Preud'homme ++ ++ Backport from mainline ++ 2014-11-27 Thomas Preud'homme ++ ++ PR target/59593 ++ * gcc.target/arm/constant-pool.c: New test. ++ ++2015-03-03 Georg-Johann Lay ++ ++ PR target/64331 ++ * gcc.target/avr/torture/pr64331.c: New test. ++ ++2015-03-03 Thomas Preud'homme ++ ++ Backport from mainline ++ 2015-01-14 Thomas Preud'homme ++ ++ PR target/64453 ++ * gcc.target/arm/pr64453.c: New. ++ ++2015-02-27 Pat Haugen ++ ++ * gcc.dg/vect/pr59354.c: Move vector producing code to ++ separate function. ++ ++2015-02-27 Marek Polacek ++ ++ Backported from mainline ++ 2015-02-27 Marek Polacek ++ ++ PR c/65228 ++ * gcc.dg/pr65228.c: New test. ++ ++2015-02-27 Richard Biener ++ ++ PR lto/65193 ++ * g++.dg/lto/pr65193_0.C: New testcase. ++ ++2015-02-26 Peter Bergner ++ ++ Backport from mainline ++ 2015-02-25 Peter Bergner ++ ++ * gcc.target/powerpc/htm-builtin-1.c (dg-do) Change to assemble. ++ (dg-options): Add -save-temps. ++ (dg-final): Add cleanup-saved-temps. ++ ++ 2015-02-25 Adhemerval Zanella ++ ++ * gcc.target/powerpc/htm-builtin-1.c: Fix tcheck expect value. ++ ++2015-02-25 Kai Tietz ++ ++ Backported from mainline ++ PR tree-optimization/61917 ++ * gcc.dg/vect/vect-pr61917.c: New file. ++ ++2015-02-23 Oleg Endo ++ ++ Backport from mainline ++ 2015-02-23 Oleg Endo ++ ++ PR target/65163 ++ * gcc.c-torture/compile/pr65163.c: New. ++ ++2015-02-23 Richard Biener ++ ++ Backport from mainline ++ 2014-11-27 Richard Biener ++ ++ PR tree-optimization/61634 ++ * gcc.dg/vect/pr61634.c: New testcase. ++ ++ 2015-01-14 Richard Biener ++ ++ PR tree-optimization/59354 ++ * gcc.dg/vect/pr59354.c: New testcase. ++ ++ 2015-02-10 Richard Biener ++ ++ PR tree-optimization/64909 ++ * gcc.dg/vect/costmodel/x86_64/costmodel-pr64909.c: New testcase. ++ ++2015-02-23 Andreas Krebbel ++ ++ Backport from mainline ++ 2015-02-23 Andreas Krebbel ++ * gcc.target/s390/hotpatch-1.c: Remove --save-temps option. ++ * gcc.target/s390/hotpatch-10.c: Remove --save-temps option. ++ * gcc.target/s390/hotpatch-11.c: Remove --save-temps option. ++ * gcc.target/s390/hotpatch-12.c: Remove --save-temps option. ++ * gcc.target/s390/hotpatch-13.c: Remove --save-temps option. ++ * gcc.target/s390/hotpatch-14.c: Remove --save-temps option. ++ * gcc.target/s390/hotpatch-15.c: Remove --save-temps option. ++ * gcc.target/s390/hotpatch-16.c: Remove --save-temps option. ++ * gcc.target/s390/hotpatch-17.c: Remove --save-temps option. ++ * gcc.target/s390/hotpatch-18.c: Remove --save-temps option. ++ * gcc.target/s390/hotpatch-19.c: Remove --save-temps option. ++ * gcc.target/s390/hotpatch-2.c: Remove --save-temps option. ++ * gcc.target/s390/hotpatch-20.c: Remove --save-temps option. ++ * gcc.target/s390/hotpatch-3.c: Remove --save-temps option. ++ * gcc.target/s390/hotpatch-4.c: Remove --save-temps option. ++ * gcc.target/s390/hotpatch-5.c: Remove --save-temps option. ++ * gcc.target/s390/hotpatch-6.c: Remove --save-temps option. ++ * gcc.target/s390/hotpatch-7.c: Remove --save-temps option. ++ * gcc.target/s390/hotpatch-8.c: Remove --save-temps option. ++ * gcc.target/s390/hotpatch-9.c: Remove --save-temps option. ++ * gcc.target/s390/htm-nofloat-1.c: Cleanup --save-temps files. ++ ++2015-02-23 Andreas Krebbel ++ ++ Backport from mainline ++ 2015-02-23 Andreas Krebbel ++ * gcc.target/s390/hotpatch-8.c: Add -march=g5. ++ * gcc.target/s390/hotpatch-9.c: Add -march=g5. ++ * gcc.target/s390/hotpatch-compile-1.c: Fix error message. ++ * gcc.target/s390/hotpatch-compile-10.c: Likewise. ++ * gcc.target/s390/hotpatch-compile-11.c: Likewise. ++ * gcc.target/s390/hotpatch-compile-12.c: Likewise. ++ * gcc.target/s390/hotpatch-compile-13.c: Likewise. ++ * gcc.target/s390/hotpatch-compile-14.c: Likewise. ++ * gcc.target/s390/hotpatch-compile-2.c: Likewise. ++ * gcc.target/s390/hotpatch-compile-3.c: Likewise. ++ * gcc.target/s390/hotpatch-compile-4.c: Likewise. ++ * gcc.target/s390/hotpatch-compile-5.c: Likewise. ++ * gcc.target/s390/hotpatch-compile-6.c: Likewise. ++ * gcc.target/s390/hotpatch-compile-7.c: Likewise. ++ * gcc.target/s390/hotpatch-compile-8.c: Likewise. ++ * gcc.target/s390/hotpatch-compile-9.c: Likewise. ++ ++2015-02-20 Kyrylo Tkachov ++ ++ Backport from mainline ++ 2015-02-20 Kyrylo Tkachov ++ ++ * gcc.target/aarch64/sisd-shft-neg_1.c: New test. ++ ++2015-02-20 Georg-Johann Lay ++ ++ Backport from 2015-02-20 trunk r220847. ++ ++ PR target/64452 ++ * gcc.target/avr/torture/pr64452.c: New test. ++ ++2015-02-20 Richard Biener ++ ++ Backport from mainline ++ 2015-01-12 Richard Biener ++ ++ PR tree-optimization/64530 ++ * gfortran.dg/pr64530.f90: New testcase. ++ ++ 2015-02-13 Richard Biener ++ ++ PR lto/64373 ++ * gcc.dg/lto/pr64373_0.c: New testcase. ++ ++ 2015-02-16 Richard Biener ++ ++ PR tree-optimization/63593 ++ * gcc.dg/pr63593.c: New testcase. ++ ++ 2015-02-18 Richard Biener ++ ++ PR tree-optimization/65063 ++ * gcc.dg/pr65063.c: New testcase. ++ ++2015-02-19 Richard Biener ++ ++ Backport from mainline ++ 2014-12-09 Richard Biener ++ ++ PR middle-end/64199 ++ * gcc.dg/torture/pr64199.c: New testcase. ++ ++ 2015-01-14 Richard Biener ++ ++ PR tree-optimization/64493 ++ PR tree-optimization/64495 ++ * gcc.dg/vect/pr64493.c: New testcase. ++ * gcc.dg/vect/pr64495.c: Likewise. ++ ++ 2015-01-27 Richard Biener ++ ++ PR tree-optimization/56273 ++ PR tree-optimization/59124 ++ PR tree-optimization/64277 ++ * g++.dg/warn/Warray-bounds-6.C: New testcase. ++ * gcc.dg/Warray-bounds-12.c: Likewise. ++ * gcc.dg/Warray-bounds-13.c: Likewise. ++ ++ 2015-02-19 Richard Biener ++ ++ Backport from mainline ++ 2015-01-15 Richard Biener ++ ++ PR middle-end/64365 ++ * gcc.dg/torture/pr64365.c: New testcase. ++ ++2015-02-19 Maxim Kuvyrkov ++ ++ Revert: ++ ++ 2015-02-19 Maxim Kuvyrkov ++ Backport from mainline ++ 2015-02-19 Maxim Kuvyrkov ++ ++ * lib/target-supports.exp (check_compile): Save/restore ++ additional_sources that may belong to an actual test. ++ ++2015-02-19 Maxim Kuvyrkov ++ ++ Backport from mainline ++ 2015-02-19 Maxim Kuvyrkov ++ ++ * lib/target-supports.exp (check_compile): Save/restore ++ additional_sources that may belong to an actual test. ++ ++2015-02-17 Sandra Loosemore ++ ++ Backported from mainline ++ 2015-02-17 Sandra Loosemore ++ ++ * gcc.target/arm/divzero.c: New test case. ++ ++2015-02-17 Ilya Tocar ++ ++ Backport from mainline ++ 2015-01-14 Ilya Tocar ++ ++ PR target/64387 ++ * gcc.target/i386/pr64387.c: New test. ++ ++2015-02-13 Mikael Morin ++ ++ PR fortran/63744 ++ gfortran.dg/use_rename_8.f90: New. ++ ++2015-02-12 Paul Thomas ++ ++ Backported from mainline ++ 2015-02-12 Paul Thomas ++ ++ PR fortran/64932 ++ * gfortran.dg/finalize_28.f90: New test ++ ++2015-02-11 Jakub Jelinek ++ ++ Backported from mainline ++ 2015-02-09 Jakub Jelinek ++ ++ PR target/64979 ++ * gcc.dg/tree-ssa/stdarg-7.c: New test. ++ * gcc.c-torture/execute/pr64979.c: New test. ++ ++2015-02-11 Richard Biener ++ ++ Backport from mainline ++ 2014-07-24 Marek Polacek ++ ++ PR c/57653 ++ * c-c++-common/pr57653.c: New test. ++ * c-c++-common/pr57653.h: New file. ++ * c-c++-common/pr57653-2.c: New test. ++ * c-c++-common/pr57653-2.h: New file. ++ ++2015-02-09 Dominik Vogt ++ ++ * gcc/testsuite/gcc.target/s390/hotpatch-13.c: New testcase. ++ * gcc/testsuite/gcc.target/s390/hotpatch-14.c: New testcase. ++ * gcc/testsuite/gcc.target/s390/hotpatch-15.c: New testcase. ++ * gcc/testsuite/gcc.target/s390/hotpatch-16.c: New testcase. ++ * gcc/testsuite/gcc.target/s390/hotpatch-17.c: New testcase. ++ * gcc/testsuite/gcc.target/s390/hotpatch-18.c: New testcase. ++ * gcc/testsuite/gcc.target/s390/hotpatch-19.c: New testcase. ++ * gcc/testsuite/gcc.target/s390/hotpatch-20.c: New testcase. ++ * gcc/testsuite/gcc.target/s390/hotpatch-compile-10.c: New testcase. ++ * gcc/testsuite/gcc.target/s390/hotpatch-compile-11.c: New testcase. ++ * gcc/testsuite/gcc.target/s390/hotpatch-compile-12.c: New testcase. ++ * gcc/testsuite/gcc.target/s390/hotpatch-compile-13.c: New testcase. ++ * gcc/testsuite/gcc.target/s390/hotpatch-compile-14.c: New testcase. ++ * gcc/testsuite/gcc.target/s390/hotpatch-compile-15.c: New testcase. ++ * gcc/testsuite/gcc.target/s390/hotpatch-compile-16.c: New testcase. ++ * gcc/testsuite/gcc.target/s390/hotpatch-compile-9.c: New ++ testcase. ++ * gcc/testsuite/gcc.target/s390/hotpatch-1.c: Testcase adjusted to ++ new -mhotpatch. ++ * gcc/testsuite/gcc.target/s390/hotpatch-10.c: Likewise. ++ * gcc/testsuite/gcc.target/s390/hotpatch-11.c: Likewise. ++ * gcc/testsuite/gcc.target/s390/hotpatch-12.c: Likewise. ++ * gcc/testsuite/gcc.target/s390/hotpatch-2.c: Likewise. ++ * gcc/testsuite/gcc.target/s390/hotpatch-3.c: Likewise. ++ * gcc/testsuite/gcc.target/s390/hotpatch-4.c: Likewise. ++ * gcc/testsuite/gcc.target/s390/hotpatch-5.c: Likewise. ++ * gcc/testsuite/gcc.target/s390/hotpatch-6.c: Likewise. ++ * gcc/testsuite/gcc.target/s390/hotpatch-7.c: Likewise. ++ * gcc/testsuite/gcc.target/s390/hotpatch-8.c: Likewise. ++ * gcc/testsuite/gcc.target/s390/hotpatch-9.c: Likewise. ++ * gcc/testsuite/gcc.target/s390/hotpatch-compile-1.c: Likewise. ++ * gcc/testsuite/gcc.target/s390/hotpatch-compile-2.c: Likewise. ++ * gcc/testsuite/gcc.target/s390/hotpatch-compile-3.c: Likewise. ++ * gcc/testsuite/gcc.target/s390/hotpatch-compile-4.c: Likewise. ++ * gcc/testsuite/gcc.target/s390/hotpatch-compile-5.c: Likewise. ++ * gcc/testsuite/gcc.target/s390/hotpatch-compile-6.c: Likewise. ++ * gcc/testsuite/gcc.target/s390/hotpatch-compile-7.c: Likewise. ++ * gcc/testsuite/gcc.target/s390/hotpatch-compile-8.c: Likewise. ++ ++2015-02-04 Matthias Klose ++ ++ Backport from mainline ++ 2015-01-15 Martin Liska ++ ++ * g++.dg/ipa/pr64068.C: New test. ++ * gcc.dg/ipa/PR64559.c: New test. ++ ++2015-02-04 Uros Bizjak ++ ++ Backport from mainline ++ 2015-01-31 Uros Bizjak ++ ++ PR target/64882 ++ * gcc.dg/torture/pr64882.c: New test. ++ ++2015-02-01 H.J. Lu ++ ++ Backported from mainline ++ 2015-01-24 H.J. Lu ++ ++ * gcc.target/i386/builtin_target.c (check_intel_cpu_model): Add ++ Silvermont, Ivy Bridge, Haswell and Broadwell tests. Update Sandy ++ Bridge test. ++ ++2015-02-01 Jakub Jelinek ++ ++ Backported from mainline ++ 2015-01-27 Jakub Jelinek ++ ++ PR rtl-optimization/61058 ++ * gcc.dg/pr61058.c: New test. ++ ++ PR c/64766 ++ * gcc.dg/pr64766.c: New test. ++ ++ 2015-01-26 Jakub Jelinek ++ ++ PR c/64778 ++ * gcc.dg/pr64778.c: New test. ++ ++ PR middle-end/64421 ++ * gcc.dg/vect/pr64421.c: New test. ++ ++ 2015-01-23 Jakub Jelinek ++ ++ PR rtl-optimization/63637 ++ PR rtl-optimization/60663 ++ * gcc.dg/pr63637-1.c: New test. ++ * gcc.dg/pr63637-2.c: New test. ++ * gcc.dg/pr63637-3.c: New test. ++ * gcc.dg/pr63637-4.c: New test. ++ * gcc.dg/pr63637-5.c: New test. ++ * gcc.dg/pr63637-6.c: New test. ++ * gcc.target/i386/pr63637-1.c: New test. ++ * gcc.target/i386/pr63637-2.c: New test. ++ * gcc.target/i386/pr63637-3.c: New test. ++ * gcc.target/i386/pr63637-4.c: New test. ++ * gcc.target/i386/pr63637-5.c: New test. ++ * gcc.target/i386/pr63637-6.c: New test. ++ ++ 2015-01-20 Jakub Jelinek ++ ++ PR debug/64663 ++ * gcc.dg/pr64663.c: New test. ++ ++2015-01-29 Ilya Tocar ++ ++ * gcc.target/i386/sse-14.c: Test new intrinsic. ++ * gcc.target/i386/sse-22.c: Ditto. ++ ++2015-01-27 Paul Thomas ++ ++ Backport from mainline ++ PR fortran/62044 ++ * gfortran.dg/allocate_with_mold_1.f90: New test ++ ++2015-01-27 Janus Weil ++ ++ Backport from mainline ++ PR fortran/64230 ++ * gfortran.dg/class_allocate_18.f90: Remove -fsanitize option to ++ prevent linking errors. ++ ++2015-01-27 Tobias Burnus ++ ++ PR fortran/64771 ++ * gfortran.dg/coarray_36.f: New. ++ * gfortran.dg/coarray_37.f90: New. ++ ++2015-01-26 Janus Weil ++ ++ Backport from mainline ++ PR fortran/64230 ++ * gfortran.dg/class_allocate_18.f90: New. ++ ++2015-01-26 Eric Botcazou ++ ++ PR testsuite/64712 ++ * gnat.dg/unchecked_convert1.adb (Unchecked_Convert1): Initialize A. ++ ++2015-01-24 Thomas Koenig ++ ++ Backport from trunk ++ PR fortran/57023 ++ * gfortran.dg/internal_pack_15.f90: New test. ++ ++2015-01-24 Janus Weil ++ ++ Backport from mainline ++ PR fortran/60922 ++ * gfortran.dg/class_allocate_17.f90: New. ++ ++2015-01-20 Marek Polacek ++ ++ Backport from mainline ++ 2014-06-23 Marek Polacek ++ ++ PR c/61553 ++ * c-c++-common/pr61553.c: New test. ++ ++2015-01-16 Bernd Edlinger ++ ++ * c-c++-common/tsan/tsan_barrier.h: New. ++ * c-c++-common/tsan/atomic_stack.c: Reworked to not depend on sleep. ++ * c-c++-common/tsan/fd_pipe_race.c: Likewise. ++ * c-c++-common/tsan/mutexset1.c: Likewise. ++ * c-c++-common/tsan/race_on_barrier.c: Likewise. ++ * c-c++-common/tsan/race_on_mutex.c: Likewise. ++ * c-c++-common/tsan/race_on_mutex2.c: Likewise. ++ * c-c++-common/tsan/simple_race.c: Likewise. ++ * c-c++-common/tsan/simple_stack.c: Likewise. ++ * c-c++-common/tsan/sleep_sync.c: Likewise. ++ * c-c++-common/tsan/tiny_race.c: Likewise. ++ * c-c++-common/tsan/tls_race.c: Likewise. ++ * c-c++-common/tsan/write_in_reader_lock.c: Likewise. ++ * g++.dg/tsan/atomic_free.C: Likewise. ++ * g++.dg/tsan/atomic_free2.C: Likewise. ++ * g++.dg/tsan/cond_race.C: Likewise. ++ * g++.dg/tsan/tsan_barrier.h: Copied from c-c++-common/tsan. ++ ++2015-01-15 Eric Botcazou ++ ++ * gnat.dg/opt47.adb: New test. ++ ++2015-01-14 Jakub Jelinek ++ ++ Backported from mainline ++ 2015-01-12 Jakub Jelinek ++ ++ PR target/64513 ++ * gcc.target/i386/pr64513.c: New test. ++ ++ 2015-01-13 Jakub Jelinek ++ ++ PR rtl-optimization/64286 ++ * gcc.target/i386/avx2-pr64286.c: New test. ++ ++ PR fortran/64528 ++ * gfortran.dg/pr64528.f90: New test. ++ ++ 2015-01-12 Jakub Jelinek ++ ++ PR tree-optimization/64563 ++ * gcc.dg/pr64563.c: New test. ++ ++2015-01-14 Marek Polacek ++ ++ Backport from mainline ++ 2015-01-13 Marek Polacek ++ ++ PR middle-end/64391 ++ * gcc.dg/tm/pr64391.c: New test. ++ ++2015-01-13 Marc Glisse ++ ++ PR c++/54442 ++ * g++.dg/pr54442.C: New file. ++ ++2015-01-13 Renlin Li ++ ++ Backported from mainline ++ 2014-11-19 Renlin Li ++ ++ PR target/63424 ++ * gcc.target/aarch64/pr63424.c: New Test. ++ ++2015-01-12 Janus Weil ++ ++ Backport from mainline ++ PR fortran/63733 ++ * gfortran.dg/typebound_operator_20.f90: New. ++ ++2015-01-09 Jakub Jelinek ++ ++ PR rtl-optimization/64536 ++ * gcc.dg/pr64536.c: New test. ++ ++2015-01-09 Michael Meissner ++ ++ Backport from mainline: ++ 2015-01-06 Michael Meissner ++ ++ PR target/64505 ++ * gcc.target/powerpc/pr64505.c: New file to test -m32 -mpowerpc64 ++ fix is correct. ++ ++2014-01-08 Thomas Koenig ++ ++ PR fortran/56867 ++ * gfortran.dg/dependency_45.f90: New test. ++ ++2015-01-08 Christian Bruel ++ ++ PR target/64507 ++ * gcc.target/sh/pr64507.c: New test. ++ ++2015-01-05 Ian Lance Taylor ++ ++ Backport from mainline: ++ 2014-11-21 Lynn Boger ++ ++ * go.test/go-test.exp (go-set-goarch): Add case for ppc64le goarch ++ value for go testing. ++ ++2014-12-28 H.J. Lu ++ ++ Backport from mainline: ++ 2014-12-28 H.J. Lu ++ ++ * gcc.target/i386/pr57003.c: Skip on x32. ++ * gcc.target/i386/pr59927.c: Likewise. ++ * gcc.target/i386/pr60516.c: Likewise. ++ ++2014-12-27 H.J. Lu ++ ++ Backport from mainline: ++ 2014-12-26 H.J. Lu ++ ++ PR target/64409 ++ * gcc.target/i386/pr64409.c: New test. ++ ++2014-12-23 Janus Weil ++ ++ Backport from mainline ++ PR fortran/64244 ++ * gfortran.dg/typebound_call_26.f90: New. ++ ++2014-12-19 Paolo Carlini ++ ++ PR c++/60955 ++ * g++.dg/warn/register-parm-1.C: New. ++ ++2014-12-15 Jakub Jelinek ++ ++ PR tree-optimization/63551 ++ * gcc.dg/ipa/pr63551.c (fn2): Use 4294967286U instead of ++ 4294967286 to avoid warnings. ++ ++2014-12-14 H.J. Lu ++ ++ Backported from mainline ++ 2014-12-14 H.J. Lu ++ ++ PR rtl-optimization/64037 ++ * g++.dg/pr64037.C: New test. ++ ++2014-12-14 H.J. Lu ++ ++ Backported from mainline ++ 2014-12-06 H.J. Lu ++ ++ PR target/64200 ++ * gcc.target/i386/memcpy-strategy-4.c: New test. ++ ++2014-12-13 Jakub Jelinek ++ ++ Backported from mainline ++ 2014-12-12 Jakub Jelinek ++ ++ PR tree-optimization/64269 ++ * gcc.c-torture/compile/pr64269.c: New test. ++ ++2014-12-10 Bill Schmidt ++ ++ Backport from mainline ++ 2014-09-02 Bill Schmidt ++ ++ * gcc.target/powerpc/builtins-1.c: Add tests for vec_ctf, ++ vec_cts, and vec_ctu. ++ * gcc.target/powerpc/builtins-2.c: Likewise. ++ ++ Backport from mainline ++ 2014-08-28 Bill Schmidt ++ ++ * gcc.target/powerpc/builtins-1.c: Add tests for vec_xl, vec_xst, ++ vec_round, vec_splat, vec_div, and vec_mul. ++ * gcc.target/powerpc/builtins-2.c: New test. ++ ++ Backport from mainline ++ 2014-08-20 Bill Schmidt ++ ++ * testsuite/gcc.target/powerpc/builtins-1.c: New test. ++ ++2014-12-10 Jakub Jelinek ++ ++ PR tree-optimization/62021 ++ * gcc.dg/vect/pr62021.c: New test. ++ ++2014-12-09 Uros Bizjak ++ ++ PR bootstrap/64213 ++ Revert: ++ 2014-11-28 H.J. Lu ++ ++ PR rtl-optimization/64037 ++ * g++.dg/pr64037.C: New test. ++ ++2014-12-07 Oleg Endo ++ ++ Backport from mainline ++ 2014-12-07 Oleg Endo ++ ++ * gcc.target/h8300/h8300.exp: Fix duplicated text. ++ * gcc.target/h8300/pragma-isr.c: Likewise. ++ * gcc.target/h8300/pragma-isr2.c: Likewise. ++ ++2014-12-05 H.J. Lu ++ ++ Backport from mainline ++ 2014-12-02 H.J. Lu ++ ++ PR target/64108 ++ * gcc.target/i386/memset-strategy-2.c: New test. ++ ++2014-12-05 H.J. Lu ++ ++ Backport from mainline ++ 2014-11-28 H.J. Lu ++ ++ PR rtl-optimization/64037 ++ * g++.dg/pr64037.C: New test. ++ ++2014-12-04 Jakub Jelinek ++ ++ PR c++/56493 ++ * c-c++-common/pr56493.c: New test. ++ ++2014-12-03 Renlin Li ++ ++ Backported from mainline ++ 2014-12-03 Renlin Li ++ H.J. Lu ++ ++ PR middle-end/63762 ++ PR target/63661 ++ * gcc.dg/pr63762.c: New test. ++ * gcc.target/i386/pr63661.c: New test. ++ ++2014-12-01 Martin Jambor ++ ++ PR ipa/63551 ++ * gcc.dg/ipa/pr63551.c: New test. ++ * gcc.dg/ipa/pr64041.c: Likewise. ++ ++2014-12-01 Richard Biener ++ ++ PR tree-optimization/63738 ++ * gcc.dg/torture/pr63738.c: Fix call to setjmp. ++ ++2014-11-28 Jakub Jelinek ++ ++ Backported from mainline ++ 2014-11-27 Jakub Jelinek ++ ++ PR middle-end/64067 ++ * gcc.c-torture/compile/pr64067.c: New test. ++ ++ 2014-11-19 Jakub Jelinek ++ ++ PR tree-optimization/63915 ++ * c-c++-common/gomp/pr60823-4.c: New test. ++ ++ PR sanitizer/63913 ++ * g++.dg/ubsan/pr63913.C: New test. ++ ++ 2014-10-31 Jakub Jelinek ++ ++ PR rtl-optimization/63659 ++ * gcc.c-torture/execute/pr63659.c: New test. ++ ++2014-11-26 Richard Biener ++ ++ PR middle-end/63738 ++ * gcc.dg/torture/pr63738.c: New testcase. ++ ++2014-11-26 Richard Biener ++ ++ Backport from mainline ++ 2014-11-26 Richard Biener ++ ++ PR tree-optimization/62238 ++ * gcc.dg/torture/pr62238.c: New testcase. ++ ++ 2014-11-07 Richard Biener ++ ++ PR tree-optimization/63605 ++ * gcc.dg/vect/pr63605.c: New testcase. ++ ++ 2014-10-28 Richard Biener ++ ++ PR middle-end/63665 ++ * gcc.dg/pr63665.c: New testcase. ++ ++2014-11-24 Eric Botcazou ++ ++ * gnat.dg/opt45.adb: New test. ++ ++2014-11-22 Oleg Endo ++ ++ Backport from mainline ++ 2014-11-22 Oleg Endo ++ ++ PR target/63783 ++ PR target/51244 ++ * gcc.target/sh/torture/pr63783-1.c: New. ++ * gcc.target/sh/torture/pr63783-2.c: New. ++ * gcc.target/sh/pr51244-20.c: Adjust. ++ * gcc.target/sh/pr51244-20-sh2a.c: Adjust. ++ ++2014-11-19 Uros Bizjak ++ ++ PR target/63947 ++ * gcc.target/i386/pr63947.c: New test. ++ ++2014-11-19 Tom de Vries ++ ++ Backport from mainline ++ PR tree-optimization/62167 ++ * gcc.dg/pr51879-12.c: Add xfails. ++ * gcc.dg/pr62167-run.c: New test. ++ * gcc.dg/pr62167.c: New test. ++ ++2014-11-13 Teresa Johnson ++ ++ PR tree-optimization/63841 ++ * g++.dg/tree-ssa/pr63841.C: New test. ++ ++2014-11-12 Jakub Jelinek ++ ++ PR ipa/63838 ++ * g++.dg/ipa/pr63838.C: New test. ++ ++2014-11-11 Paolo Carlini ++ ++ PR c++/63265 ++ * g++.dg/cpp0x/constexpr-63265.C: New. ++ ++2014-11-09 H.J. Lu ++ ++ Backported from mainline ++ 2014-11-09 H.J. Lu ++ ++ PR testsuite/63305 ++ * gcc.target/i386/avx256-unaligned-load-7.c (avx_test): Fix ++ buffer overflow. ++ * gcc.target/i386/avx256-unaligned-store-7.c (avx_test): Likewise. ++ ++2014-11-07 Marek Polacek ++ ++ * c-c++-common/ubsan/undefined-2.c: New test. ++ ++2014-11-05 Uros Bizjak ++ ++ PR target/63538 ++ * gcc.target/i386/pr63538.c: New test. ++ ++2014-11-03 Marek Polacek ++ ++ PR c/52769 ++ * gcc.dg/pr52769.c: New test. ++ ++2014-10-31 DJ Delorie ++ ++ * gcc.dg/20141029-1.c: New. ++ ++2014-10-31 Jakub Jelinek ++ ++ PR sanitizer/63697 ++ * c-c++-common/ubsan/overflow-sub-3.c: New test. ++ ++2014-10-30 Georg-Johann Lay ++ ++ PR63633 ++ * gcc.target/avr/torture/pr63633-ice-mult.c: New test. ++ + 2014-10-30 Release Manager + + * GCC 4.9.2 released. +@@ -18,7 +1436,7 @@ + 2014-10-25 Yury Gribov + + PR sanitizer/63638 +- * c-c++-common/asan/pr63638.c: New test. ++ * c-c++-common/asan/pr63638.c: New test. + + 2014-10-24 Markus Trippelsdorf + +@@ -200,7 +1618,7 @@ + 2014-10-11 Christophe Lyon + * lib/target-supports.exp (check_effective_target_shared): New + function. +- * g++.dg/ipa/devirt-28a.C: Check if -shared is supported. ++ * g++.dg/ipa/devirt-28a.C: Check if -shared is supported. + + 2014-10-10 Jakub Jelinek + +@@ -368,7 +1786,7 @@ + 2014-09-12 Martin Jambor + + PR ipa/61654 +- * g++.dg/ipa/pr61654.C: New test. ++ * g++.dg/ipa/pr61654.C: New test. + + 2014-09-11 Alan Lawrence + +@@ -1629,10 +3047,10 @@ + PR middle-end/60849 + * g++.dg/opt/pr60849.C: New testcase. + +-2014-04-22 Richard Biener ++2014-04-22 Richard Biener + + Backport from mainline +- 2014-04-17 Richard Biener ++ 2014-04-17 Richard Biener + + PR tree-optimization/60841 + * gcc.dg/vect/pr60841.c: New testcase. +Index: gcc/testsuite/gfortran.fortran-torture/compile/pr66251.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.fortran-torture/compile/pr66251.f90 (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/gfortran.fortran-torture/compile/pr66251.f90 (.../branches/gcc-4_9-branch) +@@ -0,0 +1,7 @@ ++SUBROUTINE dbcsr_data_convert (n) ++ COMPLEX(KIND=4), DIMENSION(:), POINTER :: s_data_c ++ COMPLEX(KIND=8), DIMENSION(:), POINTER :: t_data_z ++ t_data_z(1:n) = CMPLX(s_data_c(1:n), KIND=8) ++ CALL foo() ++END SUBROUTINE dbcsr_data_convert ++ +Index: gcc/testsuite/g++.dg/cpp1y/auto-fn26.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/auto-fn26.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/auto-fn26.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,6 @@ ++// PR c++/59766 ++// { dg-do compile { target c++1y } } ++ ++struct T { ++ friend auto f() { } ++}; +Index: gcc/testsuite/g++.dg/opt/flifetime-dse1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/opt/flifetime-dse1.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/opt/flifetime-dse1.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,23 @@ ++// { dg-options "-O3 -fno-lifetime-dse" } ++// { dg-do run } ++ ++typedef __SIZE_TYPE__ size_t; ++inline void * operator new (size_t, void *p) { return p; } ++ ++struct A ++{ ++ int i; ++ A() {} ++ ~A() {} ++}; ++ ++int main() ++{ ++ int ar[1]; ++ ++ A* ap = new(ar) A; ++ ap->i = 42; ++ ap->~A(); ++ ++ if (ar[0] != 42) __builtin_abort(); ++} +Index: gcc/testsuite/g++.dg/pr54442.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/pr54442.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/pr54442.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,12 @@ ++/* { dg-do compile } */ ++ ++struct S ++{ ++ void s (int) const throw (); ++ void s (int) throw (); ++}; ++ ++typedef int index_t; ++ ++void (S::*f) (index_t) = &S::s; ++void (S::*g) (index_t) const = &S::s; +Index: gcc/testsuite/g++.dg/tsan/atomic_free2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tsan/atomic_free2.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/tsan/atomic_free2.C (.../branches/gcc-4_9-branch) +@@ -1,19 +1,24 @@ + /* { dg-shouldfail "tsan" } */ ++/* { dg-additional-options "-ldl" } */ + + #include +-#include ++#include "tsan_barrier.h" + ++static pthread_barrier_t barrier; ++ + void *Thread(void *a) { +- sleep(1); ++ barrier_wait(&barrier); + __atomic_fetch_add((int*)a, 1, __ATOMIC_SEQ_CST); + return 0; + } + + int main() { ++ barrier_init(&barrier, 2); + int *a = new int(0); + pthread_t t; + pthread_create(&t, 0, Thread, a); + delete a; ++ barrier_wait(&barrier); + pthread_join(t, 0); + } + +Index: gcc/testsuite/g++.dg/tsan/tsan_barrier.h +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tsan/tsan_barrier.h (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/tsan/tsan_barrier.h (.../branches/gcc-4_9-branch) +@@ -0,0 +1,14 @@ ++/* TSAN-invisible barriers. Link with -ldl. */ ++#include ++#include ++ ++static __typeof(pthread_barrier_wait) *barrier_wait; ++ ++static ++void barrier_init (pthread_barrier_t *barrier, unsigned count) ++{ ++ void *h = dlopen ("libpthread.so.0", RTLD_LAZY); ++ barrier_wait = (__typeof (pthread_barrier_wait) *) ++ dlsym (h, "pthread_barrier_wait"); ++ pthread_barrier_init (barrier, NULL, count); ++} +Index: gcc/testsuite/g++.dg/tsan/atomic_free.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tsan/atomic_free.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/tsan/atomic_free.C (.../branches/gcc-4_9-branch) +@@ -1,18 +1,23 @@ + /* { dg-shouldfail "tsan" } */ ++/* { dg-additional-options "-ldl" } */ + + #include +-#include ++#include "tsan_barrier.h" + ++static pthread_barrier_t barrier; ++ + void *Thread(void *a) { + __atomic_fetch_add((int*)a, 1, __ATOMIC_SEQ_CST); ++ barrier_wait(&barrier); + return 0; + } + + int main() { ++ barrier_init(&barrier, 2); + int *a = new int(0); + pthread_t t; + pthread_create(&t, 0, Thread, a); +- sleep(1); ++ barrier_wait(&barrier); + delete a; + pthread_join(t, 0); + } +Index: gcc/testsuite/g++.dg/tsan/cond_race.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tsan/cond_race.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/tsan/cond_race.C (.../branches/gcc-4_9-branch) +@@ -1,11 +1,13 @@ + /* { dg-shouldfail "tsan" } */ ++/* { dg-additional-options "-ldl" } */ + /* { dg-output "ThreadSanitizer: data race.*" } */ + /* { dg-output "pthread_cond_signal.*" } */ + +-#include +-#include + #include ++#include "tsan_barrier.h" + ++static pthread_barrier_t barrier; ++ + struct Ctx { + pthread_mutex_t m; + pthread_cond_t c; +@@ -18,10 +20,12 @@ + c->done = true; + pthread_mutex_unlock(&c->m); + pthread_cond_signal(&c->c); ++ barrier_wait(&barrier); + return 0; + } + + int main() { ++ barrier_init(&barrier, 2); + Ctx *c = new Ctx(); + pthread_mutex_init(&c->m, 0); + pthread_cond_init(&c->c, 0); +@@ -31,6 +35,7 @@ + while (!c->done) + pthread_cond_wait(&c->c, &c->m); + pthread_mutex_unlock(&c->m); ++ barrier_wait(&barrier); + delete c; + pthread_join(th, 0); + } +Index: gcc/testsuite/g++.dg/lookup/using55.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/lookup/using55.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/lookup/using55.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,19 @@ ++// PR c++/65721 ++ ++template ++struct A { ++ typedef T D; ++}; ++ ++template ++class B : public A { ++ using typename B::D; // { dg-error "not a base" } ++public: ++ D echo(D x) { // { dg-error "D" } ++ return x; ++ } ++}; ++ ++int main() { ++ B b; ++} +Index: gcc/testsuite/g++.dg/pr64688-2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/pr64688-2.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/pr64688-2.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,136 @@ ++// { dg-do compile { target i?86-*-* x86_64-*-* } } ++// { dg-options "-std=c++11 -O3 -march=westmere" } ++ ++template struct int_ {}; ++template struct add_const { typedef int type; }; ++template struct add_reference { typedef int type; }; ++template struct next { typedef typename T::next type; }; ++template struct size_impl; ++template struct msvc_eti_base : T {}; ++template struct long_ { ++ static const int value = N; ++ typedef long_ next; ++}; ++template ++struct size : msvc_eti_base::template apply> {}; ++template struct v_item : Base { ++ typedef typename next::type size; ++}; ++template struct vector0 { ++ typedef int tag; ++ typedef long_<0> size; ++}; ++template <> struct size_impl { ++ template struct apply : Vector::size {}; ++}; ++template struct vector3 : v_item>>> {}; ++template struct layout { typedef vector3 color_space_t; }; ++template struct kth_element_const_reference_type; ++template struct iterator_adaptor_get_base; ++template struct homogeneous_color_base; ++template struct element_const_reference_type; ++template ++ struct homogeneous_color_base { ++ Element _v0, _v1, _v2; ++ typename element_const_reference_type::type ++ at(int_<0>) { ++ return _v0; ++ } ++ typename element_const_reference_type::type ++ at(int_<1>) { ++ return _v1; ++ } ++ typename element_const_reference_type::type ++ at(int_<2>) { ++ return _v2; ++ } ++}; ++template ++ struct kth_element_const_reference_type< ++ homogeneous_color_base> ++ : add_reference::type> {}; ++template ++ typename add_reference::type>::type ++ at_c(homogeneous_color_base p1) { ++ return p1.at(int_()); ++} ++template class memory_based_step_iterator; ++template class memory_based_2d_locator; ++template class image_view; ++template struct pixel; ++struct iterator_type_from_pixel { ++ typedef pixel>> *type; ++}; ++template struct type_from_x_iterator { ++ typedef image_view< ++ memory_based_2d_locator>> view_t; ++}; ++template ++struct element_const_reference_type ++: kth_element_const_reference_type< ++homogeneous_color_base, 3>> {}; ++template ++ struct pixel : homogeneous_color_base, ++ size::color_space_t>::value> { ++}; ++template ++struct iterator_adaptor_get_base> { ++ typedef Iterator type; ++}; ++template class memory_based_2d_locator { ++ public: ++ typedef iterator_adaptor_get_base>> *>>::type x_iterator; ++}; ++template class image_view { ++ public: ++ typedef memory_based_2d_locator::x_iterator x_iterator; ++ x_iterator row_begin___trans_tmp_2; ++ x_iterator row_begin(int) { return row_begin___trans_tmp_2; } ++}; ++template class image { ++ public: ++ typedef type_from_x_iterator::view_t view_t; ++ image(int); ++}; ++template ++ typename image::view_t view(image); ++template void measure_time(Op p1) { ++ for (;;) ++ p1(); ++} ++template struct fill_nongil_t; ++template ++ struct fill_nongil_t< ++ image_view>> *>>>, ++ P> { ++ typedef image_view>> *>>> View; ++ View _v; ++ P _p; ++ fill_nongil_t(View p1, P) : _v(p1) {} ++ void operator()() { ++ T *first = (T *)_v.row_begin(0); ++ T last; ++ while (first != &last) { ++ first[0] = at_c<0>(_p); ++ first[1] = at_c<1>(_p); ++ first[2] = at_c<2>(_p); ++ first += 3; ++ } ++ } ++}; ++template void test_fill(int) { ++ image::view_t __trans_tmp_1; ++ image im(0); ++ __trans_tmp_1 = view(im); ++ measure_time(fill_nongil_t< ++ image_view>> *>>>, ++ pixel>(__trans_tmp_1, pixel())); ++} ++void performance_testtest_method() { ++ test_fill, pixel>(0); ++} +Index: gcc/testsuite/g++.dg/abi/anon4.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/abi/anon4.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/abi/anon4.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,41 @@ ++// PR c++/65209 ++// { dg-final { scan-assembler-not "comdat" } } ++ ++// Everything involving the anonymous namespace bits should be private, not ++// COMDAT. ++ ++struct Bar ++{ ++ static Bar *self(); ++ char pad[24]; ++}; ++ ++template ++struct BarGlobalStatic ++{ ++ Bar *operator()() { return holderFunction(); } ++}; ++ ++namespace { ++ namespace Q_QGS_s_self { ++ inline Bar *innerFunction() { ++ static struct Holder { ++ Bar value; ++ ~Holder() {} ++ } holder; ++ return &holder.value; ++ } ++ } ++} ++static BarGlobalStatic s_self; ++ ++Bar *Bar::self() ++{ ++ return s_self(); ++} ++ ++int main(int argc, char *argv[]) ++{ ++ Bar* bar = Bar::self(); ++ return 0; ++} +Index: gcc/testsuite/g++.dg/abi/aarch64_guard1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/abi/aarch64_guard1.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/abi/aarch64_guard1.C (.../branches/gcc-4_9-branch) +@@ -13,5 +13,4 @@ + } + + // { dg-final { scan-assembler _ZGVZ3foovE1x,8,8 } } +-// { dg-final { scan-tree-dump "_ZGVZ3foovE1x & 1" "original" } } + // { dg-final { cleanup-tree-dump "original" } } +Index: gcc/testsuite/g++.dg/gomp/tpl-target-update.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/gomp/tpl-target-update.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/gomp/tpl-target-update.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,20 @@ ++// { dg-do compile } ++ ++template ++void f(T A, T B) ++{ ++ extern int *v; ++ T a = 2; ++ T b = 4; ++ ++#pragma omp target update to(v[a:b]) ++ v[a] = 0; ++ ++#pragma omp target update to(v[A:B]) ++ v[a] = 0; ++} ++ ++void g() ++{ ++ f(1, 5); ++} +Index: gcc/testsuite/g++.dg/init/array39.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/init/array39.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/init/array39.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,46 @@ ++// PR c++/65154 ++// { dg-do run { target c++11 } } ++ ++int cnt1 = 0, ++ cnt2 = 0; ++ ++struct S_empty ++{ ++ S_empty () { ++ cnt1++; ++ }; ++}; ++ ++struct C1 ++{ ++ S_empty s; ++}; ++ ++struct S_init ++{ ++ S_init () : i(42) ++ { ++ cnt2++; ++ }; ++ int i; ++}; ++ ++struct C2 ++{ ++ S_init a, b; ++}; ++ ++int ++main () ++{ ++ C1 c1[5]{}; ++ C2 c2[1]{}; ++ ++ if (c2[0].a.i != 42 || c2[0].b.i != 42) ++ return 1; ++ ++ if (cnt1 != 5 || cnt2 != 2) ++ return 1; ++ ++ return 0; ++} +Index: gcc/testsuite/g++.dg/pr64037.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/pr64037.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/pr64037.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,27 @@ ++// { dg-do run { target i?86-*-* x86_64-*-* } } ++// { dg-options "-std=c++11 -Os" } ++ ++enum class X : unsigned char { ++ V = 2, ++}; ++ ++static void ++__attribute__((noinline,noclone)) ++foo(unsigned &out, unsigned a, X b) ++{ ++ out = static_cast(b); ++} ++ ++int main() ++{ ++ unsigned deadbeef = 0xDEADBEEF; ++ asm volatile ("" : "+d" (deadbeef), "+c" (deadbeef)); ++ ++ unsigned out; ++ foo(out, 2, X::V); ++ ++ if (out != 2) ++ __builtin_abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/g++.dg/ubsan/pr63913.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ubsan/pr63913.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/ubsan/pr63913.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,12 @@ ++// PR sanitizer/63913 ++// { dg-do compile } ++// { dg-options "-fsanitize=bool -fnon-call-exceptions" } ++ ++struct B { B (); ~B (); }; ++ ++double ++foo (bool *x) ++{ ++ B b; ++ return *x; ++} +Index: gcc/testsuite/g++.dg/pr65049.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/pr65049.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/pr65049.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,19 @@ ++// PR middle-end/65409 ++// Reported by Ignacy Gawedzki ++ ++struct Foo ++{ ++ Foo() {} ++ int a; ++ int b; ++ char c; ++}; ++ ++Foo copy_foo(Foo); ++ ++struct Bar : Foo ++{ ++ Bar(Foo t) : Foo(copy_foo(t)) {} ++}; ++ ++Bar a = Foo(); +Index: gcc/testsuite/g++.dg/other/dump-ada-spec-3.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/other/dump-ada-spec-3.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/other/dump-ada-spec-3.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,24 @@ ++/* { dg-do compile } */ ++/* { dg-options "-fdump-ada-spec" } */ ++ ++using namespace std; ++ ++class Base { ++ public: ++ int My_V; ++ virtual void Primitive (); ++ ++ Base (); ++}; ++ ++void Base::Primitive () { ++} ++ ++Base::Base () { ++} ++ ++void Dispatch (Base * B) { ++ B->Primitive (); ++} ++ ++/* { dg-final { cleanup-ada-spec } } */ +Index: gcc/testsuite/g++.dg/other/const4.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/other/const4.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/other/const4.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,10 @@ ++// { dg-do compile } ++ ++int lValue; ++int main() ++{ ++ switch (lValue) ++ { ++ case -(int)((2U << (8 * sizeof(int) - 2)) - 1) - 1:; ++ } ++} +Index: gcc/testsuite/g++.dg/tree-ssa/pr63841.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr63841.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr63841.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,35 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2" } */ ++ ++#include ++ ++std::string __attribute__ ((noinline)) comp_test_write() { ++ std::string data; ++ ++ for (int i = 0; i < 2; ++i) { ++ char b = 1 >> (i * 8); ++ data.append(&b, 1); ++ } ++ ++ return data; ++} ++ ++std::string __attribute__ ((noinline)) comp_test_write_good() { ++ std::string data; ++ ++ char b; ++ for (int i = 0; i < 2; ++i) { ++ b = 1 >> (i * 8); ++ data.append(&b, 1); ++ } ++ ++ return data; ++} ++ ++int main() { ++ std::string good = comp_test_write_good(); ++ std::string bad = comp_test_write(); ++ ++ if (good != bad) ++ __builtin_abort (); ++} +Index: gcc/testsuite/g++.dg/lto/pr65549_0.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/lto/pr65549_0.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/lto/pr65549_0.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,144 @@ ++// { dg-lto-do link } ++// { dg-lto-options { { -std=gnu++14 -flto -g } { -std=gnu++14 -flto -g -O2 -fno-inline -flto-partition=max } } } ++// { dg-extra-ld-options "-r -nostdlib" } ++ ++namespace std { ++inline namespace __cxx11 {} ++template struct integral_constant { ++ static constexpr _Tp value = 0; ++}; ++template struct __and_; ++struct is_member_object_pointer : integral_constant {}; ++template ++struct is_member_function_pointer : integral_constant {}; ++template struct remove_reference { typedef int type; }; ++template class C; ++template struct __result_of_impl; ++template ++struct __result_of_impl { ++ typedef decltype(0) type; ++}; ++template ++struct C<_Functor(_ArgTypes...)> ++ : __result_of_impl::type>::value, ++ _Functor> {}; ++template using result_of_t = typename C<_Tp>::type; ++template void forward(); ++template _Tp move(_Tp) {} ++namespace __cxx11 { ++class basic_string typedef string; ++} ++template struct allocator_traits { typedef decltype(0) pointer; }; ++} ++struct F : std::allocator_traits {}; ++namespace std { ++namespace __cxx11 { ++class basic_string { ++public: ++ struct _Alloc_hider : F { ++ _Alloc_hider(pointer); ++ } _M_dataplus; ++ basic_string(int) : _M_dataplus(0) {} ++ ~basic_string(); ++}; ++} ++template class function; ++template class _Base_manager { ++protected: ++ static _Functor *_M_get_pointer(int) {} ++}; ++template class _Function_handler; ++template ++class _Function_handler<_Res(_ArgTypes...), _Functor> ++ : _Base_manager<_Functor> { ++public: ++ static _Res _M_invoke(const int &) { ++ (*_Base_manager<_Functor>::_M_get_pointer(0))(); ++ } ++}; ++template using __check_func_return_type = int; ++template ++class function<_Res(_ArgTypes...)> { ++ template using _Invoke = decltype(0); ++ template ++ using _Callable = __and_<__check_func_return_type<_Invoke<_Functor>, _Res>>; ++ template using _Requires = int; ++ ++public: ++ template , void>> ++ function(_Functor); ++ using _Invoker_type = _Res (*)(const int &); ++ _Invoker_type _M_invoker; ++}; ++template ++template ++function<_Res(_ArgTypes...)>::function(_Functor) { ++ _M_invoker = _Function_handler<_Res(), _Functor>::_M_invoke; ++} ++class unique_ptr { ++public: ++ ~unique_ptr(); ++}; ++template _Tp make_unique(_Args... __args) { ++ _Tp(__args...); ++} ++} ++class A { ++public: ++ template T as(); ++}; ++class variables_map { ++public: ++ A operator[](std::basic_string); ++}; ++class B { ++public: ++ variables_map configuration(); ++ void run(int, int, std::function); ++}; ++class H; ++struct G { ++ enum {} _state; ++}; ++class D { ++ G _local_state; ++ std::unique_ptr _task; ++ template void schedule(Func func) { ++ struct task_with_state { ++ task_with_state(Func func) : _func(func) {} ++ Func _func; ++ } tws = std::make_unique(std::move(func)); ++ } ++ friend H; ++}; ++template using futurize_t = H; ++class H { ++ D *_promise; ++ template void schedule(Func func) { ++ G __trans_tmp_1; ++ struct task_with_ready_state { ++ task_with_ready_state(Func, G); ++ }; ++ std::make_unique(std::move(func), __trans_tmp_1); ++ _promise->schedule(std::move(func)); ++ } ++ template void then(Func func, Param) { ++ using P = D; ++ P pr; ++ schedule([ pr = std::move(pr), func, param = std::forward ]{}); ++ } ++ ++public: ++ template futurize_t> then(Func) { ++ then(0, [] {}); ++ } ++} clients; ++main() { ++ B app; ++ app.run(0, 0, [&] { ++ auto config = app.configuration()[0].as(); ++ clients.then([] {}); ++ }); ++} +Index: gcc/testsuite/g++.dg/lto/pr65193_0.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/lto/pr65193_0.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/lto/pr65193_0.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,71 @@ ++/* { dg-lto-do link } */ ++/* { dg-require-effective-target fpic } */ ++/* { dg-lto-options {{-fPIC -r -nostdlib -flto -O2 -g}} } */ ++ ++void frexp (int, int *); ++namespace std ++{ ++ int ldexp (int, int); ++ struct A ++ { ++ }; ++ template T get_min_shift_value (); ++ template struct min_shift_initializer ++ { ++ struct B ++ { ++ B () { get_min_shift_value (); } ++ } static const b; ++ static void ++ m_fn1 () ++ { ++ b; ++ } ++ }; ++ template ++ const typename min_shift_initializer::B min_shift_initializer::b; ++ template ++ inline T ++ get_min_shift_value () ++ { ++ using std::ldexp; ++ static T c = ldexp (0, 0); ++ min_shift_initializer::m_fn1; ++ } ++ template ++ void ++ float_next_imp (T p1, Policy p2) ++ { ++ using std::ldexp; ++ int d; ++ float_next (0, p2); ++ frexp (p1, &d); ++ } ++ template ++ int ++ float_next (const T &p1, Policy &p2) ++ { ++ float_next_imp (p1, p2); ++ } ++ template void float_prior_imp (T, Policy) ++ { ++ get_min_shift_value (); ++ } ++ template int float_prior (T, Policy) ++ { ++ float_prior_imp (static_cast (0), 0); ++ } ++ template ++ void ++ nextafter (T p1, U p2, Policy p3) ++ { ++ p2 ? float_next (0, p3) : float_prior (p1, 0); ++ } ++ long double e; ++ int f; ++ void ++ nextafter () ++ { ++ nextafter (e, f, A ()); ++ } ++} +Index: gcc/testsuite/g++.dg/warn/Wunused-var-22.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/warn/Wunused-var-22.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/warn/Wunused-var-22.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,12 @@ ++// PR c++/63657 ++// { dg-options "-Wunused-variable" } ++ ++class Bar ++{ ++ virtual ~Bar() {} ++}; ++Bar& getbar(); ++void bar() ++{ ++ Bar& b = getbar(); // { dg-warning "unused" } ++} +Index: gcc/testsuite/g++.dg/warn/Warray-bounds-6.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/warn/Warray-bounds-6.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/warn/Warray-bounds-6.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,26 @@ ++// { dg-do compile } ++// { dg-options "-O3 -Warray-bounds" } ++ ++struct type { ++ bool a, b; ++ bool get_b() { return b; } ++}; ++ ++type stuff[9u]; ++ ++void bar(); ++ ++void foo() ++{ ++ for(unsigned i = 0u; i < 9u; i++) ++ { ++ if(!stuff[i].a) ++ continue; ++ ++ bar(); ++ ++ for(unsigned j = i + 1u; j < 9u; j++) ++ if(stuff[j].a && stuff[j].get_b()) // { dg-bogus "above array bounds" } ++ return; ++ } ++} +Index: gcc/testsuite/g++.dg/warn/register-parm-1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/warn/register-parm-1.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/warn/register-parm-1.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,9 @@ ++// PR c++/60955 ++// { dg-options "-Wextra" } ++ ++unsigned int erroneous_warning(register int a) { ++ if ((a) & 0xff) return 1; else return 0; ++} ++unsigned int no_erroneous_warning(register int a) { ++ if (a & 0xff) return 1; else return 0; ++} +Index: gcc/testsuite/g++.dg/cpp0x/variadic165.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/variadic165.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/variadic165.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,17 @@ ++// PR c++/64514 ++// { dg-do compile { target c++11 } } ++ ++template ++struct Functor ++{ ++ template ++ struct Inner ++ {}; ++}; ++ ++template struct Functor<>::Inner<>; ++ ++int main() ++{ ++ ++} +Index: gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice3.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice3.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice3.C (.../branches/gcc-4_9-branch) +@@ -3,7 +3,7 @@ + + class Klass + { +- unsigned int local; ++ unsigned int local; // { dg-message "" } + public: + bool dostuff(); + }; +@@ -11,7 +11,7 @@ + bool Klass::dostuff() + { + auto f = []() -> bool { +- if (local & 1) { return true; } // { dg-error "not captured" } ++ if (local & 1) { return true; } // { dg-error "" } + return false; + }; + } +Index: gcc/testsuite/g++.dg/cpp0x/lambda/lambda-decltype2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-decltype2.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-decltype2.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,25 @@ ++// PR c++/65727 ++// { dg-do compile { target c++11 } } ++ ++struct type_a { void(*cb)(); }; ++ ++struct type_b ++{ ++ type_b(type_a p); ++ void dummy(); ++}; ++ ++template ++constexpr T function_c(T**t) {return **t;} ++ ++class type_d { ++ public: ++ static void dummy(); ++}; ++class type_e { ++ public: ++ static type_b b; ++ type_d *d[1]; ++}; ++ ++type_b type_e::b = {{[](){decltype(function_c(type_e::d))::dummy();}}}; +Index: gcc/testsuite/g++.dg/cpp0x/override1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/override1.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/override1.C (.../branches/gcc-4_9-branch) +@@ -4,8 +4,11 @@ + virtual void f() final {} + virtual void g() {} + virtual void x() const {} ++ virtual void y() final; + }; + ++void B::y() {} // { dg-error "overriding" } ++ + struct B2 + { + virtual void h() {} +@@ -14,6 +17,7 @@ + struct D : B + { + virtual void g() override final {} // { dg-error "overriding" } ++ virtual void y() override final {} // { dg-error "virtual" } + }; + + template struct D2 : T +Index: gcc/testsuite/g++.dg/cpp0x/ref-qual16.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/ref-qual16.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/ref-qual16.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,12 @@ ++// PR c++/64297 ++// { dg-do compile { target c++11 } } ++ ++struct A { ++ typedef int X; ++ template X m_fn1() const; ++}; ++template struct is_function {}; ++is_function i; ++struct D { ++ template > D(Y); ++} b(&A::m_fn1<0>); +Index: gcc/testsuite/g++.dg/cpp0x/initlist89.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/initlist89.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/initlist89.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,4 @@ ++// PR c++/64029 ++// { dg-do compile { target c++11 } } ++ ++const int (&in)[]{1,2,3,4,5}; +Index: gcc/testsuite/g++.dg/cpp0x/constexpr-ptrmem4.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-ptrmem4.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-ptrmem4.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,26 @@ ++// PR c++/65695 ++// { dg-do compile { target c++11 } } ++ ++struct Foo; ++ ++struct Bar ++{ ++ using MemberFuncT = int (Foo::*)(); ++ ++ MemberFuncT h_; ++ constexpr Bar(MemberFuncT h) : h_{h} ++ { ++ } ++}; ++ ++struct Foo ++{ ++ int test() ++ { ++ return -1; ++ } ++ ++ static constexpr Bar bar {&Foo::test}; ++}; ++ ++constexpr Bar Foo::bar; +Index: gcc/testsuite/g++.dg/cpp0x/constexpr-63265.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-63265.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-63265.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,19 @@ ++// PR c++/63265 ++// { dg-do compile { target c++11 } } ++ ++#define LSHIFT (sizeof(unsigned int) * __CHAR_BIT__) ++ ++template ++struct SpuriouslyWarns1 { ++ static constexpr unsigned int v = lshift < LSHIFT ? 1U << lshift : 0; ++}; ++ ++static_assert(SpuriouslyWarns1::v == 0, "Impossible occurred"); ++ ++template ++struct SpuriouslyWarns2 { ++ static constexpr bool okay = lshift < LSHIFT; ++ static constexpr unsigned int v = okay ? 1U << lshift : 0; ++}; ++ ++static_assert(SpuriouslyWarns2::v == 0, "Impossible occurred"); +Index: gcc/testsuite/g++.dg/cpp0x/alias-decl-44.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/alias-decl-44.C (.../tags/gcc_4_9_2_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/alias-decl-44.C (.../branches/gcc-4_9-branch) +@@ -0,0 +1,43 @@ ++// PR c++/63849 ++// { dg-do compile { target c++11 } } ++ ++template ++using First = _T; // we should not use this ++ // alias with only ++ // one pack parameter (?) ++ ++template