Skip to content

Add GC 1.3.2 (2.4.2 build 81), built from 2.0's sources - #2

Open
henriquegemignani wants to merge 2 commits into
doldecomp:mainfrom
henriquegemignani:gc-1.3.2
Open

henriquegemignani wants to merge 2 commits into
doldecomp:mainfrom
henriquegemignani:gc-1.3.2

Conversation

@henriquegemignani

Copy link
Copy Markdown

Tested with Metroid Prime, Melee, Pikmin 1 and 2, TTYD, Mario Party 4 and BFBB. All results were equal - either same binary or also didn't accept the source.

1.3.2 is VERSION_GC_1_3_2, below 2.0. The layout was ported from 2.0,
and 3978 of 4039 functions compile exact against the original.
The others differ in register allocation or stack layout.

Differences from 2.0 include:
- copts without disable_vector_frame, and a 28-byte PBackEnd;
- alias analysis that treats const pointees as aliasable;
- GNU case ranges (SwitchCase and CI_SwitchCase gain a max);
- comparison, division, immediate and paired-single code generation;
- no __TARGET_CPU__ or __OPTIMIZE__ macros, and no -E dumping of pragmas;
- DWARF without symbols, plain fixups and a 3-argument PPC_EABI_SetSection;
- the precompiled header version, the plugin string table and the version
  record and resources (2.4.2 build 81);
- assert line numbers, through CError_LINE_DELTA.
- CPrepTokenizer.c: every tokenizer handler takes the character cprep_tokenize
  passes it. A call through a pointer of another type traps in WebAssembly.
- Parameter.c: CompareParam_SetString drops its unused flags parameter; it is
  called with the parameter alone.
- NONMATCHING marks a build that is not the original's but may define
  __MWERKS__ (mwcc-tools' WebAssembly build). It gets the clang build's
  ORIGINAL_ADDRESS/TYPE_INTEGRAL_UNCHECKED emulation, and L_S gives its two
  offsets the values the original's stack slots hold.

The matching build is unchanged: every 1.3.2 and 2.x function that was exact
still is.
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.

1 participant