Age | Commit message (Collapse) | Author | Files | Lines |
|
This reverts commit e22e3af1954469c40b139b7cfa8e7708592f4bfd.
|
|
This reverts commit 85e874d19548f0dcb9a3f14f9e4b1e3411c88c4b.
|
|
This reverts commit 508ac49e1a94c28346642bff512d0ed5f4f58b64.
|
|
vcvtph2{,u}{dq,qq} intrins"
This reverts commit 6f2eac53b6026836f3222961c32312e02c2c7dbc.
|
|
This reverts commit b70bb94aca7bc10a54f744d793c32c51f91ce195.
|
|
This reverts commit 0f5a42d41b46b746c6f77374d76a3b918a1e2b57.
|
|
vcvttpd2{,u}{dq,qq} intrins"
This reverts commit 6e231f8504874828b23bbe89f3ef4086dcc15a44.
|
|
This reverts commit 493c5096050523ebc05e5fa21612683a996b97a7.
|
|
vcvtu{dq,qq}2p{s,d,h} intrins"
This reverts commit b2754227139512adecb6fda067632b587ff4a017.
|
|
This reverts commit 3d1b5530ea1d23e26dc5ab70aa4a2e7b9dc19b50.
|
|
This reverts commit 95980b292b24110d3f1dffb81926df23c61b4fe7.
|
|
This reverts commit 0683ca355a87fd36a2e7ae1721199204ceff4c4c.
|
|
vfmaddsub{132,231,213}p{s,d,h} intrins"
This reverts commit cfbc94eaf167ae7aecd21ee6054556e1cf9d7143.
|
|
intrins"
This reverts commit dd48acbe85ca55dd23ffafbb917ffe559d13b6a3.
|
|
vfnmadd{132,231,213}p{s,d,h} intrins"
This reverts commit 6f0aa7add1d9177f60016b32ca9ca8b16b173a56.
|
|
This reverts commit 0983d406ae2e84394b25248865f51c686b119a57.
|
|
intrins"
This reverts commit 8d4f542935c09f40bb7fd8fd863cc8df80cc970e.
|
|
This reverts commit cc8a7596477e9d6ac972aadabbb2fd88baa1abf4.
|
|
This reverts commit 90cc5b0c4609a9fb3257d2cce7b7abc896c6faab.
|
|
intrins"
This reverts commit 9afa5081212e1fc3cb2c4efc9b4f421eecf68810.
|
|
This reverts commit 1f86cf06c7897f6ab467443b5fe8789cc95fe0c4.
|
|
This reverts commit 7f62e7104ebc11c4570745972a023579922ef265.
|
|
Since we will support 512 bit on both P-core and E-core, 256 bit
rounding is not that useful because we currently have rounding feature
directly on E-core now and no need to use 256-bit rounding as somehow
a workaround. This patch will remove 256 bit rounding in AVX10.2 satcvt
intrins.
gcc/ChangeLog:
* config/i386/avx10_2satcvtintrin.h: Remove rounding intrins.
Use non-round intrins.
* config/i386/i386-builtin.def (BDESC): Ditto.
gcc/testsuite/ChangeLog:
* gcc.target/i386/avx10_2-512-vcvtph2ibs-2.c: Adjust condition
for rounding test.
* gcc.target/i386/avx10_2-512-vcvtph2iubs-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvtps2ibs-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvtps2iubs-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvttpd2dqs-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvttpd2qqs-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvttpd2udqs-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvttpd2uqqs-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvttph2ibs-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvttph2iubs-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvttps2dqs-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvttps2ibs-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvttps2iubs-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvttps2qqs-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvttps2udqs-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvttps2uqqs-2.c: Ditto.
* gcc.target/i386/avx-1.c: Remove rounding tests.
* gcc.target/i386/avx10_2-satcvt-1.c: Ditto.
* gcc.target/i386/sse-13.c: Ditto.
* gcc.target/i386/sse-14.c: Ditto.
* gcc.target/i386/sse-22.c: Ditto.
* gcc.target/i386/sse-23.c: Ditto.
|
|
Since we will support 512 bit on both P-core and E-core, 256 bit
rounding is not that useful because we currently have rounding feature
directly on E-core now and no need to use 256-bit rounding as somehow
a workaround. This patch will remove those in AVX10.2 minmax and convert
intrins.
gcc/ChangeLog:
* config/i386/avx10_2convertintrin.h: Remove rounding intrins.
Use non-round builtins.
* config/i386/avx10_2minmaxintrin.h: Ditto.
* config/i386/i386-builtin.def (BDESC): Ditto.
* config/i386/i386-builtin-types.def: Remove unused type.
* config/i386/i386-expand.cc
(ix86_expand_args_builtin): Ditto.
(ix86_expand_round_builtin): Ditto.
gcc/testsuite/ChangeLog:
* gcc.target/i386/avx-1.c: Remove rounding tests.
* gcc.target/i386/avx10_2-convert-1.c: Ditto.
* gcc.target/i386/avx10_2-minmax-1.c: Ditto.
* gcc.target/i386/sse-13.c: Ditto.
* gcc.target/i386/sse-14.c: Ditto.
* gcc.target/i386/sse-22.c: Ditto.
* gcc.target/i386/sse-23.c: Ditto.
|
|
|
|
Actually, the issue is not local to the libitm case, it currently affects
any 'cxx=true' top-level configured target library.
The issue is a missing export of CXX_FOR_TARGET.
PR libitm/88319
ChangeLog:
* Makefile.in: Regenerate.
* Makefile.tpl: Add CXX_FOR_TARGET to NORMAL_TARGET_EXPORTS.
Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
|
|
ChangeLog:
* MAINTAINERS: Add myself.
|
|
My change in r15-8012 for PR c++/119154 exposed a bug with explicit
instantation declarations. The change cleared DECL_INTERFACE_KNOWN for
all vague-linkage entities, including explicit instantiations. When we
then perform lazy loading at EOF (due to processing deferred function
bodies), expand_or_defer_fn ends up calling import_export_decl which
will error because DECL_INTERFACE_KNOWN is still unset but no definition
is available in the file, violating some assertions.
It turns out that for function templates marked inline we would not
respect an 'extern template' imported in general, either; this patch
fixes both of these issues by always treating explicit instantiations as
external, and so marking DECL_INTERFACE_KNOWN eagerly.
For an explicit instantiation declaration we don't want to emit the body
of the function as it must be emitted in a different TU anyway. And for
explicit instantiation definitions we similarly know that it will have
been emitted in the interface TU we streamed it in from, so there's
no need to emit it.
The same error can happen with lazy-loaded gnu_inlines at EOF; in some
cases they'll be marked DECL_COMDAT and pass through the vague_linkage_p
check anyway. This patch reworks the handling of gnu_inlines to ensure
that both DECL_INTERFACE_KNOWN is always correctly set and that
importing a gnu_inline function over the top of an existing forward
declaration works correctly.
The other case that duplicate_decls handles (importing a regular
definition over the top of a gnu_inline function) doesn't seem like
something we need to handle specially in modules; we'll just use the
existing gnu_inline function and rely on the guarantee that there is a
single non-inline function definition provided elsewhere.
PR c++/119154
gcc/cp/ChangeLog:
* decl2.cc (vague_linkage_p): Revert gnu_linkage handling.
* module.cc (importer_interface): New enumeration.
(get_importer_interface): New function.
(trees_out::core_bools): Use it to determine interface.
(trees_in::is_matching_decl): Propagate gnu_inline handling onto
existing forward declarations.
(trees_in::read_var_def): Also note explicit instantiation
definitions of variable templates to be emitted.
gcc/testsuite/ChangeLog:
* g++.dg/modules/pr119154_a.C: Move to...
* g++.dg/modules/gnu-inline-1_a.C: ...here, and add decl.
* g++.dg/modules/pr119154_b.C: Move to...
* g++.dg/modules/gnu-inline-1_b.C: here, and add check.
* g++.dg/modules/gnu-inline-1_c.C: New test.
* g++.dg/modules/gnu-inline-1_d.C: New test.
* g++.dg/modules/gnu-inline-2_a.C: New test.
* g++.dg/modules/gnu-inline-2_b.C: New test.
* g++.dg/modules/extern-tpl-3_a.C: New test.
* g++.dg/modules/extern-tpl-3_b.C: New test.
* g++.dg/modules/extern-tpl-4_a.H: New test.
* g++.dg/modules/extern-tpl-4_b.C: New test.
* g++.dg/modules/extern-tpl-4_c.C: New test.
Signed-off-by: Nathaniel Shead <nathanieloshead@gmail.com>
Reviewed-by: Jason Merrill <jason@redhat.com>
|
|
This is part of an incremental effort to make the chapter on GCC
extensions better organized by grouping/rearranging sections by topic.
gcc/ChangeLog
PR other/42270
* doc/extend.texi (Nonlocal Gotos): Group with other built-ins
sections.
(Constructing Calls): Likewise.
(Pragmas): Move earlier in the section, before the built-ins docs.
(Thread-Local): Likewise.
(OpenMP): Likewise.
(OpenACC): Likewise.
|
|
extend.texi [PR42270]
This is part of an incremental effort to make the chapter on GCC
extensions better organized by grouping/rearranging sections by topic.
gcc/ChangeLog
PR other/42270
* doc/extend.texi (Syntax Extensions): New section.
(Statement Exprs): Make it a subsection of the above.
(Local Labels): Likewise.
(Labels as Values): Likewise.
(Nested Functions): Likewise.
(Typeof): Likewise.
(Offsetof): Likewise.
(Alignment): Likewise.
(Incomplete Enums): Likewise.
(Variadic Macros): Likewise.
(Conditionals): Likewise.
(Case Ranges): Likewise.
(Mixed Labels and Declarations): Likewise.
(C++ Comments): Likewise.
(Escaped Newlines): Likewise.
(Hex Floats): Likewise.
(Binary constants): Likewise.
(Dollar Signs): Likewise.
(Character Escapes): Likewise.
(Alternate Keywords): Likewise.
(Function Names): Likewise.
(Semantic Extensions): New section.
(Function Prototypes): Make it a subsection of the above.
(Pointer Arith): Likewise.
(Variadic Pointer Args): Likewise.
(Pointers to Arrays): Likewise.
(Const and Volatile Functions): Likewise.
|
|
This is part of an incremental effort to make the chapter on GCC
extensions better organized by grouping/rearranging sections by topic.
gcc/ChangeLog
PR other/42270
* doc/extend.texi (Aggregate Types): New section.
(Variable Length): Make it a subsection of the above.
(Zero Length): Likewise.
(Empty Structures): Likewise.
(Flexible Array Members in Unions): Likewise.
(Flexible Array Members alone in Structures): Likewise.
(Unnamed Fields): Likewise.
(Cast to Union): Likewise.
(Subscripting): Likewise.
(Initializers): Likewise.
(Compound Literals): Likewise.
(Designated Inits): Likewise.
|
|
This is part of an incremental effort to make the chapter on GCC
extensions better organized by grouping/rearranging sections by topic.
gcc/ChangeLog
PR other/42270
* doc/extend.texi (Additional Numeric Types): New section.
(__int128): Make it a subsection of the above.
(Long Long): Likewise.
(Complex): Likewise.
(Floating Types): Likewise.
(Half-Precision): Likewise.
(Decimal Float): Likewise.
(Fixed-Point): Likewise.
|
|
Introduced by r13-1104-gf4c3ce32fa54c1, which had an accidental self
assignment of TYPE_PACKED when it should have been assigned to the
type's variants.
PR d/117621
gcc/d/ChangeLog:
* types.cc (finish_aggregate_type): Propagate TYPE_PACKED to variants.
gcc/testsuite/ChangeLog:
* gdc.dg/pr117621.d: New test.
|
|
gcc/
* config/avr/avr-mcus.def: Add AVR32SD20, AVR32SD28, AVR32SD32,
AVR64SD28, AVR64SD32, AVR64SD48.
* doc/avr-mmcu.texi: Rebuild.
|
|
gcc/
* doc/invoke.texi (AVR Optimization Options)
<-maccumulate-args>: Refer to -fdefer-pop.
<-muse-nonzero-bits>: Re-formulate what the option does.
|
|
By setting "CXXFLAGS_FOR_TARGET=-ggdb -O0", a debuggable version
of libgcobol.so is created.
libgcobol
* Makefile.am: Incorporate AM_CXXFLAGS = $(CXXFLAGS_FOR_TARGET).
* Makefile.in: Regenerated.
|
|
|
|
This patch uses a name for the dump file that makes it clear where
in the pass chain the 2nd run of peephole2 is located.
gcc/
* config/avr/avr.cc (avr_option_override): Use
"avr-peep2-after-fuse-move" as dump name instead of "peephole2".
|
|
Without this, after r15-8650-g94fa9f4d27bac5, you'll see,
for targets where GFC_INTEGER_4 alias int32_t is a typedef
of long int (beware of artificially broken lines):
/x/gcc/libgfortran/intrinsics/reduce.c:269:1: error: conflicting types for 'reduce_scalar_c'; have 'void(void *, index_type, parray *, void (*)(void *, void *, void *), int *, gfc_array_l4 *, void *, void *, index_type, index_type)' {aka 'void(void *, long int, parray *, void (*)(void *, void *, void *), int *, gfc_array_l4 *, void *, void *, long int, long int)'}
269 | reduce_scalar_c (void *res,
| ^~~~~~~~~~~~~~~
[...] excessive error message verbiage deleted
/x/gcc/libgfortran/intrinsics/reduce.c: In function 'reduce_scalar_c':
/x/gcc/libgfortran/intrinsics/reduce.c:283:35: error: passing argument 4 of 'reduce' from incompatible pointer type [-Wincompatible-pointer-types]
283 | reduce (&ret, array, operation, dim, mask, identity, ordered);
| ^~~
| |
| int *
/x/gcc/libgfortran/intrinsics/reduce.c:41:24: note: expected 'GFC_INTEGER_4 *' {aka 'long int *'} but argument is of type 'int *'
41 | GFC_INTEGER_4 *dim,
| ~~~~~~~~~~~~~~~^~~
make[3]: *** [Makefile:4678: intrinsics/reduce.lo] Error 1
libgfortran:
* intrinsics/reduce.c (reduce_scalar_c): Correct type of parameter DIM.
|
|
gcc/
* config/avr/avr.opt.urls: Add -muse-nonzero-bits.
|
|
There are occasions where knowledge about nonzero bits makes some
optimizations possible. For example,
Rd |= Rn << Off
can be implemented as
SBRC Rn, 0
ORI Rd, 1 << Off
when Rn in { 0, 1 }, i.e. nonzero_bits (Rn) == 1. This patch adds some
patterns that exploit nonzero_bits() in some combiner patterns.
As insn conditions are not supposed to contain nonzero_bits(), the patch
splits such insns right after pass insn combine.
PR target/119421
gcc/
* config/avr/avr.opt (-muse-nonzero-bits): New option.
* config/avr/avr-protos.h (avr_nonzero_bits_lsr_operands_p): New.
(make_avr_pass_split_nzb): New.
* config/avr/avr.cc (avr_nonzero_bits_lsr_operands_p): New function.
(avr_rtx_costs_1): Return costs for the new insns.
* config/avr/avr.md (nzb): New insn attribute.
(*nzb=1.<code>...): New insns to better support some bit
operations for <code> in AND, IOR, XOR.
* config/avr/avr-passes.def (avr_pass_split_nzb): Insert pass
atfer combine.
* config/avr/avr-passes.cc (avr_pass_data_split_nzb). New pass data.
(avr_pass_split_nzb): New pass.
(make_avr_pass_split_nzb): New function.
* common/config/avr/avr-common.cc (avr_option_optimization_table):
Enable -muse-nonzero-bits for -O2 and higher.
* doc/invoke.texi (AVR Options): Document -muse-nonzero-bits.
gcc/testsuite/
* gcc.target/avr/torture/pr119421-sreg.c: New test.
|
|
There are many objects / functions that are not available on AVRrc,
the reduced core. The old way to exclude some objects for AVRrc
did not work properly since it tested for MULTIFLAGS.
This does not work for, say MULTIFLAGS = "-mmcu=avrtiny -mdouble=64".
This patch uses $(findstring avrtiny,$(MULTIDIR)) in the condition.
libgcc/
* config/avr/t-avr (LIB1ASMFUNCS, LIB2FUNCS_EXCLUDE):
Properly handle avrtiny.
libgcc/config/avr/libf7/
* t-libf7 (libgcc-objects): Only add objects when building
for non-AVRrc.
|
|
Code in .initN and .initN sections is never called since these
sections are special and part of the startup resp. shutdown code.
This patch adds attribute "used" so they won't be optimized out.
gcc/
* config/avr/avr.cc (avr_attrs_section_name): New function.
(avr_insert_attributes): Add "used" attribute to functions
in .initN and .finiN.
|
|
Complex alias templates (and their dependent specializations) always use
structural equality because we need to treat them as transparent in some
contexts but not others. Structural-ness however wasn't being preserved
during partial instantiation, which for the below testcase leads to the
checking ICE
same canonical type node for different types 'S<int>::P<U>' and 'pair<int, U>'
when comparing those two types with comparing_dependent_aliases set
(from alias_ctad_tweaks).
This patch fixes this by making us preserve structural-ness for
partially instantiated typedefs in general.
PR c++/119379
gcc/cp/ChangeLog:
* pt.cc (tsubst_decl) <case TYPE_DECL>: Preserve structural-ness
of a partially instantiated typedef.
gcc/testsuite/ChangeLog:
* g++.dg/cpp2a/class-deduction-alias24.C: New test.
Reviewed-by: Jason Merrill <jason@redhat.com>
|
|
Darwin provides this support as part of libSystem which is always
linked with user-space DSOs (including exes).
gcc/ChangeLog:
* config/darwin.h (DL_LIBRARY): New.
Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
|
|
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd 032e24446b.
* dmd/VERSION: Bump version to v2.111.0-rc.1.
|
|
Improves on the speller suggestions for UFCS by using the location of
the suggested symbol, and considering that local functions aren't
eligible for UFCS instead of making a nonsensical suggestion, such as
"no property foo, did you mean foo?".
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd 9d2f034398.
Reviewed-on: https://github.com/dlang/dmd/pull/21046
|
|
D front-end changes:
- The compiler now accepts `-fextern-std=c++23'
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd 94950cae58.
* d-lang.cc (d_handle_option): Add case for CppStdRevisionCpp23.
* gdc.texi: Document -fextern-std=c++23.
* lang.opt (fextern-std=): Add c++23.
libphobos/ChangeLog:
* libdruntime/MERGE: Merge upstream druntime 94950cae58.
Reviewed-on: https://github.com/dlang/dmd/pull/21043
|
|
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd 8db14cf846.
Reviewed-on: https://github.com/dlang/dmd/pull/21029
|
|
This prevents conflicts with a user-provided `invariant.d' module.
gcc/d/ChangeLog:
* runtime.def (INVARIANT): Update signature of run-time function.
libphobos/ChangeLog:
* libdruntime/Makefile.am (DRUNTIME_DSOURCES): Rename rt/invariant.d
to rt/invariant_.d.
* libdruntime/Makefile.in: Regenerate.
* libdruntime/rt/invariant.d: Move to...
* libdruntime/rt/invariant_.d: ...here.
|