Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ast v5 2 0 release v5 #2

Closed
wants to merge 2,032 commits into from
Closed

Conversation

tylerchen0619
Copy link
Collaborator

Initialize for ast-v5_2_0-v5

Stuart Wu and others added 30 commits August 3, 2022 15:53
This reverts commit db22625be5592e0b4a2a45276838fa0ce9d3a612.
This reverts commit e5e7fe05aac25db2b79c38a9efb4a2c8d7da04c8.
This reverts commit dd7e4b838313e38665c9964512f657109b833eb4.
This reverts commit 2456ae7536f74b14218c8ad4375d703cedf4a4ee.
…mized passes register."

This reverts commit 0c301ca63de76d36db204a2f234fbd3881899817.
march= parser thinks 'p' only appears in version numbers. But 'p'
is also an extension. march= parser will ignored 'p' that is not
attached version nubmer (e.g. march=rv32ip).
The patch is to fix Andes Bug22495. Gcc expands rtl cmov with float
comparison, but gcc doesn't have related codegen pattern.
This patch is to fix Andes Bug22610. RV32 gcc thinks splitting a DF
move to two SI moves is benefit. Actually, the transformation is
terrible since there is no coversion form DF to SI in RV32.
- This patch introduce new set of architecture extension test macros
  which is accept on riscv-c-api-doc recently.
  - https://github.com/riscv/riscv-c-api-doc/blob/master/riscv-c-api.md#architecture-extension-test-macro

- We will also mark deprecated for legacy architecture extension test macros
  in GCC 11, but still support that for 1 or 2 release cycles.

gcc/ChangeLog:

	* common/config/riscv/riscv-common.c (riscv_current_subset_list): New.
	* config/riscv/riscv-c.c (riscv-subset.h): New.
	(INCLUDE_STRING): Define.
	(riscv_cpu_cpp_builtins): Add new style architecture extension
	test macros.
	* config/riscv/riscv-subset.h (riscv_subset_list::begin): New.
	(riscv_subset_list::end): New.
	(riscv_current_subset_list): New.

gcc/testsuite/ChangeLog:

	* gcc.target/riscv/predef-10.c: New.
	* gcc.target/riscv/predef-11.c: New.
	* gcc.target/riscv/predef-12.c: New.
	* gcc.target/riscv/predef-13.c: New.
linopxy and others added 27 commits October 17, 2022 17:36
The toolchain provided by ST for stm32 has had support for
__FILENAME__ for a while, but clang/llvm has recently implemented
support for __FILE_NAME__, so it seems better to use the same macro
name in GCC.

It happens that the ST patch is similar to the one proposed in PR
c/42579.

Given these input files:
::::::::::::::
mydir/myinc.h
::::::::::::::
char* mystringh_file = __FILE__;
char* mystringh_filename = __FILE_NAME__;
char* mystringh_base_file = __BASE_FILE__;
::::::::::::::
mydir/mysrc.c
::::::::::::::

char* mystring_file = __FILE__;
char* mystring_filename = __FILE_NAME__;
char* mystring_base_file = __BASE_FILE__;

we produce:
$ gcc mydir/mysrc.c -I . -E
char* mystringh_file = "./mydir/myinc.h";
char* mystringh_filename = "myinc.h";
char* mystringh_base_file = "mydir/mysrc.c";

char* mystring_file = "mydir/mysrc.c";
char* mystring_filename = "mysrc.c";
char* mystring_base_file = "mydir/mysrc.c";

2021-05-20  Christophe Lyon  <[email protected]>
	    Torbjörn Svensson  <[email protected]>

	PR c/42579
	libcpp/
	* include/cpplib.h (cpp_builtin_type): Add BT_FILE_NAME entry.
	* init.c (builtin_array): Likewise.
	* macro.c (_cpp_builtin_macro_text): Add support for BT_FILE_NAME.

	gcc/
	* doc/cpp.texi (Common Predefined Macros): Document __FILE_NAME__.

	gcc/testsuite/
	* c-c++-common/spellcheck-reserved.c: Add tests for __FILE_NAME__.
	* c-c++-common/cpp/file-name-1.c: New test.
Transfer –mno-b19758 to assembler if -mcpu or -mtune is not one of 25-series processors.
Transfer –mno-b25057 to assembler if –mcpu or -mtune is not one of 45-series processors.
The option -mext-zkns enables zkn and zks.
gcc/ChangeLog:

	* common/config/riscv/riscv-common.cc (riscv_ext_version_table):
	Add svinval and svnapot extension.
	(riscv_ext_flag_table): Ditto.
	* config/riscv/riscv-opts.h (MASK_SVINVAL): New.
	(MASK_SVNAPOT): Ditto.
	(TARGET_SVINVAL): Ditto.
	(TARGET_SVNAPOT): Ditto.
	* config/riscv/riscv.opt (riscv_sv_subext): New.

gcc/testsuite/ChangeLog:
	* gcc.target/riscv/predef-24.c:New.
	* gcc.target/riscv/predef-25.c:New.
Remove -misa-spec= and remove predefined macro version check.
This option implies -mext-zbabcs and enables
  Zc{a,b,f,mp,mt} on RV32, or
  Zc{a,b,mp,mt} on RV64.
