head 1.1; branch 1.1.1; access; symbols netbsd-11-0-RC5:1.1.1.2 netbsd-11-0-RC4:1.1.1.2 netbsd-11-0-RC3:1.1.1.2 netbsd-11-0-RC2:1.1.1.2 netbsd-11-0-RC1:1.1.1.2 gcc-14-3-0:1.1.1.3 perseant-exfatfs-base-20250801:1.1.1.2 netbsd-11:1.1.1.2.0.4 netbsd-11-base:1.1.1.2 gcc-12-5-0:1.1.1.2 netbsd-10-1-RELEASE:1.1.1.1 perseant-exfatfs-base-20240630:1.1.1.2 gcc-12-4-0:1.1.1.2 perseant-exfatfs:1.1.1.2.0.2 perseant-exfatfs-base:1.1.1.2 netbsd-10-0-RELEASE:1.1.1.1 netbsd-10-0-RC6:1.1.1.1 netbsd-10-0-RC5:1.1.1.1 netbsd-10-0-RC4:1.1.1.1 netbsd-10-0-RC3:1.1.1.1 netbsd-10-0-RC2:1.1.1.1 netbsd-10-0-RC1:1.1.1.1 gcc-12-3-0:1.1.1.2 gcc-10-5-0:1.1.1.1 netbsd-10:1.1.1.1.0.6 netbsd-10-base:1.1.1.1 gcc-10-4-0:1.1.1.1 cjep_sun2x-base1:1.1.1.1 cjep_sun2x:1.1.1.1.0.4 cjep_sun2x-base:1.1.1.1 cjep_staticlib_x-base1:1.1.1.1 cjep_staticlib_x:1.1.1.1.0.2 cjep_staticlib_x-base:1.1.1.1 gcc-10-3-0:1.1.1.1 FSF:1.1.1; locks; strict; comment @# @; 1.1 date 2021.04.10.22.10.14; author mrg; state Exp; branches 1.1.1.1; next ; commitid eC4g0MRpqTvEkNOC; 1.1.1.1 date 2021.04.10.22.10.14; author mrg; state Exp; branches; next 1.1.1.2; commitid eC4g0MRpqTvEkNOC; 1.1.1.2 date 2023.07.30.05.21.29; author mrg; state Exp; branches; next 1.1.1.3; commitid tk6nV4mbc9nVEMyE; 1.1.1.3 date 2025.09.13.23.45.59; author mrg; state Exp; branches; next ; commitid KwhwN4krNWa6XBaG; desc @@ 1.1 log @Initial revision @ text @/* Stub for defining degree-valued trigonometric functions in libgfortran. Copyright (C) 2020 Free Software Foundation, Inc. Contributed by Steven G. Kargl and Fritz Reese This file is part of the GNU Fortran runtime library (libgfortran). Libgfortran 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. Libgfortran 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 . */ /* This replaces all GMP/MPFR functions used by trigd.inc with native versions. The precision is defined by FTYPE defined before including this file. The module which includes this file must define the following: KIND -- floating point kind (4, 8, 10, 16) HAVE_INFINITY_KIND -- defined iff the platform has GFC_REAL__INFINITY TINY [optional] -- subtract from 1 under the above condition if set COSD_SMALL [optional] -- for x <= COSD_SMALL, COSD(x) = 1 if set SIND_SMALL [optional] -- for x <= SIND_SMALL, SIND(x) = D2R(x) if set COSD30 -- literal value of COSD(30) to the precision of FTYPE PIO180H -- upper bits of pi/180 for FMA PIO180L -- lower bits of pi/180 for FMA */ /* FTYPE := GFC_REAL_ */ #define FTYPE CONCAT_EXPAND(GFC_REAL_,KIND) /* LITERAL_SUFFIX := GFC_REAL__LITERAL_SUFFIX */ #define LITERAL_SUFFIX CONCAT_EXPAND(FTYPE,_LITERAL_SUFFIX) /* LITERAL(X) := GFC_REAL__LITERAL(X) */ #define LITERAL(x) CONCAT_EXPAND(x,LITERAL_SUFFIX) #define SIND CONCAT_EXPAND(sind_r, KIND) #define COSD CONCAT_EXPAND(cosd_r, KIND) #define TAND CONCAT_EXPAND(tand_r, KIND) #ifdef HAVE_INFINITY_KIND /* GFC_REAL_X_INFINITY */ #define INFINITY_KIND CONCAT_EXPAND(FTYPE, _INFINITY) #else /* GFC_REAL_X_HUGE */ #define INFINITY_KIND CONCAT_EXPAND(FTYPE, _HUGE) #endif #define CONCAT(x,y) x ## y #define CONCAT_EXPAND(x,y) CONCAT(x,y) #define COPYSIGN LITERAL(copysign) #define FMOD LITERAL(fmod) #define FABS LITERAL(fabs) #define FMA LITERAL(fma) #define SIN LITERAL(sin) #define COS LITERAL(cos) #define TAN LITERAL(tan) #ifdef TINY #define TINY_LITERAL LITERAL(TINY) #endif #ifdef COSD_SMALL #define COSD_SMALL_LITERAL LITERAL(COSD_SMALL) #endif #ifdef SIND_SMALL #define SIND_SMALL_LITERAL LITERAL(SIND_SMALL) #endif #define COSD30_LITERAL LITERAL(COSD30) #define PIO180H_LITERAL LITERAL(PIO180H) #define PIO180L_LITERAL LITERAL(PIO180L) #define ITYPE int #define GFC_RND_MODE 0 #define RETTYPE FTYPE #define RETURN(x) return (x) #define ISFINITE(x) isfinite(x) #define mpfr_init(x) do { } while (0) #define mpfr_init_set_ui(x, v, rnd) (x = (v)) #define mpfr_clear(x) do { } while (0) #define mpfr_swap(x, y) do { FTYPE z = y; y = x; x = z; } while (0) #define mpfr_copysign(rop, op1, op2, rnd) rop = COPYSIGN((op1), (op2)) #define mpfr_fmod(rop, x, d, rnd) (rop = FMOD((x), (d))) #define mpfr_abs(rop, op, rnd) (rop = FABS(op)) #define mpfr_cmp_ld(x, y) ((x) - (y)) #define mpfr_cmp_ui(x, n) ((x) - (n)) #define mpfr_zero_p(x) ((x) == 0) #define mpfr_set(rop, x, rnd) (rop = (x)) #define mpfr_set_zero(rop, s) (rop = COPYSIGN(0, (s))) #define mpfr_set_inf(rop, s) (rop = ((s)*-2 + 1) * INFINITY_KIND) #define mpfr_set_ui(rop, n, rnd) (rop = (n)) #define mpfr_set_si(rop, n, rnd) (rop = (n)) #define mpfr_set_ld(rop, x, rnd) (rop = (x)) #define mpfr_set_si_2exp(rop, op, exp, rnd) (rop = (0x1.p##exp)) #define mpfr_get_z(rop, x, rnd) ((rop = (int)(x)), (rop - (x))) #define mpfr_mul(rop, op1, op2, rnd) (rop = ((op1) * (op2))) #define mpfr_sub_d(rop, op1, op2, rnd) (rop = ((op1) - (op2))) #define mpfr_sub_ui(rop, op1, op2, rnd) (rop = ((op1) - (op2))) #define mpfr_sub(rop, op1, op2, rnd) (rop = ((op1) - (op2))) #define mpfr_ui_sub(rop, op1, op2, rnd) (rop = ((op1) - (op2))) #define mpfr_neg(rop, op, rnd) (rop = -(op)) #define mpfr_sin(rop, x, rnd) (rop = SIN(x)) #define mpfr_cos(rop, x, rnd) (rop = COS(x)) #define mpfr_tan(rop, x, rnd) (rop = TAN(x)) #define mpz_init(n) do { } while (0) #define mpz_clear(x) do { } while (0) #define mpz_cmp_ui(x, y) ((x) - (y)) #define mpz_divisible_ui_p(n, d) ((n) % (d) == 0) #define D2R(x) (x = FMA((x), PIO180H_LITERAL, (x) * PIO180L_LITERAL)) #define SET_COSD30(x) (x = COSD30_LITERAL) #ifdef SIND extern FTYPE SIND (FTYPE); export_proto (SIND); #endif #ifdef COSD extern FTYPE COSD (FTYPE); export_proto (COSD); #endif #ifdef TAND extern FTYPE TAND (FTYPE); export_proto (TAND); #endif #include "trigd.inc" #undef FTYPE #undef LITERAL_SUFFIX #undef LITERAL #undef CONCAT3 #undef CONCAT3_EXPAND #undef CONCAT #undef CONCAT_EXPAND #undef SIND #undef COSD #undef TAND #undef INFINITY_KIND #undef COPYSIGN #undef FMOD #undef FABS #undef FMA #undef SIN #undef COS #undef TAN #undef TINY_LITERAL #undef COSD_SMALL_LITERAL #undef SIND_SMALL_LITERAL #undef COSD30_LITERAL #undef PIO180H_LITERAL #undef PIO180L_LITERAL #undef ITYPE #undef GFC_RND_MODE #undef RETTYPE #undef RETURN #undef ISFINITE #undef mpfr_signbit #undef mpfr_init #undef mpfr_init_set_ui #undef mpfr_clear #undef mpfr_swap #undef mpfr_fmod #undef mpfr_abs #undef mpfr_cmp_ld #undef mpfr_cmp_ui #undef mpfr_zero_p #undef mpfr_set #undef mpfr_set_zero #undef mpfr_set_inf #undef mpfr_set_ui #undef mpfr_set_si #undef mpfr_set_ld #undef mpfr_set_si_2exp #undef mpfr_get_z #undef mpfr_mul_si #undef mpfr_sub_d #undef mpfr_sub_ui #undef mpfr_sub #undef mpfr_ui_sub #undef mpfr_neg #undef mpfr_sin #undef mpfr_cos #undef mpfr_tan #undef mpz_init #undef mpz_clear #undef mpz_cmp_ui #undef mpz_divisible_ui_p #undef FMA #undef D2R #undef SET_COSD30 /* vim: set ft=c: */ @ 1.1.1.1 log @initial import of GCC 10.3.0. main changes include: caveats: - ABI issue between c++14 and c++17 fixed - profile mode is removed from libstdc++ - -fno-common is now the default new features: - new flags -fallocation-dce, -fprofile-partial-training, -fprofile-reproducible, -fprofile-prefix-path, and -fanalyzer - many new compile and link time optimisations - enhanced drive optimisations - openacc 2.6 support - openmp 5.0 features - new warnings: -Wstring-compare and -Wzero-length-bounds - extended warnings: -Warray-bounds, -Wformat-overflow, -Wrestrict, -Wreturn-local-addr, -Wstringop-overflow, -Warith-conversion, -Wmismatched-tags, and -Wredundant-tags - some likely C2X features implemented - more C++20 implemented - many new arm & intel CPUs known hundreds of reported bugs are fixed. full list of changes can be found at: https://gcc.gnu.org/gcc-10/changes.html @ text @@ 1.1.1.2 log @initial import of GCC 12.3.0. major changes in GCC 11 included: - The default mode for C++ is now -std=gnu++17 instead of -std=gnu++14. - When building GCC itself, the host compiler must now support C++11, rather than C++98. - Some short options of the gcov tool have been renamed: -i to -j and -j to -H. - ThreadSanitizer improvements. - Introduce Hardware-assisted AddressSanitizer support. - For targets that produce DWARF debugging information GCC now defaults to DWARF version 5. This can produce up to 25% more compact debug information compared to earlier versions. - Many optimisations. - The existing malloc attribute has been extended so that it can be used to identify allocator/deallocator API pairs. A pair of new -Wmismatched-dealloc and -Wmismatched-new-delete warnings are added. - Other new warnings: -Wsizeof-array-div, enabled by -Wall, warns about divisions of two sizeof operators when the first one is applied to an array and the divisor does not equal the size of the array element. -Wstringop-overread, enabled by default, warns about calls to string functions reading past the end of the arrays passed to them as arguments. -Wtsan, enabled by default, warns about unsupported features in ThreadSanitizer (currently std::atomic_thread_fence). - Enchanced warnings: -Wfree-nonheap-object detects many more instances of calls to deallocation functions with pointers not returned from a dynamic memory allocation function. -Wmaybe-uninitialized diagnoses passing pointers or references to uninitialized memory to functions taking const-qualified arguments. -Wuninitialized detects reads from uninitialized dynamically allocated memory. -Warray-parameter warns about functions with inconsistent array forms. -Wvla-parameter warns about functions with inconsistent VLA forms. - Several new features from the upcoming C2X revision of the ISO C standard are supported with -std=c2x and -std=gnu2x. - Several C++20 features have been implemented. - The C++ front end has experimental support for some of the upcoming C++23 draft. - Several new C++ warnings. - Enhanced Arm, AArch64, x86, and RISC-V CPU support. - The implementation of how program state is tracked within -fanalyzer has been completely rewritten with many enhancements. see https://gcc.gnu.org/gcc-11/changes.html for a full list. major changes in GCC 12 include: - An ABI incompatibility between C and C++ when passing or returning by value certain aggregates containing zero width bit-fields has been discovered on various targets. x86-64, ARM and AArch64 will always ignore them (so there is a C ABI incompatibility between GCC 11 and earlier with GCC 12 or later), PowerPC64 ELFv2 always take them into account (so there is a C++ ABI incompatibility, GCC 4.4 and earlier compatible with GCC 12 or later, incompatible with GCC 4.5 through GCC 11). RISC-V has changed the handling of these already starting with GCC 10. As the ABI requires, MIPS takes them into account handling function return values so there is a C++ ABI incompatibility with GCC 4.5 through 11. - STABS: Support for emitting the STABS debugging format is deprecated and will be removed in the next release. All ports now default to emit DWARF (version 2 or later) debugging info or are obsoleted. - Vectorization is enabled at -O2 which is now equivalent to the original -O2 -ftree-vectorize -fvect-cost-model=very-cheap. - GCC now supports the ShadowCallStack sanitizer. - Support for __builtin_shufflevector compatible with the clang language extension was added. - Support for attribute unavailable was added. - Support for __builtin_dynamic_object_size compatible with the clang language extension was added. - New warnings: -Wbidi-chars warns about potentially misleading UTF-8 bidirectional control characters. -Warray-compare warns about comparisons between two operands of array type. - Some new features from the upcoming C2X revision of the ISO C standard are supported with -std=c2x and -std=gnu2x. - Several C++23 features have been implemented. - Many C++ enhancements across warnings and -f options. see https://gcc.gnu.org/gcc-12/changes.html for a full list. @ text @d2 1 a2 1 Copyright (C) 2020-2022 Free Software Foundation, Inc. a67 1 #ifndef COPYSIGN a74 1 #endif @ 1.1.1.3 log @initial import of GCC 14.3.0. major changes in GCC 13: - improved sanitizer - zstd debug info compression - LTO improvements - SARIF based diagnostic support - new warnings: -Wxor-used-as-pow, -Wenum-int-mismatch, -Wself-move, -Wdangling-reference - many new -Wanalyzer* specific warnings - enhanced warnings: -Wpessimizing-move, -Wredundant-move - new attributes to mark file descriptors, c++23 "assume" - several C23 features added - several C++23 features added - many new features for Arm, x86, RISC-V major changes in GCC 14: - more strict C99 or newer support - ia64* marked deprecated (but seemingly still in GCC 15.) - several new hardening features - support for "hardbool", which can have user supplied values of true/false - explicit support for stack scrubbing upon function exit - better auto-vectorisation support - added clang-compatible __has_feature and __has_extension - more C23, including -std=c23 - several C++26 features added - better diagnostics in C++ templates - new warnings: -Wnrvo, Welaborated-enum-base - many new features for Arm, x86, RISC-V - possible ABI breaking change for SPARC64 and small structures with arrays of floats. @ text @d2 1 a2 1 Copyright (C) 2020-2024 Free Software Foundation, Inc. @