This patch prevent Zc extensions being incorrectly regarded as a std ext.
E.g., Zc* was placed before Zb* since c is a std ext.
Standard supervisor-level extensions (S*) should be listed after standard
unprivileged extensions (Z*), and non-standard extensions must be listed
after all standard extensions. So the order should be z -> s -> x. Note
that 'h' will become a standard unprivileged extensions in the future,
but it's fine to remove it later since no 'h' extension is really defined.
Order is z -> s -> h -> x.
Note that originally -mno-16-bit turns off RVC, then execit get disabled
due to the lack of RVC. As a result we need to explicitly disable execit
when -mno-16-bit is specified.
Testcases with -march=rv64 will fail on v5e toolchain since it has
-mtune=n22 by default, which is not available on rv64.
According to spec, fmv.h checks if the input operands are correctly
NaN-boxed. If not, the input value is treated as an n-bit canonical NaN.
However, operands returned by soft-fp16 libgcc (i.e., __truncdfhf2) may
not be correctly NaN-boxed and will lead to incorrect results.
This workaround adds GPR into register class preferences for zfh move to
make it always prefer GPR over FPR for zfh move. As a result, all fmv.h
will be replaced by fmv.x.h to prevent this issue.
@tylerchen0619 tylerchen0619 deleted the ast-v5_2_0-release-v5 branch February 1, 2023 11:21
tylerchen0619 pushed a commit that referenced this pull request Feb 2, 2023
…04617]

On
 #define A(n) int foo1##n(void) { return 1##n; }
 #define B(n) A(n##0) A(n##1) A(n##2) A(n##3) A(n##4) A(n##5) A(n##6) A(n##7) A(n##8) A(n##9)
 #define C(n) B(n##0) B(n##1) B(n##2) B(n##3) B(n##4) B(n##5) B(n##6) B(n##7) B(n##8) B(n##9)
 #define D(n) C(n##0) C(n##1) C(n##2) C(n##3) C(n##4) C(n##5) C(n##6) C(n##7) C(n##8) C(n##9)
 #define E(n) D(n##0) D(n##1) D(n##2) D(n##3) D(n##4) D(n##5) D(n##6) D(n##7) D(n##8) D(n##9)
 E(0) E(1) E(2) D(30) D(31) C(320) C(321) C(322) C(323) C(324) C(325)
 B(3260) B(3261) B(3262) B(3263) A(32640) A(32641) A(32642)
testcase with
./xgcc -B ./ -c -g -fpic -ffat-lto-objects -flto  -O0 -o foo1.o foo1.c -ffunction-sections
./xgcc -B ./ -shared -g -fpic -flto -O0 -o foo1.so foo1.o
/tmp/ccTW8mBm.debug.temp.o: file not recognized: file format not recognized
(testcase too slow to be included into testsuite).
The problem is clearly reported by readelf:
readelf: foo1.o.debug.temp.o: Warning: Section 2 has an out of range sh_link value of 65321
readelf: foo1.o.debug.temp.o: Warning: Section 5 has an out of range sh_link value of 65321
readelf: foo1.o.debug.temp.o: Warning: Section 10 has an out of range sh_link value of 65323
readelf: foo1.o.debug.temp.o: Warning: [ 2]: Link field (65321) should index a symtab section.
readelf: foo1.o.debug.temp.o: Warning: [ 5]: Link field (65321) should index a symtab section.
readelf: foo1.o.debug.temp.o: Warning: [10]: Link field (65323) should index a string section.
because simple_object_elf_copy_lto_debug_sections doesn't adjust sh_info and
sh_link fields in ElfNN_Shdr if they are in between SHN_{LO,HI}RESERVE
inclusive.  Not adjusting those is incorrect though, SHN_{LO,HI}RESERVE
range is only relevant to the 16-bit fields, mainly st_shndx in ElfNN_Sym
where if one needs >= SHN_LORESERVE section number, SHN_XINDEX should be
used instead and .symtab_shndx section should contain the real section
index, and in ElfNN_Ehdr e_shnum and e_shstrndx fields, where if >=
SHN_LORESERVE value is needed it should put those into
Shdr[0].sh_{size,link}.  But, sh_{link,info} are 32-bit fields which can
contain any section index.

Note, as simple-object-elf.c mentions, binutils from 2.12 to 2.18 (so before
2011) used to mishandle the > 63.75K sections case and assumed there is a
hole in between the sections, but what
simple_object_elf_copy_lto_debug_sections does wouldn't help in that case
for the debug temp object creation, we'd need to detect the case also in
that routine and take it into account in the remapping etc.  I think
it is not worth it given that it is over 10 years, if somebody needs
63.75K or more sections, better use more recent binutils.

2022-02-22  Jakub Jelinek  <[email protected]>

	PR lto/104617
	* simple-object-elf.c (simple_object_elf_match): Fix up URL
	in comment.
	(simple_object_elf_copy_lto_debug_sections): Remap sh_info and
	sh_link even if they are in the SHN_LORESERVE .. SHN_HIRESERVE
	range (inclusive).

(cherry picked from commit 2f59f06)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.